field("SUM(use_point) AS user_point, aid")->where(['type'=>0,'status'=>0])->where('use_point','>',0)->where('out_time','<',$now)->group('aid')->select(); foreach ($admin_out_points as $admin_out_point){ //用户的总积分不变 有效积分扣除 $admin_point = Db::table('admin_point') ->where(['aid' => $admin_out_point['aid']])->find(); $update = [ "use_point"=>0, "status"=>1, ]; if(!$admin_point){ Db::table('admin_point_log')->where("aid",$admin_out_point['aid'])->where(['type'=>0,'status'=>0])->where('use_point','>',0)->where('out_time','<',$now)->update($update); continue; } $out_point = $admin_point['in_point']>=$admin_out_point['use_point']?$admin_out_point['use_point']:$admin_point['in_point']; Db::table('admin_point') ->where(['aid' => $admin_out_point['aid']])->setDec('in_point',$out_point); //有效积分扣除 Db::table('admin_point') ->where(['aid' => $admin_out_point['aid']])->setInc('out_point',$out_point); //过期积分增加 //历史记录可用积分清0 Db::table('admin_point_log')->where("aid",$admin_out_point['aid'])->where(['type'=>0,'status'=>0])->where('use_point','>',0)->where('out_time','<',$now)->update($update); //生成过期记录 $out_point_log = []; $out_point_log['aid'] = $admin_out_point['aid']; $out_point_log['take_id'] = 0; $out_point_log['change'] = -$out_point; $out_point_log['type'] = 2; $out_point_log['in_point'] = $admin_point['in_point']; $out_point_log['after_point'] = $admin_point['in_point'] - $out_point; $out_point_log['active_id'] = 0; $out_point_log['active_name'] = ""; $out_point_log['money'] = 0; $out_point_log['point'] = 0; $out_point_log['remark'] = date("Y年m月d日")."到期积分"; $out_point_log['out_time'] = 0; $out_point_log['add_time'] = time(); Db::table('admin_point_log')->insert($out_point_log); } } // 定时任务 每日过期积分 public function sendWxMessage(){ $weixinInfo = config('weixin_info'); $weixinTemplate = config('weixin_templates'); $now = time(); $appid = $weixinInfo['appid']; $appsecret = $weixinInfo['appSecret']; $access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; $access_token_json = $this->https_request($access_token_url,[]);//自定义函数 $access_token_array = json_decode($access_token_json,true);//对 JSON 格式的字符串进行解码,转换为 PHP 变量,自带函数 //获取access_token $access_token = $access_token_array['access_token'];//获取access_token对应的值 //待发送的积分消息 //获取所有的用户所有已到期的有剩余积分的数据 求和 $messages = Db::table('admin_point_message')->where(['status'=>0])->order("id desc")->limit(10)->select(); foreach ($messages as $message){ if(!$message['openid'] || !$weixinTemplate[$message['tempid']]){ $update = [ "status"=>-1 ]; Db::table('admin_point_message')->where('id',$message['id'])->update($update); continue; } $wxMessage = [ 'touser' => $message['openid'], 'template_id' => $weixinTemplate[$message['tempid']], "url" => 'http://jm.iiixo.com/', "data"=>[ "first"=>["value"=>"合肥金麓积分变动通知"], "keyword1"=>["value"=>$message['good_name']?$message['good_name']:"提货商品"], "keyword2"=>["value"=>$message['take_money'],"color"=>"#ff0000"], "keyword3"=>["value"=>$message['out_point'],"color"=>"#ffa500"], "keyword4"=>["value"=>$message['get_point']."(有效积分:".$message['point'].")","color"=>"#ffa500"], // "keyword5"=>["value"=>$message['point']], "keyword5"=>["value"=>date("Y年m月d日 H:i",$message['take_time']?:$message['add_time']),"color"=>"#808080"], "remark"=>["value"=>$message['remark'],"color"=>"#808080"], ], ]; $wxMessage = json_encode($wxMessage, JSON_UNESCAPED_UNICODE); $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$access_token}"; $res = $this->https_request($url,$wxMessage);//自定义函数 $result = json_decode($res,true);//对 JSON 格式的字符串进行解码,转换为 PHP 变量,自带函数 if($result['errcode'] == 0 ){ $update = [ "status"=>1, "send_time" => time(), ]; }else{ $update = [ "status"=>-1, ]; } Db::table('admin_point_message')->where('id',$message['id'])->update($update); } } // 定时任务 每日过期积分 public function sendWxMessageById($id){ $weixinInfo = config('weixin_info'); $weixinTemplate = config('weixin_templates'); $now = time(); $appid = $weixinInfo['appid']; $appsecret = $weixinInfo['appSecret']; $access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; $access_token_json = $this->https_request($access_token_url,[]);//自定义函数 $access_token_array = json_decode($access_token_json,true);//对 JSON 格式的字符串进行解码,转换为 PHP 变量,自带函数 //获取access_token $access_token = $access_token_array['access_token'];//获取access_token对应的值 //待发送的积分消息 $messages = Db::table('admin_point_message')->where(['status'=>0])->where("id",$id)->select(); foreach ($messages as $message){ if(!$message['openid'] || !$weixinTemplate[$message['tempid']]){ $update = [ "status"=>-1 ]; Db::table('admin_point_message')->where('id',$message['id'])->update($update); continue; } $wxMessage = [ 'touser' => $message['openid'], 'template_id' => $weixinTemplate[$message['tempid']], "url" => 'http://jm.iiixo.com/', "data"=>[ "first"=>["value"=>"合肥金麓积分变动通知"], "keyword1"=>["value"=>$message['good_name']?$message['good_name']:"提货商品"], "keyword2"=>["value"=>$message['take_money'],"color"=>"#ff0000"], "keyword3"=>["value"=>$message['out_point'],"color"=>"#ffa500"], "keyword4"=>["value"=>$message['get_point']."(有效积分:".$message['point'].")","color"=>"#ffa500"], // "keyword5"=>["value"=>$message['point']], "keyword5"=>["value"=>date("Y年m月d日 H:i",$message['take_time']?:$message['add_time']),"color"=>"#808080"], "remark"=>["value"=>$message['remark'],"color"=>"#808080"], ], ]; $wxMessage = json_encode($wxMessage, JSON_UNESCAPED_UNICODE); $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$access_token}"; $res = $this->https_request($url,$wxMessage);//自定义函数 $result = json_decode($res,true);//对 JSON 格式的字符串进行解码,转换为 PHP 变量,自带函数 if($result['errcode'] == 0 ){ $update = [ "status"=>1, "send_time" => time(), ]; }else{ $update = [ "status"=>-1, ]; } Db::table('admin_point_message')->where('id',$message['id'])->update($update); } } public function https_request($url,$data)//自定义函数,访问url返回结果 { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if (! empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } $data = curl_exec($curl); if (curl_errno($curl)){ return 'ERROR'.curl_error($curl); } curl_close($curl); return $data; } // 定时任务 每日监测 public function autotask(){ $daynum = date('d'); $sysinfo = Db::table('system')->where(['id'=>1])->field('maxgetnum,autoday')->find(); $maxgetnum = $sysinfo['maxgetnum']; $autoday = $sysinfo['autoday']; if ($daynum == 17) { // 循环所有用户 每月一日抢客户次数恢复30 $udata = []; $udata['curgetnum'] = 0; var_dump('月次数恢复:'. $maxgetnum); //Db::name('admin')->where('1=1')->update($udata); } // 所有客户跟进时间 7日未跟进自动划入公海 // 查询所有未成交的客户 $kehulist = Db::name('crm_leads')->where(['status'=>1,'issuccess'=>-1])->select(); foreach ($kehulist as $key => $value) { $last_up_time = $value['last_up_time']; $currentTime=time();//当前时间 if(!empty($last_up_time)){ $cnt=$currentTime-strtotime($last_up_time);//与已知时间的差值 $days = floor($cnt/(3600*24));//算出天数 if ($days >= $autoday && $days < 365) { // 自动转入公海 //$data['pr_gh_type'] = $pr_gh_type; var_dump($value['id'].'记录时间:'.$last_up_time . ' ---未跟进天数:'.$days.' ---间隔时间:'.$autoday);exit; $data['to_gh_time'] = date("Y-m-d H:i:s",time()); $data['status'] = 2;//0-线索,1客户,2公海 $data['id'] = $value['id']; $result = Db::table('crm_leads')->where(['id'=>$data['id']])->update($data); } } } } }