AdminController.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\Base\AdminTypeEnum;
  5. use App\Repositories\Models\Base\Admin;
  6. use App\Services\Base\AdminService;
  7. use Illuminate\Http\Request;
  8. /**
  9. * 管理员管理
  10. */
  11. class AdminController extends Controller
  12. {
  13. /**
  14. * @var AdminService
  15. */
  16. private $adminService;
  17. /**
  18. * AdminController constructor.
  19. *
  20. * @param AdminService $adminService
  21. */
  22. public function __construct(AdminService $adminService)
  23. {
  24. parent::__construct();
  25. // $this->middleware('checkUserPermission');
  26. $this->adminService = $adminService;
  27. }
  28. /**
  29. * 列表
  30. * @param Request $request
  31. *
  32. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  33. * @throws \Prettus\Repository\Exceptions\RepositoryException
  34. */
  35. public function index(Request $request)
  36. {
  37. $admins = $this->adminService->handleList($request);
  38. return $this->response->success($admins);
  39. }
  40. /**
  41. * 创建
  42. * @param Request $request
  43. *
  44. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  45. * @throws \Prettus\Validator\Exceptions\ValidatorException
  46. */
  47. public function store(Request $request)
  48. {
  49. $data = $this->validateData($request, [
  50. 'username' => [
  51. 'required',
  52. 'alpha_dash',
  53. function ($attribute, $value, $fail) use ($request) {
  54. if (Admin::checkUsernameIsUnique($value, $request->get('id'))) {
  55. $fail('账号 已存在');
  56. }
  57. },
  58. ],
  59. 'name' => 'required',
  60. 'mobile' => 'required|mobile',
  61. 'email' => 'nullable|sometimes|email',
  62. 'sex' => 'required|in:0,1,2',
  63. 'password' => 'required|confirmed|password_level',
  64. 'department_id' => 'required|integer',
  65. 'role_ids' => 'required|array',
  66. 'user_tag' => 'nullable|string',
  67. 'status' => 'required|integer',
  68. 'extra_fields' => 'nullable|sometimes|array',
  69. ], [
  70. 'username' => '用户名',
  71. 'name' => '姓名',
  72. 'user_no' => '工号',
  73. 'mobile' => '手机号',
  74. 'email' => '邮箱',
  75. 'sex' => '性别',
  76. 'password' => '密码',
  77. 'department_id' => '部门',
  78. 'role_ids' => '角色',
  79. 'is_view_user_info' => '是否可以查看用户隐私数据',
  80. 'user_tag' => '用户标签',
  81. 'status' => '状态',
  82. 'extra_fields' => '额外字段',
  83. ]);
  84. $data['type'] = AdminTypeEnum::ADMIN;
  85. $admin = $this->adminService->handleStore($data);
  86. return $this->response->created($admin, '创建成功');
  87. }
  88. /**
  89. * 详情
  90. * @param int $id
  91. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  92. */
  93. public function show(Request $request)
  94. {
  95. $this->validate($request, ['id' => 'required|integer']);
  96. $admin = $this->adminService->handleProfile($request->get('id'));
  97. return $this->response->success($admin);
  98. }
  99. /**
  100. * 修改
  101. * @param Request $request
  102. *
  103. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  104. * @throws \Prettus\Validator\Exceptions\ValidatorException
  105. */
  106. public function update(Request $request)
  107. {
  108. $data = $this->validateData($request, [
  109. 'username' => [
  110. 'required',
  111. 'alpha_dash',
  112. function ($attribute, $value, $fail) use ($request) {
  113. if (Admin::checkUsernameIsUnique($value, $request->get('id'))) {
  114. $fail('账号 已存在');
  115. }
  116. },
  117. ],
  118. 'name' => 'required',
  119. 'mobile' => 'required|mobile',
  120. 'email' => 'nullable|sometimes|email',
  121. 'sex' => 'required|in:0,1,2',
  122. 'department_id' => 'required|integer',
  123. 'role_ids' => 'required|array',
  124. // 'is_view_user_info' => 'required|integer',
  125. 'user_tag' => 'nullable|string',
  126. 'status' => 'required|integer',
  127. 'id' => 'required|integer',
  128. 'extra_fields' => 'nullable|sometimes|array',
  129. ], [
  130. 'username' => '用户名',
  131. 'name' => '姓名',
  132. 'mobile' => '手机号',
  133. 'email' => '邮箱',
  134. 'sex' => '性别',
  135. 'department_id' => '部门',
  136. 'role_ids' => '角色',
  137. 'is_view_user_info' => '是否可以查看用户隐私数据',
  138. 'status' => '状态',
  139. 'user_tag' => '用户标签',
  140. 'extra_fields' => '额外字段',
  141. ]);
  142. // $data['type'] = AdminTypeEnum::ADMIN;
  143. // if (!in_array(AdminTypeEnum::ADMIN, $data['role_ids'])) {
  144. // $data['type'] = AdminTypeEnum::USER;
  145. // }
  146. $admin = $this->adminService->handleUpdate($data);
  147. return $this->response->success($admin, '更新成功');
  148. }
  149. /**
  150. * 删除
  151. * @param int $id
  152. */
  153. public function destroy(Request $request)
  154. {
  155. $this->validate($request, ['id' => 'required|integer']);
  156. $re = $this->adminService->handleDelete($request->get('id'));
  157. if ($re) {
  158. return $this->response->ok('删除成功');
  159. }
  160. return $this->response->fail('删除失败');
  161. }
  162. /**
  163. * 批量删除
  164. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  165. */
  166. public function batchDelete(Request $request)
  167. {
  168. $this->validate($request, ['ids' => 'required|array']);
  169. $re = $this->adminService->handleBatchDelete($request->get('ids'));
  170. if ($re) {
  171. return $this->response->ok('删除成功');
  172. }
  173. return $this->response->fail('删除失败');
  174. }
  175. /**
  176. * 重置密码
  177. * @param Request $request
  178. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  179. * @throws \Illuminate\Validation\ValidationException
  180. * @throws \Prettus\Validator\Exceptions\ValidatorException
  181. */
  182. public function resetPassword(Request $request)
  183. {
  184. $this->validate($request, ['id' => 'required|integer', 'password' => 'required|min:6'], [], [
  185. 'password' => '密码',
  186. ]);
  187. $this->adminService->handleResetPassword($request);
  188. return $this->response->ok('重置成功');
  189. }
  190. /**
  191. * 管理员选项
  192. * @must
  193. * @param Request $request
  194. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  195. * @throws \Prettus\Repository\Exceptions\RepositoryException
  196. */
  197. public function selectOptions(Request $request)
  198. {
  199. $admins = $this->adminService->handleSelectOptions($request);
  200. return $this->response->success($admins);
  201. }
  202. /**
  203. * 批量修改状态
  204. * @param Request $request
  205. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  206. * @throws \Illuminate\Validation\ValidationException
  207. */
  208. public function batchUpdateStatus(Request $request)
  209. {
  210. $data = $this->validateData($request, [
  211. 'ids' => 'required|array',
  212. 'status' => 'required|integer',
  213. 'remark' => 'nullable'
  214. ], [
  215. 'ids' => 'ids',
  216. 'status' => '状态',
  217. 'remark' => '备注'
  218. ]);
  219. Admin::query()->whereIn('id', $data['ids'])->update([
  220. 'status' => $data['status'],
  221. 'remark' => $data['remark'],
  222. ]);
  223. return $this->response->ok('操作成功');
  224. }
  225. }