UserController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  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. #[Inject]
  19. protected ValidatorFactoryInterface $validationFactory;
  20. /**
  21. * @var UserServiceInterface
  22. */
  23. #[Inject]
  24. private $userServiceClient;
  25. public function createUser()
  26. {
  27. $requireData = $this->request->all();
  28. $validator = $this->validationFactory->make(
  29. $requireData,
  30. [
  31. 'user_name' => 'required',
  32. 'password' => 'required|min:6',
  33. 'confirm_password' => 'required',
  34. 'email' => 'email',
  35. 'mobile' =>'required'
  36. ],
  37. [
  38. 'usernuser_name.required' => '用户名不能为空',
  39. 'password.required' => '密码不能为空',
  40. 'email.email' => '请填写一个有效的邮箱',
  41. 'mobile.required' => '手机号码必填',
  42. // 'mobile.telephone_number' => '请填写一个有效的手机号',
  43. 'confirm_password.required' =>"确认密码不能为空",
  44. 'password.min' =>"密码长度不能低于6位数",
  45. ]
  46. );
  47. if ($validator->fails()){
  48. $errorMessage = $validator->errors()->first();
  49. return Result::error($errorMessage);
  50. }
  51. if($requireData['password']!=$requireData['confirm_password']){
  52. return Result::error("两次密码不一致");
  53. }
  54. $salt = rand(1, 999999);
  55. $requireData['salt'] = $salt;
  56. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  57. $requireData['last_login_ip'] = $loginIp;
  58. // $this->logger->info("创建用户入参:", $requireData);
  59. $result = $this->userServiceClient->createUser($requireData);
  60. // $this->logger->info("创建用户返回值:", $result);
  61. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  62. }
  63. /**
  64. * 更新用户
  65. * @return array
  66. */
  67. public function updateUser()
  68. {
  69. $requireData = $this->request->all();
  70. $validator = $this->validationFactory->make(
  71. $requireData,
  72. [
  73. 'user_name' => 'required',
  74. 'email' => 'email',
  75. 'mobile' =>'required'
  76. ],
  77. [
  78. 'usernuser_name.required' => '用户名不能为空',
  79. 'email.email' => '请填写一个有效的邮箱',
  80. 'mobile.required' => '手机号码必填',
  81. ]
  82. );
  83. if ($validator->fails()){
  84. $errorMessage = $validator->errors()->first();
  85. return Result::error($errorMessage);
  86. }
  87. if($requireData['password'] && $requireData['confirm_password']){
  88. if($requireData['password'] != $requireData['confirm_password']){
  89. return Result::error("两次密码不一致");
  90. }
  91. }
  92. $salt = rand(1, 999999);
  93. $requireData['salt'] = $salt;
  94. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  95. $requireData['last_login_ip'] = $loginIp;
  96. $result = $this->userServiceClient->updateUser($requireData);
  97. // $this->logger->info("修改用户返回值:", $result);
  98. return $result?Result::success($result['data']):Result::error($result['message']);
  99. }
  100. /**
  101. * 获取用户信息
  102. * @return array|void
  103. */
  104. public function getUserInfo()
  105. {
  106. $result = $this->userServiceClient->getUserInfo((int)Context::get("UserId"));
  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 getUserList(){
  117. $requireData = $this->request->all();
  118. $requireData['keyword'] = $requireData['keyword']??'';
  119. $result = $this->userServiceClient->getUserList($requireData);
  120. if ($result['code'] != ErrorCode::SUCCESS) {
  121. return Result::error($result['message'],0,[]);
  122. }
  123. return Result::success($result['data']);
  124. }
  125. /**
  126. * 删除用户
  127. * @return array
  128. */
  129. public function delUser()
  130. {
  131. $requireData = $this->request->all();
  132. $validator = $this->validationFactory->make(
  133. $requireData,
  134. [
  135. 'id' => 'required'
  136. ],
  137. [
  138. 'id.required' => '用户ID不能为空'
  139. ]
  140. );
  141. if ($validator->fails()){
  142. $errorMessage = $validator->errors()->first();
  143. return Result::error($errorMessage);
  144. }
  145. $result = $this->userServiceClient->delUser($requireData['id']);
  146. if ($result['code'] != ErrorCode::SUCCESS) {
  147. return Result::error($result['message'],0,[]);
  148. }
  149. return Result::success($result['data']);
  150. }
  151. /**
  152. * 验证用户是否存在
  153. * @return void
  154. */
  155. public function verifyUserInfo()
  156. {
  157. $requireData = $this->request->all();
  158. $result = $this->userServiceClient->verifyUserInfo($requireData);
  159. if ($result['code'] != ErrorCode::SUCCESS) {
  160. return Result::error($result['message'],0,[]);
  161. }
  162. return Result::success($result['data']);
  163. }
  164. /**
  165. * 角色列表
  166. * @return array|void
  167. */
  168. public function roleList()
  169. {
  170. $requireData = $this->request->all();
  171. $result = $this->userServiceClient->roleList($requireData);
  172. if($result['data']){
  173. foreach ($result['data']['rows'] as $k=>$v) {
  174. $result['data']['rows'][$k]['rule'] = $v['rule']?json_decode($v['rule']):[];
  175. }
  176. }
  177. if ($result['code'] != ErrorCode::SUCCESS) {
  178. return Result::error($result['message'],0,[]);
  179. }
  180. return Result::success($result['data']);
  181. }
  182. /**
  183. * 添加角色
  184. * @return array
  185. */
  186. public function addRole()
  187. {
  188. $requireData = $this->request->all();
  189. $validator = $this->validationFactory->make(
  190. $requireData,
  191. [
  192. 'role_name' => 'required'
  193. ],
  194. [
  195. 'role_name.required' => '角色名称不能为空'
  196. ]
  197. );
  198. if ($validator->fails()){
  199. $errorMessage = $validator->errors()->first();
  200. return Result::error($errorMessage);
  201. }
  202. $requireData['user_id'] =Context::get("UserId");
  203. $result = $this->userServiceClient->addRole($requireData);
  204. if ($result['code'] != ErrorCode::SUCCESS) {
  205. return Result::error($result['message'],0,[]);
  206. }
  207. return Result::success($result['data']);
  208. }
  209. /**
  210. * 删除角色
  211. * @return array
  212. */
  213. public function delRole()
  214. {
  215. $requireData = $this->request->all();
  216. $validator = $this->validationFactory->make(
  217. $requireData,
  218. [
  219. 'id' => 'required'
  220. ],
  221. [
  222. 'id.required' => '角色ID不能为空'
  223. ]
  224. );
  225. if ($validator->fails()){
  226. $errorMessage = $validator->errors()->first();
  227. return Result::error($errorMessage);
  228. }
  229. $requireData['user_id'] =Context::get("UserId");
  230. $result = $this->userServiceClient->delRole($requireData);
  231. if ($result['code'] != ErrorCode::SUCCESS) {
  232. return Result::error($result['message'],0,[]);
  233. }
  234. return Result::success($result['data']);
  235. }
  236. /**
  237. * 更新角色
  238. * @return array
  239. */
  240. public function updateRole()
  241. {
  242. $requireData = $this->request->all();
  243. $validator = $this->validationFactory->make(
  244. $requireData,
  245. [
  246. 'role_name' => 'required',
  247. 'id' => 'required'
  248. ],
  249. [
  250. 'id.required' => '角色ID不能为空',
  251. 'role_name.required' => '角色名称不能为空'
  252. ]
  253. );
  254. if ($validator->fails()){
  255. $errorMessage = $validator->errors()->first();
  256. return Result::error($errorMessage);
  257. }
  258. $requireData['user_id'] =Context::get("UserId");
  259. $requireData['rule'] = $requireData['rule']?json_encode($requireData['rule']):[];
  260. $result = $this->userServiceClient->updateRole($requireData);
  261. if ($result['code'] != ErrorCode::SUCCESS) {
  262. return Result::error($result['message'],0,[]);
  263. }
  264. return Result::success($result['data']);
  265. }
  266. /**
  267. * 修改密码
  268. * @return array
  269. */
  270. public function changePassword()
  271. {
  272. $requireData = $this->request->all();
  273. $validator = $this->validationFactory->make(
  274. $requireData,
  275. [
  276. 'password' => 'required',
  277. 'new_password' => 'required|min:6',
  278. 'new_password1' => 'required|same:new_password',
  279. ],
  280. [
  281. 'password.required' => '密码不能为空',
  282. 'new_password1.required' => '确认密码不能为空',
  283. 'new_password1.same' => '新密码和确认密码不一致',
  284. 'new_password.min' =>"密码长度不能低于6位数",
  285. ]
  286. );
  287. if ($validator->fails()){
  288. $errorMessage = $validator->errors()->first();
  289. return Result::error($errorMessage);
  290. }
  291. $requireData['user_id'] =Context::get("UserId");
  292. $result = $this->userServiceClient->changePassword($requireData);
  293. if ($result['code'] != ErrorCode::SUCCESS) {
  294. return Result::error($result['message'],0,[]);
  295. }
  296. return Result::success($result['data']);
  297. }
  298. }