Pārlūkot izejas kodu

暂时关闭登录验证码,新增测试接口

Kirin 2 gadi atpakaļ
vecāks
revīzija
1d9b4a3c5c

+ 26 - 16
app/jobs/integral/IntegralJob.php

@@ -2,8 +2,10 @@
 
 namespace app\jobs\integral;
 
+use app\services\user\UserAwardIntegralServices;
 use crmeb\basic\BaseJobs;
 use crmeb\traits\QueueTrait;
+use think\facade\Log;
 
 /**
  * 订单消息队列
@@ -17,12 +19,32 @@ class IntegralJob extends BaseJobs
 
     public function dealOrderIntegral($order)
     {
-        $integral_price =
+        /** @var UserAwardIntegralServices $awardIntegralService */
+        $awardIntegralService = app()->make(UserAwardIntegralServices::class);
+        $integral_price = $awardIntegralService->getPrice($order['id']);
         $total_price = $order['total_price'];
-        $static_integral_ratio = sys_config('static_integral_ratio', 0);
-        $give_static_integral = bcdiv(bcmul($total_price, $static_integral_ratio), 100, 2);
-
 
+        try {
+            //添加静态积分
+            $static_integral_ratio = sys_config('static_integral_ratio', 0);
+            $give_static_integral = bcdiv(bcmul($total_price, $static_integral_ratio), 100, 2);
+            if ($give_static_integral > 0) {
+                $rate = sys_config('static_integral_rate', 3);
+                $extract_sum = bcmul($total_price, $rate, 2);
+                $mark = '购买商品,获得静态积分';
+                $awardIntegralService->incIntegral($order['uid'], $integral_price, $give_static_integral, 0, $extract_sum, $order['id'], $mark);
+            }
+            //添加奖池
+            $lake_ratio = sys_config('lake_ratio', 0);
+            $add_lake = bcdiv(bcmul($total_price, $lake_ratio), 100, 2);
+            if ($add_lake > 0) {
+                $mark = '用户' . $order['uid'] . '购买商品,添加资金池';
+                $awardIntegralService->addLake($add_lake, $order['id'], $mark);
+            }
+            //TODO 加动态积分
+        } catch (\Throwable $e) {
+            Log::error('处理积分奖池失败,失败原因:' . $e->getMessage());
+        }
     }
 
     /**
@@ -39,17 +61,5 @@ class IntegralJob extends BaseJobs
 
     }
 
-    /**
-     * 加积分
-     * @param int $uid 用户
-     * @param float $static 静态积分
-     * @param float $action 动态积分
-     * @param float $cash 资金池
-     * @param int $link_id 关联ID
-     * @param string $mark 备注
-     */
-    public function incIntegral(int $uid, float $static, float $action, float $cash, int $link_id = 0, string $mark = '')
-    {
 
-    }
 }

+ 44 - 0
app/services/user/UserAwardIntegralServices.php

@@ -93,4 +93,48 @@ class UserAwardIntegralServices extends BaseServices
         return (string)($sum_integral > 0 ? bcdiv((string)$lake_sum, (string)$sum_integral, 8) : 1);
     }
 
+
+    /**
+     * 加积分
+     * @param int $uid 用户
+     * @param string $price 价格
+     * @param string $total 总额
+     * @param int $type 类型
+     * @param string $extract_sum
+     * @param int $link_id 关联ID
+     * @param string $mark
+     * @return \crmeb\basic\BaseModel|\think\Model
+     */
+    public function incIntegral(int $uid, string $price, string $total, int $type, string $extract_sum, int $link_id = 0, string $mark = '')
+    {
+        $inc_integral = bcdiv($total, $price, 5);
+        return $this->dao->save([
+            'uid' => $uid,
+            'type' => $type == 1 ? 1 : 0,
+            'num' => $inc_integral,
+            'price' => $price,
+            'sum_price' => $total,
+            'extract_sum' => $extract_sum,
+            'link_id' => $link_id,
+            'mark' => $mark
+        ]);
+    }
+
+
+    /**
+     * 加奖池
+     * @param string $total 总额
+     * @param int $link_id 关联ID
+     * @param string $mark
+     * @return \crmeb\basic\BaseModel|\think\Model
+     */
+    public function addLake(string $total, int $link_id = 0, string $mark = '')
+    {
+        return $this->dao->save([
+            'num' => $total,
+            'link_id' => $link_id,
+            'mark' => $mark
+        ]);
+    }
+
 }