Skip to content

Commit

Permalink
Merge branch 'refs/heads/main' into refactor/182-praycontroller
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/main/java/com/uspray/uspray/InitDb.java
#	src/main/java/com/uspray/uspray/domain/category/controller/CategoryController.java
#	src/main/java/com/uspray/uspray/domain/group/controller/GroupController.java
#	src/main/java/com/uspray/uspray/domain/group/controller/GroupPrayController.java
#	src/main/java/com/uspray/uspray/domain/history/controller/HistoryController.java
#	src/main/java/com/uspray/uspray/domain/member/controller/MemberController.java
#	src/main/java/com/uspray/uspray/domain/pray/controller/PrayController.java
#	src/main/java/com/uspray/uspray/domain/pray/controller/ShareController.java
  • Loading branch information
dong2ast committed Oct 3, 2024
2 parents 1f29d65 + b3440a5 commit 67fb1ab
Show file tree
Hide file tree
Showing 15 changed files with 623 additions and 342 deletions.
15 changes: 7 additions & 8 deletions src/main/java/com/uspray/uspray/InitDb.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package com.uspray.uspray;

import com.uspray.uspray.global.enums.Authority;
import com.uspray.uspray.global.enums.CategoryType;
import com.uspray.uspray.global.enums.PrayType;
import com.uspray.uspray.domain.category.model.Category;
import com.uspray.uspray.domain.group.model.Group;
import com.uspray.uspray.domain.group.model.GroupMember;
import com.uspray.uspray.domain.history.model.History;
import com.uspray.uspray.domain.member.model.Member;
import com.uspray.uspray.domain.pray.model.Pray;
import com.uspray.uspray.global.enums.Authority;
import com.uspray.uspray.global.enums.CategoryType;
import com.uspray.uspray.global.enums.PrayType;
import java.time.LocalDate;
import javax.annotation.PostConstruct;
import javax.persistence.EntityManager;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
Expand All @@ -23,10 +22,10 @@ public class InitDb {

private final InitService initService;

// @PostConstruct
// public void init() {
// initService.dbInit();
// }
// @PostConstruct
// public void init() {
// initService.dbInit();
// }

@Component
@Transactional
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.uspray.uspray.domain.category.controller;

import com.uspray.uspray.domain.category.dto.CategoryRequestDto;
import com.uspray.uspray.domain.category.dto.CategoryResponseDto;
import com.uspray.uspray.global.common.dto.ApiResponseDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import org.springframework.security.core.userdetails.User;

@Tag(name = "Category", description = "Category 관련 API")
@SecurityRequirement(name = "JWT Auth")
public interface CategoryApi {

@Operation(summary = "카테고리 조회")
@ApiResponse(
responseCode = "200",
description = "카테고리 조회",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
ApiResponseDto<CategoryResponseDto> getCategory(
@Parameter(hidden = true) User user,
@Parameter(description = "카테고리 ID", required = true) Long categoryId
);

@Operation(summary = "카테고리 목록 조회")
@ApiResponse(
responseCode = "200",
description = "카테고리 목록 조회",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
ApiResponseDto<List<CategoryResponseDto>> getCategoryList(
@Parameter(hidden = true) User user,
@Parameter(description = "카테고리 종류(personal, shared)", required = true, example = "personal") String categoryType
);

@Operation(summary = "카테고리 생성")
@ApiResponse(
responseCode = "201",
description = "카테고리 생성",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
ApiResponseDto<CategoryResponseDto> createCategory(
@Parameter(hidden = true) User user,
CategoryRequestDto categoryRequestDto
);

ApiResponseDto<CategoryResponseDto> deleteCategory(
@Parameter(hidden = true) User user,
@Parameter(description = "카테고리 ID", required = true) Long categoryId
);

@Operation(summary = "카테고리 수정")
@ApiResponse(
responseCode = "200",
description = "카테고리 수정",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
ApiResponseDto<CategoryResponseDto> updatePray(
@Parameter(description = "카테고리 ID", required = true) Long categoryId,
CategoryRequestDto categoryRequestDto,
@Parameter(hidden = true) User user
);

@Operation(summary = "카테고리 순서 수정")
@ApiResponse(
responseCode = "200",
description = "카테고리 순서 수정",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
ApiResponseDto<CategoryResponseDto> updatePrayOrder(
@Parameter(description = "카테고리 ID", required = true) Long categoryId,
@Parameter(description = "카테고리 순서", required = true) int index,
@Parameter(hidden = true) User user
);

}
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
package com.uspray.uspray.domain.category.controller;

import com.uspray.uspray.global.common.dto.ApiResponseDto;
import com.uspray.uspray.domain.category.dto.CategoryRequestDto;
import com.uspray.uspray.domain.category.dto.CategoryResponseDto;
import com.uspray.uspray.global.exception.SuccessStatus;
import com.uspray.uspray.domain.category.service.CategoryService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.uspray.uspray.global.common.dto.ApiResponseDto;
import com.uspray.uspray.global.exception.SuccessStatus;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
Expand All @@ -28,49 +21,31 @@

@RestController
@RequestMapping("/category")
@Tag(name = "Category", description = "Category 관련 API")
@RequiredArgsConstructor
@SecurityRequirement(name = "JWT Auth")
public class CategoryController {
public class CategoryController implements CategoryApi {

private final CategoryService categoryService;

@Operation(summary = "카테고리 조회")
@ApiResponse(
responseCode = "200",
description = "카테고리 조회",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))

@GetMapping("/{categoryId}")
public ApiResponseDto<CategoryResponseDto> getCategory(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@Parameter(description = "카테고리 ID", required = true) @PathVariable("categoryId") Long categoryId
@AuthenticationPrincipal User user, @PathVariable("categoryId") Long categoryId
) {
return ApiResponseDto.success(SuccessStatus.GET_CATEGORY_SUCCESS,
categoryService.getCategory(user.getUsername(), categoryId));
}

@Operation(summary = "카테고리 목록 조회")
@ApiResponse(
responseCode = "200",
description = "카테고리 목록 조회",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
@GetMapping
public ApiResponseDto<List<CategoryResponseDto>> getCategoryList(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@Parameter(description = "카테고리 종류(personal, shared)", required = true, example = "personal") String categoryType
@AuthenticationPrincipal User user, String categoryType
) {
return ApiResponseDto.success(SuccessStatus.GET_CATEGORY_LIST_SUCCESS,
categoryService.getCategoryList(user.getUsername(), categoryType));
}

@Operation(summary = "카테고리 생성")
@ApiResponse(
responseCode = "201",
description = "카테고리 생성",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
@PostMapping()
@PostMapping
public ApiResponseDto<CategoryResponseDto> createCategory(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@AuthenticationPrincipal User user,
@RequestBody @Valid CategoryRequestDto categoryRequestDto
) {
return ApiResponseDto.success(SuccessStatus.CREATE_CATEGORY_SUCCESS,
Expand All @@ -79,39 +54,29 @@ public ApiResponseDto<CategoryResponseDto> createCategory(

@DeleteMapping("/{categoryId}")
public ApiResponseDto<CategoryResponseDto> deleteCategory(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@Parameter(description = "카테고리 ID", required = true) @PathVariable("categoryId") Long categoryId
@AuthenticationPrincipal User user,
@PathVariable("categoryId") Long categoryId
) {
return ApiResponseDto.success(SuccessStatus.DELETE_CATEGORY_SUCCESS,
categoryService.deleteCategory(user.getUsername(), categoryId));
}

@PutMapping("/{categoryId}")
@ApiResponse(
responseCode = "200",
description = "카테고리 수정",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
@Operation(summary = "카테고리 수정")
public ApiResponseDto<CategoryResponseDto> updatePray(
@Parameter(description = "카테고리 ID", required = true) @PathVariable("categoryId") Long categoryId,
@PathVariable("categoryId") Long categoryId,
@RequestBody @Valid CategoryRequestDto categoryRequestDto,
@Parameter(hidden = true) @AuthenticationPrincipal User user
@AuthenticationPrincipal User user
) {
return ApiResponseDto.success(SuccessStatus.UPDATE_CATEGORY_SUCCESS,
categoryService.updateCategory(user.getUsername(), categoryId, categoryRequestDto));
}


@PutMapping("/{categoryId}/order/{index}")
@ApiResponse(
responseCode = "200",
description = "카테고리 순서 수정",
content = @Content(schema = @Schema(implementation = CategoryResponseDto.class)))
@Operation(summary = "카테고리 순서 수정")
public ApiResponseDto<CategoryResponseDto> updatePrayOrder(
@Parameter(description = "카테고리 ID", required = true) @PathVariable("categoryId") Long categoryId,
@Parameter(description = "카테고리 순서", required = true) @PathVariable("index") int index,
@Parameter(hidden = true) @AuthenticationPrincipal User user
@PathVariable("categoryId") Long categoryId,
@PathVariable("index") int index,
@AuthenticationPrincipal User user
) {
return ApiResponseDto.success(SuccessStatus.UPDATE_CATEGORY_SUCCESS,
categoryService.updateCategoryOrder(user.getUsername(), categoryId, index));
Expand Down
118 changes: 118 additions & 0 deletions src/main/java/com/uspray/uspray/domain/group/controller/GroupApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
package com.uspray.uspray.domain.group.controller;

import com.uspray.uspray.domain.group.dto.group.request.GroupMemberRequestDto;
import com.uspray.uspray.domain.group.dto.group.request.GroupRequestDto;
import com.uspray.uspray.domain.group.dto.group.response.GroupListResponseDto;
import com.uspray.uspray.domain.group.dto.group.response.GroupMemberResponseDto;
import com.uspray.uspray.global.common.dto.ApiResponseDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import java.util.List;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.User;
import org.springframework.web.bind.annotation.PathVariable;

public interface GroupApi {

@Operation(summary = "모임 목록 조회")
@ApiResponse(
responseCode = "200",
description = "사용자가 가입한 목록 조회",
content = @Content(schema = @Schema(implementation = GroupListResponseDto.class))
)
ApiResponseDto<GroupListResponseDto> getGroupList(@Parameter(hidden = true) User user);

@Operation(summary = "모임 생성")
@ApiResponse(
responseCode = "201",
description = "신규로 모임을 생성합니다",
content = @Content(schema = @Schema(implementation = GroupRequestDto.class))
)
ApiResponseDto<?> createGroup(
@Parameter(hidden = true) User user,
GroupRequestDto groupRequestDto
);

@Operation(summary = "[모임 리더] 모임 이름을 변경합니다")
@ApiResponse(
responseCode = "200",
description = "모임 이름 변경",
content = @Content(schema = @Schema(implementation = GroupRequestDto.class))
)
ApiResponseDto<?> changeGroupName(
@Parameter(hidden = true) User user,
Long groupId,
GroupRequestDto groupRequestDto);

@Operation(summary = "[모임 리더] 모임 리더를 위임합니다")
@ApiResponse(
responseCode = "200",
description = "모임 리더 위임",
content = @Content(schema = @Schema(implementation = GroupMemberRequestDto.class))
)
ApiResponseDto<?> changeGroupLeader(
@Parameter(hidden = true) User user,
Long groupId,
GroupMemberRequestDto groupLeaderRequestDto);

@Operation(summary = "[모임 리더] 회원 내보내기")
@ApiResponse(
responseCode = "200",
description = "모임 회원을 내보냅니다",
content = @Content(schema = @Schema(implementation = GroupMemberRequestDto.class))
)
ApiResponseDto<?> kickGroupMember(
@Parameter(hidden = true) User user,
Long groupId,
GroupMemberRequestDto groupMemberRequestDto);

@Operation(summary = "모임 가입하기")
@ApiResponse(
responseCode = "200",
description = "모임에 가입합니다"
)
ApiResponseDto<?> addGroupMember(
@Parameter(hidden = true) User user,
Long groupId);

@Operation(summary = "모임 탈퇴하기")
@ApiResponse(
responseCode = "204",
description = "모임을 떠납니다",
content = @Content(schema = @Schema(implementation = GroupMemberRequestDto.class))
)
ApiResponseDto<?> leaveGroup(
@Parameter(hidden = true) User user,
Long groupId);

@Operation(summary = "[모임 리더] 모임 삭제하기")
@ApiResponse(
responseCode = "200",
description = "모임을 삭제합니다. 모임 회원, 모임 기도제목 등 일괄 삭제"
)
ApiResponseDto<?> deleteGroup(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@PathVariable Long groupId);

@Operation(summary = "회원 검색")
@ApiResponse(
responseCode = "200",
description = "모임 내 회원 목록을 조회합니다"
)
ApiResponseDto<List<GroupMemberResponseDto>> searchGroupMembers(
Long groupId,
@Parameter(hidden = true) User user,
String name);

@Operation(summary = "그룹 알림 설정")
@ApiResponse(
responseCode = "200",
description = "그룹 알림 설정을 변경합니다"
)
ApiResponseDto<?> changeGroupNotification(
@Parameter(hidden = true) User user,
Long groupId);
}
Loading

0 comments on commit 67fb1ab

Please sign in to comment.