Sfoglia il codice sorgente

feat(admin): 更新共享致富用户等级功能优化

- 添加备注参数并增加参数验证逻辑
- 实现等级变更日志记录功能
- 增加数据库事务处理确保数据一致性
- 新增 SharedProsperityUserLevelLog 模型和DAO层
- 添加操作员ID和备注信息存储
- 实现等级重复检查避免无效更新
- 完善错误处理和异常回滚机制
shichen 4 mesi fa
parent
commit
9a952a2751

+ 14 - 0
app/common/dao/shared/SharedProsperityUserLevelLogDao.php

@@ -0,0 +1,14 @@
1
+<?php
2
+
3
+namespace app\common\dao\shared;
4
+
5
+use app\common\dao\BaseDao;
6
+use app\common\model\shared\SharedProsperityUserLevelLog;
7
+
8
+class SharedProsperityUserLevelLogDao extends BaseDao
9
+{
10
+    protected function getModel(): string
11
+    {
12
+        return SharedProsperityUserLevelLog::class;
13
+    }
14
+}

+ 18 - 0
app/common/model/shared/SharedProsperityUserLevelLog.php

@@ -0,0 +1,18 @@
1
+<?php
2
+
3
+namespace app\common\model\shared;
4
+
5
+use app\common\model\BaseModel;
6
+
7
+class SharedProsperityUserLevelLog extends BaseModel
8
+{
9
+    public static function tablePk(): ?string
10
+    {
11
+        return 'id';
12
+    }
13
+
14
+    public static function tableName(): string
15
+    {
16
+        return 'shared_prosperity_user_level_log';
17
+    }
18
+}

+ 27 - 2
app/common/repositories/shared/SharedProsperityUserRepository.php

@@ -4,6 +4,7 @@ namespace app\common\repositories\shared;
4 4
 
5 5
 use app\common\dao\shared\SharedProsperityGroupUserDao;
6 6
 use app\common\dao\shared\SharedProsperityUserDao;
7
+use app\common\dao\shared\SharedProsperityUserLevelLogDao;
7 8
 use app\common\dao\user\UserDao;
8 9
 use app\common\enum\CommonEnum;
9 10
 use app\common\enum\shared\SharedProsperityRewardRecordEnum;
@@ -14,6 +15,7 @@ use app\entity\data\shared\SharedProsperityGroupUserEntity;
14 15
 use app\entity\data\shared\SharedProsperityRecommendConfigEntity;
15 16
 use app\entity\data\shared\SharedProsperityUserEntity;
16 17
 use think\db\exception\DbException;
18
+use think\facade\Db;
17 19
 
18 20
 class SharedProsperityUserRepository extends BaseRepository
19 21
 {
@@ -752,9 +754,32 @@ class SharedProsperityUserRepository extends BaseRepository
752 754
      * @date 2026/2/27 14:23
753 755
      * 更新用户等级
754 756
      */
755
-    public function updateLevel($userId, $level)
757
+    public function updateLevel($userId, $level, $operator, $remark)
756 758
     {
757
-        return $this->dao->updateByUserId($userId, ['partner_level' => $level]);
759
+        $userInfo = $this->dao->getWhere(['user_id' => $userId]);
760
+        if ($level == $userInfo->partner_level) {
761
+            return '等级未发生变化';
762
+        }
763
+        Db::startTrans();
764
+        try {
765
+            // 变更等级
766
+            $this->dao->updateByUserId($userId, ['partner_level' => $level]);
767
+            // 记录日志
768
+            /** @var SharedProsperityUserLevelLogDao $logDao */
769
+            $logDao = app()->make(SharedProsperityUserLevelLogDao::class);
770
+            $logDao->create([
771
+                'user_id' => $userId,
772
+                'old_level' => $userInfo->partner_level,
773
+                'new_level' => $level,
774
+                'operator' => $operator,
775
+                'remark' => $remark
776
+            ]);
777
+            Db::commit();
778
+        } catch (\Exception $e) {
779
+            Db::rollback();
780
+            return $e->getMessage();
781
+        }
782
+
758 783
     }
759 784
 
760 785
     /**

+ 7 - 4
app/controller/admin/system/sharedProsperity/SharedProsperityUser.php

@@ -30,10 +30,13 @@ class SharedProsperityUser
30 30
     {
31 31
         /** @var SharedProsperityUserRepository $repository */
32 32
         $repository = app()->make(SharedProsperityUserRepository::class);
33
-        $params = app('request')->params(['user_id', 'partner_level']);
34
-        $res = $repository->updateLevel($params['user_id'], $params['partner_level']);
35
-        if (!$res) {
36
-            return app('json')->fail('更新失败');
33
+        $params = app('request')->params(['user_id', 'partner_level', 'remark']);
34
+        if (empty($params['user_id']) || empty($params['partner_level']) || empty($params['remark'])) {
35
+            return app('json')->fail('参数错误');
36
+        }
37
+        $res = $repository->updateLevel($params['user_id'], $params['partner_level'], request()->adminId(), $params['remark']);
38
+        if (is_string($res)) {
39
+            return app('json')->fail($res);
37 40
         }
38 41
         return app('json')->success('更新成功');
39 42
     }