package com.campus.trade.controller; import com.campus.trade.common.Result; import com.campus.trade.dto.ChangePasswordRequest; import com.campus.trade.dto.LoginRequest; import com.campus.trade.dto.RegisterRequest; import com.campus.trade.service.AuthService; import com.campus.trade.vo.UserProfileVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpSession; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/auth") @Tag(name = "Auth", description = "注册 / 登录 / 登出 / 修改密码") public class AuthController { @Autowired private AuthService authService; @Operation(summary = "用户注册", description = "学号+姓名+密码+校园卡照片,提交后进入待审核状态") @ApiResponse(responseCode = "200", description = "注册成功") @ApiResponse(responseCode = "409", description = "学号已注册") @PostMapping(value = "/register", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Result register(@Valid RegisterRequest req) { Long userId = authService.register(req); return Result.success(userId); } @Operation(summary = "用户登录", description = "学号+密码登录,创建 Session 会话") @PostMapping("/login") public Result login(@Valid @RequestBody LoginRequest req, HttpSession session) { return Result.success(authService.login(req, session)); } @Operation(summary = "用户登出", description = "销毁当前 Session") @PostMapping("/logout") public Result logout(HttpSession session) { session.invalidate(); return Result.success(); } @Operation(summary = "提交实名认证", description = "上传校园卡照片进行实名审核;被拒后可重新提交") @PostMapping(value = "/submit-auth", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Result submitAuth(@RequestParam("campusCardImage") org.springframework.web.multipart.MultipartFile campusCardImage, HttpSession session) { authService.submitAuth(campusCardImage, session); return Result.success(); } @Operation(summary = "修改密码", description = "需提供旧密码验证") @PostMapping("/change-password") public Result changePassword(@Valid @RequestBody ChangePasswordRequest req, HttpSession session) { authService.changePassword(req, session); return Result.success(); } }