feat(fsgx): 完善报单佣金与积分奖励落库链路
放宽报单/人人分销场景下的推广员校验,确保订单返现佣金可落库;并将直推/伞下积分奖励补充写入 user_bill 明细,支持后台页面可见与审计追踪,同时更新对应 PRD 和问题记录。 Made-with: Cursor
This commit is contained in:
@@ -243,6 +243,7 @@ class StoreOrderTakeServices extends BaseServices
|
||||
|
||||
// 营销产品不返佣金;但报单商品(is_queue_goods=1)无论 type 均需参与返佣
|
||||
$isQueueOrder = !empty($orderInfo['is_queue_goods']);
|
||||
$relaxBrokeragePromoter = $isQueueOrder || (int)sys_config('store_brokerage_statu', 1) === 2;
|
||||
if (!$isQueueOrder && (!isset($orderInfo['type']) || in_array($orderInfo['type'], [4, 5, 7, 8]))) {
|
||||
return true;
|
||||
}
|
||||
@@ -266,10 +267,10 @@ class StoreOrderTakeServices extends BaseServices
|
||||
$broken_time = intval(sys_config('extract_time'));
|
||||
$frozen_time = time() + $broken_time * 86400;
|
||||
|
||||
//检测是否是分销员
|
||||
//检测是否是分销员(报单/人人分销时不强制要求 is_promoter,否则周期返现与积分奖励无法落库)
|
||||
/** @var UserServices $userServices */
|
||||
$userServices = app()->make(UserServices::class);
|
||||
if (!$userServices->checkUserPromoter($one_spread_uid)) {//一级不是分销员 直接二级返佣
|
||||
if (!$relaxBrokeragePromoter && !$userServices->checkUserPromoter($one_spread_uid)) {//一级不是分销员 直接二级返佣
|
||||
return $this->backOrderBrokerageTwo($orderInfo, $userInfo, $isSelfBrokerage, $frozen_time);
|
||||
}
|
||||
//订单中取出
|
||||
@@ -327,9 +328,11 @@ class StoreOrderTakeServices extends BaseServices
|
||||
$orderId = (string)($orderInfo['order_id'] ?? '');
|
||||
if ($buyerUid <= 0 || $orderId === '') return;
|
||||
|
||||
$orderDbId = (int)($orderInfo['id'] ?? 0);
|
||||
|
||||
/** @var PointsRewardServices $pointsServices */
|
||||
$pointsServices = app()->make(PointsRewardServices::class);
|
||||
$pointsServices->reward($buyerUid, $orderId);
|
||||
$pointsServices->reward($buyerUid, $orderId, $orderDbId);
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('fsgx grantFrozenPointsByBrokerage error: ' . $e->getMessage());
|
||||
}
|
||||
@@ -367,8 +370,9 @@ class StoreOrderTakeServices extends BaseServices
|
||||
$spread_two_uid = $isSelfbrokerage ? $userInfoTwo['uid'] : $userInfoTwo['spread_uid'];
|
||||
}
|
||||
$spread_two_uid = (int)$spread_two_uid;
|
||||
// 获取后台分销类型 1 指定分销 2 人人分销
|
||||
if (!$userServices->checkUserPromoter($spread_two_uid)) {
|
||||
$isQueueOrder = !empty($orderInfo['is_queue_goods']);
|
||||
$relaxBrokeragePromoter = $isQueueOrder || (int)sys_config('store_brokerage_statu', 1) === 2;
|
||||
if (!$relaxBrokeragePromoter && !$userServices->checkUserPromoter($spread_two_uid)) {
|
||||
return true;
|
||||
}
|
||||
//订单中取出
|
||||
|
||||
Reference in New Issue
Block a user