Pārlūkot izejas kodu

新增:超管后台支持修改商户账号

萤火科技 1 gadu atpakaļ
vecāks
revīzija
fec6cd5194

+ 17 - 0
app/admin/controller/Store.php

@@ -87,6 +87,23 @@ class Store extends Controller
         return $this->renderSuccess('操作成功');
     }
 
+    /**
+     * 修改商家账户
+     * @param int $storeId
+     * @return Json
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function edit(int $storeId): Json
+    {
+        $model = StoreModel::detail($storeId);
+        if (!$model->edit($this->postForm())) {
+            return $this->renderError($model->getError() ?: '操作失败');
+        }
+        return $this->renderSuccess('操作成功');
+    }
+
     /**
      * 移出回收站
      * @param int $storeId

+ 40 - 1
app/admin/model/Store.php

@@ -13,6 +13,8 @@ declare (strict_types=1);
 namespace app\admin\model;
 
 use app\common\model\Store as StoreModel;
+use app\admin\model\store\User as StoreUserModel;
+use think\model\relation\HasOne;
 
 /**
  * 商家记录表模型
@@ -21,6 +23,17 @@ use app\common\model\Store as StoreModel;
  */
 class Store extends StoreModel
 {
+    /**
+     * 关联商家用户记录 (超级管理员)
+     * @return HasOne
+     */
+    public function superUser(): HasOne
+    {
+        $module = self::getCalledModule();
+        return $this->hasOne("app\\{$module}\\model\\store\\User")
+            ->where('is_super', '=', 1);
+    }
+
     /**
      * 获取列表数据
      * @param bool $isRecycle
@@ -29,12 +42,38 @@ class Store extends StoreModel
      */
     public function getList(bool $isRecycle = false): \think\Paginator
     {
-        return $this->where('is_recycle', '=', (int)$isRecycle)
+        return $this->with(['superUser'])
+            ->where('is_recycle', '=', (int)$isRecycle)
             ->where('is_delete', '=', 0)
             ->order(['sort' => 'asc', 'create_time' => 'desc'])
             ->paginate(15);
     }
 
+    /**
+     * 更新记录
+     * @param array $data
+     * @return bool|mixed
+     */
+    public function edit(array $data)
+    {
+        if (!empty($data['password']) && ($data['password'] !== $data['password_confirm'])) {
+            $this->error = '确认密码不正确';
+            return false;
+        }
+        if ($this['superUser']['user_name'] !== $data['user_name']
+            && StoreUserModel::checkExist($data['user_name'])) {
+            $this->error = '商家用户名已存在';
+            return false;
+        }
+        return $this->transaction(function () use ($data) {
+            // 更新商户记录
+            $this->save(['sort' => $data['sort']]);
+            // 更新商家用户信息
+            (new StoreUserModel)->edit((int)$this['store_id'], $data);
+            return true;
+        });
+    }
+
     /**
      * 移入移出回收站
      * @param bool $isRecycle

+ 20 - 1
app/admin/model/store/User.php

@@ -21,8 +21,11 @@ use app\common\model\store\User as StoreUserModel;
  */
 class User extends StoreUserModel
 {
+    // 隐藏的字段
+    protected $hidden = ['password'];
+
     /**
-     * 新增商家用户记录
+     * 新增商家用户记录 (超级管理员)
      * @param int $storeId
      * @param array $data
      * @return bool|false
@@ -37,6 +40,22 @@ class User extends StoreUserModel
         ]);
     }
 
+    /**
+     * 更新商家用户记录 (超级管理员)
+     * @param int $storeId
+     * @param array $data
+     * @return bool|false
+     */
+    public function edit(int $storeId, array $data): bool
+    {
+        $form = ['user_name' => $data['user_name']];
+        !empty($data['password']) && $form['password'] = \encryption_hash($data['password']);
+        return static::updateBase($form, [
+            ['is_super', '=', 1],
+            ['store_id', '=', $storeId]
+        ]);
+    }
+
     /**
      * 商家用户登录
      * @param int $storeId