From 2302037ac1e69004459d80805e22ca101eb7ab4f Mon Sep 17 00:00:00 2001 From: taeyeongKims Date: Fri, 17 Jan 2025 15:05:43 +0900 Subject: [PATCH 1/6] =?UTF-8?q?#81=20=EC=A2=85=EB=A3=8C=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=B9=B4=EC=9A=B4=ED=84=B0=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=EC=97=85=EB=8E=83=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OfferEmploymentController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java b/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java index 10789e30..b4923e1f 100644 --- a/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java +++ b/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java @@ -1,9 +1,12 @@ package com.example.api.offeremployment.controller; import com.example.api.offeremployment.OfferEmploymentService; +import com.example.api.offeremployment.dto.OfferEmploymentCompleteRequest; import com.example.api.offeremployment.dto.OfferEmploymentRequest; import com.example.api.offeremployment.dto.OfferEmploymentResponse; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -23,4 +26,12 @@ public ResponseEntity sendOfferEmployment( final OfferEmploymentResponse offerEmploymentResponse = offerEmploymentService.sendOfferEmployment(offerEmploymentRequest); return ResponseEntity.ok(offerEmploymentResponse); } + + @PostMapping + public ResponseEntity completeOfferEmployment( + @RequestBody final OfferEmploymentCompleteRequest completeRequest + ) { + offerEmploymentService.completeOfferEmployment(completeRequest); + return ResponseEntity.ok("성공적으로 종료되었습니다."); + } } \ No newline at end of file From ab38ab40588054886a86497aa0f817da746e7283 Mon Sep 17 00:00:00 2001 From: taeyeongKims Date: Fri, 17 Jan 2025 15:06:05 +0900 Subject: [PATCH 2/6] =?UTF-8?q?#81=20=EC=A2=85=EB=A3=8C=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=B9=B4=EC=9A=B4=ED=84=B0=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=EC=97=85=EB=8E=83=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../offeremployment/OfferEmploymentService.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java b/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java index 37f3853a..32dc5790 100644 --- a/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java +++ b/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java @@ -6,9 +6,8 @@ import com.example.api.domain.Business; import com.example.api.domain.OfferEmployment; import com.example.api.domain.repository.OfferEmploymentRepository; -import com.example.api.offeremployment.dto.OfferEmploymentCommand; -import com.example.api.offeremployment.dto.OfferEmploymentRequest; -import com.example.api.offeremployment.dto.OfferEmploymentResponse; +import com.example.api.offeremployment.dto.*; +import com.example.api.review.ReviewRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,6 +18,7 @@ public class OfferEmploymentService { private final OfferEmploymentRepository offerEmploymentRepository; private final AccountRepository accountRepository; private final BusinessRepository businessRepository; + private final ReviewRepository reviewRepository; @Transactional public OfferEmploymentResponse sendOfferEmployment(final OfferEmploymentRequest offerEmploymentRequest) { @@ -35,4 +35,14 @@ public OfferEmploymentResponse sendOfferEmployment(final OfferEmploymentRequest final OfferEmployment savedOfferEmployment = offerEmploymentRepository.save(offerEmployment); return OfferEmploymentResponse.fromEntity(savedOfferEmployment); } + + @Transactional + public void completeOfferEmployment(OfferEmploymentCompleteRequest completeRequest) { + // offerEmployment를 종료로 변경, 종료 시간 업뎃 + offerEmploymentRepository.updateSuggestStatusToFinishedBySuggestId(completeRequest.suggestId()); + // 알바생 평점 조정 + Integer reviewScore = reviewRepository.findReviewStarPointBySuggestId(completeRequest.suggestId()); + // 알바 횟수 count + 1 + accountRepository.updateWorkCountBySuggestId(completeRequest.suggestId(), reviewScore); + } } \ No newline at end of file From b4f04ac3df83799ed160adafa295106e5eea416a Mon Sep 17 00:00:00 2001 From: taeyeongKims Date: Fri, 17 Jan 2025 15:06:24 +0900 Subject: [PATCH 3/6] =?UTF-8?q?#81=20=EC=A2=85=EB=A3=8C=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=B9=B4=EC=9A=B4=ED=84=B0=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=EC=97=85=EB=8E=83=20dto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/OfferEmploymentCompleteRequest.java | 9 +++++++++ .../dto/StarPointAndWorkCountRequest.java | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100644 src/main/java/com/example/api/offeremployment/dto/OfferEmploymentCompleteRequest.java create mode 100644 src/main/java/com/example/api/offeremployment/dto/StarPointAndWorkCountRequest.java diff --git a/src/main/java/com/example/api/offeremployment/dto/OfferEmploymentCompleteRequest.java b/src/main/java/com/example/api/offeremployment/dto/OfferEmploymentCompleteRequest.java new file mode 100644 index 00000000..cd96ecd2 --- /dev/null +++ b/src/main/java/com/example/api/offeremployment/dto/OfferEmploymentCompleteRequest.java @@ -0,0 +1,9 @@ +package com.example.api.offeremployment.dto; + +import jakarta.validation.constraints.NotNull; + +public record OfferEmploymentCompleteRequest( + @NotNull Long suggestId, + @NotNull Long employeeId +) { +} \ No newline at end of file diff --git a/src/main/java/com/example/api/offeremployment/dto/StarPointAndWorkCountRequest.java b/src/main/java/com/example/api/offeremployment/dto/StarPointAndWorkCountRequest.java new file mode 100644 index 00000000..ef4a670a --- /dev/null +++ b/src/main/java/com/example/api/offeremployment/dto/StarPointAndWorkCountRequest.java @@ -0,0 +1,9 @@ +package com.example.api.offeremployment.dto; + +import jakarta.validation.constraints.NotNull; + +public record StarPointAndWorkCountRequest( + @NotNull float starPoint, + @NotNull int workCount +) { +} From ab4c8aa0a37cf478fc92ed6fd072d045d7b59cab Mon Sep 17 00:00:00 2001 From: taeyeongKims Date: Fri, 17 Jan 2025 15:07:24 +0900 Subject: [PATCH 4/6] =?UTF-8?q?#81(OfferEmployment)=20=EC=A2=85=EB=A3=8C?= =?UTF-8?q?=20=EC=A1=B0=EA=B1=B4=20=ED=99=95=EC=9D=B8=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=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/example/api/domain/OfferEmployment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/example/api/domain/OfferEmployment.java b/src/main/java/com/example/api/domain/OfferEmployment.java index b46b4c66..87197867 100644 --- a/src/main/java/com/example/api/domain/OfferEmployment.java +++ b/src/main/java/com/example/api/domain/OfferEmployment.java @@ -47,6 +47,9 @@ public class OfferEmployment { @Column(name = "SUGGEST_REGISTER_TIME") private LocalDateTime suggestRegisterTime; + @Column(name = "SUGGEST_FINISHED", columnDefinition = "boolean DEFAULT false") + private boolean suggestFinished; + public static OfferEmployment fromCommand(OfferEmploymentCommand offerEmploymentCommand, Account employee, Business business) { return new OfferEmployment( business, From 6d19f6c99ab2c37aeb92e4adb413496045410960 Mon Sep 17 00:00:00 2001 From: taeyeongKims Date: Fri, 17 Jan 2025 15:07:56 +0900 Subject: [PATCH 5/6] =?UTF-8?q?#81=20=EC=A2=85=EB=A3=8C=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=B9=B4=EC=9A=B4=ED=84=B0=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20repository=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/account/repository/AccountRepository.java | 12 +++++++++++- .../domain/repository/OfferEmploymentRepository.java | 10 +++++++++- .../com/example/api/review/ReviewRepository.java | 5 +++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/api/account/repository/AccountRepository.java b/src/main/java/com/example/api/account/repository/AccountRepository.java index cef6eae2..4622727f 100644 --- a/src/main/java/com/example/api/account/repository/AccountRepository.java +++ b/src/main/java/com/example/api/account/repository/AccountRepository.java @@ -1,11 +1,13 @@ package com.example.api.account.repository; import com.example.api.domain.Account; +import com.example.api.offeremployment.dto.StarPointAndWorkCountRequest; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.repository.query.Param; +import org.springframework.security.core.parameters.P; import java.util.Optional; @@ -22,7 +24,15 @@ public interface AccountRepository extends JpaRepository { @Query("SELECT a.profileImage FROM Account a WHERE a.accountId = :accountId") Optional findProfileImageByAccountId(@Param("accountId") Long accountId); - @Query("update Account a set a.profileImage = :profileImage where a.accountId = :accountId") @Modifying + @Query("update Account a set a.profileImage = :profileImage where a.accountId = :accountId") void updateProfileImageByAccountId(@Param("profileImage") String profileImage, @Param("accountId") Long accountId); + + @Modifying + @Query("update Account a " + + "set a.starPoint = ((a.starPoint * a.workCount) + :newStarPoint) / (a.workCount+1), " + + "a.workCount = a.workCount + 1 " + + "where a.accountId in " + + "(select oe.employee.accountId From OfferEmployment oe where oe.suggestId = :suggestId)") + void updateWorkCountBySuggestId(@Param("suggestId") Long suggestId, @Param("starPoint") Integer newStarPoint); } \ No newline at end of file diff --git a/src/main/java/com/example/api/domain/repository/OfferEmploymentRepository.java b/src/main/java/com/example/api/domain/repository/OfferEmploymentRepository.java index 89382a52..99b89712 100644 --- a/src/main/java/com/example/api/domain/repository/OfferEmploymentRepository.java +++ b/src/main/java/com/example/api/domain/repository/OfferEmploymentRepository.java @@ -2,7 +2,9 @@ import com.example.api.board.dto.response.InnerCareerDTO; import com.example.api.domain.OfferEmployment; +import jakarta.validation.constraints.NotNull; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @@ -28,4 +30,10 @@ public interface OfferEmploymentRepository extends JpaRepository findSuggestByOfferEmploymentId(@Param("OfferEmploymentId")long OfferEmploymentId); -} + + @Modifying + @Query("update OfferEmployment oe " + + "set oe.suggestFinished = true, oe.suggestEndTime = CURRENT_TIMESTAMP " + + "where oe.suggestFinished = :suggestId") + void updateSuggestStatusToFinishedBySuggestId(@Param("suggestId") Long suggestId); +} \ No newline at end of file diff --git a/src/main/java/com/example/api/review/ReviewRepository.java b/src/main/java/com/example/api/review/ReviewRepository.java index 07776345..98a21b28 100644 --- a/src/main/java/com/example/api/review/ReviewRepository.java +++ b/src/main/java/com/example/api/review/ReviewRepository.java @@ -1,7 +1,9 @@ package com.example.api.review; import com.example.api.domain.Review; +import jakarta.validation.constraints.NotNull; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @@ -28,6 +30,9 @@ public interface ReviewRepository extends JpaRepository { List findReviewsByAccountIdWithDetails(@Param("accountId") Long accountId); List findReviewsByEmployee_AccountId(Long accountId); + + @Query("select r.reviewStarPoint from Review r where r.reviewId = :suggestId") + Integer findReviewStarPointBySuggestId(@Param("suggestId") Long suggestId); } From 1bcb9e63e50488dbe71e28b9baea6de0a5116154 Mon Sep 17 00:00:00 2001 From: taeyeongKims Date: Fri, 17 Jan 2025 15:16:42 +0900 Subject: [PATCH 6/6] refactoring --- .../generated/com/example/api/domain/QOfferEmployment.java | 2 ++ .../com/example/api/account/repository/AccountRepository.java | 4 ++-- .../example/api/offeremployment/OfferEmploymentService.java | 2 +- .../offeremployment/controller/OfferEmploymentController.java | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/generated/com/example/api/domain/QOfferEmployment.java b/src/main/generated/com/example/api/domain/QOfferEmployment.java index a6634fba..9f79f3ce 100644 --- a/src/main/generated/com/example/api/domain/QOfferEmployment.java +++ b/src/main/generated/com/example/api/domain/QOfferEmployment.java @@ -30,6 +30,8 @@ public class QOfferEmployment extends EntityPathBase { public final DateTimePath suggestEndTime = createDateTime("suggestEndTime", java.time.LocalDateTime.class); + public final BooleanPath suggestFinished = createBoolean("suggestFinished"); + public final NumberPath suggestHourlyPay = createNumber("suggestHourlyPay", Integer.class); public final NumberPath suggestId = createNumber("suggestId", Long.class); diff --git a/src/main/java/com/example/api/account/repository/AccountRepository.java b/src/main/java/com/example/api/account/repository/AccountRepository.java index 4622727f..363aa6f5 100644 --- a/src/main/java/com/example/api/account/repository/AccountRepository.java +++ b/src/main/java/com/example/api/account/repository/AccountRepository.java @@ -30,9 +30,9 @@ public interface AccountRepository extends JpaRepository { @Modifying @Query("update Account a " + - "set a.starPoint = ((a.starPoint * a.workCount) + :newStarPoint) / (a.workCount+1), " + + "set a.starPoint = ((a.starPoint * a.workCount) + :starPoint) / (a.workCount+1), " + "a.workCount = a.workCount + 1 " + "where a.accountId in " + "(select oe.employee.accountId From OfferEmployment oe where oe.suggestId = :suggestId)") - void updateWorkCountBySuggestId(@Param("suggestId") Long suggestId, @Param("starPoint") Integer newStarPoint); + void updateWorkCountAndStarPointBySuggestId(@Param("suggestId") Long suggestId, @Param("starPoint") Integer newStarPoint); } \ No newline at end of file diff --git a/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java b/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java index 32dc5790..0d855656 100644 --- a/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java +++ b/src/main/java/com/example/api/offeremployment/OfferEmploymentService.java @@ -43,6 +43,6 @@ public void completeOfferEmployment(OfferEmploymentCompleteRequest completeReque // 알바생 평점 조정 Integer reviewScore = reviewRepository.findReviewStarPointBySuggestId(completeRequest.suggestId()); // 알바 횟수 count + 1 - accountRepository.updateWorkCountBySuggestId(completeRequest.suggestId(), reviewScore); + accountRepository.updateWorkCountAndStarPointBySuggestId(completeRequest.suggestId(), reviewScore); } } \ No newline at end of file diff --git a/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java b/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java index b4923e1f..3fa02cd6 100644 --- a/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java +++ b/src/main/java/com/example/api/offeremployment/controller/OfferEmploymentController.java @@ -27,7 +27,7 @@ public ResponseEntity sendOfferEmployment( return ResponseEntity.ok(offerEmploymentResponse); } - @PostMapping + @PostMapping("/complete") public ResponseEntity completeOfferEmployment( @RequestBody final OfferEmploymentCompleteRequest completeRequest ) {