diff --git a/plugins/shareholder-dividend/src/services/TimedTaskService.php b/plugins/shareholder-dividend/src/services/TimedTaskService.php index 027137c1..20353bca 100644 --- a/plugins/shareholder-dividend/src/services/TimedTaskService.php +++ b/plugins/shareholder-dividend/src/services/TimedTaskService.php @@ -28,6 +28,7 @@ use Yunshop\ShareholderDividend\models\TeamAgentModel; use Yunshop\TeamDividend\models\TeamDividendLevelModel; use app\common\models\Order; use Illuminate\Support\Facades\DB; +use Yunshop\WeightValue\models\WeightValue; /** * Author: @@ -304,27 +305,39 @@ class TimedTaskService foreach ($teamLevels as $teamLevel) { if ($this->set['level_rate']['level_' . $teamLevel['id']]) { - $teamAgents = TeamAgentModel::getTeamAgentByLevelId($teamLevel['id']); // 等级下团队代理 + // $teamAgents = TeamAgentModel::getTeamAgentByLevelId($teamLevel['id']); // 等级下团队代理 + // 每次分红 遍历全部的经销商 + $teamAgents = TeamAgentModel::uniacid() + ->select([ + 'yz_team_dividend_agency.id', + 'yz_team_dividend_agency.uid', + 'yz_team_dividend_agency.parent_id', + 'yz_team_dividend_agency.level', + 'yz_team_dividend_agency.subordinate_num', + 'yz_team_dividend_agency.relation', + 'yz_weight_value.quantity' + ]) + ->join('yz_weight_value', 'yz_weight_value.member_id', '=', 'yz_team_dividend_agency.uid') + ->where('yz_team_dividend_agency.is_black',0) + ->where('yz_weight_value.quantity','>',0) + ->where('yz_weight_value.team_dividend_agency_level_id',$teamLevel->id) + ->whereHas('hasOneMember'); $teamAgentCount = $teamAgents->count(); // 同等级代理人数 - $teamAgentsList = $teamAgents->with([ - 'hasOneMember' => function($query){ - $query->select(['uid','weight_value']); - } - ])->get(); + $teamAgentsList = $teamAgents->get(); $rate = $this->set['level_rate']['level_' . $teamLevel['id']]; // 等级分红比例 $lvCountOrderAmount = sprintf("%.2f", $orderAmount / 100 * $rate);// 当前等级共分红金额 - $totalWeightValue = sprintf("%.2f", array_sum(array_column(array_column($teamAgentsList->toArray(),'has_one_member'),'weight_value'))); + // 获取当前等级的全部权重值 foreach ($teamAgentsList as $item) { /********* 权重值相关操作 START ***************************************************/ // 获取当前经销商的权重值 - $currentWeightValue = (float)$item->hasOneMember->weight_value; + $currentWeightValue = (float)$item->quantity; if($currentWeightValue <= 0){ \Log::debug("---- 固定分红 - 当前经销商没有权重值 -----:",['uid'=>$item->uid,'weight_value'=>$currentWeightValue]); continue; } // 存在权重值 查看当前用户比例 - $weightValueRate = $currentWeightValue / $totalWeightValue;// 权重值占比率 - $amount = sprintf("%.2f", $lvCountOrderAmount * $weightValueRate);// 当前经销商实际可得金额 + [$totalQuantity,$weightValueRate] = WeightValue::getTotalAndRatio($teamLevel->id,$currentWeightValue); + $amount = sprintf("%.2f", $lvCountOrderAmount * $weightValueRate / 100);// 当前经销商实际可得金额 if($amount <= 0){ \Log::debug("---- 固定分红 - 当前经销商没有分红佣金 -----:",['uid'=>$item->uid,'weightValueRate'=>$weightValueRate,'weight_value'=>$currentWeightValue,'amount'=>$amount]); continue; @@ -371,18 +384,22 @@ class TimedTaskService } // 股东分红数据 $shareData = [ - 'uniacid' => \YunShop::app()->uniacid, - 'member_id' => $item['uid'], - 'order_amount' => $orderAmount, - 'rate' => $rate, - 'team_level' => $teamLevel['id'], - 'team_level_name' => $teamLevel['level_name'], - 'level_num' => $teamAgentCount, - 'amount' => $check_amount, - 'created_at' => time(), - 'updated_at' => time(), + 'uniacid' => \YunShop::app()->uniacid, + 'member_id' => $item['uid'], + 'order_amount' => $orderAmount, + 'rate' => $rate, + 'team_level' => $teamLevel['id'], + 'team_level_name' => $teamLevel['level_name'], + 'level_num' => $teamAgentCount, + 'amount' => $check_amount, + 'created_at' => time(), + 'updated_at' => time(), + 'weight_value_total' => $totalQuantity,// 分红时当前等级权重值总数 + 'weight_value_hold' => $currentWeightValue,// 分红时当前用户持有当前等级的权重值 + 'weight_value_rate' => $weightValueRate,// 分红时当前用户持有当前等级的权重值比例 ]; + $shareholderDividendModel = new ShareholderDividendModel(); $shareholderDividendModel->fill($shareData); diff --git a/plugins/shareholder-dividend/views/admin/dividend-log.blade.php b/plugins/shareholder-dividend/views/admin/dividend-log.blade.php index cb7d73ba..8f3d887f 100644 --- a/plugins/shareholder-dividend/views/admin/dividend-log.blade.php +++ b/plugins/shareholder-dividend/views/admin/dividend-log.blade.php @@ -79,7 +79,48 @@
| ID | +时间 | +会员 | +商城销售总额 | +等级分红比例 | 团队等级 | 同等级团队人数 | 返现金额 | @@ -108,7 +149,7 @@
|---|