RealnameAuthController.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package space.anyi.serve.controller;
  2. import io.swagger.v3.oas.annotations.Operation;
  3. import io.swagger.v3.oas.annotations.tags.Tag;
  4. import jakarta.validation.Valid;
  5. import org.springframework.security.access.prepost.PreAuthorize;
  6. import org.springframework.security.core.Authentication;
  7. import org.springframework.web.bind.annotation.*;
  8. import space.anyi.serve.entity.Response;
  9. import space.anyi.serve.entity.auth.JwtUserDetails;
  10. import space.anyi.serve.entity.realname.RealnameAuth;
  11. import space.anyi.serve.entity.realname.RealnameAuthVo;
  12. import space.anyi.serve.service.RealnameAuthService;
  13. import java.util.List;
  14. import java.util.Map;
  15. @Tag(name = "RealnameAuthController", description = "实名认证")
  16. @RestController
  17. @RequestMapping("api/realname")
  18. public class RealnameAuthController {
  19. private final RealnameAuthService realnameAuthService;
  20. public RealnameAuthController(RealnameAuthService realnameAuthService) {
  21. this.realnameAuthService = realnameAuthService;
  22. }
  23. @Operation(summary = "提交实名认证")
  24. @PreAuthorize("hasAnyRole('ROLE_user', 'ROLE_expert', 'ROLE_admin')")
  25. @PostMapping
  26. public Response<Void> submit(@Valid @RequestBody Map<String, String> body, Authentication authentication) {
  27. JwtUserDetails details = (JwtUserDetails) authentication.getPrincipal();
  28. Long userId = details.getUser().getId();
  29. realnameAuthService.submit(userId, body.get("realName"), body.get("idCard"),
  30. body.get("idCardFront"), body.get("idCardBack"));
  31. return Response.ok();
  32. }
  33. @Operation(summary = "查询自己的认证信息")
  34. @PreAuthorize("hasAnyRole('ROLE_user', 'ROLE_expert', 'ROLE_admin')")
  35. @GetMapping
  36. public Response<RealnameAuthVo> getMyAuth(Authentication authentication) {
  37. JwtUserDetails details = (JwtUserDetails) authentication.getPrincipal();
  38. Long userId = details.getUser().getId();
  39. RealnameAuth auth = realnameAuthService.getByUserId(userId);
  40. return Response.ok(RealnameAuthVo.from(auth));
  41. }
  42. @Operation(summary = "管理员审核实名认证")
  43. @PreAuthorize("hasRole('ROLE_admin')")
  44. @PutMapping("{id}/review")
  45. public Response<Void> review(@PathVariable Long id, @RequestBody Map<String, Object> body) {
  46. Boolean approved = (Boolean) body.get("approved");
  47. String rejectReason = (String) body.get("rejectReason");
  48. if (approved == null) return Response.error("请指定审核结果");
  49. realnameAuthService.review(id, approved, rejectReason);
  50. return Response.ok();
  51. }
  52. @Operation(summary = "获取所有待审核认证(管理员)")
  53. @PreAuthorize("hasRole('ROLE_admin')")
  54. @GetMapping("pending")
  55. public Response<List<RealnameAuthVo>> listPending() {
  56. List<RealnameAuth> list = realnameAuthService.lambdaQuery()
  57. .eq(RealnameAuth::getStatus, "pending").list();
  58. return Response.ok(RealnameAuthVo.from(list));
  59. }
  60. }