Kirin 7 місяців тому
батько
коміт
bf660eda93

+ 54 - 3
app/controller/api/v1/PublicController.php

@@ -72,9 +72,16 @@ class PublicController extends BaseController
 
     public function test()
     {
-        $service = app()->make(UserAwardIntegralServices::class);
-        $list = $service->getIntegralList(['type' => 0, 'status' => 0]);
-        echo '原消费分共' . $list['count'] . '条';
+        $list = UserIntegral::where('type', 0)->where('status', 0)->order('add_time', 'asc')->select();
+        echo '原消费分共' . count($list) . '条';
+        $last_time = 0;
+        $service = app()->make(AwardIntegralServices::class);
+        foreach ($list as $v) {
+            if (date('Y-m-d', $v['add_time']) != date('Y-m-d', $v['add_time'])) {
+                $service->daySend(true);
+            }
+            $this->dealOrderIntegral($v['link_id'], $v['uid'], $v['order_price'], $v['add_time']);
+        }
 //        $main_orders = $service->getIntegralList(['uid' => 1, 'link_id' => 0, 'order_price_elt' => 2500, 'valid' => 2]);//满足复投条件的主单
 //        var_dump($main_orders);
 //        var_dump(AwardIntegral::getLastSql());
@@ -82,6 +89,50 @@ class PublicController extends BaseController
 
     }
 
+
+    public function dealOrderIntegral($order_id, $uid, $order_price, $add_time)
+    {
+        Log::debug(date('Y-m-d H:i:s') . '开始处理' . $order_id . '积分');
+        /** @var AwardIntegralServices $awardIntegralService */
+        $awardIntegralService = app()->make(AwardIntegralServices::class);
+        /** @var UserServices $userService */
+        $userService = app()->make(UserServices::class);
+        $user = $userService->getUserInfo($uid);
+        $total_price = $order_price;
+        return $awardIntegralService->transaction(function () use ($awardIntegralService, $userService, $user, $total_price, $order_id, $add_time) {
+            try {
+                $rate = sys_config('static_integral_rate', 3);
+                $give_static_integral = bcmul($total_price, $rate);
+                if ($give_static_integral > 0) {
+                    $mark = '购买商品,获得参考分';
+                    $integral_info = $awardIntegralService->incIntegral($user['uid'], $give_static_integral, $total_price, $order_id, $mark, $add_time);
+                }
+                //TODO 加动态积分
+                //推荐奖
+                $spread = $userService->getUserInfo($user['spread_uid']);
+                if ($spread && $spread['is_promoter']) {
+                    if ($awardIntegralService->getPaySum($spread['uid']) > 0) {
+                        $award_ratio = sys_config('recommend_speed_integral', 0);
+                        $give_action_integral = bcdiv(bcmul($total_price, $award_ratio), 100, 2);
+                        if ($give_action_integral > 0) {
+                            $first = $awardIntegralService->getFirstStaticIntegral($spread['uid']);
+                            if ($first) {
+                                $awardIntegralService->upSpeedIntegral($first['id'], $give_action_integral);
+                            }
+                        }
+                    }
+                }
+                Log::debug(date('Y-m-d H:i:s') . '结束处理' . $order_id . '积分');
+                return true;
+            } catch (\Throwable $e) {
+                Log::error('处理积分奖池失败,失败原因:' . $e->getMessage());
+                Log::debug(date('Y-m-d H:i:s') . '结束处理' . $order_id . '积分');
+                return false;
+            }
+        });
+
+    }
+
     public function send_test()
     {
         $service = app()->make(AwardIntegralServices::class);

+ 1 - 1
app/services/user/AwardIntegralServices.php

@@ -28,7 +28,7 @@ use think\facade\Route;
  *
  * Class UserRechargeServices
  * @package app\services\user
- * @mixin UserIntegralDao
+ * @mixin AwardIntegralDao
  */
 class AwardIntegralServices extends BaseServices
 {