|
@@ -3,14 +3,134 @@
|
|
|
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 index()
|
|
|
+ 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('test'.$ghuser,'test'.$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 = 'test8';// 发送者
|
|
|
+ $to_user = 'test13';// 接收者
|
|
|
+ $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;
|
|
|
}
|
|
|
|
|
|
}
|