This commit is contained in:
chenbo 2023-11-15 11:02:33 +08:00
parent de5c213172
commit 16b0cd32e7
2 changed files with 21 additions and 18 deletions

View File

@ -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) {

View File

@ -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);
}
}