<?php

namespace 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;
    }

}
