OpenServerController.php 4.8 KB
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/1/19
 * Time: 11:32
 */

namespace app\portal\controller;


use cmf\controller\HomeBaseController;
use cmf\controller\WeChatBaseController;
use EasyWeChat\Foundation\Application;
use think\Db;

class OpenServerController extends HomeBaseController
{
    public function index(){
        if(!isset($_GET["echostr"])){
            $this->responseMsg();
        }else{
            $this->valid();
        }
    }

    public function valid()
    {
        $echoStr = $_GET["echostr"];
        echo $echoStr;
        exit;
    }
    public function test(){
        dump(cache('referrer'));
        dump(cache('openid'));
        dump(cache('admin_id'));
        dump(cache('result'));
        dump(cache('result1'));
        dump(cache('third_party_user'));
        dump(cache('user'));
    }
    public function responseMsg()
    {
        $app=new Application(config('wechat_config'));
        $server = $app->server;

        $server->setMessageHandler(function ($message) {
            switch ($message->MsgType) {
                case 'event':
                    switch ($message->Event) {
                        case 'subscribe':
                            if(empty($message->EventKey)){
                                return '您好,欢迎关注“学考无忧”公众号。
我们致力于打造一个为广大家长和同学们提升知识视野,提高学习成绩的优质服务号,这里有热门的教育资讯,海量的免费资源,优质的学习干货,会为大家提供教辅类以及课外阅读阅读书籍,帮助同学们提高学习成绩。
真正让家长省心,孩子无忧。感谢关注。';
                            }else{
                                //获取用户openid
                                /*$openid=$message->FromUserName;
                                cache('openid',$openid);
                                $admin_id=substr($message->EventKey,8);
                                cache('admin_id',$admin_id);
                                $third_party_user = Db::name('third_party_user')->where('openid',$openid)->find();
                                cache('third_party_user',$third_party_user);
                                if(!empty($third_party_user)){
                                    $user = Db::name('user')->where('id',$third_party_user['user_id'])->find();
                                    cache('user',$user);
                                    if($user['channel'] == 2){
                                        $result1 = Db::name('user')->where('id',$user['id'])->update(['admin_id'=>$admin_id,'channel'=>1]);
                                        cache('result1',$result1);
                                    }
                                }else{
                                    //储存到推荐人推荐列表
                                    $referrer = Db::name('referrer')->where(array('openid'=>$openid))->find();
                                    cache('referrer',$referrer);
                                    if(empty($referrer)){
                                        $result = Db::name('referrer')->insert(array('admin_id'=>$admin_id,'openid'=>$openid,'create_time'=>time()));
                                        cache('result',$result);
//                                return "推荐人关注!";
                                    }else{
//                                return "已有推荐人!";
                                    }
                                }*/
                            }
                            break;

                        default:
//                            return '收到event消息';
                            break;
                    }
                    break;
                case 'text':
                    return '您好,欢迎关注“学考无忧”公众号。
我们致力于打造一个为广大家长和同学们提升知识视野,提高学习成绩的优质服务号,这里有热门的教育资讯,海量的免费资源,优质的学习干货,会为大家提供教辅类以及课外阅读阅读书籍,帮助同学们提高学习成绩。
真正让家长省心,孩子无忧。感谢关注。';
                    break;
                default:
//                    return '收到其它消息';
                    break;
            }
        });

        $response = $server->serve();

        $response->send();
    }

    private function check_signature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
}