UserController.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package com.zhentao.user.controller;
  2. import com.zhentao.config.NullLogin;
  3. import com.zhentao.osspicture.OssUtil;
  4. import com.zhentao.tool.TokenUtils;
  5. import com.zhentao.user.domain.UserLogin;
  6. import com.zhentao.user.dto.*;
  7. import com.zhentao.user.service.UserLoginService;
  8. import com.zhentao.vo.Result;
  9. import lombok.RequiredArgsConstructor;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.beans.factory.annotation.Value;
  12. import org.springframework.validation.annotation.Validated;
  13. import org.springframework.web.bind.annotation.*;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import javax.servlet.http.HttpServletRequest;
  16. import javax.validation.Valid;
  17. import javax.validation.constraints.NotNull;
  18. import javax.validation.constraints.Null;
  19. import java.io.IOException;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. import java.util.UUID;
  23. @RestController
  24. @RequestMapping("user")
  25. @RequiredArgsConstructor
  26. @Validated
  27. public class UserController {
  28. @Autowired
  29. public UserLoginService userLoginService;
  30. @Autowired
  31. public OssUtil ossUtil;
  32. //注册
  33. @PostMapping("/register")
  34. @NullLogin
  35. public Result Register(@RequestBody UserRegister userRegister){
  36. return userLoginService.register(userRegister);
  37. }
  38. //验证码
  39. @PostMapping("/code")
  40. @NullLogin
  41. public Result code(@RequestBody @Valid NoteDto noteDto) {
  42. // System.err.println(noteDto);
  43. return userLoginService.note(noteDto);
  44. }
  45. @PostMapping("/validateCode")
  46. @NullLogin
  47. public Result validateCode(@RequestBody @Valid NoteDto noteDto) {
  48. // System.err.println(noteDto);
  49. return userLoginService.validateCode(noteDto);
  50. }
  51. @PostMapping("/validateEmailCode")
  52. @NullLogin
  53. public Result validateEmailCode(@RequestBody @Valid EmailDto emailDto) {
  54. // System.err.println(noteDto);
  55. return userLoginService.validateEmailCode(emailDto);
  56. }
  57. //账号和密码进行登录
  58. @PostMapping("/UserPassLogin")
  59. @NullLogin
  60. public Result UserPassLogin(@RequestBody @Valid UserPassDto userPassDto) {
  61. Result result = userLoginService.UserPassLogin(userPassDto);
  62. return result;
  63. }
  64. @PostMapping("/logout")
  65. public Result logout(HttpServletRequest request){
  66. return userLoginService.logout(request);
  67. }
  68. // 忘记密码
  69. @PostMapping("/ForgetPass")
  70. @NullLogin
  71. public Result ForgetPass(@RequestBody @Valid ForgetPassDto forgetPassDto) {
  72. return userLoginService.ForgetPass(forgetPassDto);
  73. }
  74. @PostMapping("/emailRegister")
  75. @NullLogin
  76. public Result emailRegister(@RequestBody @Valid EmailDto emailDto){
  77. return userLoginService.emailRegister(emailDto);
  78. }
  79. /**
  80. * 上传头像
  81. */
  82. @PostMapping("/upload-avatar")
  83. @NullLogin
  84. @CrossOrigin // 添加跨域支持
  85. public Map<String, Object> uploadAvatar(@NotNull(message = "请选择上传文件")
  86. @RequestParam("file") MultipartFile file) {
  87. System.out.println("接收到文件上传请求:" + file.getOriginalFilename());
  88. Map<String, Object> result = new HashMap<>();
  89. // 检查文件大小
  90. if (file.isEmpty()) {
  91. System.err.println("上传文件为空");
  92. result.put("success", false);
  93. result.put("message", "上传文件不能为空");
  94. return result;
  95. }
  96. // 检查文件大小(例如限制在5MB)
  97. long maxSize = 5 * 1024 * 1024; // 5MB
  98. if (file.getSize() > maxSize) {
  99. System.err.println("文件大小超过限制:" + file.getSize());
  100. result.put("success", false);
  101. result.put("message", "文件大小不能超过5MB");
  102. return result;
  103. }
  104. // 检查文件类型
  105. String originalFilename = file.getOriginalFilename();
  106. String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).toLowerCase();
  107. String[] allowedExtensions = {"jpg", "jpeg", "png", "gif", "bmp"};
  108. boolean isAllowedExtension = false;
  109. for (String ext : allowedExtensions) {
  110. if (fileExtension.equals(ext)) {
  111. isAllowedExtension = true;
  112. break;
  113. }
  114. }
  115. if (!isAllowedExtension) {
  116. System.err.println("不支持的文件类型:" + fileExtension);
  117. result.put("success", false);
  118. result.put("message", "仅支持jpg, jpeg, png, gif, bmp格式的图片");
  119. return result;
  120. }
  121. try {
  122. // 上传到OSS
  123. String url = ossUtil.uploadFile(file);
  124. if (url == null) {
  125. System.err.println("文件上传到OSS失败");
  126. result.put("success", false);
  127. result.put("message", "文件上传失败,请稍后重试");
  128. } else {
  129. System.out.println("文件上传成功:" + url);
  130. result.put("success", true);
  131. result.put("message", "上传成功");
  132. result.put("url", url);
  133. }
  134. } catch (IOException e) {
  135. System.err.println("文件上传异常:" + e.getMessage());
  136. result.put("success", false);
  137. result.put("message", "上传失败: " + e.getMessage());
  138. }
  139. return result;
  140. }
  141. //根据ID查询用户的信息
  142. @GetMapping("getUserById")
  143. @NullLogin
  144. public Result getUserById(@RequestHeader("token") String token) {
  145. String userIdFromToken = TokenUtils.getUserIdFromToken(token);
  146. UserLogin userById = userLoginService.getUserById(Long.valueOf(userIdFromToken));
  147. return Result.OK(userById, "查询成功");
  148. }
  149. @PostMapping("getUser")
  150. @NullLogin
  151. public Result getUser(@RequestBody UserInfo userInfo) {
  152. System.err.println(userInfo);
  153. UserLogin byId = userLoginService.getById(userInfo.getUserId());
  154. return Result.OK(byId, "查询成功");
  155. }
  156. //查询好有-搜索
  157. @GetMapping("searchFriends")
  158. @NullLogin
  159. public Result searchFriends(@RequestParam("keyword") String keyword) {
  160. return Result.OK(userLoginService.searchFriends(keyword), "查询成功");
  161. }
  162. // 修改头像
  163. @PostMapping("updateUserInfo")
  164. @NullLogin
  165. public Result updateUserInfo(@RequestHeader("token") String token, @RequestBody Userinfox userinfox) {
  166. // 从 token 中获取当前登录用户的 ID
  167. String userIdFromToken = TokenUtils.getUserIdFromToken(token);
  168. userinfox.setId(Long.valueOf(userIdFromToken));
  169. return userLoginService.updateUserInfo(userinfox);
  170. }
  171. }