UserController.java 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.izouma.awesomeAdmin.web;
  2. import com.izouma.awesomeAdmin.domain.User;
  3. import com.izouma.awesomeAdmin.dto.PageQuery;
  4. import com.izouma.awesomeAdmin.exception.BusinessException;
  5. import com.izouma.awesomeAdmin.repo.UserRepo;
  6. import com.izouma.awesomeAdmin.security.Authority;
  7. import com.izouma.awesomeAdmin.service.UserService;
  8. import com.izouma.awesomeAdmin.utils.ObjUtils;
  9. import com.izouma.awesomeAdmin.utils.SecurityUtils;
  10. import com.izouma.awesomeAdmin.utils.excel.ExcelUtils;
  11. import io.swagger.annotations.ApiOperation;
  12. import lombok.AllArgsConstructor;
  13. import org.springframework.data.domain.Page;
  14. import org.springframework.security.access.prepost.PreAuthorize;
  15. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  16. import org.springframework.web.bind.annotation.*;
  17. import javax.servlet.http.HttpServletResponse;
  18. import java.io.IOException;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. @AllArgsConstructor
  22. @RestController
  23. @RequestMapping("/user")
  24. public class UserController extends BaseController {
  25. private UserRepo userRepo;
  26. private UserService userService;
  27. @PostMapping("/register")
  28. public User register(@RequestParam String username,
  29. @RequestParam String password) {
  30. List<Authority> authorities = new ArrayList<>();
  31. authorities.add(new Authority(Authority.NAMES.ROLE_USER.name()));
  32. User user = User.builder()
  33. .username(username)
  34. .nickname(username)
  35. .password(new BCryptPasswordEncoder().encode(password))
  36. .enabled(true)
  37. .authorities(authorities)
  38. .build();
  39. return userRepo.save(user);
  40. }
  41. @PreAuthorize("hasRole('ADMIN')")
  42. @PostMapping("/save")
  43. public User save(@RequestBody User user) {
  44. if (user.getId() != null) {
  45. User orig = userRepo.findById(user.getId()).orElseThrow(new BusinessException("无记录"));
  46. ObjUtils.merge(orig, user);
  47. return userRepo.save(orig);
  48. }
  49. return userRepo.save(user);
  50. }
  51. @GetMapping("/my")
  52. public User my() {
  53. return userRepo.findById(SecurityUtils.getAuthenticatedUser().getId()).orElseThrow(new BusinessException("用户不存在"));
  54. }
  55. @PreAuthorize("hasRole('ADMIN')")
  56. @GetMapping("/all")
  57. public Page<User> all(PageQuery pageQuery) {
  58. return userRepo.findAll(toSpecification(pageQuery, User.class), toPageRequest(pageQuery));
  59. }
  60. @PreAuthorize("hasRole('ADMIN')")
  61. @GetMapping("/get/{id}")
  62. public User get(@PathVariable Long id) {
  63. return userRepo.findById(id).orElseThrow(new BusinessException("无记录"));
  64. }
  65. @GetMapping("/excel")
  66. @ResponseBody
  67. public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
  68. List<User> data = all(pageQuery).getContent();
  69. ExcelUtils.export(response, data);
  70. }
  71. @PostMapping("/getMaUserInfo")
  72. @ApiOperation(value = "获取小程序用户信息")
  73. public User getMaUserInfo(String sessionKey, String rawData, String signature, String encryptedData, String iv) {
  74. User user = userService.getMaUserInfo(sessionKey, rawData, signature, encryptedData, iv);
  75. if (user != null) {
  76. return user;
  77. }
  78. throw new BusinessException("获取用户信息失败");
  79. }
  80. }