Commit 3743f53f authored by 刘小敏's avatar 刘小敏

fix(commission): 修复代理商链层级计算逻辑

parent 7b890922
...@@ -268,7 +268,7 @@ class AgentOrderCommission extends Command ...@@ -268,7 +268,7 @@ class AgentOrderCommission extends Command
$orderItems = $this->getOrderItems($orderId); $orderItems = $this->getOrderItems($orderId);
// 查找两级代理商,确保代理商申请成功后的订单才分佣 // 查找两级代理商,确保代理商申请成功后的订单才分佣
$agents = $this->findAgentChain($buyerUserId, $order['createtime'], 2); $agents = $this->findAgentChain($buyerUserId, $order, 2);
if (empty($agents)) { if (empty($agents)) {
$this->customLog('info', "订单[{$orderId}][{$orderSn}]跳过: 未找到有效的上级代理商, 买家[{$buyerUserId}]"); $this->customLog('info', "订单[{$orderId}][{$orderSn}]跳过: 未找到有效的上级代理商, 买家[{$buyerUserId}]");
return 'skip'; return 'skip';
...@@ -404,15 +404,16 @@ class AgentOrderCommission extends Command ...@@ -404,15 +404,16 @@ class AgentOrderCommission extends Command
* 最多向上追溯两级。仅收集状态为 normal 或 freeze 的代理商。 * 最多向上追溯两级。仅收集状态为 normal 或 freeze 的代理商。
* *
* @param int $buyerUserId 买家用户ID * @param int $buyerUserId 买家用户ID
* @param int $order_create_time 订单创建时间(时间戳) * @param array $order 订单信息
* @param int $maxLevel 最大追溯层级(默认2级) * @param int $maxLevel 最大追溯层级(默认2级)
* @return array [['user_id' => xxx, 'level' => 1], ...] * @return array [['user_id' => xxx, 'level' => 1], ...]
*/ */
protected function findAgentChain($buyerUserId, int $order_create_time, $maxLevel = 2) protected function findAgentChain($buyerUserId, $order, $maxLevel = 2)
{ {
$agents = []; $agents = [];
$currentUserId = $buyerUserId; $currentUserId = $buyerUserId;
$currentLevel = 1; $currentLevel = 1;
$order_create_time = $order['createtime'];
while ($currentLevel <= $maxLevel) { while ($currentLevel <= $maxLevel) {
// 查找当前用户的上级 // 查找当前用户的上级
...@@ -420,7 +421,6 @@ class AgentOrderCommission extends Command ...@@ -420,7 +421,6 @@ class AgentOrderCommission extends Command
->where('id', $currentUserId) ->where('id', $currentUserId)
->field('id, parent_user_id') ->field('id, parent_user_id')
->find(); ->find();
if (!$user || empty($user['parent_user_id']) || $user['parent_user_id'] <= 0) { if (!$user || empty($user['parent_user_id']) || $user['parent_user_id'] <= 0) {
break; break;
} }
...@@ -441,11 +441,11 @@ class AgentOrderCommission extends Command ...@@ -441,11 +441,11 @@ class AgentOrderCommission extends Command
'agent_user_id' => $agent['user_id'], 'agent_user_id' => $agent['user_id'],
'level' => $currentLevel, 'level' => $currentLevel,
]; ];
$currentLevel++;
} }
// 继续向上追溯(即使上级不是代理商,也继续向上找) // 继续向上追溯(即使上级不是代理商,也继续向上找)
$currentUserId = $parentUserId; $currentUserId = $parentUserId;
$currentLevel++;
} }
return $agents; return $agents;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment