Kirin vor 1 Jahr
Ursprung
Commit
cb341b3804

+ 41 - 1
app/jobs/integral/IntegralJob.php

@@ -4,6 +4,8 @@ namespace app\jobs\integral;
 
 use app\services\user\level\UserLevelServices;
 use app\services\user\UserAwardIntegralServices;
+use app\services\user\UserBillServices;
+use app\services\user\UserBrokerageServices;
 use app\services\user\UserServices;
 use crmeb\basic\BaseJobs;
 use crmeb\traits\QueueTrait;
@@ -95,8 +97,14 @@ class IntegralJob extends BaseJobs
     {
         /** @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->getIntegral($id);
-        return $awardIntegralService->transaction(function () use ($info, $awardIntegralService) {
+        return $awardIntegralService->transaction(function () use ($info, $awardIntegralService, $brokerageService, $billService, $userService) {
             if ($info['status'] != 0) {
                 $awardIntegralService->update($info['id'], ['handle' => 0]);
                 return true;
@@ -106,7 +114,39 @@ class IntegralJob extends BaseJobs
             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;
         });
     }
 

+ 44 - 36
app/services/user/UserBillServices.php

@@ -146,22 +146,30 @@ class UserBillServices extends BaseServices
             'status' => 1,
             'pm' => 1
         ],
-		'system_add_integral' => [
-			'title' => '系统增加积分',
-			'category' => 'integral',
-			'type' => 'system_add',
-			'mark' => '系统增加了{%num%}积分',
-			'status' => 1,
-			'pm' => 1
-		],
-		'system_sub_integral' => [
-			'title' => '系统减少积分',
-			'category' => 'integral',
-			'type' => 'system_sub',
-			'mark' => '系统扣除了{%num%}积分',
-			'status' => 1,
-			'pm' => 0
-		],
+        'system_add_integral' => [
+            'title' => '系统增加积分',
+            'category' => 'integral',
+            'type' => 'system_add',
+            'mark' => '系统增加了{%num%}积分',
+            'status' => 1,
+            'pm' => 1
+        ],
+        'system_sub_integral' => [
+            'title' => '系统减少积分',
+            'category' => 'integral',
+            'type' => 'system_sub',
+            'mark' => '系统扣除了{%num%}积分',
+            'status' => 1,
+            'pm' => 0
+        ],
+        'extract_integral' => [
+            'title' => '积分出局',
+            'category' => 'energy',
+            'type' => 'extract_integral',
+            'mark' => '用户{%type%}出局,出局时积分价格{%price%},共出局{%integral_num%}积分,获得{%number%}能量',
+            'status' => 1,
+            'pm' => 1
+        ],
     ];
 
     /**
@@ -195,7 +203,7 @@ class UserBillServices extends BaseServices
             $where['time'] = $time;
         }
 
-		$where['pm'] = $pm ? 1 : 0;
+        $where['pm'] = $pm ? 1 : 0;
 
         return $this->dao->getBillSumColumn($where);
     }
@@ -216,7 +224,7 @@ class UserBillServices extends BaseServices
         $list = $this->dao->getList($where, $field, $page, $limit);
         foreach ($list as &$item) {
             $item['number'] = intval($item['number']);
-			$item['balance'] = intval($item['balance']);
+            $item['balance'] = intval($item['balance']);
         }
         $count = $this->dao->count($where);
         return compact('list', 'count');
@@ -273,15 +281,15 @@ class UserBillServices extends BaseServices
         return compact('list', 'count');
     }
 
-	/**
-	 * 记录积分变化
-	 * @param int $uid
-	 * @param string $type
-	 * @param array $data
-	 * @param int $pm
-	 * @return bool
-	 * @throws Exception
-	 */
+    /**
+     * 记录积分变化
+     * @param int $uid
+     * @param string $type
+     * @param array $data
+     * @param int $pm
+     * @return bool
+     * @throws Exception
+     */
     public function incomeIntegral(int $uid, string $type, array $data, int $pm = 1)
     {
         $data['uid'] = $uid;
@@ -327,9 +335,9 @@ class UserBillServices extends BaseServices
             $data['mark'] = str_replace(['{%num%}'], $number, $data['mark']);
         }
         $data['add_time'] = time();
-		if ((float)$data['number']) {
-			return $this->dao->save($data);
-		}
+        if ((float)$data['number']) {
+            return $this->dao->save($data);
+        }
         return true;
     }
 
@@ -487,12 +495,12 @@ class UserBillServices extends BaseServices
         if (isset($where['nickname']) && $where['nickname'] != '') {
             $where_data['like'] = $where['nickname'];
         }
-		$data['SumIntegral'] = intval($this->dao->getBillSumColumn($where_data + ['pm' => 1]));
-		$where_data['type'] = 'sign';
-		$data['CountSign'] = $this->dao->getUserSignPoint($where_data);
-		$data['SumSign'] = intval($this->dao->getBillSumColumn($where_data));
-		unset($where_data['type']);
-		$data['SumDeductionIntegral'] = intval($this->dao->getBillSumColumn($where_data + ['pm' => 0]));
+        $data['SumIntegral'] = intval($this->dao->getBillSumColumn($where_data + ['pm' => 1]));
+        $where_data['type'] = 'sign';
+        $data['CountSign'] = $this->dao->getUserSignPoint($where_data);
+        $data['SumSign'] = intval($this->dao->getBillSumColumn($where_data));
+        unset($where_data['type']);
+        $data['SumDeductionIntegral'] = intval($this->dao->getBillSumColumn($where_data + ['pm' => 0]));
         return [
             [
                 'col' => 6,

+ 7 - 0
app/services/user/UserBrokerageServices.php

@@ -89,6 +89,13 @@ class UserBrokerageServices extends BaseServices
             'status' => 1,
             'pm' => 0
         ],
+        'extract_integral' => [
+            'title' => '积分出局',
+            'type' => 'extract_integral',
+            'mark' => '用户{%type%}出局,出局时积分价格{%price%},共出局{%integral_num%}积分,获得佣金{%number%}元',
+            'status' => 1,
+            'pm' => 1
+        ],
     ];
 
     /**