App_Controller_UserController.proxy.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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. /**
  11. * Class UserController
  12. * @package App\Controller
  13. */
  14. #[AutoController]
  15. class UserController extends AbstractController
  16. {
  17. use \Hyperf\Di\Aop\ProxyTrait;
  18. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  19. function __construct(\Hyperf\Logger\LoggerFactory $loggerFactory)
  20. {
  21. if (method_exists(parent::class, '__construct')) {
  22. parent::__construct(...func_get_args());
  23. }
  24. $this->__handlePropertyHandler(__CLASS__);
  25. }
  26. #[Inject]
  27. protected ValidatorFactoryInterface $validationFactory;
  28. /**
  29. * @var UserServiceInterface
  30. */
  31. #[Inject]
  32. private $userServiceClient;
  33. public function createUser()
  34. {
  35. $requireData = $this->request->all();
  36. $validator = $this->validationFactory->make($requireData, ['user_name' => 'required', 'password' => 'required|min:6', 'confirm_password' => 'required', 'email' => 'email', 'mobile' => 'required'], [
  37. 'usernuser_name.required' => '用户名不能为空',
  38. 'password.required' => '密码不能为空',
  39. 'email.email' => '请填写一个有效的邮箱',
  40. 'mobile.required' => '手机号码必填',
  41. // 'mobile.telephone_number' => '请填写一个有效的手机号',
  42. 'confirm_password.required' => "确认密码不能为空",
  43. 'password.min' => "密码长度不能低于6位数",
  44. ]);
  45. if ($validator->fails()) {
  46. $errorMessage = $validator->errors()->first();
  47. return Result::error($errorMessage);
  48. }
  49. if ($requireData['password'] != $requireData['confirm_password']) {
  50. return Result::error("两次密码不一致");
  51. }
  52. $salt = rand(1, 999999);
  53. $requireData['salt'] = $salt;
  54. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  55. $requireData['last_login_ip'] = $loginIp;
  56. $this->logger->info("创建用户入参:", $requireData);
  57. $result = $this->userServiceClient->createUser($requireData);
  58. $this->logger->info("创建用户返回值:", $result);
  59. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  60. }
  61. /**
  62. * 更新用户
  63. * @return array
  64. */
  65. public function updateUser()
  66. {
  67. $requireData = $this->request->all();
  68. $validator = $this->validationFactory->make($requireData, ['user_name' => 'required', 'email' => 'email', 'mobile' => 'required'], ['usernuser_name.required' => '用户名不能为空', 'email.email' => '请填写一个有效的邮箱', 'mobile.required' => '手机号码必填']);
  69. if ($validator->fails()) {
  70. $errorMessage = $validator->errors()->first();
  71. return Result::error($errorMessage);
  72. }
  73. if ($requireData['password'] && $requireData['confirm_password']) {
  74. if ($requireData['password'] != $requireData['confirm_password']) {
  75. return Result::error("两次密码不一致");
  76. }
  77. }
  78. $salt = rand(1, 999999);
  79. $requireData['salt'] = $salt;
  80. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  81. $requireData['last_login_ip'] = $loginIp;
  82. $result = $this->userServiceClient->updateUser($requireData);
  83. $this->logger->info("修改用户返回值:", $result);
  84. return $result ? Result::success($result['data']) : Result::error($result['message']);
  85. }
  86. /**
  87. * 获取用户信息
  88. * @return array|void
  89. */
  90. public function getUserInfo()
  91. {
  92. $result = $this->userServiceClient->getUserInfo($this->UserId);
  93. if ($result['code'] != ErrorCode::SUCCESS) {
  94. return Result::error($result['message'], 0, []);
  95. }
  96. return Result::success($result['data']);
  97. }
  98. /**
  99. * 获取用户列表
  100. * @return array
  101. */
  102. public function getUserList()
  103. {
  104. $requireData = $this->request->all();
  105. $requireData['keyword'] = $requireData['keyword'] ?? '';
  106. $result = $this->userServiceClient->getUserList($requireData);
  107. if ($result['code'] != ErrorCode::SUCCESS) {
  108. return Result::error($result['message'], 0, []);
  109. }
  110. return Result::success($result['data']);
  111. }
  112. /**
  113. * 删除用户
  114. * @return array
  115. */
  116. public function delUser()
  117. {
  118. $requireData = $this->request->all();
  119. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => '用户ID不能为空']);
  120. if ($validator->fails()) {
  121. $errorMessage = $validator->errors()->first();
  122. return Result::error($errorMessage);
  123. }
  124. $result = $this->userServiceClient->delUser($requireData['id']);
  125. if ($result['code'] != ErrorCode::SUCCESS) {
  126. return Result::error($result['message'], 0, []);
  127. }
  128. return Result::success($result['data']);
  129. }
  130. /**
  131. * 验证用户是否存在
  132. * @return void
  133. */
  134. public function verifyUserInfo()
  135. {
  136. $requireData = $this->request->all();
  137. $result = $this->userServiceClient->verifyUserInfo($requireData);
  138. if ($result['code'] != ErrorCode::SUCCESS) {
  139. return Result::error($result['message'], 0, []);
  140. }
  141. return Result::success($result['data']);
  142. }
  143. /**
  144. * 角色列表
  145. * @return array|void
  146. */
  147. public function roleList()
  148. {
  149. $requireData = $this->request->all();
  150. $result = $this->userServiceClient->roleList($requireData);
  151. if ($result['data']) {
  152. foreach ($result['data']['rows'] as $k => $v) {
  153. $result['data']['rows'][$k]['rule'] = $v['rule'] ? json_decode($v['rule']) : [];
  154. }
  155. }
  156. if ($result['code'] != ErrorCode::SUCCESS) {
  157. return Result::error($result['message'], 0, []);
  158. }
  159. return Result::success($result['data']);
  160. }
  161. /**
  162. * 添加角色
  163. * @return array
  164. */
  165. public function addRole()
  166. {
  167. $requireData = $this->request->all();
  168. $validator = $this->validationFactory->make($requireData, ['role_name' => 'required'], ['role_name.required' => '角色名称不能为空']);
  169. if ($validator->fails()) {
  170. $errorMessage = $validator->errors()->first();
  171. return Result::error($errorMessage);
  172. }
  173. $requireData['user_id'] = $this->UserId;
  174. $result = $this->userServiceClient->addRole($requireData);
  175. if ($result['code'] != ErrorCode::SUCCESS) {
  176. return Result::error($result['message'], 0, []);
  177. }
  178. return Result::success($result['data']);
  179. }
  180. /**
  181. * 删除角色
  182. * @return array
  183. */
  184. public function delRole()
  185. {
  186. $requireData = $this->request->all();
  187. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => '角色ID不能为空']);
  188. if ($validator->fails()) {
  189. $errorMessage = $validator->errors()->first();
  190. return Result::error($errorMessage);
  191. }
  192. $requireData['user_id'] = $this->UserId;
  193. $result = $this->userServiceClient->delRole($requireData);
  194. if ($result['code'] != ErrorCode::SUCCESS) {
  195. return Result::error($result['message'], 0, []);
  196. }
  197. return Result::success($result['data']);
  198. }
  199. /**
  200. * 更新角色
  201. * @return array
  202. */
  203. public function updateRole()
  204. {
  205. $requireData = $this->request->all();
  206. $validator = $this->validationFactory->make($requireData, ['role_name' => 'required', 'id' => 'required'], ['id.required' => '角色ID不能为空', 'role_name.required' => '角色名称不能为空']);
  207. if ($validator->fails()) {
  208. $errorMessage = $validator->errors()->first();
  209. return Result::error($errorMessage);
  210. }
  211. $requireData['user_id'] = $this->UserId;
  212. $requireData['rule'] = $requireData['rule'] ? json_encode($requireData['rule']) : [];
  213. $result = $this->userServiceClient->updateRole($requireData);
  214. if ($result['code'] != ErrorCode::SUCCESS) {
  215. return Result::error($result['message'], 0, []);
  216. }
  217. return Result::success($result['data']);
  218. }
  219. }