diff --git a/app/common/logic/finance/VillageShareProfit.php b/app/common/logic/finance/VillageShareProfit.php index 9ad50a6ef..48f415d95 100644 --- a/app/common/logic/finance/VillageShareProfit.php +++ b/app/common/logic/finance/VillageShareProfit.php @@ -121,7 +121,7 @@ class VillageShareProfit } } - public function dealVillageTaskSettlement3($taskInfo, $townCompany, $taskSchedulePlan, $leftTransactionPool) + public function dealVillageTaskSettlement3($taskInfo, $townCompany, $taskSchedulePlan) { try { Db::startTrans(); @@ -130,8 +130,6 @@ class VillageShareProfit (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) { @@ -195,7 +193,7 @@ class VillageShareProfit } } - public function dealVillageTaskSettlement7(Task $taskInfo, Company $townCompany, $taskSchedulePlan) + public function dealVillageTaskSettlement7(Task $taskInfo, Company $townCompany, $taskSchedulePlan, $leftTransactionPool) { try { Db::startTrans(); @@ -204,6 +202,8 @@ class VillageShareProfit (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) { diff --git a/app/common/logic/task/TaskLogic.php b/app/common/logic/task/TaskLogic.php index 5644a844c..9c9604f3c 100644 --- a/app/common/logic/task/TaskLogic.php +++ b/app/common/logic/task/TaskLogic.php @@ -2767,6 +2767,7 @@ class TaskLogic extends BaseLogic $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, 'is_contract'=>1])->select()->toArray(); + $villageTransactionPool = $taskTemplateInfo['transaction_pool']; // 村交易池 $villageTotalTradeAmount = 0; // 村下属小组服务公司 每日实际总交易额 $targetAmount = 0; // 村下属小组服务公司每日 目标总交易额 @@ -2778,12 +2779,13 @@ class TaskLogic extends BaseLogic if ($tempTask) { $plan = TaskSchedulingPlan::where(['id'=>$tempTask['scheduling_plan_id']])->find(); if ($plan['is_pay'] == 1) { - $extend = json_decode($tempTask['extend'], true); + $extend = $tempTask['extend']; $targetAmount += $extend['transaction']['arr']['day_money']; $villageTotalTradeAmount += $extend['transaction']['arr']['total_price']; } } } + // 完成条件: 查村所属小组服务公司当日实际完成金额总和+村管理公司的资金池 > 查镇所属小组服务公司当日任务目标金额总和 if($targetAmount != 0 && bcadd($villageTransactionPool, $villageTotalTradeAmount, 2) >= bcmul($targetAmount, 0.8, 2)) { // 将余下金额放入镇交易池 @@ -2843,9 +2845,9 @@ class TaskLogic extends BaseLogic $target = $taskTemplateInfo['extend']['target']; $stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']); $villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find(); + $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]; $task = Task::where('id', $taskSchedulePlan['task_id'])->find(); - // 村地区码与村管理公司一样且在村管理公司负责小队中 - $groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18, 'is_contract'=>1])->select()->toArray(); + // 任务累计天数 < 第一阶段+第二阶段 刷新任务 if ($dayCount < $stageDayCount) { @@ -2857,7 +2859,7 @@ class TaskLogic extends BaseLogic // 目标入股金额 $targetShareholderedMoney = bcmul($target, 3000, 2); // 小组服务股金上交金额 - $shareholderedMoney = Db::name('company_sharecapital_change_log')->where(['parent_company_id'=>$villageCompany['id']])->sum('amount'); + $shareholderedMoney = Db::name('company_sharecapital_change_log')->where(['parent_company_id'=>$townCompany['id']])->sum('amount'); $rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2); if (bccomp($rate, 0.5, 2) == -1) { @@ -2932,12 +2934,10 @@ class TaskLogic extends BaseLogic 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 + // 小组服务和村公司股金上交金额 + $shareholderedMoney = Db::name('company_sharecapital_change_log')->whereIn('subordinate_company_id', $companyIds)->where(['parent_company_id'=>$villageCompany['id']])->sum('amount'); + // 目标上交股金金额 小组应组建团队数量*3000 + 村 6000 + $targetShareholderedMoney = bcadd(bcmul($target, 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); @@ -2993,7 +2993,7 @@ class TaskLogic extends BaseLogic // 任务累计天数 = stage1 从商城查询种养殖商户的交易额,判定是否完成任务,完成则结算 if ($dayCount == $stageDayOne) { - $startTime = strtotime(date('Y-m-d',strtotime($taskTemplateInfo['create_time'])))+86400; + $startTime = strtotime(date('Y-m-d',strtotime($taskTemplateInfo['create_time'])))+86400; // 创建任务的第二天00:00:00开始 $endTime = strtotime('+30 day', $startTime); self::finishVillageTask7($startTime, $endTime, 13000, $taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], $villageCompany, $taskSchedulePlan); } @@ -3054,10 +3054,13 @@ class TaskLogic extends BaseLogic ]; $result = ShopRequestLogic::getPlantingAndBreedingMerchantTradeAmount($param); // todo 商城接口那边需要确定种养殖基地是何种类型的商户 $tradeAmount = $result['data']['procure_amount']; - - if ($tradeAmount >= $targetAmount) { + // 交易池 + $transactionPool = $taskSchedulePlan['template_info']['transaction_pool']; + $totalTradeAmount = bcadd($transactionPool, $tradeAmount, 2); + if ($totalTradeAmount >= $targetAmount) { $task['money'] = bcmul($dayNum, $perMoney, 2); - (new VillageShareProfit())->dealVillageTaskSettlement7($task, $villageCompany, $taskSchedulePlan); + $leftTransactionPool = bcsub($totalTradeAmount, $targetAmount, 2); + (new VillageShareProfit())->dealVillageTaskSettlement7($task, $villageCompany, $taskSchedulePlan, $leftTransactionPool); } }