App_Controller_UserController.proxy.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. <?php
  2. declare (strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\UserServiceInterface;
  5. use Hyperf\Di\Annotation\Inject;
  6. use Hyperf\HttpServer\Annotation\AutoController;
  7. use App\Tools\Result;
  8. use App\Constants\ErrorCode;
  9. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  10. use Hyperf\Context\Context;
  11. /**
  12. * Class UserController
  13. * @package App\Controller
  14. */
  15. //#[AutoController]
  16. class UserController extends AbstractController
  17. {
  18. use \Hyperf\Di\Aop\ProxyTrait;
  19. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  20. function __construct()
  21. {
  22. if (method_exists(parent::class, '__construct')) {
  23. parent::__construct(...func_get_args());
  24. }
  25. $this->__handlePropertyHandler(__CLASS__);
  26. }
  27. #[Inject]
  28. protected ValidatorFactoryInterface $validationFactory;
  29. /**
  30. * @var UserServiceInterface
  31. */
  32. #[Inject]
  33. private $userServiceClient;
  34. public function createUser()
  35. {
  36. $requireData = $this->request->all();
  37. $validator = $this->validationFactory->make($requireData, [
  38. 'user_name' => 'required',
  39. //登陆账号
  40. 'type_id' => 'required',
  41. //用户类型
  42. 'password' => 'required|min:6',
  43. //密码
  44. 'confirm_password' => 'required',
  45. 'real_name' => 'required',
  46. 'mobile' => 'required',
  47. ], [
  48. 'user_name.required' => '用户名不能为空',
  49. 'password.required' => '密码不能为空',
  50. // 'email.email' => '请填写一个有效的邮箱',
  51. 'mobile.required' => '手机号码必填',
  52. // 'mobile.telephone_number' => '请填写一个有效的手机号',
  53. 'confirm_password.required' => "确认密码不能为空",
  54. 'type_id.required' => "用户类型不能为空",
  55. 'real_name.required' => "姓名不能为空",
  56. 'password.min' => "密码长度不能低于6位数",
  57. ]);
  58. if ($validator->fails()) {
  59. $errorMessage = $validator->errors()->first();
  60. return Result::error($errorMessage);
  61. }
  62. if ($requireData['password'] != $requireData['confirm_password']) {
  63. return Result::error("两次密码不一致");
  64. }
  65. $salt = rand(1, 999999);
  66. $requireData['salt'] = $salt;
  67. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  68. $requireData['last_login_ip'] = $loginIp;
  69. $requireData['admin_id'] = Context::get("UserId");
  70. $requireData['administrative_unit_id'] = isset($requireData['administrative_unit_arr_id']) && count($requireData['administrative_unit_arr_id']) > 0 ? end($requireData['administrative_unit_arr_id']) : 0;
  71. $requireData['administrative_unit_arr_id'] = isset($requireData['administrative_unit_arr_id']) && count($requireData['administrative_unit_arr_id']) > 0 ? json_encode($requireData['administrative_unit_arr_id']) : '';
  72. $requireData['address_id'] = isset($requireData['address_arr_id']) && count($requireData['address_arr_id']) > 0 ? end($requireData['address_arr_id']) : 0;
  73. $requireData['address_arr_id'] = isset($requireData['address_arr_id']) && count($requireData['address_arr_id']) > 0 ? json_encode($requireData['address_arr_id']) : '';
  74. $requireData['native_place_id'] = isset($requireData['native_place_arr_id']) && count($requireData['native_place_arr_id']) > 0 ? end($requireData['native_place_arr_id']) : 0;
  75. $requireData['native_place_arr_id'] = isset($requireData['native_place_arr_id']) && count($requireData['native_place_arr_id']) > 0 ? json_encode($requireData['native_place_arr_id']) : '';
  76. $requireData['city_id'] = isset($requireData['city_arr_id']) && count($requireData['city_arr_id']) > 0 ? end($requireData['city_arr_id']) : 0;
  77. $requireData['city_arr_id'] = isset($requireData['city_arr_id']) && count($requireData['city_arr_id']) > 0 ? json_encode($requireData['city_arr_id']) : '';
  78. $requireData['other'] = isset($requireData['other']) ? json_encode($requireData['other']) : '';
  79. $result = $this->userServiceClient->createUser($requireData);
  80. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  81. }
  82. /**
  83. * 更新用户
  84. * @return array
  85. */
  86. public function updateUser()
  87. {
  88. $requireData = $this->request->all();
  89. $validator = $this->validationFactory->make($requireData, [
  90. 'user_name' => 'required',
  91. //登陆账号
  92. 'type_id' => 'required',
  93. //用户类型
  94. 'real_name' => 'required',
  95. 'mobile' => 'required',
  96. 'id' => 'required',
  97. ], ['user_name.required' => '用户名不能为空', 'mobile.required' => '手机号码必填', 'type_id.required' => "用户类型不能为空", 'real_name.required' => "姓名不能为空", 'id.required' => "id不能为空"]);
  98. if ($validator->fails()) {
  99. $errorMessage = $validator->errors()->first();
  100. return Result::error($errorMessage);
  101. }
  102. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  103. $requireData['last_login_ip'] = $loginIp;
  104. $requireData['administrative_unit_id'] = isset($requireData['administrative_unit_arr_id']) && count($requireData['administrative_unit_arr_id']) > 0 ? end($requireData['administrative_unit_arr_id']) : 0;
  105. $requireData['administrative_unit_arr_id'] = isset($requireData['administrative_unit_arr_id']) && count($requireData['administrative_unit_arr_id']) > 0 ? json_encode($requireData['administrative_unit_arr_id']) : '';
  106. $requireData['address_id'] = isset($requireData['address_arr_id']) && count($requireData['address_arr_id']) > 0 ? end($requireData['address_arr_id']) : 0;
  107. $requireData['address_arr_id'] = isset($requireData['address_arr_id']) && count($requireData['address_arr_id']) > 0 ? json_encode($requireData['address_arr_id']) : '';
  108. $requireData['native_place_id'] = isset($requireData['native_place_arr_id']) && count($requireData['native_place_arr_id']) > 0 ? end($requireData['native_place_arr_id']) : 0;
  109. $requireData['native_place_arr_id'] = isset($requireData['native_place_arr_id']) && count($requireData['native_place_arr_id']) > 0 ? json_encode($requireData['native_place_arr_id']) : '';
  110. $requireData['city_id'] = isset($requireData['city_arr_id']) && count($requireData['city_arr_id']) > 0 ? end($requireData['city_arr_id']) : 0;
  111. $requireData['city_arr_id'] = isset($requireData['city_arr_id']) && count($requireData['city_arr_id']) > 0 ? json_encode($requireData['city_arr_id']) : '';
  112. $requireData['other'] = isset($requireData['other']) ? json_encode($requireData['other']) : '';
  113. $requireData['admin_id'] = Context::get("UserId");
  114. $result = $this->userServiceClient->updateUser($requireData);
  115. return $result ? Result::success($result['data']) : Result::error($result['message']);
  116. }
  117. /**
  118. * 获取用户信息内容
  119. * @return void
  120. */
  121. public function getUser()
  122. {
  123. $requireData = $this->request->all();
  124. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => "id不能为空"]);
  125. if ($validator->fails()) {
  126. $errorMessage = $validator->errors()->first();
  127. return Result::error($errorMessage);
  128. }
  129. $result = $this->userServiceClient->getUserInfo((int) $requireData['id']);
  130. if ($result['code'] != ErrorCode::SUCCESS) {
  131. return Result::error($result['message'], 0, []);
  132. }
  133. return Result::success($result['data']);
  134. }
  135. /**
  136. * 获取用户信息
  137. * @return array|void
  138. */
  139. public function getUserInfo()
  140. {
  141. $result = $this->userServiceClient->getUserInfo((int) Context::get("UserId"));
  142. if ($result['code'] != ErrorCode::SUCCESS) {
  143. return Result::error($result['message'], 0, []);
  144. }
  145. return Result::success($result['data']);
  146. }
  147. /**
  148. * 获取用户列表
  149. * @return array
  150. */
  151. public function getUserList()
  152. {
  153. $requireData = $this->request->all();
  154. $validator = $this->validationFactory->make($requireData, ['page' => 'required', 'pageSize' => 'required'], ['page.required' => '页码不能为空', 'pageSize.required' => '每页显示条数不能为空']);
  155. if ($validator->fails()) {
  156. $errorMessage = $validator->errors()->first();
  157. return Result::error($errorMessage);
  158. }
  159. $result = $this->userServiceClient->getUserList($requireData);
  160. if ($result['code'] != ErrorCode::SUCCESS) {
  161. return Result::error($result['message'], 0, []);
  162. }
  163. return Result::success($result['data']);
  164. }
  165. /**
  166. * 删除用户
  167. * @return array
  168. */
  169. // public function delUser()
  170. // {
  171. // $requireData = $this->request->all();
  172. // $validator = $this->validationFactory->make(
  173. // $requireData,
  174. // [
  175. // 'id' => 'required'
  176. // ],
  177. // [
  178. // 'id.required' => '用户ID不能为空'
  179. // ]
  180. // );
  181. // if ($validator->fails()){
  182. // $errorMessage = $validator->errors()->first();
  183. // return Result::error($errorMessage);
  184. // }
  185. //
  186. // $result = $this->userServiceClient->delUser($requireData['id']);
  187. // if ($result['code'] != ErrorCode::SUCCESS) {
  188. // return Result::error($result['message'],0,[]);
  189. // }
  190. // return Result::success($result['data']);
  191. // }
  192. /**
  193. * 查看角色信息
  194. * @return array
  195. */
  196. public function roleInfo()
  197. {
  198. $requireData = $this->request->all();
  199. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => '角色ID不能为空']);
  200. if ($validator->fails()) {
  201. $errorMessage = $validator->errors()->first();
  202. return Result::error($errorMessage);
  203. }
  204. $result = $this->userServiceClient->roleInfo($requireData);
  205. if ($result['code'] != ErrorCode::SUCCESS) {
  206. return Result::error($result['message'], 0, []);
  207. }
  208. $result['data']['rule'] = isset($result['data']['rule']) ? json_decode($result['data']['rule']) : [];
  209. return Result::success($result['data']);
  210. }
  211. /**
  212. * 验证用户是否存在
  213. * @return void
  214. */
  215. public function verifyUserInfo()
  216. {
  217. $requireData = $this->request->all();
  218. $result = $this->userServiceClient->verifyUserInfo($requireData);
  219. if ($result['code'] != ErrorCode::SUCCESS) {
  220. return Result::error($result['message'], 0, []);
  221. }
  222. return Result::success($result['data']);
  223. }
  224. /**
  225. * 角色列表
  226. * @return array|void
  227. */
  228. public function roleList()
  229. {
  230. $requireData = $this->request->all();
  231. $result = $this->userServiceClient->roleList($requireData);
  232. if ($result['data']) {
  233. foreach ($result['data']['rows'] as $k => $v) {
  234. $result['data']['rows'][$k]['rule'] = $v['rule'] ? json_decode($v['rule']) : [];
  235. }
  236. }
  237. if ($result['code'] != ErrorCode::SUCCESS) {
  238. return Result::error($result['message'], 0, []);
  239. }
  240. return Result::success($result['data']);
  241. }
  242. /**
  243. * 添加角色
  244. * @return array
  245. */
  246. public function addRole()
  247. {
  248. $requireData = $this->request->all();
  249. $validator = $this->validationFactory->make($requireData, ['role_name' => 'required', 'rule' => 'required', 'remark' => 'required'], ['role_name.required' => '角色名称不能为空', 'rule.required' => '权限不能为空', 'remark.required' => '职能描述不能为空']);
  250. if ($validator->fails()) {
  251. $errorMessage = $validator->errors()->first();
  252. return Result::error($errorMessage);
  253. }
  254. $requireData['user_id'] = Context::get("UserId");
  255. $requireData['rule'] = isset($requireData['rule']) && $requireData['rule'] ? json_encode($requireData['rule']) : [];
  256. $result = $this->userServiceClient->addRole($requireData);
  257. if ($result['code'] != ErrorCode::SUCCESS) {
  258. return Result::error($result['message'], 0, []);
  259. }
  260. return Result::success($result['data']);
  261. }
  262. /**
  263. * 删除角色
  264. * @return array
  265. */
  266. public function delRole()
  267. {
  268. $requireData = $this->request->all();
  269. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => '角色ID不能为空']);
  270. if ($validator->fails()) {
  271. $errorMessage = $validator->errors()->first();
  272. return Result::error($errorMessage);
  273. }
  274. $requireData['user_id'] = Context::get("UserId");
  275. $result = $this->userServiceClient->delRole($requireData);
  276. if ($result['code'] != ErrorCode::SUCCESS) {
  277. return Result::error($result['message'], 0, []);
  278. }
  279. return Result::success($result['data']);
  280. }
  281. /**
  282. * 更新角色
  283. * @return array
  284. */
  285. public function updateRole()
  286. {
  287. $requireData = $this->request->all();
  288. $validator = $this->validationFactory->make($requireData, ['role_name' => 'required', 'rule' => 'required', 'remark' => 'required', 'id' => 'required'], ['id.required' => '角色ID不能为空', 'role_name.required' => '角色名称不能为空', 'rule.required' => '权限不能为空', 'remark.required' => '职能描述不能为空']);
  289. if ($validator->fails()) {
  290. $errorMessage = $validator->errors()->first();
  291. return Result::error($errorMessage);
  292. }
  293. $requireData['user_id'] = Context::get("UserId");
  294. $requireData['rule'] = isset($requireData['rule']) && $requireData['rule'] ? json_encode($requireData['rule']) : [];
  295. $result = $this->userServiceClient->updateRole($requireData);
  296. if ($result['code'] != ErrorCode::SUCCESS) {
  297. return Result::error($result['message'], 0, []);
  298. }
  299. return Result::success($result['data']);
  300. }
  301. public function upUserStatus()
  302. {
  303. $requireData = $this->request->all();
  304. $validator = $this->validationFactory->make($requireData, ['status' => 'required', 'id' => 'required'], ['id.required' => 'ID不能为空', 'status.required' => '状态不能为空']);
  305. if ($validator->fails()) {
  306. $errorMessage = $validator->errors()->first();
  307. return Result::error($errorMessage);
  308. }
  309. $result = $this->userServiceClient->upUserStatus($requireData);
  310. if ($result['code'] != ErrorCode::SUCCESS) {
  311. return Result::error($result['message'], 0, []);
  312. }
  313. return Result::success($result['data']);
  314. }
  315. }