|
|
@@ -14,11 +14,15 @@ namespace app\services\order;
|
|
|
|
|
|
use app\adminapi\controller\v1\marketing\StoreCouponUser;
|
|
|
use app\dao\order\StoreOrderDao;
|
|
|
+use app\model\user\User;
|
|
|
use app\services\activity\coupon\StoreCouponIssueServices;
|
|
|
use app\services\activity\lottery\LuckLotteryServices;
|
|
|
use app\services\activity\combination\StorePinkServices;
|
|
|
use app\services\BaseServices;
|
|
|
use app\services\pay\PayServices;
|
|
|
+
|
|
|
+use app\services\user\UserBrokerageServices;
|
|
|
+use app\services\user\UserServices;
|
|
|
use crmeb\exceptions\ApiException;
|
|
|
|
|
|
/**
|
|
|
@@ -117,6 +121,10 @@ class StoreOrderSuccessServices extends BaseServices
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ $spread_id = User::where('uid',$orderInfo['uid'])->value('spread_id');
|
|
|
+ if ($spread_id>0){
|
|
|
+ self::spreadReward($spread_id,$orderInfo);
|
|
|
+ }
|
|
|
return false !== $res;
|
|
|
}
|
|
|
|
|
|
@@ -141,5 +149,52 @@ class StoreOrderSuccessServices extends BaseServices
|
|
|
$issueService->setCoupon($coupon, $user);
|
|
|
return true;
|
|
|
}
|
|
|
+ public function spreadReward($spread_uid, $orderInfo){
|
|
|
+ try {
|
|
|
+ // 获取上级的分销等级
|
|
|
+ $agent_level = User::where('uid', $spread_uid)->value('agent_level');
|
|
|
+ if (!$agent_level) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取分销等级详细信息
|
|
|
+ $agentLevelInfo = \app\model\agent\AgentLevel::where('id', $agent_level)->find();
|
|
|
+ if (!$agentLevelInfo) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $agentLevelInfo = $agentLevelInfo->toArray();
|
|
|
+
|
|
|
+ // 发放优惠券奖励
|
|
|
+ if ($agentLevelInfo['free_issue'] > 0) {
|
|
|
+ $this->grantUser($agentLevelInfo['free_issue'], $spread_uid);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 发放佣金奖励
|
|
|
+ if ($agentLevelInfo['spread_brokerage'] > 0) {
|
|
|
+ // 计算佣金金额:订单价格 * spread_brokerage / 100
|
|
|
+ $brokerageAmount = bcmul((string)$orderInfo['total_price'], (string)($agentLevelInfo['spread_brokerage'] / 100), 2);
|
|
|
+ if ($brokerageAmount > 0) {
|
|
|
+ /** @var UserServices $userServices */
|
|
|
+ $userServices = app()->make(UserServices::class);
|
|
|
+ /** @var UserBrokerageServices $userBrokerageServices */
|
|
|
+ $userBrokerageServices = app()->make(UserBrokerageServices::class);
|
|
|
+ $balance = $userServices->value(['uid' => $spread_uid], 'brokerage_price');
|
|
|
+ $nickname = User::where('uid',$orderInfo['uid'])->value('nickname');
|
|
|
+ $userBrokerageServices->income('get_brokerage', $spread_uid, [
|
|
|
+ 'nickname' => $nickname,
|
|
|
+ 'pay_price' => $orderInfo['total_price'],
|
|
|
+ 'number' => $brokerageAmount,
|
|
|
+ ], bcadd((string)$balance, (string)$brokerageAmount, 2), $orderInfo['id'] ?? 0);
|
|
|
+ $userServices->bcInc($spread_uid, 'brokerage_price', $brokerageAmount, 'uid');
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ return true;
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ @file_put_contents("quanju.txt", json_encode($e->getMessage())."-spreadReward报错内容\r\n", 8);
|
|
|
+ @file_put_contents("quanju.txt", json_encode($e->getLine())."-spreadReward报错位置\r\n", 8);
|
|
|
+ @file_put_contents("quanju.txt", json_encode($e->getFile())."-spreadReward报错文件\r\n", 8);
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|