TaskSystem/app/job/TaskInformationJob.php
2023-08-15 14:38:20 +08:00

136 lines
5.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\job;
use app\common\logic\finance\ShareProfit;
use app\common\model\task\Task;
use Symfony\Component\HttpClient\HttpClient;
use think\queue\Job;
use think\facade\Log;
use app\common\model\Company;
/**
* 任务结算执行的具体逻辑
*/
class TaskInformationJob
{
public function fire(Job $job, $data)
{
// if ($job->attempts() > 1) {
// //通过这个方法可以检查这个任务已经重试了几次了
// }
$company = Company::where('id', $data['company_id'])->field('id,deposit,company_money,user_id,day_count,company_type,province,city,area,street,village,brigade')->find(); // 可能要判断预存金是否满足
$arr['status']=0;
if ($data['template_info']['type'] == 31) {
$task_id = explode(',', $data['task_id']);
$task_count = Task::where('id', 'in', $task_id)->field('director_uid')->with('director_info')->select();
if (empty($task_count)) {
Log::error('任务结算失败任务id' . $task_id);
return false;
}
if (count($task_count) == count($task_id)) {
$name_arr = [];
foreach ($task_count as $key => $value) {
$name_arr[$key] = $value['director_info']['nickname'];
}
$name = implode('、', $name_arr);
$arr['status']=1;
}else{
Log::error('任务结算失败任务id' . $task_id);
return false;
}
}else{
$task_count = Task::where('id', $data['task_id'])->field('director_uid')->with('director_info')->find();
if (empty($task_count)) {
Log::error('任务结算失败任务id' . $data['task_id']);
return false;
}
$name = $task_count['director_info']['nickname'];
$arr['status']=1;
}
if ($data['template_info']['type'] == 32) {
$yesterday = date('Y-m-d', strtotime('-1 day', time()));
// "brigade_id" => "3",
// "city_code" => "510500",
// "district_code" => "510502",
// "street_code" => "510502106",
// "village_code" => "510502106201",
$parmas = [
"start_date" => $yesterday,
"end_date" => $yesterday
];
switch ($company['company_type']) {
case 18:
$parmas['brigade_id'] = $company['brigade'];
$parmas['village_code'] = $company['village'];
$parmas['street_code'] = $company['street'];
$parmas['district_code'] = $company['area'];
$parmas['city_code'] = $company['city'];
break;
case 17:
$parmas['village_code'] = $company['village'];
$parmas['street_code'] = $company['street'];
$parmas['district_code'] = $company['area'];
$parmas['city_code'] = $company['city'];
break;
case 16:
$parmas['street_code'] = $company['street'];
$parmas['district_code'] = $company['area'];
$parmas['city_code'] = $company['city'];
break;
case 15:
$parmas['district_code'] = $company['area'];
$parmas['city_code'] = $company['city'];
break;
case 14:
$parmas['city_code'] = $company['city'];
break;
default:
Log::error('任务结算失败,公司类型错误:' . $company['company_type']);
return false;
}
try {
$res = HttpClient::create()->request('GET', 'https://crmeb-test.shop.lihaink.cn/api/order/statistics', [
'query' => $parmas,
]);
$json = json_decode($res->getContent(), true);
if ($json['status'] == 200) {
$arr['total_price'] = $json['data']['total_price'];
if($json['data']['total_price']>100){
$arr['status']=1;
}
} else {
$arr['total_price'] = 0;
Log::error('获取订单金额失败:' . $json . '参数:' . json_encode($parmas));
}
} catch (\Exception $e) {
Log::error('获取订单金额失败:' . $e->getMessage() . '参数:' . json_encode($parmas));
return false;
}
}
try{
$arr['money'] = $data['template_info']['money'];
$arr['company_id'] = $data['scheduling']['company_id'];
$arr['msg'] = '来自任务【' . $data['template_info']['title'] . '】,执行人:' . $name . ',的任务结算';
$arr['proportion_one'] = $data['template_info']['proportion_one'];
$arr['proportion_two'] = $data['template_info']['proportion_two'];
$arr['sn'] = $data['sn'];
$arr['id'] = $data['id'];
} catch (\Exception $e) {
Log::error('任务结算失败:' . $e->getMessage().json_encode($data));
return false;
}
(new ShareProfit())->first($arr, $company);
//如果任务执行成功后 记得删除任务不然这个任务会重复执行直到达到最大重试次数后失败后执行failed方法
$job->delete();
}
public function failed($data)
{
Log::error('任务结算失败' . $data);
// ...任务达到最大重试次数后,失败了
}
}