| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | <?phpnamespace app\index\controller;use think\Controller;use getusersig\getusersig;use tencentim\tencentim;use think\Db;use think\Cache;class Plantask extends Controller{    //代替公会的人发出第一句话    public function firstword_send()    {        //找出24小时内注册的男人        $map = [            'jointime' => ['gt',time()-86400],            'gender' => 1,            'gh_id'  => 0,        ];        $oneuser = Db::name('user')->where($map)->orderRaw('rand()')->value('id');        //dump($oneuser);        //找出公会的人        $map = [            'gh_id'  => ['gt',0],        ];        $ghuser = Db::name('user')->where($map)->orderRaw('rand()')->value('id');        //dump($ghuser);        //随机取出一句话        $oneword = Db::name('plantask_accost')->orderRaw('rand()')->value('title');        //dump($oneword);        //发送出去        $cache = Cache::connect(['type'=>'Redis']);        $times = $cache->get('plantask_first_word_'.$oneuser);        //dump($times);        if($times === false){            $times = 0;        }        if($times < 5){            $this->sendMessageToUser($ghuser,$oneuser,$oneword);            $cache->set('plantask_first_word_'.$oneuser, $times + 1);        }    }    //清空没用的redis    public function firstword_clear(){        $map = [            'jointime' => ['between',[time()-172800,time()-86400]],            'gender' => 1,            'gh_id'  => 0,        ];        $map = [];        $userlist = Db::name('user')->where($map)->order('id asc')->column('id');        if(empty($userlist)){            echo 'empty';            exit;        }        //清除        $cache = Cache::connect(['type'=>'Redis']);        foreach($userlist as $key => $val){            $cache->rm('plantask_first_word_'.$val);        }    }    /**     * 发送消息给某人-接口调用     */    public function sendToUser() {        $from_user = '26';// 发送者        $to_user = '32';// 接收者        $message = 'hello许犇';// 接收者        if(!$from_user || !$to_user || !$message) $this->error("参数缺失!");        $this->sendMessageToUser($from_user,$to_user,$message);    }    /**     * 发送消息给某人     *///https://console.tim.qq.com/v4/openim/sendmsg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json    public function sendMessageToUser($from_user,$to_user,$message) {//        $from_user = 54;//        $to_user = 6;//        $message = "sdsd";        $random = rand(10000000,99999999);        $usersig = $this->usersig("administrator");        // 获取配置信息        $config = config("tencent_im");        $url = "https://console.tim.qq.com/v4/openim/sendmsg";        $url .= "?sdkappid=".$config["sdkappid"];        $url .= "&identifier=administrator";        $url .= "&usersig=".$usersig;        $url .= "&random=".$random;        $url .= "&contenttype=json";        $tencentObj = new tencentim($url);        $data = [];        $data["SyncOtherMachine"] = 1;        $data["From_Account"] = (string)$from_user;        $data["To_Account"] = (string)$to_user;        $data["MsgRandom"] = rand(1000000,9999999);        $data["MsgTimeStamp"] = time();        $data["MsgBody"][] = [            "MsgType" => "TIMTextElem",            "MsgContent" => [                "Text"=> $message            ],        ];        $tencentObj->toSend($data);    }    /**     * 获取usersig签名-具体操作     */    private function usersig($user_id) {        // 获取配置信息        $config = config("tencent_im");        $usersigObj = new getusersig($config["sdkappid"],$config["key"]);        $usersig = $usersigObj->genUserSig($user_id);        return $usersig;    }}
 |