Sfoglia il codice sorgente

Merge branch 'dev-sc-260204'

shichen 4 mesi fa
parent
commit
23bd32390f

+ 5 - 0
app/common/dao/user/UserDao.php

@@ -501,4 +501,9 @@ class UserDao extends BaseDao
501
     {
501
     {
502
         return $this->getModel()::getDB()->where('uid', '=', $uid)->inc('brokerage_price',$number)->update();
502
         return $this->getModel()::getDB()->where('uid', '=', $uid)->inc('brokerage_price',$number)->update();
503
     }
503
     }
504
+
505
+    public function updateWithdrawalLimitByUid($uid,$number)
506
+    {
507
+        return $this->getModel()::getDB()->where('uid', '=', $uid)->inc('withdrawal_limit',$number)->update();
508
+    }
504
 }
509
 }

+ 172 - 62
app/common/repositories/shared/SharedProsperityUserRepository.php

@@ -3,9 +3,11 @@
3
 namespace app\common\repositories\shared;
3
 namespace app\common\repositories\shared;
4
 
4
 
5
 use app\common\dao\shared\SharedProsperityGroupUserDao;
5
 use app\common\dao\shared\SharedProsperityGroupUserDao;
6
+use app\common\dao\shared\SharedProsperityRewardRecordDao;
6
 use app\common\dao\shared\SharedProsperityUserDao;
7
 use app\common\dao\shared\SharedProsperityUserDao;
7
 use app\common\dao\shared\SharedProsperityUserLevelLogDao;
8
 use app\common\dao\shared\SharedProsperityUserLevelLogDao;
8
 use app\common\dao\user\UserDao;
9
 use app\common\dao\user\UserDao;
10
+use app\common\dao\user\UserWithdrawalLimitRecordDao;
9
 use app\common\enum\CommonEnum;
11
 use app\common\enum\CommonEnum;
10
 use app\common\enum\shared\SharedProsperityRewardRecordEnum;
12
 use app\common\enum\shared\SharedProsperityRewardRecordEnum;
11
 use app\common\enum\shared\SharedProsperityUserEnum;
13
 use app\common\enum\shared\SharedProsperityUserEnum;
@@ -812,79 +814,41 @@ class SharedProsperityUserRepository extends BaseRepository
812
      * @date 2026/2/27 15:16
814
      * @date 2026/2/27 15:16
813
      * 更新用户奖励
815
      * 更新用户奖励
814
      */
816
      */
815
-    public function updateReward($userId, $type, $number)
817
+    public function updateReward($userId, $type, $number, $remark)
816
     {
818
     {
819
+        // 使用枚举常量代替硬编码数字
820
+        $typeConstants = SharedProsperityRewardRecordEnum::TYPE;
821
+        $CONSUMER_STOCKS_TYPE = $typeConstants['CONSUMER_STOCKS']['code'] ?? 1001;
822
+        $WITHDRAWAL_LIMIT_TYPE = $typeConstants['WITHDRAWAL_LIMIT']['code'] ?? 1002;
823
+        $PV_TYPE = $typeConstants['PV']['code'] ?? 1003;
824
+        
817
         $map = [
825
         $map = [
818
-            1001 => 'consumer_stocks',
819
-            1002 => 'withdrawal_limit',
820
-            1003 => 'pv'
826
+            $CONSUMER_STOCKS_TYPE => 'consumer_stocks',
827
+            $WITHDRAWAL_LIMIT_TYPE => 'withdrawal_limit',
828
+            $PV_TYPE => 'pv'
821
         ];
829
         ];
822
 
830
 
823
         try {
831
         try {
824
             Db::startTrans();
832
             Db::startTrans();
825
 
833
 
826
-            $pm = 1;
827
-            $remark = '后台操作增加' . $number;
828
-            if ($number < 0) {
829
-                $pm = 0;
830
-                $remark = '后台操作减少' . abs($number);
831
-            }
834
+            // 计算收支类型 (pm)
835
+            $pm = $number >= 0 ? 1 : 0;
836
+            $absNumber = abs($number);
837
+            $currentTime = date('Y-m-d H:i:s');
832
 
838
 
833
             if (isset($map[$type])) {
839
             if (isset($map[$type])) {
834
-                // 更新数据
835
-                $this->dao->updateRewardByUserId($userId, $map[$type], $number);
836
-                // 记录日志
837
-                $insertData = [
838
-                    'user_id' => $userId,
839
-                    'type' => $type,
840
-                    'pm' => $pm,
841
-                    'number' => abs($number),
842
-                    'balance' => 0,
843
-                    'status' => SharedProsperityRewardRecordEnum::STATUS['VALID']['code'],
844
-                    'type_shop' => SharedProsperityRewardRecordEnum::TYPE_SHOP['Platform']['code'],
845
-                    'order_sn' => 0,
846
-                    'take_time' => date('Y-m-d H:i:s', time()),
847
-                    'remark' => $remark,
848
-                    'create_time' => date('Y-m-d H:i:s', time()),
849
-                    'update_time' => date('Y-m-d H:i:s', time()),
850
-                ];
851
-                /** @var SharedProsperityRewardRecordDao $rewardRecordDao */
852
-                $rewardRecordDao = app()->make(SharedProsperityRewardRecordDao::class);
853
-                $rewardRecordDao->insertAll([$insertData]);
840
+                if ($type == $WITHDRAWAL_LIMIT_TYPE) {
841
+                    // 处理提现额度
842
+                    $this->handleWithdrawalLimit($userId, $number, $pm, $absNumber, $remark);
843
+                } else {
844
+                    // 处理消费股或PV值
845
+                    $this->handleSharedProsperityReward($userId, $type, $map[$type], $number, $pm, $absNumber, $remark, $currentTime);
846
+                }
854
             } else {
847
             } else {
855
-                // 更新数据
856
-                /** @var UserDao $userDao */
857
-                $userDao = app()->make(UserDao::class);
858
-                $userDao->updateBrokeragePriceByUid($userId, $number);;
859
-                // 记录日志
860
-                $bill = [
861
-                    'uid' => $userId,
862
-                    'link_id' => 0,
863
-                    'pm' => $pm,
864
-                    'title' => $remark,
865
-                    'category' => 'now_money',
866
-                    'type' => 'commission',
867
-                    'number' => abs($number),
868
-                    'balance' => 0,
869
-                    'mark' => $remark,
870
-                    'create_time' => date('Y-m-d H:i:s'),
871
-                    'status' => 1,
872
-                    'commission_type' => CommonEnum::COMMISSION_TYPE['SHARED_PROSPERITY_PARTNER_COMMISSION']['code'],
873
-                    'order_sn' => 0,
874
-                    'tripartite' => 0,
875
-                    'type_shop' => 0,
876
-                    'mer_id' => 0,
877
-                    'source' => 0,
878
-                    'order_type' => 1,
879
-                    'is_red_brokerage' => 0,
880
-                    'gzc' => 3,
881
-                    'take_time' => time(),
882
-                    'district_id' => '',
883
-                    'street_id' => '',
884
-                    'month' => '',
885
-                ];
886
-                Db::name('user_bill')->insert($bill);
848
+                // 处理佣金
849
+                $this->handleBrokerage($userId, $number, $pm, $absNumber, $remark, $currentTime);
887
             }
850
             }
851
+            
888
             Db::commit();
852
             Db::commit();
889
             return true;
853
             return true;
890
         } catch (\Exception $e) {
854
         } catch (\Exception $e) {
@@ -894,6 +858,152 @@ class SharedProsperityUserRepository extends BaseRepository
894
     }
858
     }
895
 
859
 
896
     /**
860
     /**
861
+     * 处理提现额度更新
862
+     * @param int $userId 用户ID
863
+     * @param float $number 变动金额
864
+     * @param int $pm 收支类型 (1:收入, 0:支出)
865
+     * @param float $absNumber 变动金额绝对值
866
+     * @param string $remark 备注
867
+     * @return void
868
+     */
869
+    private function handleWithdrawalLimit($userId, $number, $pm, $absNumber, $remark)
870
+    {
871
+        /** @var UserDao $userDao */
872
+        $userDao = app()->make(UserDao::class);
873
+        
874
+        // 更新提现额度
875
+        $userDao->updateWithdrawalLimitByUid($userId, $number);
876
+        
877
+        // 获取更新后的余额
878
+        $userData = $userDao->getWhere(['uid' => $userId]);
879
+        $balance = $userData->withdrawal_limit;
880
+        
881
+        // 记录日志
882
+        $insertData = [
883
+            'user_id' => $userId,
884
+            'pm' => $pm,
885
+            'number' => $absNumber,
886
+            'balance' => $balance,
887
+            'status' => 1,
888
+            'type_shop' => 0,
889
+            'take_time' => date('Y-m-d H:i:s'),
890
+            'remark' => $remark
891
+        ];
892
+        
893
+        /** @var UserWithdrawalLimitRecordDao $withdrawalRecordDao */
894
+        $withdrawalRecordDao = app()->make(UserWithdrawalLimitRecordDao::class);
895
+        $withdrawalRecordDao->create($insertData);
896
+    }
897
+
898
+    /**
899
+     * 处理共富体系奖励(消费股/PV值)
900
+     * @param int $userId 用户ID
901
+     * @param int $type 奖励类型
902
+     * @param string $field 数据库字段名
903
+     * @param float $number 变动金额
904
+     * @param int $pm 收支类型 (1:收入, 0:支出)
905
+     * @param float $absNumber 变动金额绝对值
906
+     * @param string $remark 备注
907
+     * @param string $currentTime 当前时间
908
+     * @return void
909
+     */
910
+    private function handleSharedProsperityReward($userId, $type, $field, $number, $pm, $absNumber, $remark, $currentTime)
911
+    {
912
+        // 使用枚举常量
913
+        $typeConstants = SharedProsperityRewardRecordEnum::TYPE;
914
+        $CONSUMER_STOCKS_TYPE = $typeConstants['CONSUMER_STOCKS']['code'] ?? 1001;
915
+        $PV_TYPE = $typeConstants['PV']['code'] ?? 1003;
916
+        
917
+        // 更新数据
918
+        $this->dao->updateRewardByUserId($userId, $field, $number);
919
+        
920
+        // 获取更新后的余额
921
+        $userData = $this->dao->getWhere(['user_id' => $userId]);
922
+        
923
+        // 根据类型确定余额字段
924
+        if ($type == $CONSUMER_STOCKS_TYPE) {
925
+            $balance = $userData->consumer_stocks;
926
+        } elseif ($type == $PV_TYPE) {
927
+            $balance = $userData->pv;
928
+        } else {
929
+            $balance = 0;
930
+        }
931
+        
932
+        // 记录日志
933
+        $insertData = [
934
+            'user_id' => $userId,
935
+            'type' => $type,
936
+            'pm' => $pm,
937
+            'number' => $absNumber,
938
+            'balance' => $balance,
939
+            'status' => SharedProsperityRewardRecordEnum::STATUS['VALID']['code'],
940
+            'type_shop' => SharedProsperityRewardRecordEnum::TYPE_SHOP['Platform']['code'],
941
+            'order_sn' => 0,
942
+            'take_time' => $currentTime,
943
+            'remark' => $remark,
944
+            'create_time' => $currentTime,
945
+            'update_time' => $currentTime,
946
+        ];
947
+        
948
+        /** @var SharedProsperityRewardRecordDao $rewardRecordDao */
949
+        $rewardRecordDao = app()->make(SharedProsperityRewardRecordDao::class);
950
+        $rewardRecordDao->insertAll([$insertData]);
951
+    }
952
+
953
+    /**
954
+     * 处理佣金更新
955
+     * @param int $userId 用户ID
956
+     * @param float $number 变动金额
957
+     * @param int $pm 收支类型 (1:收入, 0:支出)
958
+     * @param float $absNumber 变动金额绝对值
959
+     * @param string $remark 备注
960
+     * @param string $currentTime 当前时间
961
+     * @return void
962
+     */
963
+    private function handleBrokerage($userId, $number, $pm, $absNumber, $remark, $currentTime)
964
+    {
965
+        /** @var UserDao $userDao */
966
+        $userDao = app()->make(UserDao::class);
967
+        
968
+        // 更新佣金
969
+        $userDao->updateBrokeragePriceByUid($userId, $number);
970
+        
971
+        // 获取更新后的余额
972
+        $userData = $userDao->getWhere(['uid' => $userId]);
973
+        $balance = $userData->brokerage_price;
974
+        
975
+        // 记录账单
976
+        $bill = [
977
+            'uid' => $userId,
978
+            'link_id' => 0,
979
+            'pm' => $pm,
980
+            'title' => $remark,
981
+            'category' => 'now_money',
982
+            'type' => 'commission',
983
+            'number' => $absNumber,
984
+            'balance' => $balance,
985
+            'mark' => $remark,
986
+            'create_time' => $currentTime,
987
+            'status' => 1,
988
+            'commission_type' => CommonEnum::COMMISSION_TYPE['SHARED_PROSPERITY_PARTNER_COMMISSION']['code'],
989
+            'order_sn' => 0,
990
+            'tripartite' => 0,
991
+            'type_shop' => 0,
992
+            'mer_id' => 0,
993
+            'source' => 0,
994
+            'order_type' => 1,
995
+            'is_red_brokerage' => 0,
996
+            'gzc' => 3,
997
+            'take_time' => time(),
998
+            'district_id' => '',
999
+            'street_id' => '',
1000
+            'month' => '',
1001
+        ];
1002
+        
1003
+        Db::name('user_bill')->insert($bill);
1004
+    }
1005
+
1006
+    /**
897
      * 第一次促销的 身份 升级方法
1007
      * 第一次促销的 身份 升级方法
898
      * @param SharedProsperityUserEntity $sharedProsperityUserEntity
1008
      * @param SharedProsperityUserEntity $sharedProsperityUserEntity
899
      * @return void
1009
      * @return void

+ 5 - 2
app/controller/admin/system/sharedProsperity/SharedProsperityUser.php

@@ -51,8 +51,11 @@ class SharedProsperityUser
51
     {
51
     {
52
         /** @var SharedProsperityUserRepository $repository */
52
         /** @var SharedProsperityUserRepository $repository */
53
         $repository = app()->make(SharedProsperityUserRepository::class);
53
         $repository = app()->make(SharedProsperityUserRepository::class);
54
-        $params = app('request')->params(['user_id', 'type', 'number']);
55
-        $res = $repository->updateReward($params['user_id'], $params['type'], $params['number']);
54
+        $params = app('request')->params(['user_id', 'type', 'number', 'remark']);
55
+        if (empty($params['user_id']) || empty($params['type']) || empty($params['number'] || empty($params['remark']))) {
56
+            return app('json')->fail('参数错误');
57
+        }
58
+        $res = $repository->updateReward($params['user_id'], $params['type'], $params['number'], $params['remark']);
56
         if (!$res) {
59
         if (!$res) {
57
             return app('json')->fail('更新失败');
60
             return app('json')->fail('更新失败');
58
         }
61
         }