Ver código fonte

会员升级

Kirin 1 ano atrás
pai
commit
30ecf3da34

+ 19 - 7
app/jobs/integral/IntegralJob.php

@@ -56,13 +56,25 @@ class IntegralJob extends BaseJobs
                 $rate = sys_config('action_integral_rate', 3);
                 $spread = $userService->getUserInfo($user['spread_uid']);
                 if ($spread) {
-                    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 ($awardIntegralService->getPaySum($spread['uid']) >= 0 || $awardIntegralService->getHourExtractPaySum($spread['uid'], 24) >= 1000) {
+                        if ($awardIntegralService->getPaySum($spread['uid']) > 0) {
+                            $award_ratio = sys_config('recommend_integral', 0);
+                            $award_speed_ratio = sys_config('recommend_speed_integral', 0);
+                            $award_ratio = bcadd($award_ratio, $award_speed_ratio, 2);
+                            $give_action_integral = bcdiv(bcmul($award_price, $award_ratio), 100, 2);
+                            if ($give_action_integral > 0) {
+                                $first = $awardIntegralService->getFirstStaticIntegral($spread['uid']);
+                                $mark = ',推荐用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得加速积分';
+                                $awardIntegralService->incUpdateIntegral($first['id'], $integral_price, $give_action_integral, $mark);
+                            }
+                        } else {
+                            $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);
+                            }
                         }
                     }
                 }

+ 2 - 1
app/services/system/config/SystemConfigServices.php

@@ -1480,7 +1480,7 @@ WSS;
             'day_brokerage_price_upper', 'brokerage_type', 'user_extract_min_price', 'user_extract_bank_status',
             'user_extract_wechat_status', 'user_extract_alipay_status', 'user_extract_bank',
             'pay_weixin_client_cert', 'pay_weixin_client_key', 'withdraw_fee', 'brokerage_level', 'brokerage_compute_type',
-            'action_integral_rate', 'static_integral_rate', 'lake_ratio', 'static_integral_ratio', 'recommend_integral',
+            'action_integral_rate', 'static_integral_rate', 'lake_ratio', 'static_integral_ratio', 'recommend_integral', 'recommend_speed_integral',
             'extract_ratio', 'extract_brokerage_ratio'
         ]);
 
@@ -1517,6 +1517,7 @@ WSS;
                 Build::inputNum('static_integral_ratio', $data['static_integral_ratio']['info'], $data['static_integral_ratio']['value'])->min(0)->info($data['static_integral_ratio']['desc']),
                 Build::inputNum('lake_ratio', $data['lake_ratio']['info'], $data['lake_ratio']['value'])->min(0)->info($data['lake_ratio']['desc']),
                 Build::inputNum('recommend_integral', $data['recommend_integral']['info'], $data['recommend_integral']['value'])->min(0)->info($data['recommend_integral']['desc']),
+                Build::inputNum('recommend_speed_integral', $data['recommend_speed_integral']['info'], $data['recommend_speed_integral']['value'])->min(0)->info($data['recommend_speed_integral']['desc']),
                 Build::inputNum('static_integral_rate', $data['static_integral_rate']['info'], $data['static_integral_rate']['value'])->min(0)->info($data['static_integral_rate']['desc']),
                 Build::inputNum('action_integral_rate', $data['action_integral_rate']['info'], $data['action_integral_rate']['value'])->min(0)->info($data['action_integral_rate']['desc']),
                 Build::inputNum('extract_ratio', $data['extract_ratio']['info'], $data['extract_ratio']['value'])->min(0)->info($data['extract_ratio']['desc']),

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

@@ -120,6 +120,17 @@ class UserAwardIntegralServices extends BaseServices
     }
 
 
+    /**
+     * 获取单条数据
+     * @return array|\think\Model|null
+     */
+    public function getFirstStaticIntegral($uid)
+    {
+        $where = ['uid' => $uid, 'status' => 0, 'type' => 0];
+        return $this->dao->getOne($where);
+    }
+
+
     /**
      * 获取单条数据
      * @return float
@@ -206,6 +217,17 @@ class UserAwardIntegralServices extends BaseServices
     }
 
 
+    public function incUpdateIntegral(int $id, string $price, string $total, string $mark)
+    {
+        $inc_integral = bcdiv($total, $price, 5);
+        $origin = $this->get($id);
+        return $this->dao->update($id, [
+            'num' => bcadd($origin['num'], $inc_integral, 5),
+            'mark' => $origin['mark'] . $mark . (float)$inc_integral,
+        ]);
+    }
+
+
     /**
      * 加奖池
      * @param string $total 总额