UserController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  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 array
  154. */
  155. public function roleInfo()
  156. {
  157. $requireData = $this->request->all();
  158. $validator = $this->validationFactory->make(
  159. $requireData,
  160. [
  161. 'id' => 'required'
  162. ],
  163. [
  164. 'id.required' => '角色ID不能为空'
  165. ]
  166. );
  167. if ($validator->fails()){
  168. $errorMessage = $validator->errors()->first();
  169. return Result::error($errorMessage);
  170. }
  171. $result = $this->userServiceClient->roleInfo($requireData);
  172. if ($result['code'] != ErrorCode::SUCCESS) {
  173. return Result::error($result['message'],0,[]);
  174. }
  175. $result['data']['rule'] = isset($result['data']['rule'])?json_decode($result['data']['rule']):[];
  176. return Result::success($result['data']);
  177. }
  178. /**
  179. * 验证用户是否存在
  180. * @return void
  181. */
  182. public function verifyUserInfo()
  183. {
  184. $requireData = $this->request->all();
  185. $result = $this->userServiceClient->verifyUserInfo($requireData);
  186. if ($result['code'] != ErrorCode::SUCCESS) {
  187. return Result::error($result['message'],0,[]);
  188. }
  189. return Result::success($result['data']);
  190. }
  191. /**
  192. * 角色列表
  193. * @return array|void
  194. */
  195. public function roleList()
  196. {
  197. $requireData = $this->request->all();
  198. $result = $this->userServiceClient->roleList($requireData);
  199. if($result['data']){
  200. foreach ($result['data']['rows'] as $k=>$v) {
  201. $result['data']['rows'][$k]['rule'] = $v['rule']?json_decode($v['rule']):[];
  202. }
  203. }
  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 addRole()
  214. {
  215. $requireData = $this->request->all();
  216. $validator = $this->validationFactory->make(
  217. $requireData,
  218. [
  219. 'role_name' => 'required',
  220. 'rule' => 'required',
  221. 'remark' => 'required',
  222. ],
  223. [
  224. 'role_name.required' => '角色名称不能为空',
  225. 'rule.required' => '权限不能为空',
  226. 'remark.required' => '职能描述不能为空',
  227. ]
  228. );
  229. if ($validator->fails()){
  230. $errorMessage = $validator->errors()->first();
  231. return Result::error($errorMessage);
  232. }
  233. $requireData['user_id'] = Context::get("UserId");
  234. $requireData['rule'] = isset($requireData['rule']) && $requireData['rule']?json_encode($requireData['rule']):[];
  235. $result = $this->userServiceClient->addRole($requireData);
  236. if ($result['code'] != ErrorCode::SUCCESS) {
  237. return Result::error($result['message'],0,[]);
  238. }
  239. return Result::success($result['data']);
  240. }
  241. /**
  242. * 删除角色
  243. * @return array
  244. */
  245. public function delRole()
  246. {
  247. $requireData = $this->request->all();
  248. $validator = $this->validationFactory->make(
  249. $requireData,
  250. [
  251. 'id' => 'required'
  252. ],
  253. [
  254. 'id.required' => '角色ID不能为空'
  255. ]
  256. );
  257. if ($validator->fails()){
  258. $errorMessage = $validator->errors()->first();
  259. return Result::error($errorMessage);
  260. }
  261. $requireData['user_id'] =Context::get("UserId");
  262. $result = $this->userServiceClient->delRole($requireData);
  263. if ($result['code'] != ErrorCode::SUCCESS) {
  264. return Result::error($result['message'],0,[]);
  265. }
  266. return Result::success($result['data']);
  267. }
  268. /**
  269. * 更新角色
  270. * @return array
  271. */
  272. public function updateRole()
  273. {
  274. $requireData = $this->request->all();
  275. $validator = $this->validationFactory->make(
  276. $requireData,
  277. [
  278. 'role_name' => 'required',
  279. 'rule' => 'required',
  280. 'remark' => 'required',
  281. 'id' => 'required'
  282. ],
  283. [
  284. 'id.required' => '角色ID不能为空',
  285. 'role_name.required' => '角色名称不能为空',
  286. 'rule.required' => '权限不能为空',
  287. 'remark.required' => '职能描述不能为空',
  288. ]
  289. );
  290. if ($validator->fails()){
  291. $errorMessage = $validator->errors()->first();
  292. return Result::error($errorMessage);
  293. }
  294. $requireData['user_id'] = Context::get("UserId");
  295. $requireData['rule'] = isset($requireData['rule']) && $requireData['rule']?json_encode($requireData['rule']):[];
  296. $result = $this->userServiceClient->updateRole($requireData);
  297. if ($result['code'] != ErrorCode::SUCCESS) {
  298. return Result::error($result['message'],0,[]);
  299. }
  300. return Result::success($result['data']);
  301. }
  302. /**
  303. * 修改密码
  304. * @return array
  305. */
  306. public function changePassword()
  307. {
  308. $requireData = $this->request->all();
  309. $validator = $this->validationFactory->make(
  310. $requireData,
  311. [
  312. 'password' => 'required',
  313. 'new_password' => 'required|min:6',
  314. 'new_password1' => 'required|same:new_password',
  315. ],
  316. [
  317. 'password.required' => '密码不能为空',
  318. 'new_password1.required' => '确认密码不能为空',
  319. 'new_password1.same' => '新密码和确认密码不一致',
  320. 'new_password.min' =>"密码长度不能低于6位数",
  321. ]
  322. );
  323. if ($validator->fails()){
  324. $errorMessage = $validator->errors()->first();
  325. return Result::error($errorMessage);
  326. }
  327. $requireData['user_id'] =Context::get("UserId");
  328. $result = $this->userServiceClient->changePassword($requireData);
  329. if ($result['code'] != ErrorCode::SUCCESS) {
  330. return Result::error($result['message'],0,[]);
  331. }
  332. return Result::success($result['data']);
  333. }
  334. }