add 村联络员任务下发,结算判定,分润.无法自动判定的任务的提交和审批以及结算。
This commit is contained in:
parent
3f164288ac
commit
73f79b6036
@ -56,7 +56,7 @@ class ApproveController extends BaseAdminController
|
||||
}
|
||||
Db::commit();
|
||||
|
||||
// 结算
|
||||
// 镇农科公司任务-数字农贸宣传业务、加工业务的建设和招商工作任务 结算
|
||||
if ($approve->type == Approve::APPROVE_TYPE_4) {
|
||||
$taskSchedulePlan = TaskSchedulingPlan::where('la_task_scheduling_plan.id', $task['scheduling_plan_id'])
|
||||
->where('is_pay',0)
|
||||
@ -67,6 +67,17 @@ class ApproveController extends BaseAdminController
|
||||
->toArray();
|
||||
TaskLogic::dealTaskMarketingDirector10($taskSchedulePlan, $approve);
|
||||
}
|
||||
|
||||
if ($approve->type == Approve::APPROVE_TYPE_5) {
|
||||
$taskSchedulePlan = TaskSchedulingPlan::where('la_task_scheduling_plan.id', $task['scheduling_plan_id'])
|
||||
->where('is_pay',0)
|
||||
->with(['template_info'])
|
||||
->withJoin(['scheduling'], 'left')
|
||||
->where('scheduling.company_type', 17)
|
||||
->find()
|
||||
->toArray();
|
||||
TaskLogic::dealVillageTask6($taskSchedulePlan, $approve);
|
||||
}
|
||||
}
|
||||
|
||||
// 拒绝
|
||||
|
@ -101,5 +101,10 @@ class DictDataController extends BaseAdminController
|
||||
return $this->data($result);
|
||||
}
|
||||
|
||||
public function getTaskApproveTypeList()
|
||||
{
|
||||
$result = DictDataLogic::getTaskApproveTypeList();
|
||||
return $this->data($result);
|
||||
}
|
||||
|
||||
}
|
@ -84,4 +84,9 @@ class DictDataLogic extends BaseLogic
|
||||
{
|
||||
return DictData::whereIn('id', [30,16,41])->order('sort')->select()->toArray();
|
||||
}
|
||||
|
||||
public static function getTaskApproveTypeList()
|
||||
{
|
||||
return DictData::where(['type_value' => 'task_approve_type', 'status' => 1])->column('value');
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ use app\job\TaskInformationJob;
|
||||
use app\job\TownTaskAdd;
|
||||
use app\job\TownTaskSettlementJob;
|
||||
use app\job\VillageTaskAdd;
|
||||
use app\job\VillageTaskSettlementJob;
|
||||
use think\facade\Log;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
@ -136,7 +137,12 @@ class CronController extends BaseApiController
|
||||
//任务下发
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
// 查询系统 所有镇农科公司 未下发 的 任务安排
|
||||
$taskSchedulingList = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 17)->with('company_info')->select()->toArray();
|
||||
$taskSchedulingList = TaskScheduling::where('cron_time', '<', $time)
|
||||
->where('status', 1)
|
||||
->where('company_type', 17)
|
||||
->with('company_info')
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
$taskSchedulingIds = [];
|
||||
$companyIds = [];
|
||||
@ -158,4 +164,25 @@ class CronController extends BaseApiController
|
||||
Log::info('村管理公司定时任务下发执行成功' . date('Y-m-d H:i:s'));
|
||||
return $this->success('村管理公司定时任务下发执行成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 村管理公司任务结算
|
||||
*/
|
||||
public function village_task_settlement()
|
||||
{
|
||||
Log::info('村管理公司定时任务结算执行-开始'.date('Y-m-d H:i:s'));
|
||||
//today 今日未结算的任务计划
|
||||
$taskSchedulingPlanList = TaskSchedulingPlan::whereDay('end_time','today')
|
||||
->withJoin(['scheduling'], 'left')
|
||||
->where('scheduling.company_type', 17)
|
||||
->where('is_pay',0)
|
||||
->with(['template_info'])
|
||||
->select()
|
||||
->toArray();
|
||||
foreach($taskSchedulingPlanList as $taskSchedulingPlan){
|
||||
queue(VillageTaskSettlementJob::class, $taskSchedulingPlan);
|
||||
}
|
||||
Log::info('村管理公司定时任务结算执行-结束'.date('Y-m-d H:i:s'));
|
||||
return $this->success('村管理公司定时任务结算执行成功');
|
||||
}
|
||||
}
|
@ -189,4 +189,20 @@ class ShopRequestLogic extends BaseLogic
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询村管理公司负责片区内的种养殖商户交易额
|
||||
*/
|
||||
public static function getPlantingAndBreedingMerchantTradeAmount($param)
|
||||
{
|
||||
try {
|
||||
$requestResponse = HttpClient::create()->request('GET', self::$shopUrlPrefix . '', [
|
||||
'query' => $param
|
||||
]);
|
||||
return $requestResponse->getContent();
|
||||
} catch (Exception $e) {
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
196
app/common/logic/finance/VillageShareProfit.php
Normal file
196
app/common/logic/finance/VillageShareProfit.php
Normal file
@ -0,0 +1,196 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\logic\finance;
|
||||
|
||||
use app\common\enum\user\AccountLogEnum;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\company\CompanyAccountLog;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use app\common\model\user\User;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
class VillageShareProfit
|
||||
{
|
||||
/**
|
||||
* 分润
|
||||
*/
|
||||
public function shareProfit($taskInfo, $company, $taskSchedulePlan)
|
||||
{
|
||||
$proportion = 0;
|
||||
//总金额除以2等于不可提现账号金额和收益
|
||||
$masterMoney = bcdiv($taskInfo['money'], 2, 2);
|
||||
|
||||
$remark = '来自任务【' . $taskSchedulePlan['template_info']['title'] . '】,';
|
||||
$liaisonMan = (new User())->searchLiaisonMan($company['id']);
|
||||
Log::info([$taskSchedulePlan['template_info']['title'].'结算-村联络员用户信息', $liaisonMan]);
|
||||
|
||||
// 用户收益变动
|
||||
$arr = [$liaisonMan['id'], AccountLogEnum::UM_INC_TASK, AccountLogEnum::INC, $masterMoney, $taskSchedulePlan['sn'], $remark.'任务结算获得收益' . $masterMoney . '元', ['company_id' => $company['id'], 'proportion' => $proportion], 1];
|
||||
$this->master($arr);
|
||||
// 用户余额变动
|
||||
$arr_two = [$liaisonMan['id'], AccountLogEnum::UM_INC_TASKUSER, AccountLogEnum::INC, $masterMoney, $taskSchedulePlan['sn'], $remark . '获得账户余额' . $masterMoney . '元', ['company_id' => $company['id'], 'proportion' => $proportion], 1];
|
||||
$this->Account($arr_two);
|
||||
|
||||
// 公司收益
|
||||
$deposit_count = bcadd($company['deposit'], $masterMoney, 2);
|
||||
// 公司收益变动记录
|
||||
$this->AccountLog($company['id'], $deposit_count, $masterMoney, 1, CompanyAccountLog::TASK_INC_INCOME);
|
||||
$company_money_count = bcadd($company['company_money'], $masterMoney, 2);
|
||||
//公司余额变动记录
|
||||
$this->AccountLog($company['id'], $company_money_count, $masterMoney, 1, CompanyAccountLog::TASK_INC_COMPANY_MONEY);
|
||||
// 变更公司收益和余额
|
||||
Company::where('id', $company['id'])->update(['deposit' => Db::raw('deposit+' . $masterMoney), 'company_money' => Db::raw('company_money+' . $masterMoney)]);
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement1(Task $taskInfo, Company $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement2($taskInfo, $townCompany, $taskSchedulePlan, $leftTransactionPool)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
// 更新镇交易池
|
||||
(new TaskTemplate())->updateTransactionPool($taskSchedulePlan['template_info']['id'], $leftTransactionPool);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement3($taskInfo, $townCompany, $taskSchedulePlan, $leftTransactionPool)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
// 更新镇交易池
|
||||
(new TaskTemplate())->updateTransactionPool($taskSchedulePlan['template_info']['id'], $leftTransactionPool);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement4(Task $taskInfo, Company $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement5(Task $taskInfo, Company $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement6(Task $taskInfo, Company $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement7(Task $taskInfo, Company $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function dealVillageTaskSettlement8(Task $taskInfo, Company $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -16,7 +16,9 @@ namespace app\common\logic\task;
|
||||
|
||||
|
||||
use app\common\logic\finance\TownShareProfit;
|
||||
use app\common\logic\finance\VillageShareProfit;
|
||||
use app\common\logic\ShopRequestLogic;
|
||||
use app\common\model\company\CompanyAccountLog;
|
||||
use app\common\model\CompanyComplaintFeedback;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\dict\DictData;
|
||||
@ -325,7 +327,7 @@ class TaskLogic extends BaseLogic
|
||||
Log::info(['村管理公司定时任务下发-添加plan结果', $TaskSchedulingPlan]);
|
||||
|
||||
// 添加任务
|
||||
$task_id = self::addTask($taskTemplate, $TaskSchedulingPlan, $time, $directorUid);
|
||||
$task_id = self::addVillageTask($taskTemplate, $TaskSchedulingPlan, $time, $directorUid);
|
||||
Log::info(['村管理公司定时任务下发-添加task结果', $task_id]);
|
||||
|
||||
// 关联任务计划和任务
|
||||
@ -340,6 +342,81 @@ class TaskLogic extends BaseLogic
|
||||
Log::error(['村管理公司定时任务添加失败', $e->getFile(), $e->getLine(), $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
private static function addVillageTask($taskTemplate, $TaskSchedulingPlan, $time, $directorUid)
|
||||
{
|
||||
$arr = [
|
||||
'template_id' => $taskTemplate['id'],
|
||||
'scheduling_plan_id' => $TaskSchedulingPlan['id'],
|
||||
'company_id' => $taskTemplate['company_id'],
|
||||
'title' => $taskTemplate['title'],
|
||||
'money' => $taskTemplate['money'],
|
||||
'type' => $taskTemplate['type'],
|
||||
'content' => $taskTemplate['content'],
|
||||
'start_time' => $time,
|
||||
'end_time' => $time + 86399,
|
||||
'director_uid' => $directorUid, // 指派给
|
||||
'create_time' => time(),
|
||||
'update_time' => time(),
|
||||
];
|
||||
$data = $arr;
|
||||
$data['money'] = self::countVillageTaskMoney($taskTemplate);
|
||||
$task_id = (new Task())->insertGetId($data);
|
||||
return $task_id;
|
||||
}
|
||||
|
||||
private static function countVillageTaskMoney($template)
|
||||
{
|
||||
$v_day_count = $template['day_count'];
|
||||
$v_day_count = $v_day_count + 1;
|
||||
$stageDayOneAccumulative = $template['stage_day_one']; // 第一阶段天数
|
||||
$stageDayTwoAccumulative = bcadd($template['stage_day_one'], $template['stage_day_two']); // 第二阶段天数 第一+第二
|
||||
$stageDayThreeAccumulative = bcadd($stageDayTwoAccumulative, $template['stage_day_three']); // 第三阶段天数 第二阶段累计值+第三
|
||||
|
||||
// 单次和循环任务
|
||||
if ($template['types'] == 1 || $template['types'] == 3) {
|
||||
if ($v_day_count <= $stageDayOneAccumulative) {
|
||||
// 第一阶段金额
|
||||
return $template['money'];
|
||||
} else if ($stageDayOneAccumulative < $v_day_count && $v_day_count<= $stageDayTwoAccumulative) {
|
||||
// 第二阶段金额
|
||||
return $template['money_two'];
|
||||
} else if ( $stageDayTwoAccumulative < $v_day_count && $v_day_count <= $stageDayThreeAccumulative) {
|
||||
// 第三阶段金额
|
||||
return $template['new_money_three'];
|
||||
}
|
||||
} elseif ($template['types'] == 2) {
|
||||
// 长期任务
|
||||
|
||||
// 协助小组服务团队完成辖区内的交易 第二个阶段即长期
|
||||
$townTaskTypeList = DictData::where(['type_value' => 'village_task_type', 'status' => 1])->column('value', 'id');
|
||||
if (isset($townTaskTypeList[$template['type']]) && $townTaskTypeList[$template['type']]=== 'village_task_type_2') {
|
||||
if ($v_day_count<= $stageDayOneAccumulative) {
|
||||
// 第一阶段金额
|
||||
return $template['money'];
|
||||
} elseif ( $v_day_count > $stageDayOneAccumulative) {
|
||||
// 长期金额
|
||||
return $template['money_three'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($v_day_count<= $stageDayOneAccumulative) {
|
||||
// 第一阶段金额
|
||||
return $template['money'];
|
||||
} elseif ( $stageDayOneAccumulative < $v_day_count && $v_day_count <= $stageDayTwoAccumulative) {
|
||||
// 第二阶段金额
|
||||
return $template['money_two'];
|
||||
} else if ($stageDayTwoAccumulative < $v_day_count && $template['stage_day_three'] == 0) {
|
||||
// 第三阶段为空,返回长期金额
|
||||
return $template['money_three'];
|
||||
} else if ( $stageDayTwoAccumulative < $v_day_count && $v_day_count <=$stageDayThreeAccumulative) {
|
||||
// 第三阶段金额
|
||||
return $template['new_money_three'];
|
||||
} else {
|
||||
// 长期金额
|
||||
return $template['money_three'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时添加任务
|
||||
@ -644,7 +721,8 @@ class TaskLogic extends BaseLogic
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$taskInfo = Task::where(['id' => $taskSchedulePlan['task_id']])->find();
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$groupServiceCompanyList = Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 18,'street'=>$townCompany['street']], true);
|
||||
// $groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$isDone = 1; // 任务是否完成标记
|
||||
$isTaskSchedule = 0; // 下属小组服务公司是否有每日任务安排标记
|
||||
|
||||
@ -1664,7 +1742,8 @@ class TaskLogic extends BaseLogic
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$taskInfo = Task::where(['id' => $taskSchedulePlan['task_id']])->find();
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$groupServiceCompanyList = Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 18,'street'=>$townCompany['street']], true);
|
||||
// $groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$isDone = 1; // 任务是否完成标记
|
||||
$isTaskSchedule = 0; // 下属小组服务公司是否有每日任务安排标记
|
||||
|
||||
@ -1806,7 +1885,8 @@ class TaskLogic extends BaseLogic
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$groupServiceCompanyList = Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 18,'street'=>$townCompany['street']], true);
|
||||
// $groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->with('director_info')->find();
|
||||
// 完成任务情况
|
||||
list($groupServiceCompanyCount, $doneTaskGroupServiceCompanyCount) = self::taskType3DoneInfo($groupServiceCompanyList);
|
||||
@ -1953,7 +2033,9 @@ class TaskLogic extends BaseLogic
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$townTask = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type'=> 18])->select()->toArray();
|
||||
// $groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type'=> 18])->select()->toArray();
|
||||
$groupServiceCompanyList = Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 18,'street'=>$townCompany['street']], true);
|
||||
|
||||
$townTransactionPool = $taskTemplateInfo['transaction_pool']; // 镇交易池
|
||||
$townTotalTradeAmount = 0; // 镇下属小组服务公司 每日实际总交易额
|
||||
$targetAmount = 0; // 镇下属小组服务公司每日 目标总交易额
|
||||
@ -2083,39 +2165,407 @@ class TaskLogic extends BaseLogic
|
||||
public static function villageTaskSettlement($taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Log::info(['镇农科公司定时任务结算执行-任务计划', $taskSchedulePlan]);
|
||||
Log::info(['存管理公司定时任务结算执行-任务计划', $taskSchedulePlan]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
// 任务类型用的数据字典主键id,将id和value作映射,避免测试和正式环境数据字典数据不一致时出问题
|
||||
$townTaskTypeList = DictData::where(['type_value' => 'village_task_type', 'status' => 1])->column('value', 'id');
|
||||
switch ($townTaskTypeList[$taskTemplateInfo['type']]){
|
||||
// 组建小组服务团队
|
||||
case 'village_task_type_1':
|
||||
|
||||
self::dealVillageTask1($taskSchedulePlan);
|
||||
break;
|
||||
// 协助小组服务团队完成辖区内的交易任务
|
||||
case 'village_task_type_2':
|
||||
self::dealVillageTask2($taskSchedulePlan);
|
||||
break;
|
||||
// 负责辖区内农产品安检和溯源
|
||||
case 'village_task_type_3':
|
||||
self::dealVillageTask3($taskSchedulePlan);
|
||||
break;
|
||||
// 督促小组服务团队入股
|
||||
case 'village_task_type_4':
|
||||
self::dealVillageTask4($taskSchedulePlan);
|
||||
break;
|
||||
// 入股甲方公司
|
||||
case 'village_task_type_5':
|
||||
self::dealVillageTask5($taskSchedulePlan);
|
||||
break;
|
||||
// 信息平台铺设工作
|
||||
case 'village_task_type_6':
|
||||
// 该任务的判定都需要上传资料,后台审批任务是否完成. 因此每天自动结算时,任务状态不为完成的,都做关闭任务处理
|
||||
$task = Task::where(['id'=>$taskSchedulePlan['task_id']])->find();
|
||||
if ($task['status'] != 3) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
break;
|
||||
// 种养殖基地订单匹配
|
||||
case 'village_task_type_7':
|
||||
self::dealVillageTask7($taskSchedulePlan);
|
||||
break;
|
||||
// 日常管理及其他临时任务
|
||||
case 'village_task_type_8':
|
||||
// 该任务的判定都需要上传资料,后台审批任务是否完成. 因此每天自动结算时,任务状态不为完成的,都做关闭任务处理
|
||||
$task = Task::where(['id'=>$taskSchedulePlan['task_id']])->find();
|
||||
if ($task['status'] != 3) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
Log::error(['镇农科任务结算失败',$e->getFile(), $e->getLine(), $e->getMessage()]);
|
||||
Log::error(['村管理任务结算失败',$e->getFile(), $e->getLine(), $e->getMessage()]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $taskSchedulePlan
|
||||
* 组建小组服务团队 单次任务
|
||||
* 任务累计天数 < 第一阶段+第二阶段 刷新任务
|
||||
* 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润
|
||||
*/
|
||||
private static function dealVillageTask1($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$dayCount = $taskTemplateInfo['day_count'];
|
||||
$target = $taskTemplateInfo['extend']['target'];
|
||||
$stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']);
|
||||
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
// 村地区码与村管理公司一样且在村管理公司负责小队中
|
||||
$groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18])->whereIn('brigade', $villageCompany['responsible_area'])->select()->toArray();
|
||||
|
||||
// 任务累计天数 < 第一阶段+第二阶段 刷新任务
|
||||
if ($dayCount < $stageDayCount) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润
|
||||
if ($dayCount == $stageDayCount) {
|
||||
$totalMoney = bcadd(bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2), bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2), 2) ;
|
||||
$taskMoney = 0;
|
||||
$groupServiceCompanyCount = count($groupServiceCompanyList);
|
||||
$rate = bcdiv($groupServiceCompanyCount, $target, 2);
|
||||
if (bccomp($rate, 0.5, 2) == -1) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return true;
|
||||
}
|
||||
if (bccomp($rate, 0.5, 2) == 0 || bccomp($rate, 0.5, 2) == 1 || bccomp(0.8, $rate, 2) == 1) {
|
||||
$taskMoney = bcmul($totalMoney, bcmul($rate, 0.6, 2), 2);
|
||||
}
|
||||
if (bccomp($rate, 0.8, 2) == 0 || bccomp($rate, 0.8, 2)) {
|
||||
$taskMoney = bcmul($totalMoney, bcmul($rate, 1, 2), 2);
|
||||
}
|
||||
$task['money'] = $taskMoney;
|
||||
(new VillageShareProfit())->dealVillageTaskSettlement1($task, $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $taskSchedulePlan
|
||||
* 协助小组服务团队完成交易任务
|
||||
*
|
||||
*/
|
||||
private static function dealVillageTask2($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['村管理公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
$groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18])->whereIn('brigade', $villageCompany['responsible_area'])->select()->toArray();
|
||||
$villageTransactionPool = $taskTemplateInfo['transaction_pool']; // 村交易池
|
||||
$villageTotalTradeAmount = 0; // 村下属小组服务公司 每日实际总交易额
|
||||
$targetAmount = 0; // 村下属小组服务公司每日 目标总交易额
|
||||
// 查村所属小组服务公司当日任务目标金额总和
|
||||
foreach ($groupServiceCompanyList as $groupServiceCompany) {
|
||||
$tempTask = Task::where(['company_id'=> $groupServiceCompany['id'], 'status'=>3, 'type'=>33])
|
||||
->whereDay('start_time','today')
|
||||
->find();
|
||||
if ($tempTask) {
|
||||
$plan = TaskSchedulingPlan::where(['id'=>$tempTask['scheduling_plan_id']])->find();
|
||||
if ($plan['is_pay'] == 1) {
|
||||
$extend = json_decode($tempTask['extend'], true);
|
||||
$targetAmount += $extend['transaction']['arr']['day_money'];
|
||||
$villageTotalTradeAmount += $extend['transaction']['arr']['total_price'];
|
||||
}
|
||||
}
|
||||
}
|
||||
// 完成条件: 查村所属小组服务公司当日实际完成金额总和+村管理公司的资金池 > 查镇所属小组服务公司当日任务目标金额总和
|
||||
if($targetAmount != 0 && bcadd($villageTransactionPool, $villageTotalTradeAmount, 2) >= bcmul($targetAmount, 0.8, 2)) {
|
||||
// 将余下金额放入镇交易池
|
||||
$leftTransactionPool = bcsub(bcadd($villageTransactionPool, $villageTotalTradeAmount, 2), $targetAmount, 2);
|
||||
(new VillageShareProfit())->dealVillageTaskSettlement2($task, $villageCompany, $taskSchedulePlan, $leftTransactionPool);
|
||||
} else {
|
||||
// 关闭任务
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $taskSchedulePlan
|
||||
* 负责辖区内农产品安检和溯源
|
||||
*/
|
||||
private static function dealVillageTask3($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['村管理公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
|
||||
$villageCompany = Company::where('id', $taskTemplateInfo['company_id'])->find(); // 村管理公司
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
|
||||
// 片区下公司有任一投诉都判定为未完成
|
||||
$isDone = 1;
|
||||
$companyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18])
|
||||
->whereIn('brigade', $villageCompany['responsible_area'])
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
foreach ($companyList as $company) {
|
||||
$complain = CompanyComplaintFeedback::where(['company_id'=>$company['id']])->whereDay('create_time', 'today')->find();
|
||||
if (!empty($complain)) {
|
||||
$isDone = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 完成任务 结算 分润
|
||||
if ($isDone === 1) {
|
||||
(new VillageShareProfit())->dealVillageTaskSettlement3($task, $villageCompany, $taskSchedulePlan);
|
||||
} else {
|
||||
// 关闭任务
|
||||
(new Task())->closeTask($task['id']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $taskSchedulePlan
|
||||
* 督促小组服务团队入股
|
||||
*/
|
||||
private static function dealVillageTask4($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$dayCount = $taskTemplateInfo['day_count'];
|
||||
$target = $taskTemplateInfo['extend']['target'];
|
||||
$stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']);
|
||||
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
// 村地区码与村管理公司一样且在村管理公司负责小队中
|
||||
$groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18])->whereIn('brigade', $villageCompany['responsible_area'])->select()->toArray();
|
||||
|
||||
// 任务累计天数 < 第一阶段+第二阶段 刷新任务
|
||||
if ($dayCount < $stageDayCount) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润
|
||||
if ($dayCount == $stageDayCount) {
|
||||
$totalMoney = bcadd(bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2), bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2), 2) ;
|
||||
$groupServiceCompanyCount = count($groupServiceCompanyList);
|
||||
$rate = bcdiv($groupServiceCompanyCount, $target, 2);
|
||||
if (bccomp($rate, 0.5, 2) == -1) {
|
||||
(new Task())->closeTask($task['id']);
|
||||
return true;
|
||||
}
|
||||
$task['money'] = self::countSettelmentMoney($rate, $totalMoney);
|
||||
(new VillageShareProfit())->dealVillageTaskSettlement4($task, $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
}
|
||||
|
||||
private static function countSettelmentMoney($rate, $totalMoney)
|
||||
{
|
||||
$settlementMoney = 0;
|
||||
|
||||
// =50% - %59.9 x40%
|
||||
if (bccomp($rate, 0.5, 2) == 0 || (bccomp($rate, 0.5, 2) == 1 && bccomp($rate, 0.599, 2) == -1)) {
|
||||
$settlementMoney= bcmul($totalMoney, 0.4, 2);
|
||||
}
|
||||
// =60% - %69.9 x50%
|
||||
if (bccomp($rate, 0.6, 2) == 0 || (bccomp($rate, 0.6, 2) == 1 && bccomp($rate, 0.699, 2) == -1)) {
|
||||
$settlementMoney = bcmul($totalMoney, 0.5, 2);
|
||||
}
|
||||
|
||||
// =70% - %79.9 x60%
|
||||
if (bccomp($rate, 0.7, 2) == 0 || (bccomp($rate, 0.7, 2) == 1 && bccomp($rate, 0.799, 2) == -1)) {
|
||||
$settlementMoney = bcmul($totalMoney, 0.6, 2);
|
||||
}
|
||||
|
||||
// =80% - %89.9 x70%
|
||||
if (bccomp($rate, 0.8, 2) == 0 || (bccomp($rate, 0.8, 2) == 1 && bccomp($rate, 0.899, 2) == -1)) {
|
||||
$settlementMoney = bcmul($totalMoney, 0.7, 2);
|
||||
}
|
||||
// >=90% x100%
|
||||
if (bccomp($rate, 0.9, 2) == 0 || bccomp($rate, 0.9, 2) == 1) {
|
||||
$settlementMoney = $totalMoney;
|
||||
}
|
||||
return $settlementMoney;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $taskSchedulePlan
|
||||
* 入股甲方公司
|
||||
* 任务累计天数 < 第一+第二阶段天数 刷新任务
|
||||
* 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润
|
||||
*/
|
||||
private static function dealVillageTask5($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$dayCount = $taskTemplateInfo['day_count'];
|
||||
$target = $taskTemplateInfo['extend']['target'];
|
||||
$stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']);
|
||||
// $townCompany = Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 41,'street'=>$villageCompany['street']], true)[0];
|
||||
// 任务累计天数 < 第一+第二阶段天数 刷新任务
|
||||
if ($dayCount < $stageDayCount) {
|
||||
self::flushTaskTime($taskSchedulePlan['task_id']);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润
|
||||
if ($dayCount == $stageDayCount) {
|
||||
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
// 小组公司列表 村地区码与村管理公司一样且在村管理公司负责小队
|
||||
$groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18])->whereIn('brigade', $villageCompany['responsible_area'])->select()->toArray();
|
||||
$shareholderedMoney = 0; // 已入股股金总额
|
||||
// 查询公司股金变动流水记录
|
||||
$companyIds[] = $villageCompany['id'];
|
||||
foreach ($groupServiceCompanyList as $company) {
|
||||
$companyIds[] = $company['id'];
|
||||
}
|
||||
// 已入股股金总额
|
||||
$shareholderedMoney = CompanyAccountLog::where(['change_object'=>CompanyAccountLog::SHAREHOLDER, 'change_type'=>CompanyAccountLog::TASK_INC_SHAREHOLDER_MONEY])
|
||||
->whereIn('company_id', $companyIds)
|
||||
->sum('change_amount');
|
||||
|
||||
$targetShareholderedMoney = bcadd(bcmul($target, 3000), 6000); // 小组应组建团队数量*3000 + 村 6000
|
||||
$rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2);
|
||||
$totalMoney = bcadd(bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2), bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2), 2) ;
|
||||
$task['money'] = self::countSettelmentMoney($rate, $totalMoney);
|
||||
(new VillageShareProfit())->dealVillageTaskSettlement5($task, $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $taskSchedulePlan
|
||||
* 信息平台铺设工作 app提交凭证,后台审批。通过后一次性发送
|
||||
*/
|
||||
public static function dealVillageTask6($taskSchedulePlan)
|
||||
{
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
// 结算
|
||||
$stageDayOneTotalTaskMoney = bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2);
|
||||
$stageDayTwoTotalTaskMoney = bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2);
|
||||
$taskMoney = bcadd($stageDayOneTotalTaskMoney, $stageDayTwoTotalTaskMoney, 2);
|
||||
$taskInfo['money'] = $taskMoney;
|
||||
(new VillageShareProfit())->dealVillageTaskSettlement6($task, $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $taskSchedulePlan
|
||||
* 种养殖基地订单匹配
|
||||
* 任务累计天数 < stage1 关闭任务
|
||||
* 任务累计天数 = stage1 从商城查询种养殖商户的交易额,判定是否完成任务,完成则结算
|
||||
* 任务累计天数 < stage1+stage2 关闭任务,不结算
|
||||
* 任务累计天数 = stage1+stage2 从商城查询种养殖商户的交易额,判定是否完成任务,完成则结算
|
||||
* 任务累计天数 < stage1 + stage2 + stage3 关闭任务,不结算
|
||||
* 任务累计天数 = stage1 + stage2 + stage3 从商城查询种养殖商户的交易额,判定是否完成任务,完成
|
||||
* 任务累计天数 - (stage1 + stage2 + stage3) 不能整除30 关闭任务
|
||||
* 任务累计天数 - (stage1 + stage2 + stage3) 整除30 从商城查询种养殖商户的交易额,判定是否完成任务,完成
|
||||
*/
|
||||
private static function dealVillageTask7($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$dayCount = $taskTemplateInfo['day_count'];
|
||||
$target = $taskTemplateInfo['extend']['target'];
|
||||
$stageDayOne = $taskTemplateInfo['stage_day_one'];
|
||||
$stageDayTwoCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']);
|
||||
$stageDayThreeCount = bcadd($stageDayTwoCount, $taskTemplateInfo['stage_day_three']);
|
||||
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
|
||||
// 任务累计天数 < stage1 关闭任务
|
||||
if ($dayCount < $stageDayOne) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
|
||||
// 任务累计天数 = stage1 从商城查询种养殖商户的交易额,判定是否完成任务,完成则结算
|
||||
if ($dayCount == $stageDayOne) {
|
||||
$startTime = strtotime(date('Y-m-d',strtotime($taskTemplateInfo['create_time'])))+86400;
|
||||
$endTime = strtotime('+30 day', $startTime);
|
||||
self::finishVillageTask7($startTime, $endTime, 13000, $taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
|
||||
// 任务累计天数 < stage1+stage2 关闭任务,不结算
|
||||
if ($dayCount < $stageDayTwoCount) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
|
||||
// 任务累计天数 = stage1+stage2 从商城查询种养殖商户的交易额,判定是否完成任务,完成则结算
|
||||
if ($dayCount == $stageDayTwoCount) {
|
||||
$startTime = strtotime('-30 day', $endTime);
|
||||
$endTime = strtotime(date('Y-m-d', time()));
|
||||
self::finishVillageTask7($startTime, $endTime, 17000, $taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
|
||||
// 任务累计天数 < stage1 + stage2 + stage3 关闭任务,不结算
|
||||
if ($dayCount < $stageDayThreeCount) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
|
||||
// 任务累计天数 = stage1 + stage2 + stage3 从商城查询种养殖商户的交易额,判定是否完成任务,完成
|
||||
if ($dayCount == $stageDayThreeCount) {
|
||||
$startTime = strtotime('-30 day', $endTime);
|
||||
$endTime = strtotime(date('Y-m-d', time()));
|
||||
self::finishVillageTask7($startTime, $endTime, 17000, $taskTemplateInfo['stage_day_three'], $taskTemplateInfo['new_money_three'], $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
|
||||
// 任务累计天数 - (stage1 + stage2 + stage3) 不能整除30 关闭任务
|
||||
if ($dayCount > $stageDayThreeCount && $dayCount % 30 != 0) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
|
||||
// 任务累计天数 - (stage1 + stage2 + stage3) 整除30 从商城查询种养殖商户的交易额,,判定是否完成任务,完成
|
||||
if ($dayCount > $stageDayThreeCount && $dayCount % 30 == 0) {
|
||||
$startTime = strtotime('-30 day', $endTime);
|
||||
$endTime = strtotime(date('Y-m-d', time()));
|
||||
self::finishVillageTask7($startTime, $endTime, 17000, 30, $taskTemplateInfo['money_three'], $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $startTime
|
||||
* @param $endTime
|
||||
* @param $targetAmount 任务目标金额
|
||||
* @param $dayNum 结算周期天数
|
||||
* @param $perMoney 每天金额
|
||||
* @param $villageCompany
|
||||
* @param $taskSchedulePlan
|
||||
* @return void
|
||||
*/
|
||||
private static function finishVillageTask7( $startTime, $endTime, $targetAmount, $dayNum, $perMoney, $villageCompany, $taskSchedulePlan)
|
||||
{
|
||||
$param = [
|
||||
'start_time' => $startTime,
|
||||
'end_time' => $endTime,
|
||||
'village' => $villageCompany['village']
|
||||
];
|
||||
$tradeAmount = ShopRequestLogic::getPlantingAndBreedingMerchantTradeAmount($param);
|
||||
if ($tradeAmount >= $targetAmount) {
|
||||
$task['money'] = bcmul($dayNum, $perMoney, 2);
|
||||
(new VillageShareProfit())->dealVillageTaskSettlement7($task, $villageCompany, $taskSchedulePlan);
|
||||
}
|
||||
}
|
||||
|
||||
public static function dealVillageTask8($taskSchedulePlan)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,8 @@ class Approve extends BaseModel
|
||||
const APPROVE_TYPE_3 = 3; // 开通交易
|
||||
const APPROVE_TYPE_4 = 4; // 镇农科市场部长数字农贸宣传业务、加工业务的建设和招商任务
|
||||
|
||||
const APPROVE_TYPE_5 = 5; // 村联络员任务-信息平台铺设工作任务
|
||||
|
||||
public function task()
|
||||
{
|
||||
return $this->hasOne(Task::class, 'id', 'task_id');
|
||||
|
26
app/job/VillageTaskSettlementJob.php
Normal file
26
app/job/VillageTaskSettlementJob.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace app\job;
|
||||
|
||||
use app\api\controller\RemoteController;
|
||||
use app\common\logic\finance\ShareProfit;
|
||||
use app\common\logic\task\TaskLogic;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use think\facade\Log;
|
||||
use think\queue\Job;
|
||||
|
||||
class VillageTaskSettlementJob
|
||||
{
|
||||
/**
|
||||
* 镇农科公司任务结算
|
||||
*/
|
||||
public function fire(Job $job, $taskSchedulingPlan)
|
||||
{
|
||||
TaskLogic::villageTaskSettlement($taskSchedulingPlan);
|
||||
//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
|
||||
$job->delete();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user