UserController.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package com.izouma.jiashanxia.web;
  2. import com.izouma.jiashanxia.domain.User;
  3. import com.izouma.jiashanxia.dto.PageQuery;
  4. import com.izouma.jiashanxia.dto.UserRegister;
  5. import com.izouma.jiashanxia.enums.AuthorityName;
  6. import com.izouma.jiashanxia.exception.BusinessException;
  7. import com.izouma.jiashanxia.repo.UserRepo;
  8. import com.izouma.jiashanxia.security.Authority;
  9. import com.izouma.jiashanxia.security.JwtTokenUtil;
  10. import com.izouma.jiashanxia.security.JwtUserFactory;
  11. import com.izouma.jiashanxia.service.UserService;
  12. import com.izouma.jiashanxia.utils.ObjUtils;
  13. import com.izouma.jiashanxia.utils.SecurityUtils;
  14. import com.izouma.jiashanxia.utils.excel.ExcelUtils;
  15. import io.swagger.annotations.ApiOperation;
  16. import lombok.AllArgsConstructor;
  17. import org.springframework.data.domain.Page;
  18. import org.springframework.security.access.prepost.PreAuthorize;
  19. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  20. import org.springframework.web.bind.annotation.*;
  21. import javax.servlet.http.HttpServletResponse;
  22. import java.io.IOException;
  23. import java.util.Collections;
  24. import java.util.List;
  25. import java.util.Map;
  26. @AllArgsConstructor
  27. @RestController
  28. @RequestMapping("/user")
  29. public class UserController extends BaseController {
  30. private UserRepo userRepo;
  31. private UserService userService;
  32. private JwtTokenUtil jwtTokenUtil;
  33. @PostMapping("/register")
  34. public User register(@RequestParam String username,
  35. @RequestParam String password) {
  36. UserRegister user = UserRegister.builder()
  37. .username(username)
  38. .nickname(username)
  39. .password(new BCryptPasswordEncoder().encode(password))
  40. .authorities(Collections.singleton(Authority.get(AuthorityName.ROLE_USER)))
  41. .build();
  42. return userService.create(user);
  43. }
  44. @PreAuthorize("hasRole('ADMIN')")
  45. @PostMapping("/create")
  46. public User create(@RequestBody UserRegister userRegister) {
  47. return userService.create(userRegister);
  48. }
  49. @PreAuthorize("hasRole('ADMIN')")
  50. @PostMapping("/save")
  51. public User save(@RequestBody User user) {
  52. if (user.getId() != null) {
  53. User orig = userRepo.findById(user.getId()).orElseThrow(new BusinessException("无记录"));
  54. ObjUtils.merge(orig, user);
  55. return userRepo.save(orig);
  56. }
  57. return userRepo.save(user);
  58. }
  59. @GetMapping("/my")
  60. public User my() {
  61. return userRepo.findById(SecurityUtils.getAuthenticatedUser().getId())
  62. .orElseThrow(new BusinessException("用户不存在"));
  63. }
  64. @GetMapping("/myAdmin")
  65. @PreAuthorize("hasRole('ADMIN')")
  66. public User myAdmin() {
  67. return userRepo.findById(SecurityUtils.getAuthenticatedUser().getId())
  68. .orElseThrow(new BusinessException("用户不存在"));
  69. }
  70. @PreAuthorize("hasRole('ADMIN')")
  71. @PostMapping("/all")
  72. public Page<User> all(@RequestBody PageQuery pageQuery) {
  73. return userService.all(pageQuery);
  74. }
  75. @PreAuthorize("hasAnyRole('ADMIN','WRITER')")
  76. @GetMapping("/get/{id}")
  77. public User get(@PathVariable Long id) {
  78. return userRepo.findById(id).orElseThrow(new BusinessException("无记录"));
  79. }
  80. @PreAuthorize("hasRole('ADMIN')")
  81. @PostMapping("/del/{id}")
  82. public void del(@PathVariable Long id) {
  83. userService.del(id);
  84. }
  85. @GetMapping("/excel")
  86. @ResponseBody
  87. public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
  88. List<User> data = all(pageQuery).getContent();
  89. ExcelUtils.export(response, data);
  90. }
  91. @PostMapping("/getMaUserInfo")
  92. @ApiOperation(value = "获取小程序用户信息")
  93. public User getMaUserInfo(String sessionKey, String rawData, String signature, String encryptedData, String iv) {
  94. User user = userService.getMaUserInfo(sessionKey, rawData, signature, encryptedData, iv);
  95. if (user != null) {
  96. return user;
  97. }
  98. throw new BusinessException("获取用户信息失败");
  99. }
  100. @PreAuthorize("hasRole('ADMIN')")
  101. @PostMapping("/setPasswordAdmin")
  102. public String setPasswordAdmin(@RequestParam Long userId, @RequestParam String password) {
  103. return userService.setPassword(userId, password);
  104. }
  105. @PostMapping("/changePassword")
  106. public String changePassword(@RequestParam String password, @RequestParam String key, @RequestParam String code) {
  107. return userService.setPassword(SecurityUtils.getAuthenticatedUser().getId(), key, code, password);
  108. }
  109. @PreAuthorize("hasRole('ADMIN')")
  110. @GetMapping("/getToken/{userId}")
  111. public String getToken(@PathVariable Long userId) {
  112. return jwtTokenUtil.generateToken(JwtUserFactory.create(userRepo.findById(userId)
  113. .orElseThrow(new BusinessException("用户不存在"))));
  114. }
  115. @PostMapping("/employee")
  116. @ApiOperation("根据团队id员工列表")
  117. public List<User> employee(Long companyId) {
  118. return userRepo.findAllByCompanyIdAndDelFalse(companyId);
  119. }
  120. @PostMapping("/getMaPhone")
  121. @ApiOperation(value = "获取小程序手机号")
  122. public User getMaPhone(String sessionKey, String encryptedData, String iv) {
  123. User user = userService.getMaPhone(sessionKey, encryptedData, iv);
  124. if (user != null) {
  125. return user;
  126. }
  127. throw new BusinessException("获取用户信息失败");
  128. }
  129. @PostMapping("/updateUserInfo")
  130. public void updateUserInfo(@RequestBody Map<String, Object> map) {
  131. userService.updateUserInfo(map);
  132. }
  133. @GetMapping("/myPromotion")
  134. @ApiOperation("我的推广列表")
  135. public List<User> myPromotion() {
  136. return userService.myPromotion(SecurityUtils.getAuthenticatedUser().getId());
  137. }
  138. @PostMapping("/promotion")
  139. @ApiOperation("企业端推广列表")
  140. public Page<User> promotion(@RequestBody PageQuery pageQuery) {
  141. Map<String, Object> query = pageQuery.getQuery();
  142. String userId = String.valueOf(query.get("userId"));
  143. query.remove("userId");
  144. return userService.myPromotion(pageQuery, Long.parseLong(userId));
  145. }
  146. @PreAuthorize("hasAnyRole('ADMIN','CREATOR')")
  147. @PostMapping("/myEmployee")
  148. @ApiOperation("员工列表")
  149. public Page<User> myEmployee(@RequestBody PageQuery pageQuery) {
  150. return userService.myEmployee(pageQuery, SecurityUtils.getAuthenticatedUser());
  151. }
  152. @GetMapping("/overview")
  153. public Map<String, Object> overview() {
  154. return userService.overview(SecurityUtils.getAuthenticatedUser().getId());
  155. }
  156. }