220 lines
7.1 KiB
PHP
220 lines
7.1 KiB
PHP
<?php
|
||
// +------------------------------------------------+
|
||
// |http://www.cjango.com |
|
||
// +------------------------------------------------+
|
||
// | 修复BUG不是一朝一夕的事情,等我喝醉了再说吧! |
|
||
// +------------------------------------------------+
|
||
// | Author: 小陈叔叔 <Jason.Chen> |
|
||
// +------------------------------------------------+
|
||
namespace app\mobile\controller;
|
||
|
||
use app\common\model\Member;
|
||
use app\common\service\Member as MemberService;
|
||
use app\common\service\Wechat as WechatService;
|
||
use cjango\Wechat;
|
||
use cjango\Wechat\Reply;
|
||
|
||
class Weixin
|
||
{
|
||
|
||
private $request;
|
||
|
||
public function __construct()
|
||
{
|
||
WechatService::instance();
|
||
|
||
// $config = Config::get('wechat');
|
||
// $config['access_token'] = Cache::get('wechat_access_token');
|
||
|
||
// Wechat::instance($config);
|
||
// if (!$config['access_token']) {
|
||
// $config['access_token'] = Token::get();
|
||
// Cache::set('wechat_access_token', $config['access_token'], 7000);
|
||
// Wechat::instance($config, true);
|
||
// }
|
||
|
||
Wechat::valid();
|
||
$this->request = Reply::request();
|
||
}
|
||
|
||
/**
|
||
* 事件分发
|
||
*/
|
||
public function index()
|
||
{
|
||
switch ($this->request['msgtype']) {
|
||
case 'text':
|
||
self::keywords('text');
|
||
break;
|
||
case 'image':
|
||
case 'voice':
|
||
case 'video':
|
||
case 'shortvideo':
|
||
case 'location':
|
||
case 'link':
|
||
self::unknown();
|
||
break;
|
||
case 'event':
|
||
self::eventRoute(); //转交事件路由处理
|
||
break;
|
||
default:
|
||
Reply::response('暂时不支持的消息类型');
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 事件处理路由
|
||
*/
|
||
private function eventRoute()
|
||
{
|
||
switch (strtolower($this->request['event'])) {
|
||
case 'subscribe':
|
||
if (isset($this->request['eventkey']) && !empty($this->request['eventkey'])) {
|
||
self::subscribe_tui();
|
||
} else {
|
||
self::subscribe();
|
||
}
|
||
break;
|
||
case 'unsubscribe':
|
||
self::unsubscribe();
|
||
break;
|
||
case 'scan':
|
||
self::scan();
|
||
break;
|
||
case 'location':
|
||
self::unknown();
|
||
break;
|
||
case 'click':
|
||
self::keywords($this->request['eventkey']);
|
||
break;
|
||
case 'view':
|
||
exit();
|
||
// 如果做精细统计,这里可以获取用户点击的菜单连接 。
|
||
// eventkey => http://xxxx
|
||
// menuid => 4565456456
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 用户关注事件
|
||
* 将用户信息写入数据库,回复首次关注信息
|
||
* 这里也可以确定用户的绑定关系
|
||
*/
|
||
private function subscribe()
|
||
{
|
||
$openid = $this->request['fromusername'];
|
||
$user = Member::where(['openid' => $openid])->find();
|
||
if ($user) {
|
||
Reply::response('尊敬的' . $user->info->nickname . '先生/女士,欢迎您关注“超级服务管家”请点击下方的“推广工具”来开启您的新媒体微营销的“推广之旅”吧!');
|
||
} else {
|
||
$info = Wechat\User::info($openid);
|
||
if ($info) {
|
||
$info['pid'] = 0;
|
||
$result = MemberService::create($info);
|
||
if ($result === true) {
|
||
Reply::response('欢迎注册超级服务管家');
|
||
} else {
|
||
Reply::response('用户注册失败');
|
||
}
|
||
} else {
|
||
Reply::response('获取用户信息失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
private function subscribe_tui()
|
||
{
|
||
$EventKey = explode('_', $this->request['eventkey']);
|
||
$user = Member::find($EventKey[1]);
|
||
|
||
$openid = $this->request['fromusername'];
|
||
$member = Member::where(['openid' => $openid])->find();
|
||
if ($member) {
|
||
Reply::response('尊敬的【' . $member->info->nickname . '】先生/女士,欢迎您关注“超级服务管家”请点击下方的“推广工具”来开启您的新媒体微营销的“推广之旅”吧!');
|
||
}
|
||
if ($user) {
|
||
if ($user->status) {
|
||
$info = Wechat\User::info($openid);
|
||
if ($info) {
|
||
if ($user->info->is_agent == 1 && $user->info->agent_end_time > time()) {
|
||
$info['pid'] = $EventKey[1];
|
||
} else {
|
||
$info['pid'] = 0;
|
||
}
|
||
$result = MemberService::create($info);
|
||
if ($result === true) {
|
||
Reply::response('尊敬的【' . $info['nickname'] . '】,您由【' . $user->info->nickname . '】推荐注册,超级服务管家是一款共享营销工具,可以让任意微信文章都有您的广告');
|
||
} else {
|
||
Reply::response('用户注册失败');
|
||
}
|
||
} else {
|
||
Reply::response('获取用户信息失败');
|
||
}
|
||
} else {
|
||
Reply::response('用户被禁用');
|
||
}
|
||
} else {
|
||
Reply::response('用户不存在');
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 扫描推广二维码,可以在这里确定用户的绑定关系
|
||
*/
|
||
private function scan()
|
||
{
|
||
$pid = $this->request['eventkey'];
|
||
$openid = $this->request['fromusername'];
|
||
|
||
$user = Member::where(['openid' => $openid])->find();
|
||
$parent = Member::find($pid);
|
||
if ($user) {
|
||
Reply::response('尊敬的【' . $user->info->nickname . '】先生/女士,欢迎您关注“超级服务管家”请点击下方的“推广工具”来开启您的新媒体微营销的“推广之旅”吧!');
|
||
} else {
|
||
$info = Wechat\User::info($openid);
|
||
if ($info) {
|
||
$info['pid'] = $pid;
|
||
$result = MemberService::create($info);
|
||
$p = empty($parent) ? '自己' : $parent->info->nickname;
|
||
if ($result === true) {
|
||
Reply::response('尊敬的【' . $info['nickname'] . '】,您由【' . $p . '】推荐注册,超级服务管家是一款共享营销工具,可以让任意微信文章都有您的广告');
|
||
} else {
|
||
Reply::response('用户注册失败');
|
||
}
|
||
} else {
|
||
Reply::response('获取用户信息失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 取消关注
|
||
*/
|
||
private function unsubscribe()
|
||
{
|
||
}
|
||
|
||
/**
|
||
* 处理关键字事件
|
||
*/
|
||
private function keywords($keyword)
|
||
{
|
||
}
|
||
|
||
/**
|
||
* 首次关注回复
|
||
*/
|
||
private function first()
|
||
{
|
||
}
|
||
|
||
/**
|
||
* 处理未知回复
|
||
*/
|
||
private function unknown()
|
||
{
|
||
}
|
||
}
|