This commit is contained in:
2025-03-27 21:24:55 +08:00
parent 04cb00948d
commit 2e6ffc2a25
8 changed files with 164 additions and 7 deletions

View File

@@ -9,8 +9,12 @@
namespace app\index\controller;
use app\api\logic\MessageLogic;
use app\api\logic\TokenLogic;
use think\Controller;
use think\Db;
use wanghua\general_utility_tools_php\Mmodel;
use wanghua\general_utility_tools_php\tool\Tools;
//定时任务
class Tasktimer extends Controller
@@ -19,8 +23,102 @@ class Tasktimer extends Controller
//按分钟执行
function runMinutes(){
//客户回访计划
Mmodel::catchJson(function (){
//回访记录
$return_record = Db::table('fa_firmcustomerfollowuprecord')
->where('status','no')
->select();
if(empty($return_record)){
Tools::log_to_write_txt(['无回访记录计划,无需回访']);
return '';
}
foreach ($return_record as $k=>$item){
Tools::log_to_write_txt(['客户回访计划,开始:$item'=>$item]);
$ret = $this->postText($item);
dump($ret);
Tools::log_to_write_txt(['客户回访计划,结束:$res'=>$ret]);
}
//Tools::log_to_write_txt(['runMinutes出参$res'=>$ret]);
//dump($ret);
return '';
});
}
/**
* desc发送文字消息
* authorwh
* @return array
*/
private function postText($return_record){
//$firmcustomerfollowuprecord_id = input('firmcustomerfollowuprecord_id',1);
//查询客户
$cust = Db::table('fa_firmcustomer')
->where('id',$return_record['firmcustomer_id'])
->find();
if(empty($cust)){
return Tools::set_fail('有回访计划,客户不存在');
}
//查询客户所绑定的ai客服
$ai_config = Db::table('fa_aicustomerservice')
->where('id',$cust['aicustomerservice_ids'])
->find();
if(empty($ai_config)){
return Tools::set_fail('有回访计划无ai客服服务该客户');
}
$base_url = $ai_config['server_url'];
//查询回访计划
$plan = Db::table('fa_firmcustomerfollowuptimelist')
->where('firmcustomerfollowuprecord_id',$return_record['id'])
->order('followup_time asc')
->find();
if(empty($plan)){
return Tools::set_fail('该客户没有回访计划');
}
//记录创建时间
$create_time = $return_record['create_time'];
$day = (int)$plan['day'];
//在记录创建后的N天N点执行
$day_time = strtotime($create_time) + ($day * 86400);//N天后
if($day_time > time()){
return Tools::set_fail('未到回访时间');
}
$date = date('Y-m-d ',$day_time).$plan['followup_time'];
$exc_time = strtotime($date);//最终的执行时间
//校验时间是否达到执行计划时间
if($exc_time > time()){
return Tools::set_fail('未到计划回访时间');
}
$logic = new MessageLogic();
$logic->setBaseUrl($base_url);
$tokenArr = (new TokenLogic())->getToken();
$data = [
'appId'=>$tokenArr['appId'],
'toWxid'=>$cust['rel_wx'],
'content'=>$return_record['visit_msg'],
//@的好友,多个英文逗号分隔。群主或管理员@全部的人,则填写'notify@all'
'ats'=>$cust['rel_wx'],
];
Tools::log_to_write_txt(['回访客户,开始:$post_data'=>$data]);
$res = $logic->postText($data);
Tools::log_to_write_txt(['回访客户,结束:$res'=>$res]);
//修改回访记录回访状态
Db::table('fa_firmcustomerfollowuprecord')
->where('id',$return_record['id'])
->update([
'status'=>'yes',
'send_time'=>Tools::get_now_date(),
]);
return Tools::set_ok('发送成功');
}
}