123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- <?php
- namespace app\api\controller;
- use think\facade\Db;
- use app\api\controller\WechatApi;
- class Wechat extends MobileMall
- {
- public $type;
- public $wxid;
- public $data;
- public $weixin;
- public function index()
- {
-
- $wxConfig = model('wechat')->getOneWxconfig();
- $this->weixin = new WechatApi($wxConfig);
- $this->weixin->valid();
- $this->type = $this->weixin->getRev()->getRevType();
- $this->wxid = $this->weixin->getRev()->getRevFrom();
- $this->data = $this->weixin->getRevData();
- $reMsg = '';
- switch ($this->type) {
-
- case 'text':
- $content = $this->weixin->getRev()->getRevContent();
- break;
-
- case 'event':
- $event = $this->weixin->getRev()->getRevEvent();
- $content = json_encode($event);
- break;
-
- case 'image':
- $content = json_encode($this->weixin->getRev()->getRevPic());
- $reMsg = "图片很美!";
- break;
- default:
- $reMsg = '未识别信息';
- }
-
- if (!empty($reMsg)) {
- echo $this->weixin->text($reMsg)->reply();
- exit;
- }
-
- if ($this->type == 'event') {
-
- if (isset($event['event']) && $event['event'] == 'subscribe') {
- $welcome = '欢迎关注';
-
- if ($event['key']) {
- $qrscene = explode("qrscene_", $event['key']);
- $inviter_id = intval($qrscene[1]);
- $config = model('wechat')->getOneWxconfig();
- $wechat = new WechatApi($config);
- $expire_time = $config['expires_in'];
- if ($expire_time > TIMESTAMP) {
-
- $wechat->access_token_ = $config['access_token'];
- } else {
- $access_token = $wechat->checkAuth();
- $web_expires = TIMESTAMP + 7000;
- Db::name('wxconfig')->where(array('id' => $config['id']))->update(array('access_token' => $access_token, 'expires_in' => $web_expires));
- }
- $userinfo = $wechat->getwxUserInfo($this->wxid);
- $reg_info = array(
- 'member_wxopenid' => $this->wxid,
- 'member_wxunionid' => $userinfo['unionid'],
- 'nickname' => isset($userinfo['nickname']) ? $userinfo['nickname'] : '',
- 'headimgurl' => isset($userinfo['headimgurl']) ? $userinfo['headimgurl'] : '',
- 'inviter_id' => $inviter_id
- );
- $logic_connect_api = model('connectapi', 'logic');
- $wx_member = $logic_connect_api->wx_register($reg_info, 'wx');
- if (!empty($wx_member)) {
- $member_model = model('member');
- $member_model->getBuyerToken($wx_member['member_id'], $wx_member['member_name'], 'wap', $wx_member['member_wxopenid']);
- }
- }
- $mbusertoken = Db::name('mbusertoken')->where('member_openid', $this->wxid)->find();
- if (!empty($mbusertoken)) {
- $ret_url = '。系统已为您自动注册了一个账号,请<a href="' . config('ds_config.h5_site_url') . '/pages/member/index/Index?key=' . $mbusertoken['member_token'] . '&username=' . $mbusertoken['member_name'] . '">点击修改信息</a>';
- } else {
- $ret_url = '';
- }
- echo $this->weixin->text($welcome . $ret_url)->reply();
- exit;
- }
-
- if (isset($event['event']) && $event['event'] == 'SCAN') {
- $welcome = '已关注';
- echo $this->weixin->text($welcome)->reply();
- exit;
- }
-
- if ($event['event'] == 'CLICK') {
- $click = $event['key'];
- switch ($click) {
- case "commend":
- case "hot":
- case "sale":
- case "collect":
- $reMsg = $this->getGoods($click);
- if (!empty($reMsg)) {
- $this->MsgTypeNews($reMsg);
- } else {
- echo $this->weixin->text("success")->reply();
- exit;
- }
- break;
-
- default:
-
- $this->MsgTypeText($click);
- echo $this->weixin->text("未定义此菜单事件{$click}")->reply();
- exit;
- }
- }
- }
-
- if ($this->type == 'text') {
-
- $this->MsgTypeText($content);
-
- $reMsg = $this->getGoodsByKey($content);
- if (!empty($reMsg)) {
- $this->MsgTypeNews($reMsg);
- }
-
- echo $this->weixin->text("抱歉,暂时无法对您的输入作出处理。")->reply();
- exit;
- }
- }
-
- private function MsgTypeText($content)
- {
-
- $value = $this->keywordsReply($content);
- if (!empty($value)) {
- echo $this->weixin->text($value['text'])->reply();
- exit;
- }
- }
-
- private function MsgTypeNews($reMsg)
- {
- $k = 0;
- foreach ($reMsg as $v) {
- $newsData[$k]['Title'] = $v['goods_name'];
- $newsData[$k]['Description'] = strip_tags($v['goods_name']);
- $newsData[$k]['PicUrl'] = goods_cthumb($v['goods_image']);
- $newsData[$k]['Url'] = config('ds_config.h5_site_url') . '/pages/home/goodsdetail/Goodsdetail?goods_id=' . $v['goods_id'];
- $k++;
- }
- echo $this->weixin->news($newsData)->reply();
- exit;
- }
-
- public function keywordsReply($content)
- {
-
- $condition = array();
- $condition[] = array('k.keyword', '=', $content);
- $value = model('wechat')->getOneJoinWxkeyword($condition, $field = 't.text');
- return $value;
- }
-
- public function getGoodsByKey($key)
- {
- $condi = "(goods_name like '%{$key}%' or goods_advword like '%{$key}%' or store_name like '%{$key}%')";
- $condi .= " and goods_state = 1 and goods_verify = 1";
- $res = Db::name('goods')->where($condi)->limit(4)->field('goods_id,goods_name,goods_image')->select()->toArray();
- $res = ds_change_arraykey($res, 'goods_id');
- return $res;
- }
-
- public function getGoods($type)
- {
-
-
- $types = array('hot' => 'goods_click', 'sale' => 'goods_salenum', 'collect' => 'goods_collect', 'commend' => 'goods_commend');
- $condition = $types[$type] . ' DESC';
- $where = "goods_state = 1 and goods_verify = 1";
- $res = Db::name('goods')->field('goods_id,goods_name,goods_image')->where($where)->limit(4)->order($condition)->select()->toArray();
- $res = ds_change_arraykey($res, 'goods_id');
- return $res;
- }
- }
|