package com.zhentao.user.controller; import com.zhentao.config.NullLogin; import com.zhentao.osspicture.OssUtil; import com.zhentao.tool.TokenUtils; import com.zhentao.user.domain.UserLogin; import com.zhentao.user.dto.*; import com.zhentao.user.service.UserLoginService; import com.zhentao.vo.Result; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Null; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; @RestController @RequestMapping("user") @RequiredArgsConstructor @Validated public class UserController { @Autowired public UserLoginService userLoginService; @Autowired public OssUtil ossUtil; //注册 @PostMapping("/register") @NullLogin public Result Register(@RequestBody UserRegister userRegister){ return userLoginService.register(userRegister); } //验证码 @PostMapping("/code") @NullLogin public Result code(@RequestBody @Valid NoteDto noteDto) { // System.err.println(noteDto); return userLoginService.note(noteDto); } @PostMapping("/validateCode") @NullLogin public Result validateCode(@RequestBody @Valid NoteDto noteDto) { // System.err.println(noteDto); return userLoginService.validateCode(noteDto); } @PostMapping("/validateEmailCode") @NullLogin public Result validateEmailCode(@RequestBody @Valid EmailDto emailDto) { // System.err.println(noteDto); return userLoginService.validateEmailCode(emailDto); } //账号和密码进行登录 @PostMapping("/UserPassLogin") @NullLogin public Result UserPassLogin(@RequestBody @Valid UserPassDto userPassDto) { Result result = userLoginService.UserPassLogin(userPassDto); return result; } @PostMapping("/logout") public Result logout(HttpServletRequest request){ return userLoginService.logout(request); } // 忘记密码 @PostMapping("/ForgetPass") @NullLogin public Result ForgetPass(@RequestBody @Valid ForgetPassDto forgetPassDto) { return userLoginService.ForgetPass(forgetPassDto); } @PostMapping("/emailRegister") @NullLogin public Result emailRegister(@RequestBody @Valid EmailDto emailDto){ return userLoginService.emailRegister(emailDto); } /** * 上传头像 */ @PostMapping("/upload-avatar") @NullLogin @CrossOrigin // 添加跨域支持 public Map uploadAvatar(@NotNull(message = "请选择上传文件") @RequestParam("file") MultipartFile file) { System.out.println("接收到文件上传请求:" + file.getOriginalFilename()); Map result = new HashMap<>(); // 检查文件大小 if (file.isEmpty()) { System.err.println("上传文件为空"); result.put("success", false); result.put("message", "上传文件不能为空"); return result; } // 检查文件大小(例如限制在5MB) long maxSize = 5 * 1024 * 1024; // 5MB if (file.getSize() > maxSize) { System.err.println("文件大小超过限制:" + file.getSize()); result.put("success", false); result.put("message", "文件大小不能超过5MB"); return result; } // 检查文件类型 String originalFilename = file.getOriginalFilename(); String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).toLowerCase(); String[] allowedExtensions = {"jpg", "jpeg", "png", "gif", "bmp"}; boolean isAllowedExtension = false; for (String ext : allowedExtensions) { if (fileExtension.equals(ext)) { isAllowedExtension = true; break; } } if (!isAllowedExtension) { System.err.println("不支持的文件类型:" + fileExtension); result.put("success", false); result.put("message", "仅支持jpg, jpeg, png, gif, bmp格式的图片"); return result; } try { // 上传到OSS String url = ossUtil.uploadFile(file); if (url == null) { System.err.println("文件上传到OSS失败"); result.put("success", false); result.put("message", "文件上传失败,请稍后重试"); } else { System.out.println("文件上传成功:" + url); result.put("success", true); result.put("message", "上传成功"); result.put("url", url); } } catch (IOException e) { System.err.println("文件上传异常:" + e.getMessage()); result.put("success", false); result.put("message", "上传失败: " + e.getMessage()); } return result; } //根据ID查询用户的信息 @GetMapping("getUserById") @NullLogin public Result getUserById(@RequestHeader("token") String token) { String userIdFromToken = TokenUtils.getUserIdFromToken(token); UserLogin userById = userLoginService.getUserById(Long.valueOf(userIdFromToken)); return Result.OK(userById, "查询成功"); } @PostMapping("getUser") @NullLogin public Result getUser(@RequestBody UserInfo userInfo) { System.err.println(userInfo); UserLogin byId = userLoginService.getById(userInfo.getUserId()); return Result.OK(byId, "查询成功"); } //查询好有-搜索 @GetMapping("searchFriends") @NullLogin public Result searchFriends(@RequestParam("keyword") String keyword) { return Result.OK(userLoginService.searchFriends(keyword), "查询成功"); } // 修改头像 @PostMapping("updateUserInfo") @NullLogin public Result updateUserInfo(@RequestHeader("token") String token, @RequestBody Userinfox userinfox) { // 从 token 中获取当前登录用户的 ID String userIdFromToken = TokenUtils.getUserIdFromToken(token); userinfox.setId(Long.valueOf(userIdFromToken)); return userLoginService.updateUserInfo(userinfox); } }