UserController.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\ModelStatusEnum;
  5. use App\Repositories\Models\Base\User;
  6. use App\Services\Base\UserService;
  7. use Illuminate\Http\Request;
  8. /**
  9. * 用户管理
  10. */
  11. class UserController extends Controller
  12. {
  13. /**
  14. * @var UserService
  15. */
  16. private $service;
  17. /**
  18. * UserController constructor.
  19. *
  20. * @param UserService $userService
  21. */
  22. public function __construct(UserService $userService)
  23. {
  24. parent::__construct();
  25. $this->middleware('checkUserPermission');
  26. $this->service = $userService;
  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. $users = $this->service->handleList($request);
  38. return $this->response->success($users);
  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. 'nickname' => 'required',
  51. 'mobile' => 'required',
  52. 'mobile_code' => 'required',
  53. 'kefu_tag' => 'required',
  54. 'sex' => 'required|in:0,1,2',
  55. 'remark' => 'nullable',
  56. ], [
  57. 'nickname' => '姓名',
  58. 'mobile' => '手机号',
  59. 'mobile_code' => '手机-区号',
  60. 'kefu_tag' => '客服标签',
  61. 'sex' => '性别',
  62. 'remark' => '备注',
  63. ]);
  64. $area_code = $request->get('mobile_code', '+86');
  65. switch ($area_code) {
  66. case "+886":
  67. //中国台湾
  68. $this->validateData($request, [
  69. 'mobile' => 'required|mobile_TW',
  70. ], ['mobile' => '手机号']);
  71. break;
  72. case "+853":
  73. //中国澳门
  74. $this->validateData($request, [
  75. 'mobile' => 'required|mobile_OM',
  76. ], ['mobile' => '手机号']);
  77. break;
  78. case "+852":
  79. //中国香港
  80. $this->validateData($request, [
  81. 'mobile' => 'required|mobile_XG',
  82. ], ['mobile' => '手机号']);
  83. break;
  84. case '+86':
  85. default:
  86. //大陆
  87. $this->validateData($request, [
  88. 'mobile' => 'required|mobile',
  89. ], ['mobile' => '手机号']);
  90. $data['mobile_code'] = '+86';
  91. break;
  92. }
  93. $data['status'] = ModelStatusEnum::OK;
  94. $user = $this->service->handleStore($data);
  95. return $this->response->success($user, '更新成功');
  96. }
  97. /**
  98. * 详情
  99. * @param Request $request
  100. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  101. */
  102. public function show(Request $request)
  103. {
  104. $this->validate($request, ['id' => 'required|integer']);
  105. $user = $this->service->handleProfile($request->get('id'));
  106. return $this->response->success($user);
  107. }
  108. /**
  109. * 更新
  110. * @param Request $request
  111. *
  112. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  113. * @throws \Prettus\Validator\Exceptions\ValidatorException
  114. */
  115. public function update(Request $request)
  116. {
  117. $data = $this->validateData($request, [
  118. 'id' => 'required|integer',
  119. 'nickname' => 'required',
  120. 'mobile' => 'required',
  121. 'mobile_code' => 'required',
  122. 'kefu_tag' => 'required',
  123. 'sex' => 'required|in:0,1,2',
  124. 'remark' => 'nullable',
  125. 'status' => 'required|integer',
  126. ], [
  127. 'nickname' => '姓名',
  128. 'mobile' => '手机号',
  129. 'mobile_code' => '手机-区号',
  130. 'kefu_tag' => '客服标签',
  131. 'sex' => '性别',
  132. 'remark' => '备注',
  133. ]);
  134. $area_code = $request->get('mobile_code', '+86');
  135. switch ($area_code) {
  136. case "+886":
  137. //中国台湾
  138. $this->validateData($request, [
  139. 'mobile' => 'required|mobile_TW',
  140. ], ['mobile' => '手机号']);
  141. break;
  142. case "+853":
  143. //中国澳门
  144. $this->validateData($request, [
  145. 'mobile' => 'required|mobile_OM',
  146. ], ['mobile' => '手机号']);
  147. break;
  148. case "+852":
  149. //中国香港
  150. $this->validateData($request, [
  151. 'mobile' => 'required|mobile_XG',
  152. ], ['mobile' => '手机号']);
  153. break;
  154. case '+86':
  155. default:
  156. //大陆
  157. $this->validateData($request, [
  158. 'mobile' => 'required|mobile',
  159. ], ['mobile' => '手机号']);
  160. $data['mobile_code'] = '+86';
  161. break;
  162. }
  163. $user = $this->service->handleUpdate($data);
  164. return $this->response->success($user, '更新成功');
  165. }
  166. /**
  167. * 删除
  168. * @param Request $request
  169. */
  170. public function destroy(Request $request)
  171. {
  172. $this->validate($request, ['id' => 'required|integer']);
  173. $re = $this->service->handleDelete($request->get('id'));
  174. if ($re) {
  175. return $this->response->ok('删除成功');
  176. }
  177. return $this->response->fail('删除失败');
  178. }
  179. /**
  180. * 批量修改状态
  181. * @param Request $request
  182. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  183. * @throws \Illuminate\Validation\ValidationException
  184. */
  185. public function batchUpdateStatus(Request $request)
  186. {
  187. $data = $this->validateData($request, [
  188. 'ids' => 'required|array',
  189. 'status' => 'required|integer',
  190. 'remark' => 'nullable'
  191. ], [
  192. 'ids' => 'ids',
  193. 'status' => '状态',
  194. 'remark' => '备注'
  195. ]);
  196. User::query()->whereIn('id', $data['ids'])->update([
  197. 'status' => $data['status'],
  198. 'remark' => $data['remark'],
  199. ]);
  200. return $this->response->ok('操作成功');
  201. }
  202. /**
  203. * 选项
  204. * @must
  205. * @param Request $request
  206. */
  207. public function selectOptions(Request $request)
  208. {
  209. $lists = $this->service->handleSelectOptions($request);
  210. return $this->response->success($lists);
  211. }
  212. }