From 5da132e2cf1a1cd8a3a30293bf77ab501fd9f274 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 16:34:24 +0900 Subject: [PATCH 01/29] =?UTF-8?q?#34=20feat:=20=EC=83=88=EB=A1=AD=EA=B2=8C?= =?UTF-8?q?=20=EC=A7=80=EC=9B=90=20=EB=93=B1=EB=A1=9D=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EC=83=9D=EC=84=B1=EC=9E=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/clone/wanted/application/Application.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/clone/wanted/application/Application.java b/src/main/java/com/clone/wanted/application/Application.java index 63d329f..fc24019 100644 --- a/src/main/java/com/clone/wanted/application/Application.java +++ b/src/main/java/com/clone/wanted/application/Application.java @@ -4,13 +4,14 @@ import com.clone.wanted.User.User; import com.clone.wanted.employment.Employment; import jakarta.persistence.*; +import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @Entity @Getter -@NoArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class Application extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -25,4 +26,14 @@ public class Application extends BaseEntity { @Enumerated(EnumType.STRING) private ApplicationStatus applicationStatus; + private Application (User user, Employment employment){ + this.user = user; + this.employment = employment; + this.applicationStatus = ApplicationStatus.ONGOING; + } + + public static Application newEnrollment(User user, Employment employment){ + return new Application(user, employment); + } + } From 94807b49bbeb783cf2c81638190a6a2a1b9f82c8 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 16:36:26 +0900 Subject: [PATCH 02/29] =?UTF-8?q?#34=20=EA=B3=B5=EA=B3=A0=EC=97=90=20?= =?UTF-8?q?=EC=A7=80=EC=9B=90=ED=95=98=EB=8A=94=20api=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/ApplicationController.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/com/clone/wanted/application/ApplicationController.java diff --git a/src/main/java/com/clone/wanted/application/ApplicationController.java b/src/main/java/com/clone/wanted/application/ApplicationController.java new file mode 100644 index 0000000..cdb08a5 --- /dev/null +++ b/src/main/java/com/clone/wanted/application/ApplicationController.java @@ -0,0 +1,22 @@ +package com.clone.wanted.application; + +import com.clone.wanted.config.BaseResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +public class ApplicationController { + + private final ApplicationService applicationService; + /** + * @param email + * @return BaseResponse + * TODO: spring security 단 이후 Authentication 으로 변경 + */ + @PostMapping("api/v1/applications/{employmentId}") + public BaseResponse enroll(@RequestBody String email, @PathVariable Long employmentId) { + applicationService.enroll(email, employmentId); + return BaseResponse.success(); + } +} From 2528b88c49b4e1eaf747380305d42682abfd69f9 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 16:36:42 +0900 Subject: [PATCH 03/29] =?UTF-8?q?#34=20=EA=B3=B5=EA=B3=A0=EC=97=90=20?= =?UTF-8?q?=EC=A7=80=EC=9B=90=ED=95=98=EB=8A=94=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/ApplicationService.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/com/clone/wanted/application/ApplicationService.java diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java new file mode 100644 index 0000000..4a7cc23 --- /dev/null +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -0,0 +1,32 @@ +package com.clone.wanted.application; + +import com.clone.wanted.User.User; +import com.clone.wanted.User.UserRepository; +import com.clone.wanted.config.BaseException; +import com.clone.wanted.config.BaseResponseStatus; +import com.clone.wanted.employment.Employment; +import com.clone.wanted.employment.EmploymentRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Transactional +public class ApplicationService { + + private final UserRepository userRepository; + private final EmploymentRepository employmentRepository; + private final ApplicationRepository applicationRepository; + public void enroll(String email, Long employmentId) { + User user = userRepository.findByEmail(email) + .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); + Employment employment = employmentRepository.findById(employmentId) + .orElseThrow(() -> new BaseException(BaseResponseStatus.Employment_NOT_FOUND)); + applicationRepository.findByUserAndEmployment(user, employment) + .ifPresent((application -> { + throw new BaseException(BaseResponseStatus.APPLICATION_ALREADY_EXIST); + })); + applicationRepository.save(Application.newEnrollment(user, employment)); + } +} From f3cd4148deb54e12f9970e9806402622d069782b Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 16:37:07 +0900 Subject: [PATCH 04/29] =?UTF-8?q?#34=20=EA=B3=B5=EA=B3=A0=EC=A7=80?= =?UTF-8?q?=EC=9B=90=EC=97=90=20=ED=95=84=EC=9A=94=ED=95=9C=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8A=94=20rep?= =?UTF-8?q?ository=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/clone/wanted/User/UserRepository.java | 12 ++++++++++++ .../wanted/application/ApplicationRepository.java | 14 ++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/main/java/com/clone/wanted/User/UserRepository.java create mode 100644 src/main/java/com/clone/wanted/application/ApplicationRepository.java diff --git a/src/main/java/com/clone/wanted/User/UserRepository.java b/src/main/java/com/clone/wanted/User/UserRepository.java new file mode 100644 index 0000000..7448c39 --- /dev/null +++ b/src/main/java/com/clone/wanted/User/UserRepository.java @@ -0,0 +1,12 @@ +package com.clone.wanted.User; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface UserRepository extends JpaRepository { + + Optional findByEmail(String email); +} diff --git a/src/main/java/com/clone/wanted/application/ApplicationRepository.java b/src/main/java/com/clone/wanted/application/ApplicationRepository.java new file mode 100644 index 0000000..0bc638d --- /dev/null +++ b/src/main/java/com/clone/wanted/application/ApplicationRepository.java @@ -0,0 +1,14 @@ +package com.clone.wanted.application; + +import com.clone.wanted.User.User; +import com.clone.wanted.employment.Employment; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +interface ApplicationRepository extends JpaRepository { + + Optional findByUserAndEmployment(User suer, Employment employment); +} From 402a1547b096e081ae3d9898a7e1355636ddd41c Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 16:44:44 +0900 Subject: [PATCH 05/29] =?UTF-8?q?#34=20=EC=A7=80=EC=9B=90=EA=B3=B5?= =?UTF-8?q?=EA=B3=A0=20=EB=93=B1=EB=A1=9D=EC=8B=9C=20=EB=B0=9C=EC=83=9D?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8A=94=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 유저 존재 여부 2. 공고 존재 여부 3. 이미 지원한 경우 --- .../com/clone/wanted/config/BaseException.java | 2 +- .../clone/wanted/config/BaseResponseStatus.java | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/clone/wanted/config/BaseException.java b/src/main/java/com/clone/wanted/config/BaseException.java index 175f214..41cf731 100644 --- a/src/main/java/com/clone/wanted/config/BaseException.java +++ b/src/main/java/com/clone/wanted/config/BaseException.java @@ -12,7 +12,7 @@ @NoArgsConstructor @ResponseStatus(code= HttpStatus.NOT_FOUND) -public class BaseException extends Exception { +public class BaseException extends RuntimeException { private BaseResponseStatus status; //BaseResoinseStatus 객체에 매핑 } diff --git a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java index b85939d..5d38363 100644 --- a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java +++ b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java @@ -36,11 +36,25 @@ public enum BaseResponseStatus { * 4000 : Database, Server 오류 */ DATABASE_ERROR(false, 4000, "데이터베이스 연결에 실패하였습니다."), - SERVER_ERROR(false, 4001, "서버와의 연결에 실패하였습니다."); + SERVER_ERROR(false, 4001, "서버와의 연결에 실패하였습니다."), /*TODO 필요한 에러 메세지 추가해주세요- 하비 */ + /** + * 5000 : User Exception + */ + USER_NOT_FOUND(false, 5000, "해당 유저를 찾을 수 없습니다."), + + + /** + * 6000 : Employment Exception + */ + Employment_NOT_FOUND(false, 6000, "해당 공고를 찾을 수 없습니다."), + /** + * 7000 : Employment Exception + */ + APPLICATION_ALREADY_EXIST(false, 7000, "이미 지원한 공고입니다."); private boolean isSuccess; From a3e78113e84b1c4695683691ed1ea6bf5b5cb3d6 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:14:14 +0900 Subject: [PATCH 06/29] =?UTF-8?q?#34=20feat:=20=EA=B3=B5=EA=B3=A0=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20status=EB=B3=80=EA=B2=BD=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/clone/wanted/application/Application.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/Application.java b/src/main/java/com/clone/wanted/application/Application.java index fc24019..db4fc86 100644 --- a/src/main/java/com/clone/wanted/application/Application.java +++ b/src/main/java/com/clone/wanted/application/Application.java @@ -32,6 +32,10 @@ private Application (User user, Employment employment){ this.applicationStatus = ApplicationStatus.ONGOING; } + public void updateStatus(ApplicationStatus status){ + this.applicationStatus = status; + } + public static Application newEnrollment(User user, Employment employment){ return new Application(user, employment); } From 273eb82e5fdd665bf338192c47b177b00be8876a Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:14:39 +0900 Subject: [PATCH 07/29] =?UTF-8?q?#34=20status=EB=A5=BC=20=EB=B0=9B?= =?UTF-8?q?=EC=95=84=EC=98=A4=EB=8A=94=20requestDto=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/requestDto/EstimateRequestDto.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/main/java/com/clone/wanted/application/requestDto/EstimateRequestDto.java diff --git a/src/main/java/com/clone/wanted/application/requestDto/EstimateRequestDto.java b/src/main/java/com/clone/wanted/application/requestDto/EstimateRequestDto.java new file mode 100644 index 0000000..c9c607c --- /dev/null +++ b/src/main/java/com/clone/wanted/application/requestDto/EstimateRequestDto.java @@ -0,0 +1,10 @@ +package com.clone.wanted.application.requestDto; + +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Getter +public class EstimateRequestDto { + public String applicationStatus; +} From 84d60beb9a806563925999ac3d88ed5a08dfecb2 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:15:02 +0900 Subject: [PATCH 08/29] =?UTF-8?q?#34=20=EC=A7=80=EC=9B=90=20status?= =?UTF-8?q?=EB=A5=BC=20=EB=B3=80=EA=B2=BD=ED=95=98=EB=8A=94=20api=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clone/wanted/application/ApplicationController.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/clone/wanted/application/ApplicationController.java b/src/main/java/com/clone/wanted/application/ApplicationController.java index cdb08a5..154aab5 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationController.java +++ b/src/main/java/com/clone/wanted/application/ApplicationController.java @@ -1,5 +1,6 @@ package com.clone.wanted.application; +import com.clone.wanted.application.requestDto.EstimateRequestDto; import com.clone.wanted.config.BaseResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -12,11 +13,17 @@ public class ApplicationController { /** * @param email * @return BaseResponse - * TODO: spring security 단 이후 Authentication 으로 변경 + * TODO: spring security 단 이후 email 을 Authentication 으로 변경 */ @PostMapping("api/v1/applications/{employmentId}") public BaseResponse enroll(@RequestBody String email, @PathVariable Long employmentId) { applicationService.enroll(email, employmentId); return BaseResponse.success(); } + + @PatchMapping("api/v1/applications/{employmentId}/estimate") + public BaseResponse estimate(@RequestBody String email, @RequestBody EstimateRequestDto requestDto, @PathVariable Long employmentId){ + applicationService.estimate(email, requestDto, employmentId); + return BaseResponse.success(); + } } From a41785adafefeec32df2b08856b13762d2876f2b Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:15:27 +0900 Subject: [PATCH 09/29] =?UTF-8?q?#34=20=EC=A7=80=EC=9B=90=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EB=A5=BC=20=EB=B3=80=EA=B2=BD=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wanted/application/ApplicationService.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java index 4a7cc23..42464f4 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationService.java +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -2,6 +2,7 @@ import com.clone.wanted.User.User; import com.clone.wanted.User.UserRepository; +import com.clone.wanted.application.requestDto.EstimateRequestDto; import com.clone.wanted.config.BaseException; import com.clone.wanted.config.BaseResponseStatus; import com.clone.wanted.employment.Employment; @@ -22,11 +23,21 @@ public void enroll(String email, Long employmentId) { User user = userRepository.findByEmail(email) .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); Employment employment = employmentRepository.findById(employmentId) - .orElseThrow(() -> new BaseException(BaseResponseStatus.Employment_NOT_FOUND)); + .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); applicationRepository.findByUserAndEmployment(user, employment) .ifPresent((application -> { throw new BaseException(BaseResponseStatus.APPLICATION_ALREADY_EXIST); })); applicationRepository.save(Application.newEnrollment(user, employment)); } + + public void estimate(String email, EstimateRequestDto requestDto, Long employmentId) { + User user = userRepository.findByEmail(email) + .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); + Employment employment = employmentRepository.findById(employmentId) + .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); + Application application = applicationRepository.findByUserAndEmployment(user, employment) + .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); + application.updateStatus(ApplicationStatus.returnStatus(requestDto.getApplicationStatus())); + } } From f3de5f73cdf9282905e98a6264ec28abbcfdfd01 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:15:51 +0900 Subject: [PATCH 10/29] =?UTF-8?q?#34=20string=20=EA=B0=92=EC=9D=84=20statu?= =?UTF-8?q?s=EB=A1=9C=20=EB=B3=80=EA=B2=BD=ED=95=98=EA=B8=B0=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/clone/wanted/application/ApplicationStatus.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/clone/wanted/application/ApplicationStatus.java b/src/main/java/com/clone/wanted/application/ApplicationStatus.java index 18480de..79653f3 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationStatus.java +++ b/src/main/java/com/clone/wanted/application/ApplicationStatus.java @@ -1,5 +1,11 @@ package com.clone.wanted.application; public enum ApplicationStatus { - ONGOING, CANCEL, FAIL, PASS + ONGOING, CANCEL, FAIL, PASS; + public static ApplicationStatus returnStatus(String type){ + if(type.equals("ONGOING")) return ApplicationStatus.ONGOING; + if(type.equals("CANCEL")) return ApplicationStatus.CANCEL; + if(type.equals("FAIL")) return ApplicationStatus.FAIL; + return ApplicationStatus.PASS; + } } From 412c06d4979f6e023cd459e5c25775335a77aa19 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:16:10 +0900 Subject: [PATCH 11/29] =?UTF-8?q?#34=20=EC=A7=80=EC=9B=90=20=EA=B3=B5?= =?UTF-8?q?=EA=B3=A0=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EC=8B=9C=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=EA=B0=80=EB=8A=A5=ED=95=9C=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EC=B2=98=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/clone/wanted/config/BaseResponseStatus.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java index 5d38363..ea433b1 100644 --- a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java +++ b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java @@ -49,12 +49,13 @@ public enum BaseResponseStatus { /** * 6000 : Employment Exception */ - Employment_NOT_FOUND(false, 6000, "해당 공고를 찾을 수 없습니다."), + EMPLOYMENT_NOT_FOUND(false, 6000, "해당 공고를 찾을 수 없습니다."), /** * 7000 : Employment Exception */ - APPLICATION_ALREADY_EXIST(false, 7000, "이미 지원한 공고입니다."); + APPLICATION_ALREADY_EXIST(false, 7000, "이미 지원한 공고입니다."), + APPLICATION_NOT_EXIST(false, 7000, "지원 내역이 존재하지 않습니다."); private boolean isSuccess; From 88bd154539a2fc4b6f23bbd1cdf3caf6f0829464 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:19:26 +0900 Subject: [PATCH 12/29] =?UTF-8?q?#34=20=ED=9A=8C=EC=82=AC=20=EA=B3=84?= =?UTF-8?q?=EC=A0=95=EB=A7=8C=20=EC=A7=80=EC=9B=90=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/clone/wanted/application/ApplicationService.java | 2 ++ src/main/java/com/clone/wanted/config/BaseResponseStatus.java | 1 + 2 files changed, 3 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java index 42464f4..f31a543 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationService.java +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -2,6 +2,7 @@ import com.clone.wanted.User.User; import com.clone.wanted.User.UserRepository; +import com.clone.wanted.User.UserType; import com.clone.wanted.application.requestDto.EstimateRequestDto; import com.clone.wanted.config.BaseException; import com.clone.wanted.config.BaseResponseStatus; @@ -34,6 +35,7 @@ public void enroll(String email, Long employmentId) { public void estimate(String email, EstimateRequestDto requestDto, Long employmentId) { User user = userRepository.findByEmail(email) .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); + if(user.getUserType() == UserType.CORPORATE_USER) throw new BaseException(BaseResponseStatus.REQUEST_NOT_ALLOWED); Employment employment = employmentRepository.findById(employmentId) .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); Application application = applicationRepository.findByUserAndEmployment(user, employment) diff --git a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java index ea433b1..5ed44ec 100644 --- a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java +++ b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java @@ -44,6 +44,7 @@ public enum BaseResponseStatus { * 5000 : User Exception */ USER_NOT_FOUND(false, 5000, "해당 유저를 찾을 수 없습니다."), + REQUEST_NOT_ALLOWED(false, 5001, "해당 기능을 사용할 권한이 없습니다."), /** From 263e11635cdda4b9101d9bd46e734f36e18920fa Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:19:26 +0900 Subject: [PATCH 13/29] =?UTF-8?q?#34=20feat:=20=ED=9A=8C=EC=82=AC=20?= =?UTF-8?q?=EA=B3=84=EC=A0=95=EB=A7=8C=20=EC=A7=80=EC=9B=90=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B3=80=EA=B2=BD=20=EA=B0=80=EB=8A=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/clone/wanted/application/ApplicationService.java | 2 ++ src/main/java/com/clone/wanted/config/BaseResponseStatus.java | 1 + 2 files changed, 3 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java index 42464f4..f31a543 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationService.java +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -2,6 +2,7 @@ import com.clone.wanted.User.User; import com.clone.wanted.User.UserRepository; +import com.clone.wanted.User.UserType; import com.clone.wanted.application.requestDto.EstimateRequestDto; import com.clone.wanted.config.BaseException; import com.clone.wanted.config.BaseResponseStatus; @@ -34,6 +35,7 @@ public void enroll(String email, Long employmentId) { public void estimate(String email, EstimateRequestDto requestDto, Long employmentId) { User user = userRepository.findByEmail(email) .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); + if(user.getUserType() == UserType.CORPORATE_USER) throw new BaseException(BaseResponseStatus.REQUEST_NOT_ALLOWED); Employment employment = employmentRepository.findById(employmentId) .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); Application application = applicationRepository.findByUserAndEmployment(user, employment) diff --git a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java index ea433b1..5ed44ec 100644 --- a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java +++ b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java @@ -44,6 +44,7 @@ public enum BaseResponseStatus { * 5000 : User Exception */ USER_NOT_FOUND(false, 5000, "해당 유저를 찾을 수 없습니다."), + REQUEST_NOT_ALLOWED(false, 5001, "해당 기능을 사용할 권한이 없습니다."), /** From 5db94333b4920f99a1afc7373c75d732d4193e6f Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:23:03 +0900 Subject: [PATCH 14/29] =?UTF-8?q?#34=20feat:=20=EC=A7=80=EC=9B=90=20?= =?UTF-8?q?=EC=B7=A8=EC=86=8C=20api=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/clone/wanted/application/ApplicationController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationController.java b/src/main/java/com/clone/wanted/application/ApplicationController.java index 154aab5..f597a52 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationController.java +++ b/src/main/java/com/clone/wanted/application/ApplicationController.java @@ -26,4 +26,10 @@ public BaseResponse estimate(@RequestBody String email, @RequestBody Estim applicationService.estimate(email, requestDto, employmentId); return BaseResponse.success(); } + + @PatchMapping("api/v1/applications/{employmentId}/cancel") + public BaseResponse cancel(@RequestBody String email, @PathVariable Long employmentId){ + applicationService.cancel(email, employmentId); + return BaseResponse.success(); + } } From 22f8df915340d4f3d7e607e02e4e3f628ef48f52 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:23:16 +0900 Subject: [PATCH 15/29] =?UTF-8?q?#34=20feat:=20=EC=A7=80=EC=9B=90=20?= =?UTF-8?q?=EC=B7=A8=EC=86=8C=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clone/wanted/application/ApplicationService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java index f31a543..6b4d8a2 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationService.java +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -42,4 +42,14 @@ public void estimate(String email, EstimateRequestDto requestDto, Long employmen .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); application.updateStatus(ApplicationStatus.returnStatus(requestDto.getApplicationStatus())); } + + public void cancel(String email, Long employmentId) { + User user = userRepository.findByEmail(email) + .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); + Employment employment = employmentRepository.findById(employmentId) + .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); + Application application = applicationRepository.findByUserAndEmployment(user, employment) + .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); + application.updateStatus(ApplicationStatus.CANCEL); + } } From b774a94fc0b09f304144ded59bcf2204f27bcb15 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:25:42 +0900 Subject: [PATCH 16/29] =?UTF-8?q?#34=20feat:=20=EC=B7=A8=EC=86=8C=ED=95=9C?= =?UTF-8?q?=20=EA=B3=B5=EA=B3=A0=EB=A5=BC=20=EB=8B=A4=EC=8B=9C=20=EC=A7=80?= =?UTF-8?q?=EC=9B=90=ED=95=98=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 취소상태인 것을 지원중인 상태로 변경하는 로직 --- .../java/com/clone/wanted/application/ApplicationService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java index 6b4d8a2..c94c514 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationService.java +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -27,7 +27,9 @@ public void enroll(String email, Long employmentId) { .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); applicationRepository.findByUserAndEmployment(user, employment) .ifPresent((application -> { - throw new BaseException(BaseResponseStatus.APPLICATION_ALREADY_EXIST); + if(application.getApplicationStatus() == ApplicationStatus.CANCEL) { + application.updateStatus(ApplicationStatus.ONGOING); + } else throw new BaseException(BaseResponseStatus.APPLICATION_ALREADY_EXIST); })); applicationRepository.save(Application.newEnrollment(user, employment)); } From 857fae177eade71d3421c0b39ef65f417cd2e32f Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 17:59:59 +0900 Subject: [PATCH 17/29] =?UTF-8?q?#34=20feat:=20result=20=EA=B0=92=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8=ED=95=98=EC=97=AC=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=ED=95=98=EB=8A=94=20BaseResponse=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/clone/wanted/config/BaseResponse.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/clone/wanted/config/BaseResponse.java b/src/main/java/com/clone/wanted/config/BaseResponse.java index 785bea2..76eb195 100644 --- a/src/main/java/com/clone/wanted/config/BaseResponse.java +++ b/src/main/java/com/clone/wanted/config/BaseResponse.java @@ -40,6 +40,9 @@ public BaseResponse() { public static BaseResponse success(){ return new BaseResponse<>(); } + public static BaseResponse success(T result){ + return new BaseResponse<>(result); + } // 요청에 실패한 경우 public BaseResponse(BaseResponseStatus status){ From e3bb85068c40dc28422b003c7e95765d795200f1 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:01:32 +0900 Subject: [PATCH 18/29] =?UTF-8?q?#34=20feat:=20front=EC=97=90=20=EC=A7=80?= =?UTF-8?q?=EC=9B=90=20=EB=82=A0=EC=A7=9C=20=EC=A0=84=EB=8B=AC=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=9C=84=ED=95=9C=20getter=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/clone/wanted/BaseEntity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/clone/wanted/BaseEntity.java b/src/main/java/com/clone/wanted/BaseEntity.java index 282a470..e825e09 100644 --- a/src/main/java/com/clone/wanted/BaseEntity.java +++ b/src/main/java/com/clone/wanted/BaseEntity.java @@ -3,12 +3,14 @@ import jakarta.persistence.Column; import jakarta.persistence.EntityListeners; import jakarta.persistence.MappedSuperclass; +import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.LocalDateTime; +@Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseEntity { From ee7e580c288d2433bb5314d27c55fca5f92b6c24 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:02:16 +0900 Subject: [PATCH 19/29] =?UTF-8?q?#34=20feat:=20=EC=9C=A0=EC=A0=80=EA=B0=80?= =?UTF-8?q?=20=EB=B3=B8=EC=9D=B8=EC=9D=B4=20=EC=A7=80=EC=9B=90=ED=95=9C=20?= =?UTF-8?q?=EA=B3=B5=EA=B3=A0=EB=A5=BC=20=EB=AA=A8=EC=95=84=20=EB=B3=BC=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8A=94=20api=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clone/wanted/application/ApplicationController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationController.java b/src/main/java/com/clone/wanted/application/ApplicationController.java index f597a52..bf939b3 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationController.java +++ b/src/main/java/com/clone/wanted/application/ApplicationController.java @@ -1,10 +1,13 @@ package com.clone.wanted.application; import com.clone.wanted.application.requestDto.EstimateRequestDto; +import com.clone.wanted.application.responseDto.UserApplicationResponseDto; import com.clone.wanted.config.BaseResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor public class ApplicationController { @@ -32,4 +35,9 @@ public BaseResponse cancel(@RequestBody String email, @PathVariable Long e applicationService.cancel(email, employmentId); return BaseResponse.success(); } + + @GetMapping("api/v1/applications") + public BaseResponse> getUserApplicationList(@RequestBody String email){ + return BaseResponse.success(applicationService.getUserApplications(email)); + } } From 07a1c81635ec4131bf2b6bdf093656f866cf6968 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:02:40 +0900 Subject: [PATCH 20/29] =?UTF-8?q?#34=20feat:=20=EC=9C=A0=EC=A0=80=EA=B0=80?= =?UTF-8?q?=20=EB=B3=B8=EC=9D=B8=EC=9D=B4=20=EC=A7=80=EC=9B=90=ED=95=9C=20?= =?UTF-8?q?=EA=B3=B5=EA=B3=A0=EB=A5=BC=20=EB=AA=A8=EC=95=84=20=EB=B3=BC=20?= =?UTF-8?q?=EC=88=98=20=EB=95=8C=20=EB=B3=B4=EB=8A=94=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20Dto=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserApplicationResponseDto.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/com/clone/wanted/application/responseDto/UserApplicationResponseDto.java diff --git a/src/main/java/com/clone/wanted/application/responseDto/UserApplicationResponseDto.java b/src/main/java/com/clone/wanted/application/responseDto/UserApplicationResponseDto.java new file mode 100644 index 0000000..f3c0eb0 --- /dev/null +++ b/src/main/java/com/clone/wanted/application/responseDto/UserApplicationResponseDto.java @@ -0,0 +1,29 @@ +package com.clone.wanted.application.responseDto; + +import com.clone.wanted.application.Application; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class UserApplicationResponseDto { + private Long employmentId; + private String companyName; + private String position; + private LocalDateTime registerDate; + private String applicationStatus; + + public static UserApplicationResponseDto of(Application application){ + return new UserApplicationResponseDto( + application.getEmployment().getId(), + application.getEmployment().getCompany().getCompanyName(), + application.getEmployment().getEmploymentTitle(), + application.getCreatedAt(), + application.getApplicationStatus().name()); + } +} From 74850a0b024b3d8c3bd7a88ee14a9b047a43a2f1 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:02:53 +0900 Subject: [PATCH 21/29] =?UTF-8?q?#34=20feat:=20=EC=9C=A0=EC=A0=80=EA=B0=80?= =?UTF-8?q?=20=EB=B3=B8=EC=9D=B8=EC=9D=B4=20=EC=A7=80=EC=9B=90=ED=95=9C=20?= =?UTF-8?q?=EA=B3=B5=EA=B3=A0=EB=A5=BC=20=EB=AA=A8=EC=95=84=20=EB=B3=BC=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8A=94=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clone/wanted/application/ApplicationService.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java index c94c514..26f81e4 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationService.java +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -4,6 +4,7 @@ import com.clone.wanted.User.UserRepository; import com.clone.wanted.User.UserType; import com.clone.wanted.application.requestDto.EstimateRequestDto; +import com.clone.wanted.application.responseDto.UserApplicationResponseDto; import com.clone.wanted.config.BaseException; import com.clone.wanted.config.BaseResponseStatus; import com.clone.wanted.employment.Employment; @@ -12,6 +13,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @Transactional @@ -54,4 +57,13 @@ public void cancel(String email, Long employmentId) { .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); application.updateStatus(ApplicationStatus.CANCEL); } + + public List getUserApplications(String email) { + User user = userRepository.findByEmail(email) + .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); + return applicationRepository.findAllByUser(user) + .stream() + .map(UserApplicationResponseDto::of) + .toList(); + } } From 0b677037b5da8d4a50f9e7fa5cae968bba175a6f Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:03:09 +0900 Subject: [PATCH 22/29] =?UTF-8?q?#34=20feat:=20=EC=9C=A0=EC=A0=80=EA=B0=80?= =?UTF-8?q?=20=EB=B3=B8=EC=9D=B8=EC=9D=B4=20=EC=A7=80=EC=9B=90=ED=95=9C=20?= =?UTF-8?q?=EA=B3=B5=EA=B3=A0=EB=A5=BC=20=EC=A1=B0=ED=9A=8C=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/clone/wanted/application/ApplicationRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationRepository.java b/src/main/java/com/clone/wanted/application/ApplicationRepository.java index 0bc638d..743ab1b 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationRepository.java +++ b/src/main/java/com/clone/wanted/application/ApplicationRepository.java @@ -5,10 +5,12 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository interface ApplicationRepository extends JpaRepository { Optional findByUserAndEmployment(User suer, Employment employment); + List findAllByUser(User user); } From ce6ee6ea0eeb22c6da81cd6bfda2b3c3964b7fbf Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:28:20 +0900 Subject: [PATCH 23/29] =?UTF-8?q?#34=20feat:=20=ED=9A=8C=EC=82=AC=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EA=B4=80=EB=A0=A8=20=EC=98=88=EC=99=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/clone/wanted/config/BaseResponseStatus.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java index 5ed44ec..de33636 100644 --- a/src/main/java/com/clone/wanted/config/BaseResponseStatus.java +++ b/src/main/java/com/clone/wanted/config/BaseResponseStatus.java @@ -56,7 +56,12 @@ public enum BaseResponseStatus { * 7000 : Employment Exception */ APPLICATION_ALREADY_EXIST(false, 7000, "이미 지원한 공고입니다."), - APPLICATION_NOT_EXIST(false, 7000, "지원 내역이 존재하지 않습니다."); + APPLICATION_NOT_EXIST(false, 7001, "지원 내역이 존재하지 않습니다."), + + /** + * 8000 : Employment Exception + */ + COMPANY_NOT_FOUND(false, 8000, "해당 유저가 관리하는 회사 정보가 없습니다."); private boolean isSuccess; From f42767e2d42f3b65fad92c383931c0cdd7e86204 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:28:44 +0900 Subject: [PATCH 24/29] =?UTF-8?q?#34=20feat:=20=ED=9A=8C=EC=82=AC=EA=B0=80?= =?UTF-8?q?=20=ED=8A=B9=EC=A0=95=20=EA=B3=B5=EA=B3=A0=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=B4=20=EC=A7=80=EC=9B=90=EC=9E=90=EB=A5=BC=20=EB=B0=9B?= =?UTF-8?q?=EC=95=84=EB=B3=B4=EB=8A=94=20api=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/clone/wanted/application/ApplicationController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationController.java b/src/main/java/com/clone/wanted/application/ApplicationController.java index bf939b3..343cbb1 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationController.java +++ b/src/main/java/com/clone/wanted/application/ApplicationController.java @@ -1,6 +1,7 @@ package com.clone.wanted.application; import com.clone.wanted.application.requestDto.EstimateRequestDto; +import com.clone.wanted.application.responseDto.CompanyApplicationResponseDto; import com.clone.wanted.application.responseDto.UserApplicationResponseDto; import com.clone.wanted.config.BaseResponse; import lombok.RequiredArgsConstructor; @@ -40,4 +41,9 @@ public BaseResponse cancel(@RequestBody String email, @PathVariable Long e public BaseResponse> getUserApplicationList(@RequestBody String email){ return BaseResponse.success(applicationService.getUserApplications(email)); } + + @GetMapping("api/v1/applications/{employmentId}") + public BaseResponse> getCompanyApplicationList(@RequestBody String email, @PathVariable Long employmentId){ + return BaseResponse.success(applicationService.getCompanyApplications(email, employmentId)); + } } From 6ac16b0511608d3041ff8f09a2e2f4967702ae84 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:29:10 +0900 Subject: [PATCH 25/29] =?UTF-8?q?#34=20feat:=20=ED=9A=8C=EC=82=AC=EA=B0=80?= =?UTF-8?q?=20=ED=8A=B9=EC=A0=95=20=EA=B3=B5=EA=B3=A0=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=B4=20=EC=A7=80=EC=9B=90=EC=9E=90=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=9B=EC=95=84=EB=B3=B4=EB=8A=94=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/ApplicationService.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationService.java b/src/main/java/com/clone/wanted/application/ApplicationService.java index 26f81e4..5c90aa6 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationService.java +++ b/src/main/java/com/clone/wanted/application/ApplicationService.java @@ -1,9 +1,12 @@ package com.clone.wanted.application; +import com.clone.wanted.Company.Company; +import com.clone.wanted.Company.CompanyRepository; import com.clone.wanted.User.User; import com.clone.wanted.User.UserRepository; import com.clone.wanted.User.UserType; import com.clone.wanted.application.requestDto.EstimateRequestDto; +import com.clone.wanted.application.responseDto.CompanyApplicationResponseDto; import com.clone.wanted.application.responseDto.UserApplicationResponseDto; import com.clone.wanted.config.BaseException; import com.clone.wanted.config.BaseResponseStatus; @@ -23,6 +26,7 @@ public class ApplicationService { private final UserRepository userRepository; private final EmploymentRepository employmentRepository; private final ApplicationRepository applicationRepository; + private final CompanyRepository companyRepository; public void enroll(String email, Long employmentId) { User user = userRepository.findByEmail(email) .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); @@ -66,4 +70,19 @@ public List getUserApplications(String email) { .map(UserApplicationResponseDto::of) .toList(); } + + public List getCompanyApplications(String email, Long employmentId) { + User user = userRepository.findByEmail(email) + .orElseThrow(() -> new BaseException(BaseResponseStatus.USER_NOT_FOUND)); + if(user.getUserType() == UserType.CORPORATE_USER) throw new BaseException(BaseResponseStatus.REQUEST_NOT_ALLOWED); + Company company = companyRepository.findByUser(user) + .orElseThrow(() -> new BaseException(BaseResponseStatus.COMPANY_NOT_FOUND)); + if(company.getUser() != user) throw new BaseException(BaseResponseStatus.REQUEST_NOT_ALLOWED); + Employment employment = employmentRepository.findById(employmentId) + .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPLOYMENT_NOT_FOUND)); + return applicationRepository.findAllByEmployment(employment) + .stream() + .map(CompanyApplicationResponseDto::of) + .toList(); + } } From a438cbc563d662236073098e76580f57f2b457f6 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:29:21 +0900 Subject: [PATCH 26/29] =?UTF-8?q?#34=20feat:=20=ED=9A=8C=EC=82=AC=EA=B0=80?= =?UTF-8?q?=20=ED=8A=B9=EC=A0=95=20=EA=B3=B5=EA=B3=A0=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=B4=20=EC=A7=80=EC=9B=90=EC=9E=90=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/clone/wanted/application/ApplicationRepository.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/clone/wanted/application/ApplicationRepository.java b/src/main/java/com/clone/wanted/application/ApplicationRepository.java index 743ab1b..40811d7 100644 --- a/src/main/java/com/clone/wanted/application/ApplicationRepository.java +++ b/src/main/java/com/clone/wanted/application/ApplicationRepository.java @@ -13,4 +13,5 @@ interface ApplicationRepository extends JpaRepository { Optional findByUserAndEmployment(User suer, Employment employment); List findAllByUser(User user); + List findAllByEmployment(Employment employment); } From 842de9a6566abac87b7e9a88b31c43232da32fc6 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:29:38 +0900 Subject: [PATCH 27/29] =?UTF-8?q?#34=20feat:=20=ED=9A=8C=EC=82=AC=EA=B0=80?= =?UTF-8?q?=20=ED=8A=B9=EC=A0=95=20=EA=B3=B5=EA=B3=A0=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=B4=20=EC=A7=80=EC=9B=90=EC=9E=90=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20Dto=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyApplicationResponseDto.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/com/clone/wanted/application/responseDto/CompanyApplicationResponseDto.java diff --git a/src/main/java/com/clone/wanted/application/responseDto/CompanyApplicationResponseDto.java b/src/main/java/com/clone/wanted/application/responseDto/CompanyApplicationResponseDto.java new file mode 100644 index 0000000..87994b4 --- /dev/null +++ b/src/main/java/com/clone/wanted/application/responseDto/CompanyApplicationResponseDto.java @@ -0,0 +1,29 @@ +package com.clone.wanted.application.responseDto; + +import com.clone.wanted.application.Application; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class CompanyApplicationResponseDto { + + private Long employmentId; + private String username; + private String position; + private LocalDateTime registerDate; + private String applicationStatus; + + public static CompanyApplicationResponseDto of(Application application){ + return new CompanyApplicationResponseDto( + application.getEmployment().getId(), + application.getUser().getUsername(), + application.getEmployment().getEmploymentTitle(), + application.getCreatedAt(), + application.getApplicationStatus().name()); + } +} From d78b4deed5faf2e3df39bde4d4f81447d95ce394 Mon Sep 17 00:00:00 2001 From: shoeone96 Date: Fri, 1 Sep 2023 18:29:55 +0900 Subject: [PATCH 28/29] =?UTF-8?q?#34=20feat:=20=ED=9A=8C=EC=82=AC=EA=B0=80?= =?UTF-8?q?=20=ED=8A=B9=EC=A0=95=20=EA=B3=B5=EA=B3=A0=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=B4=20=EC=A7=80=EC=9B=90=EC=9E=90=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=9B=EC=95=84=EB=B3=B4=EA=B8=B0=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20=ED=9A=8C=EC=82=AC=20=EC=A1=B0=ED=9A=8C=20=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/clone/wanted/Company/CompanyRepository.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/clone/wanted/Company/CompanyRepository.java b/src/main/java/com/clone/wanted/Company/CompanyRepository.java index d2bc9eb..08d4e1a 100644 --- a/src/main/java/com/clone/wanted/Company/CompanyRepository.java +++ b/src/main/java/com/clone/wanted/Company/CompanyRepository.java @@ -1,8 +1,12 @@ package com.clone.wanted.Company; +import com.clone.wanted.User.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface CompanyRepository extends JpaRepository { + Optional findByUser(User user); } From 998b5fa0b850126a287084ff86e9551634e15f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=8A=B9=EC=A3=BC?= <112889287+WinsomeJoo@users.noreply.github.com> Date: Sat, 2 Sep 2023 11:55:53 +0900 Subject: [PATCH 29/29] =?UTF-8?q?#3=20feat:=20Dto=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=EC=97=90=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/clone/wanted/employment/Employment.java | 8 ++------ .../com/clone/wanted/employment/EmploymentController.java | 4 +++- .../com/clone/wanted/employment/EmploymentRepository.java | 8 ++++++++ .../com/clone/wanted/employment/EmploymentService.java | 6 +++--- .../employment/{ => requestDto}/EmploymentReqDto.java | 2 +- .../employment/{ => responseDto}/EmploymentAllResDto.java | 5 +++-- .../{ => responseDto}/EmploymentDetailResDto.java | 5 +++-- 7 files changed, 23 insertions(+), 15 deletions(-) rename src/main/java/com/clone/wanted/employment/{ => requestDto}/EmploymentReqDto.java (94%) rename src/main/java/com/clone/wanted/employment/{ => responseDto}/EmploymentAllResDto.java (86%) rename src/main/java/com/clone/wanted/employment/{ => responseDto}/EmploymentDetailResDto.java (83%) diff --git a/src/main/java/com/clone/wanted/employment/Employment.java b/src/main/java/com/clone/wanted/employment/Employment.java index b1a888f..0638d6a 100644 --- a/src/main/java/com/clone/wanted/employment/Employment.java +++ b/src/main/java/com/clone/wanted/employment/Employment.java @@ -3,14 +3,10 @@ import com.clone.wanted.BaseEntity; import com.clone.wanted.Company.Company; +import com.clone.wanted.employment.requestDto.EmploymentReqDto; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.annotations.DynamicInsert; -import org.hibernate.annotations.DynamicUpdate; - -import java.time.DateTimeException; -import java.time.LocalDateTime; @Getter @NoArgsConstructor @@ -35,7 +31,7 @@ public class Employment extends BaseEntity { private int applicantReward; - public Employment(Company company,EmploymentReqDto employmentReqDto) { + public Employment(Company company, EmploymentReqDto employmentReqDto) { this.company = company; this.employmentTitle = employmentReqDto.getEmploymentTitle(); this.employmentContents = employmentReqDto.getEmploymentTitle(); diff --git a/src/main/java/com/clone/wanted/employment/EmploymentController.java b/src/main/java/com/clone/wanted/employment/EmploymentController.java index ddd808e..a0a0140 100644 --- a/src/main/java/com/clone/wanted/employment/EmploymentController.java +++ b/src/main/java/com/clone/wanted/employment/EmploymentController.java @@ -2,8 +2,10 @@ import com.clone.wanted.config.BaseResponse; +import com.clone.wanted.employment.requestDto.EmploymentReqDto; +import com.clone.wanted.employment.responseDto.EmploymentAllResDto; +import com.clone.wanted.employment.responseDto.EmploymentDetailResDto; import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; diff --git a/src/main/java/com/clone/wanted/employment/EmploymentRepository.java b/src/main/java/com/clone/wanted/employment/EmploymentRepository.java index 03f8b39..52cc165 100644 --- a/src/main/java/com/clone/wanted/employment/EmploymentRepository.java +++ b/src/main/java/com/clone/wanted/employment/EmploymentRepository.java @@ -1,8 +1,16 @@ package com.clone.wanted.employment; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface EmploymentRepository extends JpaRepository { + + + @Query(value = "select e.hashtag_name from employment_hashtag e where e.employment_id=:employment_id",nativeQuery = true) + List findHashtagName(@Param("employment_id") Long employmentId); } diff --git a/src/main/java/com/clone/wanted/employment/EmploymentService.java b/src/main/java/com/clone/wanted/employment/EmploymentService.java index aed9c02..2843a62 100644 --- a/src/main/java/com/clone/wanted/employment/EmploymentService.java +++ b/src/main/java/com/clone/wanted/employment/EmploymentService.java @@ -2,13 +2,13 @@ import com.clone.wanted.Company.Company; import com.clone.wanted.Company.CompanyRepository; +import com.clone.wanted.employment.requestDto.EmploymentReqDto; +import com.clone.wanted.employment.responseDto.EmploymentAllResDto; +import com.clone.wanted.employment.responseDto.EmploymentDetailResDto; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/clone/wanted/employment/EmploymentReqDto.java b/src/main/java/com/clone/wanted/employment/requestDto/EmploymentReqDto.java similarity index 94% rename from src/main/java/com/clone/wanted/employment/EmploymentReqDto.java rename to src/main/java/com/clone/wanted/employment/requestDto/EmploymentReqDto.java index 170c0d9..362a27e 100644 --- a/src/main/java/com/clone/wanted/employment/EmploymentReqDto.java +++ b/src/main/java/com/clone/wanted/employment/requestDto/EmploymentReqDto.java @@ -1,4 +1,4 @@ -package com.clone.wanted.employment; +package com.clone.wanted.employment.requestDto; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clone/wanted/employment/EmploymentAllResDto.java b/src/main/java/com/clone/wanted/employment/responseDto/EmploymentAllResDto.java similarity index 86% rename from src/main/java/com/clone/wanted/employment/EmploymentAllResDto.java rename to src/main/java/com/clone/wanted/employment/responseDto/EmploymentAllResDto.java index 85df3bd..1497e27 100644 --- a/src/main/java/com/clone/wanted/employment/EmploymentAllResDto.java +++ b/src/main/java/com/clone/wanted/employment/responseDto/EmploymentAllResDto.java @@ -1,7 +1,8 @@ -package com.clone.wanted.employment; +package com.clone.wanted.employment.responseDto; import com.clone.wanted.Company.Company; +import com.clone.wanted.employment.Employment; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -21,7 +22,7 @@ public class EmploymentAllResDto { private String region; - public EmploymentAllResDto(Employment employment, Company company,int rewardSum) { + public EmploymentAllResDto(Employment employment, Company company, int rewardSum) { this.employmentId = employment.getId(); this.employmentTitle = employment.getEmploymentTitle(); this.rewardSum = rewardSum; diff --git a/src/main/java/com/clone/wanted/employment/EmploymentDetailResDto.java b/src/main/java/com/clone/wanted/employment/responseDto/EmploymentDetailResDto.java similarity index 83% rename from src/main/java/com/clone/wanted/employment/EmploymentDetailResDto.java rename to src/main/java/com/clone/wanted/employment/responseDto/EmploymentDetailResDto.java index ea9850e..58f4324 100644 --- a/src/main/java/com/clone/wanted/employment/EmploymentDetailResDto.java +++ b/src/main/java/com/clone/wanted/employment/responseDto/EmploymentDetailResDto.java @@ -1,6 +1,7 @@ -package com.clone.wanted.employment; +package com.clone.wanted.employment.responseDto; import com.clone.wanted.Company.Company; +import com.clone.wanted.employment.Employment; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -23,7 +24,7 @@ public class EmploymentDetailResDto { private List hashtagName; //상세 조회 생성자 - public EmploymentDetailResDto(Employment employment,Company company,int likeNum,List hashtagName) { + public EmploymentDetailResDto(Employment employment, Company company, int likeNum, List hashtagName) { this.employmentId = employment.getId(); this.employmentTitle = employment.getEmploymentTitle(); this.address = employment.getAddress();