query($sql); } //代替公会的人10秒内发出五句话 public function firstuser_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()')->limit(5)->column('id'); //dump($ghuser); //随机取出一句话 $oneword = Db::name('plantask_accost')->orderRaw('rand()')->limit(5)->column('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){ for($i = 0;$i < 5;$i++){ $ghuser_one = isset($ghuser[$i]) ? $ghuser[$i] : $ghuser[array_rand($ghuser)]; $oneword_one = isset($oneword[$i]) ? $oneword[$i] : $oneword[array_rand($oneword)]; $this->sendMessageToUser($ghuser_one,$oneuser,$oneword_one); } $cache->set('plantask_first_word_'.$oneuser, 5); } } //二期之后,废弃 //代替公会的人发出第一句话 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); } } //清空redis public function clear_redis(){ $val = input('uid'); $cache = Cache::connect(['type'=>'Redis']); $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; } }