合肥金麓客户积分系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

172 lines
7.8 KiB

<?php
namespace app\task\controller;
use think\Db;
use think\facade\Env;
use think\Controller;
class Task extends Controller{
// 定时任务 每日过期积分
public function outUserPoint(){
$now = time();
//获取所有的用户所有已到期的有剩余积分的数据 求和
$admin_out_points = Db::table('admin_point_log')->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']],
"keyword3"=>["value"=>$message['out_point']],
"keyword4"=>["value"=>$message['get_point']."(有效积分:".$message['point'].")"],
// "keyword5"=>["value"=>$message['point']],
"keyword5"=>["value"=>date("Y年m月d日 H:i",$message['take_time']?:$message['add_time'])],
"remark"=>["value"=>$message['remark']],
],
];
$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);
}
}
}
}
}