diff --git a/addons/shopro/tests/split_commission_verify.php b/addons/shopro/tests/split_commission_verify.php index d88b036..aecc2e4 100644 --- a/addons/shopro/tests/split_commission_verify.php +++ b/addons/shopro/tests/split_commission_verify.php @@ -351,14 +351,14 @@ function diagnoseOrderSplitBlockers($orderId) } if (empty($calcItems)) { $reasons[] = 'SplitCalculator 结果为空(最常见:推广员/区域无 channel=huifu 的分账接收方)'; - $rewards = Db::name('shopro_commission_reward')->alias('r') - ->join('shopro_commission_agent a', 'a.id = r.agent_id') - ->where('r.order_id', $orderId) - ->where('r.status', '>=', 0) - ->field('r.id, r.commission, a.user_id') + $rewards = Db::name('shopro_commission_reward') + ->where('order_id', $orderId) + ->where('status', '>=', 0) + ->field('id, commission, agent_id') ->select(); foreach ($rewards as $rw) { - $uid = $rw['user_id']; + // shopro_commission_agent 主键为 user_id,reward.agent_id 即分销商 user_id + $uid = intval($rw['agent_id']); $recv = Db::name('shopro_split_receiver') ->where('role_type', 'promoter') ->where('role_id', $uid) diff --git a/addons/shopro/tests/split_commission_verify.sql b/addons/shopro/tests/split_commission_verify.sql index 5336aef..4466446 100644 --- a/addons/shopro/tests/split_commission_verify.sql +++ b/addons/shopro/tests/split_commission_verify.sql @@ -308,11 +308,10 @@ SELECT DISTINCT sr.id AS split_receiver_id FROM fa_shopro_commission_reward r INNER JOIN fa_shopro_order o ON o.id = r.order_id -INNER JOIN fa_shopro_commission_agent a ON a.id = r.agent_id -INNER JOIN fa_user u ON u.id = a.user_id -LEFT JOIN fa_shopro_huifu_onboard ho ON ho.user_id = a.user_id AND ho.onboard_status = 'approved' +INNER JOIN fa_user u ON u.id = r.agent_id +LEFT JOIN fa_shopro_huifu_onboard ho ON ho.user_id = r.agent_id AND ho.onboard_status = 'approved' LEFT JOIN fa_shopro_split_receiver sr ON sr.role_type = 'promoter' - AND sr.role_id = a.user_id AND sr.channel = 'huifu' AND sr.status = 'normal' + AND sr.role_id = r.agent_id AND sr.channel = 'huifu' AND sr.status = 'normal' WHERE r.status >= 0 AND o.pay_type = 'huifu_wechat' AND o.paytime >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 90 DAY))