Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

Expand All @@ -31,4 +32,42 @@ public OpenAPI customOpenAPI() {
.addSecuritySchemes("BearerAuth", bearerAuthScheme))
.addSecurityItem(securityRequirement);
}

private GroupedOpenApi buildGroupedOpenApi(String group, String basePackage) {
return GroupedOpenApi.builder()
.group(group)
// .pathsToMatch("/api/v1/**")
.packagesToScan(basePackage)
.build();
}

@Bean
public GroupedOpenApi moinApi() {
return buildGroupedOpenApi("모임 관련 API @오남의", "com.example.moim.club.controller");
}

@Bean
public GroupedOpenApi notificationApi() {
return buildGroupedOpenApi("알림 관련 API @최예빈", "com.example.moim.notification.controller");
}

@Bean
public GroupedOpenApi matchApi() {
return buildGroupedOpenApi("매치 관련 API @문호주", "com.example.moim.match.controller");
}

@Bean
public GroupedOpenApi statisticApi() {
return buildGroupedOpenApi("전적 관련 API@문호주", "com.example.moim.statistic.controller");
}

@Bean
public GroupedOpenApi scheduleApi() {
return buildGroupedOpenApi("스케줄 관련 API@오남의", "com.example.moim.schedule.controller");
}

@Bean
public GroupedOpenApi userApi() {
return buildGroupedOpenApi("유저 관련 API@최예빈", "com.example.moim.user.controller");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

@RestController
@RequiredArgsConstructor
public class MatchController {
public class MatchController implements MatchControllerDocs {
private final MatchService matchService;
private final ClubRepository clubRepository;
private final MatchRepository matchRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.example.moim.match.controller;

import com.example.moim.global.exception.BaseResponse;
import com.example.moim.match.dto.*;
import com.example.moim.user.dto.UserDetailsImpl;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Tag(name = "매치 api", description = "매치 관련 api")
public interface MatchControllerDocs {
@Operation(summary = "매치 생성")
BaseResponse<MatchOutput> matchSave(@RequestBody @Valid MatchInput matchInput, @AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 등록")
BaseResponse<MatchRegOutput> matchRegister(@RequestBody @Valid MatchRegInput matchRegInput,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 생성 취소")
BaseResponse<String> matchCreationCancel(@RequestParam Long matchId,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 신청 생성")
BaseResponse<MatchApplyOutput> matchApplySave(@RequestParam Long matchId,
@RequestParam Long clubId,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 신청 취소")
BaseResponse<String> matchApplyCancel(@RequestParam Long matchId,
@RequestParam Long clubId,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 신청 완료")
BaseResponse<MatchApplyOutput> matchApply(@RequestBody @Valid MatchApplyInput matchApplyInput,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);


@Operation(summary = "매치 초청")
BaseResponse<String> matchInvite(@RequestParam Long matchId,
@RequestParam Long clubId,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 확정")
BaseResponse<MatchConfirmOutput> matchConfirm(@RequestParam Long matchId,
@RequestParam Long clubId,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 확정 취소")
BaseResponse<String> cancelConfirmedMatch(@RequestParam Long matchId,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "등록된 매치 검색")
BaseResponse<List<MatchSearchOutput>> findMatches(@AuthenticationPrincipal UserDetailsImpl userDetailsImpl,
@ModelAttribute MatchSearchCond matchSearchCond);

@Operation(summary = "확정된(매치성사된) 매치 리스트")
BaseResponse<List<ConfirmedMatchOutput>> findConfirmedMatches(@AuthenticationPrincipal UserDetailsImpl userDetailsImpl,
@PathVariable Long clubId);

@Operation(summary = "활동 지역 소재 모임 리스트")
BaseResponse<List<MatchClubOutput>> findMatchClubs(@AuthenticationPrincipal UserDetailsImpl userDetailsImpl,
@ModelAttribute MatchClubSearchCond matchClubSearchCond,
@PathVariable Long clubId);

@Operation(summary = "매치 등록/신청 현황")
BaseResponse<List<MatchStatusOutput>> getMatchStatus(@PathVariable Long clubId);


@Operation(summary = "매치 결과 기록")
BaseResponse<MatchRecordOutput> matchRecordSave(@PathVariable Long matchId,
@RequestBody @Valid MatchRecordInput matchRecordInput,
@AuthenticationPrincipal UserDetailsImpl userDetailsImpl);

@Operation(summary = "매치 메인 페이지(대시보드)")
BaseResponse<MatchMainOutput> findMatchMain(@PathVariable Long clubId, @AuthenticationPrincipal UserDetailsImpl userDetailsImpl);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

@RestController
@RequiredArgsConstructor
public class StatisticController {
public class StatisticController implements StatisticControllerDocs {
private StatisticService statisticService;

// 전적 조회(전적 메인)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.example.moim.statistic.controller;

import com.example.moim.global.exception.BaseResponse;
import com.example.moim.statistic.dto.StatisticDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;

@Tag(name = "전적 api", description = "전적 관련 api")
public interface StatisticControllerDocs {
@Operation(summary = "전적 조회")
BaseResponse<StatisticDTO.StatisticOutPut> getStatistic(@PathVariable Long clubId,
@RequestBody StatisticDTO.StatisticInput request);
}