AdminUser.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php
  2. namespace App\Http\Controllers\Manager;
  3. use App\Http\Requests\Manager\AdminUser as Request;
  4. use App\Models\Manager\AdminUser as Model;
  5. use App\Models\Manager\AuthGroupAccess;
  6. use App\Models\Manager\AuthGroup;
  7. use App\Models\Manager\Personnel\Employee as EmployeeModel;
  8. /**
  9. * 系统用户
  10. * @author 唐远望
  11. * @version 1.0
  12. * @date 2025-12-02
  13. *
  14. */
  15. class AdminUser extends Manager
  16. {
  17. /**
  18. * 列表页
  19. *
  20. * */
  21. public function get_list(Model $Model, AuthGroupAccess $AuthGroupAccess)
  22. {
  23. // 接收参数
  24. $phone = request('phone', '');
  25. $username = request('username', '');
  26. $status = request('status');
  27. $limit = request('limit', config('page_num', 10));
  28. // 查询数据
  29. $map = [];
  30. // 组合条件
  31. if ($phone) $map[] = ['phone', '=', $phone];
  32. if ($username) $map[] = ['username', '=', $username];
  33. if (!is_null($status)) $map[] = ['status', '=', $status];
  34. // 查询系统用户
  35. $Paginator = $Model->query()->where($map)->orderByDesc('uid')->paginate($limit, ['uid', 'username', 'phone', 'status', 'insert_time', 'update_time']);
  36. // 循环处理
  37. foreach ($Paginator as $key => $value) {
  38. // 切成字符串
  39. $value['group'] = $AuthGroupAccess->getGroupByUid($value['uid']);
  40. // 重组
  41. $Paginator[$key] = $value;
  42. }
  43. // 获取数据
  44. $data['total'] = $Paginator->total();
  45. $data['current_page'] = $Paginator->currentPage();
  46. $data['per_page'] = (int)$Paginator->perPage();
  47. $data['last_page'] = $Paginator->lastPage();
  48. $data['data'] = $Paginator->items();
  49. // 告知结果
  50. return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]);
  51. }
  52. /**
  53. * 添加
  54. * @author 唐远望
  55. * @version 1.0
  56. * @date 2025-12-02
  57. * */
  58. public function add(Request $request, Model $Model, AuthGroupAccess $AuthGroupAccess, AuthGroup $AuthGroup)
  59. {
  60. if (request()->isMethod('post')) {
  61. // 验证参数
  62. $request->scene('add')->validate();
  63. // 接收数据
  64. $data['username'] = request('username', '');
  65. $data['phone'] = request('phone', '');
  66. $data['password'] = request('password', '');
  67. $data['password'] = md5($data['password']);
  68. $groups = (array) request('groups', []);
  69. //校验手机号码是否存在
  70. $phone_exist = $Model->query()->where('phone', $data['phone'])->first();
  71. if ($phone_exist) {
  72. return json_send(['code' => 'error', 'msg' => '手机号码已存在']);
  73. }
  74. // 写入数据表
  75. $uid = $Model->add($data);
  76. // 如果操作失败
  77. if (!$uid) return json_send(['code' => 'error', 'msg' => '新增失败']);
  78. // 权限组
  79. $access = [];
  80. // 循环数据
  81. foreach ($groups as $group_id) {
  82. // 追加数据
  83. $access[] = ['group_id' => $group_id, 'user_uid' => $uid];
  84. }
  85. // 写入用户权限组
  86. $result = $AuthGroupAccess->query()->insert($access);
  87. // 如果操作失败
  88. if (!$result) {
  89. // 告知错误
  90. return json_send(['code' => 'error', 'msg' => '权限分配失败']);
  91. }
  92. }
  93. // 查询用户组
  94. $group = $AuthGroup->query()->where(['status' => 0])->select(['id', 'name'])->get()->toArray();
  95. // 错误告知
  96. if (!$group) json_send(['code' => 'error', 'msg' => '请先添加用户组']);
  97. // 告知结果
  98. return json_send(['code' => 'success', 'msg' => '新增成功', 'data' => ['group' => $group]]);
  99. }
  100. /**
  101. * 查看
  102. * @author 唐远望
  103. * @version 1.0
  104. * @date 2025-12-02
  105. * */
  106. public function get_detail(Request $request, Model $Model)
  107. {
  108. // 验证参数
  109. $request->scene('get_detail')->validate();
  110. // 接收参数
  111. $id = request('uid', 0);
  112. // 查询数据
  113. $oldData = $Model->getOne($id);
  114. // 未查询到对应的数据
  115. if (!$oldData) return json_send(['code' => 'error', 'msg' => '未查询到对应的数据']);
  116. // 隐私规范,删除密码
  117. unset($oldData['password']);
  118. // 结果
  119. return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $oldData]);
  120. }
  121. /**
  122. * 编辑
  123. * @author 唐远望
  124. * @version 1.0
  125. * @date 2025-12-02
  126. * */
  127. public function edit(Request $request, Model $Model, AuthGroupAccess $AuthGroupAccess, AuthGroup $AuthGroup)
  128. {
  129. // 接收参数
  130. $id = request('uid', 0);
  131. // 如果账号是超管
  132. if (is_super($id, 'manager')) {
  133. // 当前登录的账号不是超管
  134. if (!is_super(request('access_token.uid', 0), 'manager')) return json_send(['code' => 'error', 'msg' => '您没有权限修改该超管账号的信息']);
  135. }
  136. // 查询数据
  137. $oldData = $Model->getOne($id);
  138. // 未查询到对应的数据
  139. if (!$oldData) return json_send(['code' => 'error', 'msg' => '未查询到对应的数据']);
  140. if (request()->isMethod('post')) {
  141. // 验证参数
  142. $request->scene('edit')->validate();
  143. // 接收数据
  144. $data['username'] = request('username', '');
  145. $data['phone'] = request('phone', '');
  146. $password = request('password', '');
  147. if ($password) $data['password'] = md5($password);
  148. $groups = (array) request('groups', []);
  149. //校验手机号码是否存在
  150. $phone_exist = $Model->query()->where('phone', $data['phone'])->where('uid', '!=', $id)->first();
  151. if ($phone_exist) {
  152. return json_send(['code' => 'error', 'msg' => '手机号码已存在']);
  153. }
  154. // 写入数据表
  155. $uid = $Model->edit($id, $data);
  156. // 如果操作失败
  157. if (!$uid) return json_send(['code' => 'error', 'msg' => '编辑失败']);
  158. // 清空权限组
  159. $AuthGroupAccess->query()->where([['admin_uid', '=', $id]])->delete();
  160. // 权限组
  161. $access = [];
  162. // 循环数据
  163. foreach ($groups as $group_id) {
  164. // 追加数据
  165. $access[] = ['group_id' => $group_id, 'admin_uid' => $id];
  166. }
  167. // 写入用户权限组
  168. $result = $AuthGroupAccess->query()->insert($access);
  169. // 如果操作失败
  170. if (!$result) {
  171. // 告知错误
  172. return json_send(['code' => 'error', 'msg' => '权限分配失败']);
  173. }
  174. }
  175. // 查询用户的用户组
  176. $oldData['group'] = $AuthGroupAccess->query()->where([['group_id', '=', $id]])->pluck('group_id')->toArray();
  177. // 查询用户组
  178. $group = $AuthGroup->query()->where(['status' => 0])->select(['id', 'name'])->get()->toArray();
  179. // 错误告知
  180. if (!$group) json_send(['code' => 'error', 'msg' => '请先添加用户组']);
  181. // 告知结果
  182. return json_send(['code' => 'success', 'msg' => '编辑成功', 'data' => ['group' => $group, 'oldData' => $oldData]]);
  183. }
  184. /**
  185. * 修改状态
  186. * @author 唐远望
  187. * @version 1.0
  188. * @date 2025-12-02
  189. * */
  190. public function set_status(Request $request, Model $Model)
  191. {
  192. // 验证参数
  193. $request->scene('set_status')->validate();
  194. // 设置状态
  195. $id = request('uid', 0);
  196. $status = request('status', 0);
  197. // 如果账号是超管
  198. if (is_super($id, 'manager')) {
  199. // 当前登录的账号不是超管
  200. if (!is_super(request('access_token.uid', 0), 'manager')) return json_send(['code' => 'error', 'msg' => '您没有权限修改该超管账号的状态']);
  201. }
  202. // 查询用户
  203. $oldData = $Model->getOne($id);
  204. // 如果用户不存在
  205. if (!$oldData) return json_send(['code' => 'error', 'msg' => '用户不存在']);
  206. // 执行修改
  207. $result = $Model->edit($id, ['status' => $status]);
  208. // 提示新增失败
  209. if (!$result) return json_send(['code' => 'error', 'msg' => '设置失败']);
  210. // 告知结果
  211. return json_send(['code' => 'success', 'msg' => '设置成功', 'data' => ['uid' => $id]]);
  212. }
  213. /**
  214. * 修改密码
  215. * @author 唐远望
  216. * @version 1.0
  217. * @date 2025-12-02
  218. */
  219. public function alter_password(Request $request, Model $Model,EmployeeModel $EmployeeModel)
  220. {
  221. // 验证参数
  222. $request->scene('alter_password')->validate();
  223. // 获取参数
  224. $uid = request('access_token.uid', 0);
  225. $is_admin = request('access_token.is_admin', '');
  226. $oldpass = request('oldpass', '');
  227. $password = request('password', '');
  228. if ($is_admin == '1') {
  229. // 查询用户
  230. $oldData = $Model->getOne($uid);
  231. // 如果用户不存在
  232. if (!$oldData) return json_send(['code' => 'error', 'msg' => '用户不存在']);
  233. // 比对密码
  234. if (md5($oldpass) != $oldData['password']) return json_send(['code' => 'error', 'msg' => '原密码有误,请核对密码']);
  235. // 执行修改
  236. $result = $Model->edit($uid, ['password' => md5($password)]);
  237. // 提示新增失败
  238. if (!$result) return json_send(['code' => 'error', 'msg' => '修改失败']);
  239. // 退出登录
  240. $Model->LoginOut($uid, 'manager');
  241. }else{
  242. // 查询用户
  243. $oldData = $EmployeeModel->getOne($uid);
  244. // 如果用户不存在
  245. if (!$oldData) return json_send(['code' => 'error', 'msg' => '用户不存在']);
  246. // 比对密码
  247. if (md5($oldpass) != $oldData['password']) return json_send(['code' => 'error', 'msg' => '原密码有误,请核对密码']);
  248. // 执行修改
  249. $result = $EmployeeModel->edit($uid, ['password' => md5($password)]);
  250. // 提示新增失败
  251. if (!$result) return json_send(['code' => 'error', 'msg' => '修改失败']);
  252. // 退出登录
  253. $EmployeeModel->LoginOut($uid, 'manager');
  254. }
  255. // 告知结果
  256. return json_send(['code' => 'success', 'msg' => '修改成功', 'data' => ['uid' => $uid]]);
  257. }
  258. }