AuthController.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.campus.trade.controller;
  2. import com.campus.trade.common.Result;
  3. import com.campus.trade.dto.ChangePasswordRequest;
  4. import com.campus.trade.dto.LoginRequest;
  5. import com.campus.trade.dto.RegisterRequest;
  6. import com.campus.trade.service.AuthService;
  7. import com.campus.trade.vo.UserProfileVO;
  8. import io.swagger.v3.oas.annotations.Operation;
  9. import io.swagger.v3.oas.annotations.responses.ApiResponse;
  10. import io.swagger.v3.oas.annotations.tags.Tag;
  11. import jakarta.servlet.http.HttpSession;
  12. import jakarta.validation.Valid;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.http.MediaType;
  15. import org.springframework.web.bind.annotation.*;
  16. @RestController
  17. @RequestMapping("/auth")
  18. @Tag(name = "Auth", description = "注册 / 登录 / 登出 / 修改密码")
  19. public class AuthController {
  20. @Autowired
  21. private AuthService authService;
  22. @Operation(summary = "用户注册", description = "学号+姓名+密码+校园卡照片,提交后进入待审核状态")
  23. @ApiResponse(responseCode = "200", description = "注册成功")
  24. @ApiResponse(responseCode = "409", description = "学号已注册")
  25. @PostMapping(value = "/register", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
  26. public Result<Long> register(@Valid RegisterRequest req) {
  27. Long userId = authService.register(req);
  28. return Result.success(userId);
  29. }
  30. @Operation(summary = "用户登录", description = "学号+密码登录,创建 Session 会话")
  31. @PostMapping("/login")
  32. public Result<UserProfileVO> login(@Valid @RequestBody LoginRequest req, HttpSession session) {
  33. return Result.success(authService.login(req, session));
  34. }
  35. @Operation(summary = "用户登出", description = "销毁当前 Session")
  36. @PostMapping("/logout")
  37. public Result<Void> logout(HttpSession session) {
  38. session.invalidate();
  39. return Result.success();
  40. }
  41. @Operation(summary = "提交实名认证", description = "上传校园卡照片进行实名审核;被拒后可重新提交")
  42. @PostMapping(value = "/submit-auth", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
  43. public Result<Void> submitAuth(@RequestParam("campusCardImage") org.springframework.web.multipart.MultipartFile campusCardImage,
  44. HttpSession session) {
  45. authService.submitAuth(campusCardImage, session);
  46. return Result.success();
  47. }
  48. @Operation(summary = "修改密码", description = "需提供旧密码验证")
  49. @PostMapping("/change-password")
  50. public Result<Void> changePassword(@Valid @RequestBody ChangePasswordRequest req, HttpSession session) {
  51. authService.changePassword(req, session);
  52. return Result.success();
  53. }
  54. }