Browse Source

feat(admin): 添加共富会员上级修改功能

- 在路由文件中新增 updateParent 接口路由
- 在控制器中实现 updateParent 方法处理上级修改逻辑
- 创建 SharedProsperityUserParentLog 模型用于记录上级变更日志
- 创建 SharedProsperityUserParentLogDao 数据访问对象
- 在仓库类中新增 updateParent 方法实现事务性更新和日志记录
- 添加参数验证和业务逻辑检查防止无效操作
shichen 4 months ago
parent
commit
f789391aff

+ 14 - 0
app/common/dao/shared/SharedProsperityUserParentLogDao.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\SharedProsperityUserParentLog;
7
+
8
+class SharedProsperityUserParentLogDao extends BaseDao
9
+{
10
+    protected function getModel(): string
11
+    {
12
+        return SharedProsperityUserParentLog::class;
13
+    }
14
+}

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

@@ -0,0 +1,18 @@
1
+<?php
2
+
3
+namespace app\common\model\shared;
4
+
5
+use app\common\model\BaseModel;
6
+
7
+class SharedProsperityUserParentLog 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_parent_log';
17
+    }
18
+}

+ 45 - 0
app/common/repositories/shared/SharedProsperityUserRepository.php

@@ -6,6 +6,7 @@ use app\common\dao\shared\SharedProsperityGroupUserDao;
6 6
 use app\common\dao\shared\SharedProsperityRewardRecordDao;
7 7
 use app\common\dao\shared\SharedProsperityUserDao;
8 8
 use app\common\dao\shared\SharedProsperityUserLevelLogDao;
9
+use app\common\dao\shared\SharedProsperityUserParentLogDao;
9 10
 use app\common\dao\user\UserDao;
10 11
 use app\common\dao\user\UserWithdrawalLimitRecordDao;
11 12
 use app\common\enum\CommonEnum;
@@ -807,6 +808,50 @@ class SharedProsperityUserRepository extends BaseRepository
807 808
 
808 809
     /**
809 810
      * @param $userId
811
+     * @param $parentId
812
+     * @param $remark
813
+     * @param $operator
814
+     * @return string|void
815
+     * @throws DbException
816
+     * @throws \think\db\exception\DataNotFoundException
817
+     * @throws \think\db\exception\ModelNotFoundException
818
+     * @author 史晨
819
+     * @date 2026/3/16 09:35
820
+     * 更新用户上级
821
+     */
822
+    public function updateParent($userId, $parentId, $remark, $operator)
823
+    {
824
+        if ($userId == $parentId) {
825
+            return '不能设置自己为上级';
826
+        }
827
+        $userInfo = $this->dao->getWhere(['user_id' => $userId]);
828
+        if ($parentId == $userInfo->parent_id) {
829
+            return '上级未发生变化';
830
+        }
831
+        Db::startTrans();
832
+        try {
833
+            // 变更等级
834
+            $this->dao->updateByUserId($userId, ['parent_id' => $parentId]);
835
+            // 记录日志
836
+            /** @var SharedProsperityUserParentLogDao $logDao */
837
+            $logDao = app()->make(SharedProsperityUserParentLogDao::class);
838
+            $logDao->create([
839
+                'user_id' => $userId,
840
+                'old_parent' => $userInfo->parent_id,
841
+                'new_parent' => $parentId,
842
+                'operator' => $operator,
843
+                'remark' => $remark
844
+            ]);
845
+            Db::commit();
846
+        } catch (\Exception $e) {
847
+            Db::rollback();
848
+            return $e->getMessage();
849
+        }
850
+    }
851
+
852
+
853
+    /**
854
+     * @param $userId
810 855
      * @param $type
811 856
      * @param $number
812 857
      * @return bool

+ 21 - 0
app/controller/admin/system/sharedProsperity/SharedProsperityUser.php

@@ -61,4 +61,25 @@ class SharedProsperityUser
61 61
         }
62 62
         return app('json')->success('更新成功');
63 63
     }
64
+
65
+    /**
66
+     * @return mixed
67
+     * @author 史晨
68
+     * @date 2026/3/16 09:30
69
+     * 更新用户上级
70
+     */
71
+    public function updateParent()
72
+    {
73
+        /** @var SharedProsperityUserRepository $repository */
74
+        $repository = app()->make(SharedProsperityUserRepository::class);
75
+        $params = app('request')->params(['user_id', 'parent_id', 'remark']);
76
+        if (empty($params['user_id']) || empty($params['parent_id'] || empty($params['remark']))) {
77
+            return app('json')->fail('参数错误');
78
+        }
79
+        $res = $repository->updateParent($params['user_id'], $params['parent_id'], $params['remark'], request()->adminId());
80
+        if (is_string($res)) {
81
+            return app('json')->fail($res);
82
+        }
83
+        return app('json')->success('更新成功');
84
+    }
64 85
 }

+ 2 - 0
route/admin.php

@@ -124,6 +124,8 @@ Route::group(config('admin.api_admin_prefix') . '/', function () {
124 124
         Route::get('sharedProsperity/user/updateLevel', 'admin.system.sharedProsperity.SharedProsperityUser/updateLevel');
125 125
         // 修改共富会员奖励
126 126
         Route::get('sharedProsperity/user/updateReward', 'admin.system.sharedProsperity.SharedProsperityUser/updateReward');
127
+        // 修改共富会员上级
128
+        Route::get('sharedProsperity/user/updateParent', 'admin.system.sharedProsperity.SharedProsperityUser/updateParent');
127 129
 
128 130
         //组合数据
129 131
         Route::group('group', function () {