Wechat.php
4.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
namespace app\index\controller;
use addons\wechat\model\WechatAutoreply;
use addons\wechat\model\WechatCaptcha;
use addons\wechat\model\WechatContext;
use addons\wechat\model\WechatResponse;
use addons\wechat\model\WechatConfig;
use EasyWeChat\Foundation\Application;
use addons\wechat\library\Wechat as WechatService;
use addons\wechat\library\Config as ConfigService;
use think\Log;
use app\api\model\UserHouse;
use app\api\model\House;
/**
* 微信接口
*/
class Wechat extends \think\addons\Controller
{
public $app = null;
public function _initialize()
{
parent::_initialize();
$this->app = new Application(ConfigService::load());
}
/**
* 微信API对接接口
*/
public function api()
{
$this->app->server->setMessageHandler(function ($message) {
$wechatService = new WechatService;
$matches = null;
$openid = $message->FromUserName;
$to_openid = $message->ToUserName;
$event = $message->Event;
$eventkey = $message->EventKey ? $message->EventKey : $message->Event;
switch ($message->MsgType) {
case 'event': //事件消息
// //验证码消息
// if (in_array($event, ['subscribe', 'SCAN'])) {
// return $eventkey;
// }
switch ($event) {
case 'subscribe'://添加关注
$key = explode('_', $eventkey);
return $this->joinHouse($key[1],$openid);
case 'unsubscribe'://取消关注
return '';
case 'LOCATION'://获取地理位置
return '';
case 'VIEW': //跳转链接,eventkey为链接
return '';
case 'SCAN': //扫码
return $this->joinHouse($eventkey,$openid);
default:
break;
}
return "";
case 'text': //文字消息
case 'image': //图片消息
case 'voice': //语音消息
case 'video': //视频消息
case 'location': //坐标消息
case 'link': //链接消息
default: //其它消息
return "";
}
return ""; //SUCCESS
});
$response = $this->app->server->serve();
// 将响应输出
$response->send();
}
/**
* 加入小区
*/
private function joinHouse($house_id,$openid){
$user = WechatService::getUserByOpenid($openid);
if($user){
$info = UserHouse::get(['user_id'=>$user['id'],'house_id'=>$house_id]);
$house = House::get($house_id);
if(!empty($info) && $info['status'] == 2){
return "您已加入【{$house['name']}】社区";
}
if(empty($info)){
// 直接绑定成功
$data = UserHouse::create([
'user_id' => $user['id'],
'house_id' => $house_id,
'name' => $user['nickname'],
'status' => 2,
'phone' => $user['mobile'],
'createtime' => time(),
'updatetime' => time()
]);
}else{
// 申请中改为已绑定
$info->status = 2;
$info->save();
}
// 添加当前社区
if(empty($user['house_id'])){
$user->house_id = $house_id;
$user->save();
}
// 社区人数加1
House::where('id',$house_id)->setInc('bindnum');
return "您已成功加入【{$house['name']}】社区";
}
return "请先登录社区公众号";
}
}