拓展小组服务团队工作-结算分润逻辑
This commit is contained in:
parent
f124075e34
commit
6258be966b
@ -56,6 +56,50 @@ class TownShareProfit
|
||||
}
|
||||
}
|
||||
|
||||
public function townTaskType2($taskInfo, $company, $taskSchedulePlan, $step, $contractCount)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
|
||||
$proportion = 0;
|
||||
//总金额除以2等于不可提现账号金额和收益
|
||||
$masterMoney = bcdiv($taskInfo['money'], 2, 2);
|
||||
|
||||
$remark = '来自任务【' . $taskSchedulePlan['template_info']['title'] . '】,';
|
||||
//服务部长收益 任务金额的50%为服务部长的收益
|
||||
$serviceManagerUser = User::where(['company_id' => $company['id'], 'group_id' => 14])->find();
|
||||
Log::info([$taskSchedulePlan['template_info']['title'].'结算-服务部长用户信息', $serviceManagerUser]);
|
||||
// 用户收益变动
|
||||
$arr = [$serviceManagerUser['id'], AccountLogEnum::UM_INC_TASK, AccountLogEnum::INC, $masterMoney, $taskSchedulePlan['sn'], $remark.'任务结算获得收益' . $masterMoney . '元', ['company_id' => $company['id'], 'proportion' => $proportion], 1];
|
||||
$this->master($arr);
|
||||
// 用户余额变动
|
||||
$arr_two = [$serviceManagerUser['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_DEPOSIT);
|
||||
$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)]);
|
||||
|
||||
if ($step == 2 && $contractCount >= 15) {
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error('54-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function AccountLog($companyId, $left_amount, $changeAmount, $change_object = 1, $change_type = 1, $action = 1)
|
||||
{
|
||||
$company_log = [
|
||||
|
@ -16,6 +16,7 @@ namespace app\common\logic\task;
|
||||
|
||||
|
||||
use app\common\logic\finance\TownShareProfit;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\dict\DictData;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\logic\BaseLogic;
|
||||
@ -293,10 +294,12 @@ class TaskLogic extends BaseLogic
|
||||
{
|
||||
try {
|
||||
Log::info(['镇管理公司定时任务下发-任务模板', $taskTemplate]);
|
||||
// 单次任务
|
||||
// 单次任务不重复下发,在结算时刷新任务时间
|
||||
if ($taskTemplate['types'] == 3) {
|
||||
$task = Task::where('template_id', $taskTemplate['id'])->find();
|
||||
if ($task) {
|
||||
// 累计任务进行天数,单次任务结算时,用于判断任务是否超时
|
||||
TaskTemplate::where('id', $taskTemplate['id'])->inc('day_count')->update();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -402,7 +405,7 @@ class TaskLogic extends BaseLogic
|
||||
self::dealTownTask1($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_2':
|
||||
// 协助总负责人开展工作任务 单次任务 周期内未完成要刷新任务的时间
|
||||
// 拓展小组服务团队工作任务
|
||||
self::dealTownTask2($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_3':
|
||||
@ -472,28 +475,110 @@ class TaskLogic extends BaseLogic
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拓展小组服务团队工作任务 单次任务
|
||||
* 当前任务进行天数 < 第一阶段天数 只刷新任务时间
|
||||
* 当前任务进行天数 = 第一阶段天数 做第一阶段结算 如果第一阶段已完成全部任务,也要刷新任务时间,等到第二阶段结算时才结束任务
|
||||
* 当前任务进行天数 > 第一阶段天数 但未到第二阶段结算时间 继续刷新任务时间
|
||||
* 当前任务进行天数 = (第一阶段+第二阶段)天数 未完成则关闭任务 完成则结算第二阶段金额
|
||||
*/
|
||||
private static function dealTownTask2($taskSchedulePlan)
|
||||
{
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$taskScheduleInfo = $taskSchedulePlan['scheduling'];
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$day = $taskTemplateInfo['stage_day_one'] + $taskTemplateInfo['stage_day_two'];
|
||||
if($taskTemplateInfo['day_count']>$day){
|
||||
Task::where('id', $taskSchedulePlan['task_id'])->update(['status' =>5]);
|
||||
Log::info($taskTemplateInfo['title'] . '结算失败,任务为超时:' . json_encode($taskSchedulePlan));
|
||||
return false;
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->with('director_info')->find();
|
||||
|
||||
// 当前任务进行天数 < 第一阶段天数 只刷新任务时间
|
||||
if($taskTemplateInfo['day_count'] < $taskTemplateInfo['stage_day_one']) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return true;
|
||||
}
|
||||
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->field('director_uid,status,money,start_time,end_time')->with('director_info')->find();
|
||||
if($taskTemplateInfo['day_count'] <= $day){
|
||||
TaskSchedulingPlan::where('id', $taskSchedulePlan['id'])->update(['is_pay' => 0]);
|
||||
try{
|
||||
Task::where('id', $taskSchedulePlan['task_id'])->update(['create_time' => $task['start_time']+86400,'update_time' =>time(),'start_time'=>$task['start_time']+86400,'end_time'=>$task['start_time']+86400+86399]);
|
||||
}catch(\Exception $e){
|
||||
$start_time = strtotime(date('Y-m-d'));
|
||||
Task::where('id', $taskSchedulePlan['task_id'])->update(['create_time' => $start_time+86400,'update_time' =>time(),'start_time'=>$start_time+86400,'end_time'=> $start_time + 86400+86399]);
|
||||
// 当前任务进行天数 = 第一阶段天数 做第一阶段结算 如果第一阶段已完成全部任务,也要刷新任务时间,等到第二阶段结算时才结束任务
|
||||
if($taskTemplateInfo['day_count'] == $taskTemplateInfo['stage_day_one']) {
|
||||
// 已签约的小组服务合同个数
|
||||
$contractCount = Contract::where(['party_a' => $townCompany['id'], 'status' => 1, 'contract_type' => 25])->count();
|
||||
if ($contractCount < 9) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return false;
|
||||
}
|
||||
$totolMoney = bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money_one'], 2);
|
||||
$taskMoney = 0;
|
||||
switch ($contractCount) {
|
||||
case 9:
|
||||
$taskMoney = bcmul($totolMoney, 0.4, 2);
|
||||
break;
|
||||
case 10:
|
||||
$taskMoney = bcmul($totolMoney, 0.4, 2);
|
||||
break;
|
||||
case 11:
|
||||
$taskMoney = bcmul($totolMoney, 0.5, 2);
|
||||
break;
|
||||
case 12:
|
||||
$taskMoney = bcmul($totolMoney, 0.6, 2);
|
||||
break;
|
||||
case 13:
|
||||
$taskMoney = bcmul($totolMoney, 0.6, 2);
|
||||
break;
|
||||
case 14:
|
||||
$taskMoney = bcmul($totolMoney, 0.7, 2);
|
||||
break;
|
||||
case 15:
|
||||
$taskMoney = bcmul($totolMoney, 1, 2);
|
||||
break;
|
||||
}
|
||||
if ($contractCount > 15) {
|
||||
$taskMoney = bcmul($totolMoney, 1, 2);
|
||||
}
|
||||
$task['money'] = $taskMoney; // 任务金额
|
||||
(new TownShareProfit())->townTaskType2($task, $townCompany, $taskSchedulePlan, 1, $contractCount);
|
||||
}
|
||||
|
||||
// 当前任务进行天数 > 第一阶段天数 但未到第二阶段结算 继续刷新任务时间
|
||||
if($taskTemplateInfo['day_count'] > $taskTemplateInfo['stage_day_one'] && $taskTemplateInfo['day_count'] < $day){
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
}
|
||||
|
||||
// 当前任务进行天数 = 第一+第二阶段天数 第二阶段结算
|
||||
if ($taskTemplateInfo['day_count'] == $day) {
|
||||
// 已签约的小组服务合同个数
|
||||
$contractCount = Contract::where(['party_a' => $townCompany['id'], 'status' => 1, 'contract_type' => 25])->count();
|
||||
// 第二阶段未完成
|
||||
if ($contractCount < 15) {
|
||||
// 关闭任务,并且没有奖励
|
||||
Task::where('id', $taskSchedulePlan['task_id'])->update(['status' => 5]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$taskMoney = bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2);
|
||||
$task['money'] = $taskMoney; // 任务金额
|
||||
|
||||
(new TownShareProfit())->townTaskType2($task, $townCompany, $taskSchedulePlan, 2, $contractCount);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static function flushTaskTime($taskSchedulePlan)
|
||||
{
|
||||
$time = strtotime(date('Y-m-d')); // 今天的 00:00:00
|
||||
|
||||
TaskSchedulingPlan::where(['id' => $taskSchedulePlan['id']])->update(
|
||||
[
|
||||
'create_time' => $time+86400, //第二天的00:00:00
|
||||
'update_time' =>time(),
|
||||
'start_time'=>$time+86400, //第二天的00:00:00
|
||||
'end_time'=>$time+86400+86399 //第二天的 23:59:59
|
||||
]);
|
||||
|
||||
Task::where('id', $taskSchedulePlan['task_id'])->update(
|
||||
[
|
||||
'create_time' => $time+86400,
|
||||
'update_time' => time(),
|
||||
'start_time'=> $time+86400,
|
||||
'end_time'=> $time+86400+86399
|
||||
]);
|
||||
}
|
||||
|
||||
private static function dealTownTask3($taskSchedulePlan)
|
||||
|
Loading…
x
Reference in New Issue
Block a user