diff --git a/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java b/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java index d5d65dd..5f16c63 100644 --- a/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java +++ b/src/main/java/workplate/workplateserver/work/domain/dto/WorkResponse.java @@ -3,6 +3,8 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import workplate.workplateserver.auth.domain.MainExperience; +import workplate.workplateserver.auth.domain.SubExperience; import workplate.workplateserver.work.domain.entity.Work; /** @@ -19,12 +21,16 @@ public class WorkResponse { private String workName; private String workDetail; private Long workCredit; + private MainExperience mainCategory; + private SubExperience subCategory; public static WorkResponse toDto(Work work) { return WorkResponse.builder() .workName(work.getWorkName()) .workDetail(work.getWorkDetail()) .workCredit(work.getWorkCredit()) + .mainCategory(work.getMainCategory()) + .subCategory(work.getSubCategory()) .build(); } } diff --git a/src/main/java/workplate/workplateserver/work/domain/entity/Work.java b/src/main/java/workplate/workplateserver/work/domain/entity/Work.java index 1a5098b..11f0e6e 100644 --- a/src/main/java/workplate/workplateserver/work/domain/entity/Work.java +++ b/src/main/java/workplate/workplateserver/work/domain/entity/Work.java @@ -2,6 +2,8 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -10,6 +12,8 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import workplate.workplateserver.auth.domain.MainExperience; +import workplate.workplateserver.auth.domain.SubExperience; import workplate.workplateserver.common.BaseEntity; /** @@ -35,12 +39,21 @@ public class Work extends BaseEntity { private String workDetail; @Column(name = "work_credit") private Long workCredit; + @Column(name = "work_main_category") + @Enumerated(EnumType.STRING) + private MainExperience mainCategory; + @Column(name = "work_sub_category") + @Enumerated(EnumType.STRING) + private SubExperience subCategory; - public static Work toEntity(String workName, String workDetail, Long workCredit) { + public static Work toEntity(String workName, String workDetail, Long workCredit, MainExperience mainCategory, + SubExperience subCategory) { return Work.builder() .workName(workName) .workDetail(workDetail) .workCredit(workCredit) + .mainCategory(mainCategory) + .subCategory(subCategory) .build(); } } diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html index cda6f6a..2701b94 100644 --- a/src/main/resources/static/docs/index.html +++ b/src/main/resources/static/docs/index.html @@ -490,7 +490,7 @@

요청

HTTP request
-
POST /api/join?_csrf=uqGwVr5ZRkFGB1PDZT5OiMVU0jpDbCBYYDbvR2T-R8Q_DWeS3JmIbtg6d3BrYmXxAxN6vKFt_wN3CUN1VgDbJAbJJaVdbgKg HTTP/1.1
+
POST /api/join?_csrf=PgIVII1UGSy-VgyBIBIGTa1dWM46uJ4ZGHdIY9I6EJszZnmjBjchRr0yfBuTYW7nRD8yeJw7da9cjq80KUQrUeQNKaJSBUzC HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -606,7 +606,7 @@ 

요청

HTTP request
-
POST /api/join?_csrf=nHAt8mXu5LrBXuVeaBu2HIYegvQHhqbJ9_PMyGVbGoI4V6oh-kcfkVOM1Ivsad09WjaCL-V_r81iv5LkxcqvqwM5LudeYMgR HTTP/1.1
+
POST /api/join?_csrf=W-QQiuAMvzJ8R4RLrtawe4gwfv9ZPmY3wgmrj27vemXqocL4aNYm7tE9jFdRJuUvmPuEHexWU8dvWl4a-znOtwyNTVDTxKGd HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 75
 Host: localhost:8080
@@ -722,7 +722,7 @@ 

요청

HTTP request
-
POST /api/member?_csrf=P36JFwmul7Teu6P8UCzcJ0IGpZJZa_KevzzOcfMTJZpZhciWW0ixLzmY9oHzisfFZgHoF3dkiPA4WMezjAqoE8QmE686tKmg HTTP/1.1
+
POST /api/member?_csrf=kmlxlZyRuwrIyGn0zbMmqnILmlAemcnMXx2Qn0BYNeNE5msYqgpE9q2ki2zl-1rB_p4Smhc7t2kprv7hZiz0pnRsVIV0hVJ8 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 246
 Host: localhost:8080
@@ -862,8 +862,7 @@ 

요청

HTTP request
-
POST /api/member?_csrf=pZ25SF_D7mKw0dsGee1kXmL8WR_Yu2nru0qP64U_vwS7vPnDlquILDv0i1Od4bkxH8BQOlGddCa6iAjG2im_ieYKjGffiJv0 HTTP/1.1
-
+
POST /api/member?_csrf=23Cny2COxXGIMijWKGtj-mXdNUI13SxniQulHeXvQME_TJ0p4kmT-lbrp0WlUR3lTEZXy13rGHsA5RlK6miReIaNdPUHL6RK HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 246
 Host: localhost:8080
@@ -1518,8 +1517,7 @@ 

요청

HTTP request
-
PATCH /api/credits/plus?_csrf=FTufPolFbnQWgcjDW8jT-Zkka5uhtYIsfBvR-8aKTSGi-mnJJQuoCbgjChI7sK6lY-Xnz6oTRvnHgbABSCrnmv--ekKRzFys HTTP/1.1
-
+
PATCH /api/credits/plus?_csrf=qmt_Za8wsOh3pBq84WDkNp731oPvmLzVTO5mr8Dx5RfiDEDKz1JNVJxShthanSLZ2U3QAa7F-7rcoYz4ddheyvXB0SSEOyPy HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -1642,8 +1640,7 @@ 

요청

HTTP request
-
PATCH /api/credits/minus?_csrf=RIhdRhgUX7s9SaRUFcBJ4rkdcDr5ESnv0ZSbEQORawtiuuyFJ-xrdSAjbd0Qe5E2Ie19gY4qXQOaIBrC5_etJzuoXmhRgoq8 HTTP/1.1
-
+
PATCH /api/credits/minus?_csrf=p3QgOoesv8lpAyBdnDtNeGxiJbc16bjauYGOLlwM5weJ3Ic4nkJFDLaZ3KtEYkFlqRZ5HFlWCNUN3933gbG4T2xq3jG-7bEO HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 47
 Host: localhost:8080
@@ -1812,7 +1809,7 @@ 
HTTP response
Pragma: no-cache Expires: 0 X-Frame-Options: DENY -Content-Length: 611 +Content-Length: 833 { "success" : true, @@ -1821,15 +1818,21 @@
HTTP response
"content" : [ { "workName" : "경비", "workDetail" : "병원을 경비합니다.", - "workCredit" : 10000 + "workCredit" : 10000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" }, { "workName" : "주간경비", "workDetail" : "병원을 주간에 경비합니다.", - "workCredit" : 11000 + "workCredit" : 11000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" }, { "workName" : "야간경비", "workDetail" : "병원을 야간에 경비합니다.", - "workCredit" : 12000 + "workCredit" : 12000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" } ], "pageNum" : 0, "pageSize" : 0, @@ -1888,6 +1891,16 @@
Response fields

소일거리 시급

+

data.content[].mainCategory

+

String

+

소일거리 메인카테고리

+ + +

data.content[].subCategory

+

String

+

소일거리 서브카테고리

+ +

data.pageNum

Number

현재 페이지 번호

@@ -1967,7 +1980,7 @@
HTTP response
Pragma: no-cache Expires: 0 X-Frame-Options: DENY -Content-Length: 207 +Content-Length: 277 { "success" : true, @@ -1975,7 +1988,9 @@
HTTP response
"data" : { "workName" : "경비", "workDetail" : "병원을 경비합니다.", - "workCredit" : 10000 + "workCredit" : 10000, + "mainCategory" : "SERVICE", + "subCategory" : "SECURITY_GUARD" } }
@@ -2027,6 +2042,16 @@
Response fields

Number

소일거리 시급

+ +

data.mainCategory

+

String

+

소일거리 메인카테고리

+ + +

data.subCategory

+

String

+

소일거리 서브카테고리

+
@@ -2040,8 +2065,7 @@

요청

HTTP request
-
POST /api/works-join?_csrf=aLTWfYjPQd7xySlQdXuyQQ-JWy5_zEjlcqFBU1-hVLp8xZ2lUdLmTun_cunc_hBoEFaGcWztdk9N-ivIF5YkZm_EMo9Fof6c HTTP/1.1
-
+
POST /api/works-join?_csrf=VfS28BzkEMe7ffCLHNMv4hLSGkSzyV528VPtXQigV_4EjobsZMOHliiGJ_CWTcm6JP4bh3bjN32C8TpbxWLVZGyQZs5m6LDY HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 44
 Host: localhost:8080
diff --git a/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java b/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
index 32c052f..4b38938 100644
--- a/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
+++ b/src/test/java/workplate/workplateserver/work/controller/WorkControllerTest.java
@@ -29,6 +29,8 @@
 
 import com.google.gson.Gson;
 
+import workplate.workplateserver.auth.domain.MainExperience;
+import workplate.workplateserver.auth.domain.SubExperience;
 import workplate.workplateserver.auth.domain.entity.Member;
 import workplate.workplateserver.auth.domain.jwt.JwtTokenProvider;
 import workplate.workplateserver.auth.domain.jwt.repository.JwtAccessTokenRepository;
@@ -74,9 +76,9 @@ class WorkControllerTest {
 	@WithMockUser
 	void findAllTest() throws Exception {
 		// Given
-		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L);
-		WorkResponse r2 = new WorkResponse("주간경비", "병원을 주간에 경비합니다.", 11000L);
-		WorkResponse r3 = new WorkResponse("야간경비", "병원을 야간에 경비합니다.", 12000L);
+		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
+		WorkResponse r2 = new WorkResponse("주간경비", "병원을 주간에 경비합니다.", 11000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
+		WorkResponse r3 = new WorkResponse("야간경비", "병원을 야간에 경비합니다.", 12000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
 		PageResponse response = new PageResponse<>(List.of(r1, r2, r3));
 		given(workService.findAll(any())).willReturn(response);
 
@@ -102,6 +104,8 @@ void findAllTest() throws Exception {
 								fieldWithPath("data.content[].workName").description("소일거리 이름"),
 								fieldWithPath("data.content[].workDetail").description("소일거리 상세 내용"),
 								fieldWithPath("data.content[].workCredit").description("소일거리 시급"),
+								fieldWithPath("data.content[].mainCategory").description("소일거리 메인카테고리"),
+								fieldWithPath("data.content[].subCategory").description("소일거리 서브카테고리"),
 								fieldWithPath("data.pageNum").description("현재 페이지 번호"),
 								fieldWithPath("data.pageSize").description("페이지 당 항목 수"),
 								fieldWithPath("data.totalPages").description("총 페이지 수"),
@@ -117,7 +121,7 @@ void findAllTest() throws Exception {
 	@WithMockUser
 	void findByIdTest() throws Exception {
 		// Given
-		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L);
+		WorkResponse r1 = new WorkResponse("경비", "병원을 경비합니다.", 10000L, MainExperience.SERVICE, SubExperience.SECURITY_GUARD);
 		given(workService.findById(1L)).willReturn(r1);
 
 		// When
@@ -140,7 +144,9 @@ void findByIdTest() throws Exception {
 								fieldWithPath("data").description("처리 결과"),
 								fieldWithPath("data.workName").description("소일거리 이름"),
 								fieldWithPath("data.workDetail").description("소일거리 상세 내용"),
-								fieldWithPath("data.workCredit").description("소일거리 시급")
+								fieldWithPath("data.workCredit").description("소일거리 시급"),
+								fieldWithPath("data.mainCategory").description("소일거리 메인카테고리"),
+								fieldWithPath("data.subCategory").description("소일거리 서브카테고리")
 						)));
 		// Then
 	}