소스 검색

# feat: 比赛详情接口返回类型统一为ContestDetailVo

yangyi 2 달 전
부모
커밋
45dbec1611

+ 3 - 3
src/main/java/space/anyi/serve/controller/ContestController.java

@@ -54,13 +54,13 @@ public class ContestController {
 
     @Operation(summary = "查询比赛详情", security = @SecurityRequirement(name = "openApiSecurityScheme"))
     @GetMapping("{id}")
-    public Response<ContestVo> getDetail(@Parameter(description = "比赛ID") @PathVariable Long id,
-                                         @Parameter(description = "访问密码(密码型比赛需传入)") @RequestParam(required = false) String password) {
+    public Response<ContestDetailVo> getDetail(@Parameter(description = "比赛ID") @PathVariable Long id,
+                                               @Parameter(description = "访问密码(密码型比赛需传入)") @RequestParam(required = false) String password) {
         Long userId = SecurityUtils.getCurrentUserId();
         ContestVo base = contestService.getBaseInfo(id);
         if (Contest.TYPE_PASSWORD.equals(base.getType())) {
             if (!contestService.checkPassword(id, password)) {
-                return Response.ok(base);
+                return Response.ok(ContestDetailVo.from(base));
             }
         } else if (Contest.TYPE_PRIVATE.equals(base.getType())) {
             String role = SecurityUtils.getCurrentRole();

+ 17 - 12
src/main/java/space/anyi/serve/entity/contest/ContestDetailVo.java

@@ -18,18 +18,23 @@ public class ContestDetailVo extends ContestVo {
     private List<ContestProblemVo> problems;
 
     public static ContestDetailVo from(Contest contest) {
-        ContestDetailVo vo = new ContestDetailVo();
-        vo.setId(contest.getId());
-        vo.setTitle(contest.getTitle());
-        vo.setType(contest.getType());
-        vo.setStartDatetime(contest.getStartDatetime());
-        vo.setEndDatetime(contest.getEndDatetime());
-        vo.setStatus(contest.getStatus());
-        vo.setCreatedAt(contest.getCreatedAt());
-        vo.setDescription(contest.getDescription());
-        vo.setRegistered(false);
-        vo.setProblems(new ArrayList<>());
-        return vo;
+        ContestDetailVo detail = from(ContestVo.from(contest));
+        detail.setDescription(contest.getDescription());
+        return detail;
+    }
+
+    public static ContestDetailVo from(ContestVo vo) {
+        ContestDetailVo detail = new ContestDetailVo();
+        detail.setId(vo.getId());
+        detail.setTitle(vo.getTitle());
+        detail.setType(vo.getType());
+        detail.setStartDatetime(vo.getStartDatetime());
+        detail.setEndDatetime(vo.getEndDatetime());
+        detail.setStatus(vo.getStatus());
+        detail.setCreatedAt(vo.getCreatedAt());
+        detail.setRegistered(false);
+        detail.setProblems(new ArrayList<>());
+        return detail;
     }
 
     public String getDescription() {