Skip to content

Commit 422b29c

Browse files
authored
refactor: 기관 선호 물품 리팩토링 (#361)
* refactor(prefer-item): 기관 선호 물품 추가 삭제 리팩토링 * test(prefer-item): 기관 선호 물품 추가 삭제 리팩토링 테스트 * test(prefer-item): 기관 선호 물품 추가 삭제 리팩토링 테스트 * refactor(prefer-item): 기관 선호 물품 조회 리팩토링 * refactor(prefer-item): 기관 선호 물품 조회 리팩토링 * test(prefer-item): 기관 선호 물품 조회 리팩토링 테스트 * chore(prefer-item): 기관 관련 클래스 패키지 이동에 따른 import 변경
1 parent 115e24b commit 422b29c

33 files changed

+349
-385
lines changed
Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
package com.somemore.domains.center.controller;
1+
package com.somemore.center.controller;
22

3-
import com.somemore.domains.center.dto.request.PreferItemCreateRequestDto;
4-
import com.somemore.domains.center.dto.response.PreferItemCreateResponseDto;
5-
import com.somemore.domains.center.usecase.command.CreatePreferItemUseCase;
6-
import com.somemore.domains.center.usecase.command.DeletePreferItemUseCase;
7-
import com.somemore.global.auth.annotation.UserId;
3+
import com.somemore.center.dto.request.PreferItemCreateRequestDto;
4+
import com.somemore.center.dto.response.PreferItemCreateResponseDto;
5+
import com.somemore.center.usecase.CreatePreferItemUseCase;
6+
import com.somemore.center.usecase.DeletePreferItemUseCase;
7+
import com.somemore.global.auth.annotation.RoleId;
88
import com.somemore.global.common.response.ApiResponse;
99
import io.swagger.v3.oas.annotations.Operation;
1010
import io.swagger.v3.oas.annotations.tags.Tag;
1111
import jakarta.validation.Valid;
12+
import java.util.UUID;
1213
import lombok.RequiredArgsConstructor;
1314
import org.springframework.security.access.annotation.Secured;
1415
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -18,8 +19,6 @@
1819
import org.springframework.web.bind.annotation.RequestMapping;
1920
import org.springframework.web.bind.annotation.RestController;
2021

21-
import java.util.UUID;
22-
2322
@RequiredArgsConstructor
2423
@RestController
2524
@RequestMapping("/api/preferItem")
@@ -31,10 +30,11 @@ public class PreferItemCommandApiController {
3130

3231
@Secured("ROLE_CENTER")
3332
@Operation(summary = "기관 선호물품 등록 API")
34-
@PostMapping()
33+
@PostMapping
3534
public ApiResponse<PreferItemCreateResponseDto> registerPreferItem(
3635
@Valid @RequestBody PreferItemCreateRequestDto requestDto,
37-
@UserId UUID centerId) {
36+
@RoleId UUID centerId
37+
) {
3838

3939
PreferItemCreateResponseDto responseDto = createPreferItemUseCase.createPreferItem(centerId,
4040
requestDto);
@@ -45,7 +45,10 @@ public ApiResponse<PreferItemCreateResponseDto> registerPreferItem(
4545
@Secured("ROLE_CENTER")
4646
@Operation(summary = "기관 선호물품 삭제 API")
4747
@DeleteMapping("/{preferItemId}")
48-
public ApiResponse<String> deletePreferItem(@UserId UUID centerId, @PathVariable Long preferItemId) {
48+
public ApiResponse<String> deletePreferItem(
49+
@RoleId UUID centerId,
50+
@PathVariable Long preferItemId
51+
) {
4952

5053
deletePreferItemUseCase.deletePreferItem(centerId, preferItemId);
5154

src/main/java/com/somemore/domains/center/domain/PreferItem.java renamed to src/main/java/com/somemore/center/domain/PreferItem.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
package com.somemore.domains.center.domain;
1+
package com.somemore.center.domain;
22

33
import jakarta.persistence.Column;
44
import jakarta.persistence.Entity;
55
import jakarta.persistence.GeneratedValue;
66
import jakarta.persistence.GenerationType;
77
import jakarta.persistence.Id;
88
import jakarta.persistence.Table;
9+
import java.util.UUID;
910
import lombok.AccessLevel;
1011
import lombok.Builder;
1112
import lombok.Getter;
1213
import lombok.NoArgsConstructor;
1314

14-
import java.util.UUID;
15-
1615
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1716
@Getter
1817
@Entity
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
package com.somemore.domains.center.dto.request;
1+
package com.somemore.center.dto.request;
22

33
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
44
import com.fasterxml.jackson.databind.annotation.JsonNaming;
5-
import com.somemore.domains.center.domain.PreferItem;
5+
import com.somemore.center.domain.PreferItem;
66
import io.swagger.v3.oas.annotations.media.Schema;
77
import jakarta.validation.constraints.NotNull;
8-
98
import java.util.UUID;
109

1110
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@@ -16,6 +15,7 @@ public record PreferItemCreateRequestDto(
1615
String itemName
1716

1817
) {
18+
1919
public PreferItem toEntity(UUID centerId) {
2020
return PreferItem.create(centerId, itemName);
2121
}

src/main/java/com/somemore/center/dto/response/CenterProfileResponseDto.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
44
import com.fasterxml.jackson.databind.annotation.JsonNaming;
55
import com.somemore.center.repository.record.CenterProfileDto;
6-
import com.somemore.domains.center.dto.response.PreferItemResponseDto;
76
import com.somemore.user.repository.usercommonattribute.record.UserProfileDto;
87
import io.swagger.v3.oas.annotations.media.Schema;
9-
import lombok.Builder;
10-
118
import java.util.List;
129
import java.util.UUID;
10+
import lombok.Builder;
1311

1412
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
1513
@Builder
@@ -39,7 +37,9 @@ public record CenterProfileResponseDto(
3937
@Schema(description = "선호 물품 리스트")
4038
List<PreferItemResponseDto> preferItems
4139
) {
42-
public static CenterProfileResponseDto of(CenterProfileDto centerProfileDto, UserProfileDto userProfileDto, List<PreferItemResponseDto> preferItems) {
40+
41+
public static CenterProfileResponseDto of(CenterProfileDto centerProfileDto,
42+
UserProfileDto userProfileDto, List<PreferItemResponseDto> preferItems) {
4343
return CenterProfileResponseDto.builder()
4444
.id(centerProfileDto.id())
4545
.userId(centerProfileDto.userId())
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
package com.somemore.domains.center.dto.response;
1+
package com.somemore.center.dto.response;
22

3-
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
3+
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
44
import com.fasterxml.jackson.databind.annotation.JsonNaming;
5-
import com.somemore.domains.center.domain.PreferItem;
5+
import com.somemore.center.domain.PreferItem;
66
import io.swagger.v3.oas.annotations.media.Schema;
7-
import lombok.Builder;
8-
97
import java.util.UUID;
8+
import lombok.Builder;
109

11-
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
10+
@JsonNaming(SnakeCaseStrategy.class)
1211
@Builder
1312
public record PreferItemCreateResponseDto(
1413
@Schema(description = "선호물품의 ID", example = "111")
@@ -18,6 +17,7 @@ public record PreferItemCreateResponseDto(
1817
@Schema(description = "선호물품 이름", example = "어린이 도서")
1918
String itemName
2019
) {
20+
2121
public static PreferItemCreateResponseDto from(PreferItem preferItem) {
2222
return PreferItemCreateResponseDto.builder()
2323
.id(preferItem.getId())
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.somemore.center.dto.response;
2+
3+
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
4+
import com.fasterxml.jackson.databind.annotation.JsonNaming;
5+
import com.somemore.center.domain.PreferItem;
6+
import io.swagger.v3.oas.annotations.media.Schema;
7+
import java.util.UUID;
8+
import lombok.Builder;
9+
10+
@JsonNaming(SnakeCaseStrategy.class)
11+
@Builder
12+
public record PreferItemResponseDto(
13+
@Schema(description = "선호 물품 ID", example = "1")
14+
Long id,
15+
@Schema(description = "기관 ID", example = "123e4567-e89b-12d3-a456-426614174000")
16+
UUID centerId,
17+
@Schema(description = "선호 물품명", example = "쌀20kg")
18+
String itemName
19+
) {
20+
21+
public static PreferItemResponseDto from(PreferItem preferItem) {
22+
return PreferItemResponseDto.builder()
23+
.id(preferItem.getId())
24+
.centerId(preferItem.getCenterId())
25+
.itemName(preferItem.getItemName())
26+
.build();
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package com.somemore.domains.center.repository.preferitem;
2-
3-
import com.somemore.domains.center.domain.PreferItem;
4-
import org.springframework.data.jpa.repository.JpaRepository;
1+
package com.somemore.center.repository.preferitem;
52

3+
import com.somemore.center.domain.PreferItem;
64
import java.util.List;
75
import java.util.UUID;
6+
import org.springframework.data.jpa.repository.JpaRepository;
87

98
public interface PreferItemJpaRepository extends JpaRepository<PreferItem, Long> {
9+
1010
List<PreferItem> findByCenterId(UUID centerId);
1111
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
package com.somemore.domains.center.repository.preferitem;
2-
3-
import com.somemore.domains.center.domain.PreferItem;
4-
import org.springframework.stereotype.Repository;
1+
package com.somemore.center.repository.preferitem;
52

3+
import com.somemore.center.domain.PreferItem;
64
import java.util.List;
75
import java.util.Optional;
86
import java.util.UUID;
7+
import org.springframework.stereotype.Repository;
98

109
@Repository
1110
public interface PreferItemRepository {
11+
1212
void save(PreferItem preferItem);
1313

1414
void deleteById(Long preferItemId);
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
package com.somemore.domains.center.repository.preferitem;
2-
3-
import com.somemore.domains.center.domain.PreferItem;
4-
import lombok.RequiredArgsConstructor;
5-
import org.springframework.stereotype.Repository;
1+
package com.somemore.center.repository.preferitem;
62

3+
import com.somemore.center.domain.PreferItem;
74
import java.util.List;
85
import java.util.Optional;
96
import java.util.UUID;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.stereotype.Repository;
109

1110
@RequiredArgsConstructor
1211
@Repository
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.somemore.center.service;
2+
3+
import com.somemore.center.domain.PreferItem;
4+
import com.somemore.center.dto.request.PreferItemCreateRequestDto;
5+
import com.somemore.center.dto.response.PreferItemCreateResponseDto;
6+
import com.somemore.center.repository.preferitem.PreferItemRepository;
7+
import com.somemore.center.usecase.CreatePreferItemUseCase;
8+
import com.somemore.center.usecase.NEWCenterQueryUseCase;
9+
import java.util.UUID;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.stereotype.Service;
12+
import org.springframework.transaction.annotation.Transactional;
13+
14+
@RequiredArgsConstructor
15+
@Transactional
16+
@Service
17+
public class CreatePreferItemService implements CreatePreferItemUseCase {
18+
19+
private final NEWCenterQueryUseCase centerQueryUseCase;
20+
private final PreferItemRepository preferItemRepository;
21+
22+
@Override
23+
public PreferItemCreateResponseDto createPreferItem(UUID centerId,
24+
PreferItemCreateRequestDto requestDto) {
25+
26+
centerQueryUseCase.validateCenterExists(centerId);
27+
28+
PreferItem preferItem = requestDto.toEntity(centerId);
29+
30+
preferItemRepository.save(preferItem);
31+
32+
return PreferItemCreateResponseDto.from(preferItem);
33+
}
34+
35+
}

0 commit comments

Comments
 (0)