|
|
@@ -58,11 +58,11 @@ class IntegralJob extends BaseJobs
|
|
|
if ($awardIntegralService->getPaySum($spread['uid']) >= 1000 || $awardIntegralService->getHourExtractPaySum($spread['uid'], 24) >= 1000) {
|
|
|
$award_ratio = sys_config('recommend_integral', 0);
|
|
|
$give_action_integral = bcdiv(bcmul($award_price, $award_ratio), 100, 2);
|
|
|
-// if ($give_action_integral > 0) {
|
|
|
- $extract_sum = bcmul($give_action_integral, $rate, 2);
|
|
|
- $mark = '推荐用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得推荐积分';
|
|
|
- $awardIntegralService->incIntegral($spread['uid'], $integral_price, $give_action_integral, $total_price, 1, $extract_sum, $order['id'], $mark);
|
|
|
-// }
|
|
|
+ if ($give_action_integral > 0) {
|
|
|
+ $extract_sum = bcmul($give_action_integral, $rate, 2);
|
|
|
+ $mark = '推荐用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得推荐积分';
|
|
|
+ $awardIntegralService->incIntegral($spread['uid'], $integral_price, $give_action_integral, $total_price, 1, $extract_sum, $order['id'], $mark);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
$levelServices->detection((int)$user['uid']);
|
|
|
@@ -73,14 +73,14 @@ class IntegralJob extends BaseJobs
|
|
|
$level = $levelServices->getUserLevel($spread['uid']);
|
|
|
$ratio = $level['levelInfo']['group_award'] ?? 0;
|
|
|
$give_action_integral = bcdiv(bcmul($award_price, $ratio), 100, 2);
|
|
|
-// if ($give_action_integral > $send) {
|
|
|
- $real_send = bcsub($give_action_integral, $send, 2);
|
|
|
- if ($real_send < 0) $real_send = 0;
|
|
|
- $extract_sum = bcmul($real_send, $rate, 2);
|
|
|
- $mark = '团队用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得团队级差积分';
|
|
|
- $awardIntegralService->incIntegral($spread['uid'], $integral_price, $real_send, $total_price, 1, $extract_sum, $order['id'], $mark);
|
|
|
- if ($real_send > 0) $send = $give_action_integral;
|
|
|
-// }
|
|
|
+ if ($give_action_integral > $send) {
|
|
|
+ $real_send = bcsub($give_action_integral, $send, 2);
|
|
|
+ if ($real_send < 0) $real_send = 0;
|
|
|
+ $extract_sum = bcmul($real_send, $rate, 2);
|
|
|
+ $mark = '团队用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得团队级差积分';
|
|
|
+ $awardIntegralService->incIntegral($spread['uid'], $integral_price, $real_send, $total_price, 1, $extract_sum, $order['id'], $mark);
|
|
|
+ if ($real_send > 0) $send = $give_action_integral;
|
|
|
+ }
|
|
|
$levelServices->detection((int)$spread['uid']);
|
|
|
$pass[] = $spread['uid'];
|
|
|
$spread = $userService->getUserInfo($spread['spread_uid']);
|
|
|
@@ -152,6 +152,64 @@ class IntegralJob extends BaseJobs
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public function autoExtract($price)
|
|
|
+ {
|
|
|
+ /** @var UserAwardIntegralServices $awardIntegralService */
|
|
|
+ $awardIntegralService = app()->make(UserAwardIntegralServices::class);
|
|
|
+ /** @var UserBrokerageServices $brokerageService */
|
|
|
+ $brokerageService = app()->make(UserBrokerageServices::class);
|
|
|
+ /** @var UserBillServices $billService */
|
|
|
+ $billService = app()->make(UserBillServices::class);
|
|
|
+ /** @var UserServices $userService */
|
|
|
+ $userService = app()->make(UserServices::class);
|
|
|
+ $info = $awardIntegralService->getIntegralsOverExtract($price);
|
|
|
+ return $awardIntegralService->transaction(function () use ($info, $awardIntegralService, $brokerageService, $billService, $userService) {
|
|
|
+ if ($info['status'] != 0) {
|
|
|
+ $awardIntegralService->update($info['id'], ['handle' => 0]);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ $price = $awardIntegralService->getPrice();
|
|
|
+ $sum = bcmul($price, $info['num'], 2);
|
|
|
+ if ($sum > $info['extract_sum']) {
|
|
|
+ $sum = $info['extract_sum'];
|
|
|
+ }
|
|
|
+ $res = true;
|
|
|
+ $real_out = bcdiv(bcmul($sum, sys_config('extract_ratio', 0)), 100, 2);
|
|
|
+ if ($real_out > 0) {
|
|
|
+ $user = $userService->getUserInfo($info['uid']);
|
|
|
+ $mark = '用户积分出局,出局时价格' . $price;
|
|
|
+ $res = $res && $awardIntegralService->addLake(-$real_out, $info['id'], $mark);
|
|
|
+
|
|
|
+ $to_brokerage = bcdiv(bcmul($real_out, sys_config('extract_brokerage_ratio', 0)), 100, 2);
|
|
|
+ $balance = bcadd($user['brokerage_price'], $to_brokerage, 2);
|
|
|
+ $res = $res && $brokerageService->income('extract_integral', $info['uid'], [
|
|
|
+ 'type' => $info['type'] ? '动态积分' : '静态积分',
|
|
|
+ 'price' => round($price, 2),
|
|
|
+ 'integral_num' => $info['num'],
|
|
|
+ 'number' => floatval($to_brokerage),
|
|
|
+ 'frozen_time' => 0
|
|
|
+ ], $balance, $info['id']);
|
|
|
+ // 添加用户佣金
|
|
|
+ $res = $res && $userService->bcInc($info['uid'], 'brokerage_price', $to_brokerage, 'uid');
|
|
|
+
|
|
|
+ $to_energy = bcsub($real_out, $to_brokerage, 2);
|
|
|
+ $balance = bcadd($user['energy'], $to_energy, 2);
|
|
|
+ $res = $res && $billService->income('extract_integral', $info['uid'], [
|
|
|
+ 'type' => $info['type'] ? '动态积分' : '静态积分',
|
|
|
+ 'price' => round($price, 2),
|
|
|
+ 'integral_num' => $info['num'],
|
|
|
+ 'number' => floatval($to_energy),
|
|
|
+ ], $balance, $info['id']);
|
|
|
+ // 添加用户佣金
|
|
|
+ $res = $res && $userService->bcInc($info['uid'], 'energy', $to_energy, 'uid');
|
|
|
+
|
|
|
+ $res = $res && $awardIntegralService->update($info['id'], ['handle' => 0, 'extract_sum_real' => $sum, 'status' => 1, 'extract_time' => time()]);
|
|
|
+ }
|
|
|
+ return $res;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 减积分
|
|
|
* @param int $uid 用户
|