123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?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 user_active(){
- $actitime = time() - 600;
- //$map = ['requesttime' < $actitime];
- $sql = 'update `mt_user` set is_active = 0 where id in (select user_id from mt_user_active where requesttime < '.$actitime.')';
- //echo $sql;
- db()->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;
- }
- }
|