|
@@ -46,6 +46,7 @@ use crmeb\services\CacheService;
|
|
|
use crmeb\services\UploadService;
|
|
|
use crmeb\basic\BaseController;
|
|
|
use think\facade\Cache;
|
|
|
+use think\facade\Log;
|
|
|
|
|
|
/**
|
|
|
* 公共类
|
|
@@ -65,17 +66,52 @@ class PublicController extends BaseController
|
|
|
|
|
|
public function test()
|
|
|
{
|
|
|
- $storeOrderServices = app()->make(StoreOrderServices::class);
|
|
|
- $order_price = $storeOrderServices->search(['pid' => 0])
|
|
|
- ->whereNotIn('type', [1, 2, 3, 5, 8])
|
|
|
- ->where('paid', 1)
|
|
|
- ->where('is_del', 0)
|
|
|
- ->where('is_system_del', 0)
|
|
|
- ->where('refund_status', 0)
|
|
|
- ->whereIn('status', [2, 3])
|
|
|
- ->field('sum(total_price-cost) as total_price_sum')->find();
|
|
|
- var_dump(StoreOrder::getLastSql());
|
|
|
- var_dump($order_price['total_price_sum']);
|
|
|
+ $this->dealOrderIntegral(StoreOrder::where('id', 723)->find());
|
|
|
+ }
|
|
|
+
|
|
|
+ public function dealOrderIntegral($order)
|
|
|
+ {
|
|
|
+ /** @var UserAwardIntegralServices $awardIntegralService */
|
|
|
+ $awardIntegralService = app()->make(UserAwardIntegralServices::class);
|
|
|
+ /** @var UserServices $userService */
|
|
|
+ $userService = app()->make(UserServices::class);
|
|
|
+ /** @var UserLevelServices $levelServices */
|
|
|
+ $levelServices = app()->make(UserLevelServices::class);
|
|
|
+ $integralJob = app()->make(IntegralJob::class);
|
|
|
+ $user = $userService->getUserInfo($order['uid']);
|
|
|
+ $integral_price = $awardIntegralService->getPrice($order['id']);
|
|
|
+ $total_price = $order['total_price'];
|
|
|
+ return $awardIntegralService->transaction(function () use ($integralJob, $levelServices, $awardIntegralService, $userService, $user, $integral_price, $total_price, $order) {
|
|
|
+ try {
|
|
|
+ $spread = $userService->getUserInfo($user['spread_uid']);
|
|
|
+ $rate = sys_config('static_integral_rate', 3);
|
|
|
+ $pass = [$user['uid']];
|
|
|
+ $send = 0;
|
|
|
+ while ($spread && !in_array($spread['uid'], $pass)) {
|
|
|
+ //先发奖,再结算等级
|
|
|
+ $level = $levelServices->getUserLevel($spread['uid']);
|
|
|
+ $ratio = $level['levelInfo']['group_award'] ?? 0;
|
|
|
+ $give_action_integral = bcdiv(bcmul($total_price, $ratio), 100, 2);
|
|
|
+ if ($give_action_integral > $send) {
|
|
|
+ $real_send = bcsub($give_action_integral, $send, 2);
|
|
|
+ if ($awardIntegralService->getPaySum($spread['uid']) >= 0 || $awardIntegralService->getHourExtractPaySum($spread['uid'], 24) > 0 || $spread['award_switch']) {
|
|
|
+ $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);
|
|
|
+ }
|
|
|
+ $send = $give_action_integral;
|
|
|
+ }
|
|
|
+ $levelServices->detection((int)$spread['uid']);
|
|
|
+ $pass[] = $spread['uid'];
|
|
|
+ $spread = $userService->getUserInfo($spread['spread_uid']);
|
|
|
+ }
|
|
|
+ $integralJob->autoExtract($awardIntegralService->getPrice());
|
|
|
+ return true;
|
|
|
+ } catch (\Throwable $e) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|