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