Files
tuiguangzhushou/application/mobile/controller/Weixin.php
2020-08-06 15:26:41 +08:00

220 lines
7.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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()
{
}
}