query()->where($map)->orderByDesc('uid')->paginate($limit, ['uid', 'username', 'phone', 'status', 'insert_time', 'update_time']); // 循环处理 foreach ($Paginator as $key => $value) { // 切成字符串 $value['group'] = $AuthGroupAccess->getGroupByUid($value['uid']); // 重组 $Paginator[$key] = $value; } // 获取数据 $data['total'] = $Paginator->total(); $data['current_page'] = $Paginator->currentPage(); $data['per_page'] = (int)$Paginator->perPage(); $data['last_page'] = $Paginator->lastPage(); $data['data'] = $Paginator->items(); // 告知结果 return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]); } /** * 添加 * @author 唐远望 * @version 1.0 * @date 2025-12-02 * */ public function add(Request $request, Model $Model, AuthGroupAccess $AuthGroupAccess, AuthGroup $AuthGroup) { if (request()->isMethod('post')) { // 验证参数 $request->scene('add')->validate(); // 接收数据 $data['username'] = request('username', ''); $data['phone'] = request('phone', ''); $data['password'] = request('password', ''); $data['password'] = md5($data['password']); $groups = (array) request('groups', []); //校验手机号码是否存在 $phone_exist = $Model->query()->where('phone', $data['phone'])->first(); if ($phone_exist) { return json_send(['code' => 'error', 'msg' => '手机号码已存在']); } // 写入数据表 $uid = $Model->add($data); // 如果操作失败 if (!$uid) return json_send(['code' => 'error', 'msg' => '新增失败']); // 权限组 $access = []; // 循环数据 foreach ($groups as $group_id) { // 追加数据 $access[] = ['group_id' => $group_id, 'user_uid' => $uid]; } // 写入用户权限组 $result = $AuthGroupAccess->query()->insert($access); // 如果操作失败 if (!$result) { // 告知错误 return json_send(['code' => 'error', 'msg' => '权限分配失败']); } } // 查询用户组 $group = $AuthGroup->query()->where(['status' => 0])->select(['id', 'name'])->get()->toArray(); // 错误告知 if (!$group) json_send(['code' => 'error', 'msg' => '请先添加用户组']); // 告知结果 return json_send(['code' => 'success', 'msg' => '新增成功', 'data' => ['group' => $group]]); } /** * 查看 * @author 唐远望 * @version 1.0 * @date 2025-12-02 * */ public function get_detail(Request $request, Model $Model) { // 验证参数 $request->scene('get_detail')->validate(); // 接收参数 $id = request('uid', 0); // 查询数据 $oldData = $Model->getOne($id); // 未查询到对应的数据 if (!$oldData) return json_send(['code' => 'error', 'msg' => '未查询到对应的数据']); // 隐私规范,删除密码 unset($oldData['password']); // 结果 return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $oldData]); } /** * 编辑 * @author 唐远望 * @version 1.0 * @date 2025-12-02 * */ public function edit(Request $request, Model $Model, AuthGroupAccess $AuthGroupAccess, AuthGroup $AuthGroup) { // 接收参数 $id = request('uid', 0); // 如果账号是超管 if (is_super($id, 'manager')) { // 当前登录的账号不是超管 if (!is_super(request('access_token.uid', 0), 'manager')) return json_send(['code' => 'error', 'msg' => '您没有权限修改该超管账号的信息']); } // 查询数据 $oldData = $Model->getOne($id); // 未查询到对应的数据 if (!$oldData) return json_send(['code' => 'error', 'msg' => '未查询到对应的数据']); if (request()->isMethod('post')) { // 验证参数 $request->scene('edit')->validate(); // 接收数据 $data['username'] = request('username', ''); $data['phone'] = request('phone', ''); $password = request('password', ''); if ($password) $data['password'] = md5($password); $groups = (array) request('groups', []); //校验手机号码是否存在 $phone_exist = $Model->query()->where('phone', $data['phone'])->where('uid', '!=', $id)->first(); if ($phone_exist) { return json_send(['code' => 'error', 'msg' => '手机号码已存在']); } // 写入数据表 $uid = $Model->edit($id, $data); // 如果操作失败 if (!$uid) return json_send(['code' => 'error', 'msg' => '编辑失败']); // 清空权限组 $AuthGroupAccess->query()->where([['admin_uid', '=', $id]])->delete(); // 权限组 $access = []; // 循环数据 foreach ($groups as $group_id) { // 追加数据 $access[] = ['group_id' => $group_id, 'admin_uid' => $id]; } // 写入用户权限组 $result = $AuthGroupAccess->query()->insert($access); // 如果操作失败 if (!$result) { // 告知错误 return json_send(['code' => 'error', 'msg' => '权限分配失败']); } } // 查询用户的用户组 $oldData['group'] = $AuthGroupAccess->query()->where([['group_id', '=', $id]])->pluck('group_id')->toArray(); // 查询用户组 $group = $AuthGroup->query()->where(['status' => 0])->select(['id', 'name'])->get()->toArray(); // 错误告知 if (!$group) json_send(['code' => 'error', 'msg' => '请先添加用户组']); // 告知结果 return json_send(['code' => 'success', 'msg' => '编辑成功', 'data' => ['group' => $group, 'oldData' => $oldData]]); } /** * 修改状态 * @author 唐远望 * @version 1.0 * @date 2025-12-02 * */ public function set_status(Request $request, Model $Model) { // 验证参数 $request->scene('set_status')->validate(); // 设置状态 $id = request('uid', 0); $status = request('status', 0); // 如果账号是超管 if (is_super($id, 'manager')) { // 当前登录的账号不是超管 if (!is_super(request('access_token.uid', 0), 'manager')) return json_send(['code' => 'error', 'msg' => '您没有权限修改该超管账号的状态']); } // 查询用户 $oldData = $Model->getOne($id); // 如果用户不存在 if (!$oldData) return json_send(['code' => 'error', 'msg' => '用户不存在']); // 执行修改 $result = $Model->edit($id, ['status' => $status]); // 提示新增失败 if (!$result) return json_send(['code' => 'error', 'msg' => '设置失败']); // 告知结果 return json_send(['code' => 'success', 'msg' => '设置成功', 'data' => ['uid' => $id]]); } /** * 修改密码 * @author 唐远望 * @version 1.0 * @date 2025-12-02 */ public function alter_password(Request $request, Model $Model) { // 验证参数 $request->scene('alter_password')->validate(); // 获取参数 $uid = request('access_token.uid', 0); $oldpass = request('oldpass', ''); $password = request('password', ''); // 查询用户 $oldData = $Model->getOne($uid); // 如果用户不存在 if (!$oldData) return json_send(['code' => 'error', 'msg' => '用户不存在']); // 比对密码 if (md5($oldpass) != $oldData['password']) return json_send(['code' => 'error', 'msg' => '原密码有误,请核对密码']); // 执行修改 $result = $Model->edit($uid, ['password' => md5($password)]); // 提示新增失败 if (!$result) return json_send(['code' => 'error', 'msg' => '修改失败']); // 退出登录 $Model->LoginOut($uid, 'manager'); // 告知结果 return json_send(['code' => 'success', 'msg' => '修改成功', 'data' => ['uid' => $uid]]); } }