From 8512b3403ea6ad195868432667ccb81556badb53 Mon Sep 17 00:00:00 2001 From: letskuku Date: Mon, 20 Jan 2025 14:34:22 +0900 Subject: [PATCH 01/14] =?UTF-8?q?#280=20feat:=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EC=88=98=EC=88=98=EB=A3=8C=EC=9C=A8=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/sharemind/global/constants/Constants.java | 2 +- .../java/com/example/sharemind/payment/domain/Payment.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/sharemind/global/constants/Constants.java b/src/main/java/com/example/sharemind/global/constants/Constants.java index a45a672f..8d8e5f7a 100644 --- a/src/main/java/com/example/sharemind/global/constants/Constants.java +++ b/src/main/java/com/example/sharemind/global/constants/Constants.java @@ -19,7 +19,7 @@ public class Constants { public static final Boolean IS_CHAT = true; public static final Boolean IS_LETTER = false; - public static final Double FEE = 0.2; + public static final Double BASE_FEE = 0.25; public static final Long MAX_COMMENTS = 5L; } diff --git a/src/main/java/com/example/sharemind/payment/domain/Payment.java b/src/main/java/com/example/sharemind/payment/domain/Payment.java index 5e40e467..1ac982b7 100644 --- a/src/main/java/com/example/sharemind/payment/domain/Payment.java +++ b/src/main/java/com/example/sharemind/payment/domain/Payment.java @@ -17,7 +17,7 @@ import java.time.LocalDateTime; -import static com.example.sharemind.global.constants.Constants.FEE; +import static com.example.sharemind.global.constants.Constants.BASE_FEE; @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @@ -66,7 +66,7 @@ public class Payment extends BaseEntity { public Payment(String customerPhoneNumber, Consult consult) { this.customerPhoneNumber = customerPhoneNumber; this.consult = consult; - this.fee = Math.round(consult.getCost() * FEE); + this.fee = Math.round(consult.getCost() * BASE_FEE); this.isPaid = false; updateBothStatusNone(); } From 664920f6cfdfdf7a8f7e40c30bf7671bdc3aab8c Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 19:14:11 +0900 Subject: [PATCH 02/14] =?UTF-8?q?#280=20feat:=20=EA=B2=BD=ED=97=98?= =?UTF-8?q?=EC=B9=98=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sharemind/customer/domain/Customer.java | 5 ++ .../sharemind/customer/domain/Experience.java | 56 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/main/java/com/example/sharemind/customer/domain/Experience.java diff --git a/src/main/java/com/example/sharemind/customer/domain/Customer.java b/src/main/java/com/example/sharemind/customer/domain/Customer.java index efdf1106..b88dd868 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Customer.java +++ b/src/main/java/com/example/sharemind/customer/domain/Customer.java @@ -45,12 +45,17 @@ public class Customer extends BaseEntity { @JoinColumn(name = "quit_id", unique = true) private Quit quit; + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "experience_id", unique = true) + private Experience experience; + @Builder public Customer(String email, String password) { this.nickname = "셰어" + new Random().nextInt(999999); this.email = email; this.password = password; this.isBanned = false; + this.experience = Experience.builder().build(); this.roles = new ArrayList<>() {{ add(Role.ROLE_CUSTOMER); diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Experience.java new file mode 100644 index 00000000..e9960486 --- /dev/null +++ b/src/main/java/com/example/sharemind/customer/domain/Experience.java @@ -0,0 +1,56 @@ +package com.example.sharemind.customer.domain; + +import com.example.sharemind.global.common.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Entity +public class Experience extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "experience_id") + private Long experienceId; + + @Column(name = "post_create", nullable = false) + private Long postCreate; + + @Column(name = "post_answer", nullable = false) + private Long postAnswer; + + @Column(name = "post_choose", nullable = false) + private Long postChoose; + + @Column(name = "post_chosen", nullable = false) + private Long postChosen; + + @Column(name = "post_popularity_create", nullable = false) + private Long postPopularityCreate; + + @Column(name = "post_popularity_answer", nullable = false) + private Long postPopularityAnswer; + + @Column(name = "post_popularity_chosen", nullable = false) + private Long postPopularity_chosen; + + @Column(name = "level", nullable = false) + private Long level; + + @Builder + public Experience() { + this.postCreate = 0L; + this.postAnswer = 0L; + this.postChoose = 0L; + this.postChosen = 0L; + this.postPopularityCreate = 0L; + this.postPopularityAnswer = 0L; + this.postPopularity_chosen = 0L; + this.level = 0L; + } +} From b6916334a9f2c8817742f399289848003a5473cf Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 19:34:40 +0900 Subject: [PATCH 03/14] =?UTF-8?q?#280=20feat:=20=EA=B2=BD=ED=97=98?= =?UTF-8?q?=EC=B9=98=20=EC=97=94=ED=8B=B0=ED=8B=B0=EC=97=90=20=EC=88=98?= =?UTF-8?q?=EC=88=98=EB=A3=8C=20=EC=B6=94=EA=B0=80=20=ED=95=A0=EC=9D=B8?= =?UTF-8?q?=EB=A5=A0=20=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 --- .../example/sharemind/customer/domain/Experience.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Experience.java index e9960486..b01059eb 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Experience.java +++ b/src/main/java/com/example/sharemind/customer/domain/Experience.java @@ -37,11 +37,14 @@ public class Experience extends BaseEntity { private Long postPopularityAnswer; @Column(name = "post_popularity_chosen", nullable = false) - private Long postPopularity_chosen; + private Long postPopularityChosen; @Column(name = "level", nullable = false) private Long level; + @Column(name = "extra_discount", nullable = false) + private Double extraDiscount; + @Builder public Experience() { this.postCreate = 0L; @@ -50,7 +53,8 @@ public Experience() { this.postChosen = 0L; this.postPopularityCreate = 0L; this.postPopularityAnswer = 0L; - this.postPopularity_chosen = 0L; - this.level = 0L; + this.postPopularityChosen = 0L; + this.level = 1L; + this.extraDiscount = 0.0; } } From 33ffcc7aa34bd03b1f2450180024aee2d1275ea2 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 19:37:05 +0900 Subject: [PATCH 04/14] =?UTF-8?q?#280=20feat:=20=EA=B3=B5=EA=B0=9C?= =?UTF-8?q?=EC=83=81=EB=8B=B4=20=EC=A7=88=EB=AC=B8=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EA=B2=BD=ED=97=98=EC=B9=98=20?= =?UTF-8?q?=EA=B0=80=EC=A0=90=20=EB=B6=80=EC=97=AC=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sharemind/customer/domain/Experience.java | 42 +++++++++++++++++++ .../example/sharemind/post/domain/Post.java | 4 ++ 2 files changed, 46 insertions(+) diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Experience.java index b01059eb..9d417955 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Experience.java +++ b/src/main/java/com/example/sharemind/customer/domain/Experience.java @@ -57,4 +57,46 @@ public Experience() { this.level = 1L; this.extraDiscount = 0.0; } + + public void increasePostCreate() { + this.postCreate++; + updateLevelAndExtraFee(); + } + + private void updateLevelAndExtraFee() { + long total = this.postCreate + this.postAnswer + this.postChoose + this.postChosen + + this.postPopularityCreate + this.postPopularityAnswer + this.postPopularityChosen; + + if (total == 0) { + this.level = 1L; + this.extraDiscount = 0.0; + } else if (total <= 7) { + this.level = 2L; + this.extraDiscount = 0.01; + } else if (total <= 15) { + this.level = 3L; + this.extraDiscount = 0.02; + } else if (total <= 25) { + this.level = 4L; + this.extraDiscount = 0.03; + } else if (total <= 100) { + this.level = 5L; + this.extraDiscount = 0.05; + } else if (total <= 500) { + this.level = 6L; + this.extraDiscount = 0.06; + } else if (total <= 1500) { + this.level = 7L; + this.extraDiscount = 0.07; + } else if (total <= 4000) { + this.level = 8L; + this.extraDiscount = 0.08; + } else if (total <= 10000) { + this.level = 9L; + this.extraDiscount = 0.09; + } else { + this.level = 10L; + this.extraDiscount = 0.1; + } + } } diff --git a/src/main/java/com/example/sharemind/post/domain/Post.java b/src/main/java/com/example/sharemind/post/domain/Post.java index 06d8aea2..5ac8c7a2 100644 --- a/src/main/java/com/example/sharemind/post/domain/Post.java +++ b/src/main/java/com/example/sharemind/post/domain/Post.java @@ -126,6 +126,10 @@ public void updatePostStatus(PostStatus postStatus) { if (this.postStatus == PostStatus.PROCEEDING) { this.publishedAt = LocalDateTime.now(); + + if (this.isPublic) { + this.customer.getExperience().increasePostCreate(); + } } else if (this.postStatus == PostStatus.COMPLETED || this.postStatus == PostStatus.TIME_OUT) { this.finishedAt = LocalDateTime.now().withNano(0); } From 933d3a7effa0adc74f4c4826b07d668f1db0e62e Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 19:44:45 +0900 Subject: [PATCH 05/14] =?UTF-8?q?#280=20feat:=20=EA=B3=B5=EA=B0=9C?= =?UTF-8?q?=EC=83=81=EB=8B=B4=20=EB=8B=B5=EB=B3=80=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EA=B2=BD=ED=97=98=EC=B9=98=20?= =?UTF-8?q?=EA=B0=80=EC=A0=90=20=EB=B6=80=EC=97=AC=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comment/application/CommentServiceImpl.java | 4 ++++ .../example/sharemind/customer/domain/Experience.java | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java index 107c457a..03ef0418 100644 --- a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java +++ b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java @@ -89,6 +89,10 @@ public void createComment(CommentCreateRequest commentCreateRequest, Long custom commentRepository.save(commentCreateRequest.toEntity(post, counselor)); post.increaseTotalComment(); counselor.increaseTotalConsult(); + + if (post.getIsPublic()) { + customerService.getCustomerByCounselor(counselor).getExperience().increasePostAnswer(); + } } @Override diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Experience.java index 9d417955..23895d30 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Experience.java +++ b/src/main/java/com/example/sharemind/customer/domain/Experience.java @@ -60,10 +60,15 @@ public Experience() { public void increasePostCreate() { this.postCreate++; - updateLevelAndExtraFee(); + updateLevelAndExtraDiscount(); } - private void updateLevelAndExtraFee() { + public void increasePostAnswer() { + this.postAnswer++; + updateLevelAndExtraDiscount(); + } + + private void updateLevelAndExtraDiscount() { long total = this.postCreate + this.postAnswer + this.postChoose + this.postChosen + this.postPopularityCreate + this.postPopularityAnswer + this.postPopularityChosen; From c296ed7e1050c69d5461aa391c01c487a7befef9 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 19:47:34 +0900 Subject: [PATCH 06/14] =?UTF-8?q?#280=20feat:=20=EA=B3=B5=EA=B0=9C?= =?UTF-8?q?=EC=83=81=EB=8B=B4=20=EB=8B=B5=EB=B3=80=EC=9D=84=20=EC=B1=84?= =?UTF-8?q?=ED=83=9D=ED=95=9C=20=EC=A7=88=EB=AC=B8=EC=9E=90=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=EA=B2=BD=ED=97=98=EC=B9=98=20=EA=B0=80?= =?UTF-8?q?=EC=A0=90=20=EB=B6=80=EC=97=AC=20=EB=A1=9C=EC=A7=81=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sharemind/comment/application/CommentServiceImpl.java | 3 +++ .../com/example/sharemind/customer/domain/Experience.java | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java index 03ef0418..b077eff2 100644 --- a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java +++ b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java @@ -114,6 +114,9 @@ public void updateCustomerChosenComment(Long postId, Long commentId, Long custom comment.checkCommentIsForPost(post); comment.updateIsChosen(); + if (post.getIsPublic()) { + customer.getExperience().increasePostChoose(); + } post.updatePostStatus(PostStatus.COMPLETED); } diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Experience.java index 23895d30..7a6d43b7 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Experience.java +++ b/src/main/java/com/example/sharemind/customer/domain/Experience.java @@ -68,6 +68,11 @@ public void increasePostAnswer() { updateLevelAndExtraDiscount(); } + public void increasePostChoose() { + this.postChoose++; + updateLevelAndExtraDiscount(); + } + private void updateLevelAndExtraDiscount() { long total = this.postCreate + this.postAnswer + this.postChoose + this.postChosen + this.postPopularityCreate + this.postPopularityAnswer + this.postPopularityChosen; From 7cde1bd6af06c98ab7e9d24d96e02ff39c2def91 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 19:52:12 +0900 Subject: [PATCH 07/14] =?UTF-8?q?#280=20feat:=20=EA=B3=B5=EA=B0=9C?= =?UTF-8?q?=EC=83=81=EB=8B=B4=20=EB=8B=B5=EB=B3=80=EC=9D=B4=20=EC=B1=84?= =?UTF-8?q?=ED=83=9D=EB=90=9C=20=EB=8B=B5=EB=B3=80=EC=9E=90=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=EA=B2=BD=ED=97=98=EC=B9=98=20=EA=B0=80?= =?UTF-8?q?=EC=A0=90=20=EB=B6=80=EC=97=AC=20=EB=A1=9C=EC=A7=81=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comment/application/CommentServiceImpl.java | 10 ++++++++-- .../example/sharemind/customer/domain/Experience.java | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java index b077eff2..ac339f6f 100644 --- a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java +++ b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java @@ -11,6 +11,7 @@ import com.example.sharemind.counselor.domain.Counselor; import com.example.sharemind.customer.application.CustomerService; import com.example.sharemind.customer.domain.Customer; +import com.example.sharemind.customer.domain.Experience; import com.example.sharemind.post.application.PostService; import com.example.sharemind.post.content.PostStatus; import com.example.sharemind.post.domain.Post; @@ -91,7 +92,8 @@ public void createComment(CommentCreateRequest commentCreateRequest, Long custom counselor.increaseTotalConsult(); if (post.getIsPublic()) { - customerService.getCustomerByCounselor(counselor).getExperience().increasePostAnswer(); + Experience counselorExperience = customerService.getCustomerByCounselor(counselor).getExperience(); + counselorExperience.increasePostAnswer(); } } @@ -115,7 +117,11 @@ public void updateCustomerChosenComment(Long postId, Long commentId, Long custom comment.updateIsChosen(); if (post.getIsPublic()) { - customer.getExperience().increasePostChoose(); + Experience customerExperience = customer.getExperience(); + customerExperience.increasePostChoose(); + + Experience counselorExperience = customerService.getCustomerByCounselor(comment.getCounselor()).getExperience(); + counselorExperience.increasePostChosen(); } post.updatePostStatus(PostStatus.COMPLETED); diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Experience.java index 7a6d43b7..d89bc43f 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Experience.java +++ b/src/main/java/com/example/sharemind/customer/domain/Experience.java @@ -73,6 +73,11 @@ public void increasePostChoose() { updateLevelAndExtraDiscount(); } + public void increasePostChosen() { + this.postChosen += 3; + updateLevelAndExtraDiscount(); + } + private void updateLevelAndExtraDiscount() { long total = this.postCreate + this.postAnswer + this.postChoose + this.postChosen + this.postPopularityCreate + this.postPopularityAnswer + this.postPopularityChosen; From ae632ffc4a979b2f10c2e4bca917b5746f6c03f0 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 20:22:34 +0900 Subject: [PATCH 08/14] =?UTF-8?q?#280=20feat:=20=EA=B3=B5=EA=B0=9C?= =?UTF-8?q?=EC=83=81=EB=8B=B4=20=EC=9D=B8=EA=B8=B0=EA=B8=80=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=ED=99=95=EC=9D=B8=ED=95=98=EB=8A=94=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/sharemind/post/domain/Post.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/example/sharemind/post/domain/Post.java b/src/main/java/com/example/sharemind/post/domain/Post.java index 5ac8c7a2..f893eaac 100644 --- a/src/main/java/com/example/sharemind/post/domain/Post.java +++ b/src/main/java/com/example/sharemind/post/domain/Post.java @@ -88,6 +88,9 @@ public class Post extends BaseEntity { @Column(name = "is_completed") private Boolean isCompleted; + @Column(name = "is_Popular") + private Boolean isPopular; + @Column(name = "published_at") private LocalDateTime publishedAt; @@ -104,9 +107,14 @@ public Post(Customer customer, Long cost, Boolean isPublic, String customerPhone this.totalComment = 0L; this.totalScrap = 0L; this.customerPhoneNumber = customerPhoneNumber; + this.isPopular = false; setIsPaid(isPublic); } + public void updateIsPopular() { + this.isPopular = true; + } + public void updatePayAppId(String payAppId) { this.payAppId = payAppId; } From 0e7a9fc3b384fa6e39f6f3cd62664a5d0fee1830 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 20:23:32 +0900 Subject: [PATCH 09/14] =?UTF-8?q?#280=20feat:=20=EA=B3=B5=EA=B0=9C?= =?UTF-8?q?=EC=83=81=EB=8B=B4=20=EC=9D=B8=EA=B8=B0=EA=B8=80=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EA=B2=BD=ED=97=98=EC=B9=98=20=EA=B0=80=EC=A0=90=20?= =?UTF-8?q?=EB=B6=80=EC=97=AC=20=EB=A1=9C=EC=A7=81=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/CommentServiceImpl.java | 3 +++ .../sharemind/customer/domain/Experience.java | 15 +++++++++++++ .../post/application/PostServiceImpl.java | 21 ++++++++++++++++++- .../post/repository/PostCustomRepository.java | 2 ++ .../repository/PostCustomRepositoryImpl.java | 13 ++++++++++++ 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java index ac339f6f..f5f4c935 100644 --- a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java +++ b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java @@ -122,6 +122,9 @@ public void updateCustomerChosenComment(Long postId, Long commentId, Long custom Experience counselorExperience = customerService.getCustomerByCounselor(comment.getCounselor()).getExperience(); counselorExperience.increasePostChosen(); + if (post.getIsPopular()) { + counselorExperience.increasePostPopularityChosen(); + } } post.updatePostStatus(PostStatus.COMPLETED); diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Experience.java index d89bc43f..4e51d4af 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Experience.java +++ b/src/main/java/com/example/sharemind/customer/domain/Experience.java @@ -78,6 +78,21 @@ public void increasePostChosen() { updateLevelAndExtraDiscount(); } + public void increasePostPopularityCreate() { + this.postPopularityCreate += 3; + updateLevelAndExtraDiscount(); + } + + public void increasePostPopularityAnswer() { + this.postPopularityAnswer += 2; + updateLevelAndExtraDiscount(); + } + + public void increasePostPopularityChosen() { + this.postPopularityChosen += 3; + updateLevelAndExtraDiscount(); + } + private void updateLevelAndExtraDiscount() { long total = this.postCreate + this.postAnswer + this.postChoose + this.postChosen + this.postPopularityCreate + this.postPopularityAnswer + this.postPopularityChosen; diff --git a/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java b/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java index 8de8042b..f29ed0df 100644 --- a/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java +++ b/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java @@ -6,6 +6,7 @@ import com.example.sharemind.counselor.domain.Counselor; import com.example.sharemind.customer.application.CustomerService; import com.example.sharemind.customer.domain.Customer; +import com.example.sharemind.customer.domain.Experience; import com.example.sharemind.global.common.BaseEntity; import com.example.sharemind.global.content.ConsultCategory; import com.example.sharemind.post.content.PostListSortType; @@ -253,12 +254,30 @@ public Boolean getIsPostOwner(Long postId, Long customerId) { @Scheduled(cron = "0 0 0/1 * * *", zone = "Asia/Seoul") @Transactional - public void checkPostStatus() { + public void checkPostStatusAndPopularity() { postRepository.findAllWaitingPublicPostsAfter24Hours() .forEach(BaseEntity::updateIsActivatedFalse); postRepository.findAllCommentedProceedingPublicPostsAfter72Hours() .forEach(post -> post.updatePostStatus(PostStatus.TIME_OUT)); + + postRepository.findNewPopularityPosts() + .forEach(post -> { + post.updateIsPopular(); + + Experience customerExperience = post.getCustomer().getExperience(); + customerExperience.increasePostPopularityCreate(); + + commentRepository.findByPostAndIsActivatedIsTrue(post).forEach(comment -> { + Experience counselorExperience = customerService.getCustomerByCounselor( + comment.getCounselor()).getExperience(); + counselorExperience.increasePostPopularityAnswer(); + + if (comment.getIsChosen()) { + counselorExperience.increasePostPopularityChosen(); + } + }); + }); } private Boolean checkCounselorReadAuthority(Long postId, Long customerId) { diff --git a/src/main/java/com/example/sharemind/post/repository/PostCustomRepository.java b/src/main/java/com/example/sharemind/post/repository/PostCustomRepository.java index 55831c1d..3c9311b7 100644 --- a/src/main/java/com/example/sharemind/post/repository/PostCustomRepository.java +++ b/src/main/java/com/example/sharemind/post/repository/PostCustomRepository.java @@ -14,6 +14,8 @@ List findAllByCustomerAndIsActivatedIsTrue(Customer customer, Boolean filt List findAllByIsPublicAndIsActivatedIsTrue(Long postId, LocalDateTime finishedAt, int size); + List findNewPopularityPosts(); + List findPopularityPosts(Long postId, LocalDateTime finishedAt, int size); List getPostByWordWithSortType(SearchWordPostFindRequest searchWordPostFindRequest, diff --git a/src/main/java/com/example/sharemind/post/repository/PostCustomRepositoryImpl.java b/src/main/java/com/example/sharemind/post/repository/PostCustomRepositoryImpl.java index 13709e5b..f4c04b99 100644 --- a/src/main/java/com/example/sharemind/post/repository/PostCustomRepositoryImpl.java +++ b/src/main/java/com/example/sharemind/post/repository/PostCustomRepositoryImpl.java @@ -47,6 +47,19 @@ public List findAllByIsPublicAndIsActivatedIsTrue(Long postId, LocalDateTi ).orderBy(post.finishedAt.desc(), post.postId.desc()).limit(size).fetch(); } + @Override + public List findNewPopularityPosts() { + return jpaQueryFactory + .selectFrom(post) + .where( + post.isPublic.isTrue(), + post.isPopular.isFalse(), + post.postStatus.in(PostStatus.TIME_OUT, PostStatus.COMPLETED), + post.totalLike.goe(10), + post.isActivated.isTrue() + ).fetch(); + } + @Override public List findPopularityPosts(Long postId, LocalDateTime finishedAt, int size) { return jpaQueryFactory From 427d38e301e94bccb98133fbcd0177c6e2df0ddf Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 20:41:21 +0900 Subject: [PATCH 10/14] =?UTF-8?q?#280=20refactor:=20=EA=B2=BD=ED=97=98?= =?UTF-8?q?=EC=B9=98=20=EC=97=94=ED=8B=B0=ED=8B=B0=EB=AA=85=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comment/application/CommentServiceImpl.java | 14 +++++++------- .../sharemind/customer/domain/Customer.java | 8 ++++---- .../domain/{Experience.java => Level.java} | 8 ++++---- .../post/application/PostServiceImpl.java | 14 +++++++------- .../com/example/sharemind/post/domain/Post.java | 2 +- 5 files changed, 23 insertions(+), 23 deletions(-) rename src/main/java/com/example/sharemind/customer/domain/{Experience.java => Level.java} (96%) diff --git a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java index f5f4c935..b7d61499 100644 --- a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java +++ b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java @@ -11,7 +11,7 @@ import com.example.sharemind.counselor.domain.Counselor; import com.example.sharemind.customer.application.CustomerService; import com.example.sharemind.customer.domain.Customer; -import com.example.sharemind.customer.domain.Experience; +import com.example.sharemind.customer.domain.Level; import com.example.sharemind.post.application.PostService; import com.example.sharemind.post.content.PostStatus; import com.example.sharemind.post.domain.Post; @@ -92,7 +92,7 @@ public void createComment(CommentCreateRequest commentCreateRequest, Long custom counselor.increaseTotalConsult(); if (post.getIsPublic()) { - Experience counselorExperience = customerService.getCustomerByCounselor(counselor).getExperience(); + Level counselorExperience = customerService.getCustomerByCounselor(counselor).getLevel(); counselorExperience.increasePostAnswer(); } } @@ -117,13 +117,13 @@ public void updateCustomerChosenComment(Long postId, Long commentId, Long custom comment.updateIsChosen(); if (post.getIsPublic()) { - Experience customerExperience = customer.getExperience(); - customerExperience.increasePostChoose(); + Level customerLevel = customer.getLevel(); + customerLevel.increasePostChoose(); - Experience counselorExperience = customerService.getCustomerByCounselor(comment.getCounselor()).getExperience(); - counselorExperience.increasePostChosen(); + Level counselorLevel = customerService.getCustomerByCounselor(comment.getCounselor()).getLevel(); + counselorLevel.increasePostChosen(); if (post.getIsPopular()) { - counselorExperience.increasePostPopularityChosen(); + counselorLevel.increasePostPopularityChosen(); } } diff --git a/src/main/java/com/example/sharemind/customer/domain/Customer.java b/src/main/java/com/example/sharemind/customer/domain/Customer.java index b88dd868..f15ba07f 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Customer.java +++ b/src/main/java/com/example/sharemind/customer/domain/Customer.java @@ -45,9 +45,9 @@ public class Customer extends BaseEntity { @JoinColumn(name = "quit_id", unique = true) private Quit quit; - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "experience_id", unique = true) - private Experience experience; + @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) + @JoinColumn(name = "level_id", unique = true) + private Level level; @Builder public Customer(String email, String password) { @@ -55,7 +55,7 @@ public Customer(String email, String password) { this.email = email; this.password = password; this.isBanned = false; - this.experience = Experience.builder().build(); + this.level = Level.builder().build(); this.roles = new ArrayList<>() {{ add(Role.ROLE_CUSTOMER); diff --git a/src/main/java/com/example/sharemind/customer/domain/Experience.java b/src/main/java/com/example/sharemind/customer/domain/Level.java similarity index 96% rename from src/main/java/com/example/sharemind/customer/domain/Experience.java rename to src/main/java/com/example/sharemind/customer/domain/Level.java index 4e51d4af..3a269179 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Experience.java +++ b/src/main/java/com/example/sharemind/customer/domain/Level.java @@ -11,12 +11,12 @@ @Getter @Entity -public class Experience extends BaseEntity { +public class Level extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "experience_id") - private Long experienceId; + @Column(name = "level_id") + private Long levelId; @Column(name = "post_create", nullable = false) private Long postCreate; @@ -46,7 +46,7 @@ public class Experience extends BaseEntity { private Double extraDiscount; @Builder - public Experience() { + public Level() { this.postCreate = 0L; this.postAnswer = 0L; this.postChoose = 0L; diff --git a/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java b/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java index f29ed0df..aa1bfbc2 100644 --- a/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java +++ b/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java @@ -6,7 +6,7 @@ import com.example.sharemind.counselor.domain.Counselor; import com.example.sharemind.customer.application.CustomerService; import com.example.sharemind.customer.domain.Customer; -import com.example.sharemind.customer.domain.Experience; +import com.example.sharemind.customer.domain.Level; import com.example.sharemind.global.common.BaseEntity; import com.example.sharemind.global.content.ConsultCategory; import com.example.sharemind.post.content.PostListSortType; @@ -265,16 +265,16 @@ public void checkPostStatusAndPopularity() { .forEach(post -> { post.updateIsPopular(); - Experience customerExperience = post.getCustomer().getExperience(); - customerExperience.increasePostPopularityCreate(); + Level customerLevel = post.getCustomer().getLevel(); + customerLevel.increasePostPopularityCreate(); commentRepository.findByPostAndIsActivatedIsTrue(post).forEach(comment -> { - Experience counselorExperience = customerService.getCustomerByCounselor( - comment.getCounselor()).getExperience(); - counselorExperience.increasePostPopularityAnswer(); + Level counselorLevel = customerService.getCustomerByCounselor( + comment.getCounselor()).getLevel(); + counselorLevel.increasePostPopularityAnswer(); if (comment.getIsChosen()) { - counselorExperience.increasePostPopularityChosen(); + counselorLevel.increasePostPopularityChosen(); } }); }); diff --git a/src/main/java/com/example/sharemind/post/domain/Post.java b/src/main/java/com/example/sharemind/post/domain/Post.java index f893eaac..043e1032 100644 --- a/src/main/java/com/example/sharemind/post/domain/Post.java +++ b/src/main/java/com/example/sharemind/post/domain/Post.java @@ -136,7 +136,7 @@ public void updatePostStatus(PostStatus postStatus) { this.publishedAt = LocalDateTime.now(); if (this.isPublic) { - this.customer.getExperience().increasePostCreate(); + this.customer.getLevel().increasePostCreate(); } } else if (this.postStatus == PostStatus.COMPLETED || this.postStatus == PostStatus.TIME_OUT) { this.finishedAt = LocalDateTime.now().withNano(0); From 617b1d842dea066ed0246646c15a86deed4b4a1d Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 20:57:01 +0900 Subject: [PATCH 11/14] =?UTF-8?q?#280=20refactor:=20=EA=B2=BD=ED=97=98?= =?UTF-8?q?=EC=B9=98=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EB=82=B4=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sharemind/customer/domain/Level.java | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/example/sharemind/customer/domain/Level.java b/src/main/java/com/example/sharemind/customer/domain/Level.java index 3a269179..e7c6e082 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Level.java +++ b/src/main/java/com/example/sharemind/customer/domain/Level.java @@ -39,8 +39,8 @@ public class Level extends BaseEntity { @Column(name = "post_popularity_chosen", nullable = false) private Long postPopularityChosen; - @Column(name = "level", nullable = false) - private Long level; + @Column(name = "grade", nullable = false) + private Integer grade; @Column(name = "extra_discount", nullable = false) private Double extraDiscount; @@ -54,78 +54,78 @@ public Level() { this.postPopularityCreate = 0L; this.postPopularityAnswer = 0L; this.postPopularityChosen = 0L; - this.level = 1L; + this.grade = 1; this.extraDiscount = 0.0; } public void increasePostCreate() { this.postCreate++; - updateLevelAndExtraDiscount(); + updateGradeAndExtraDiscount(); } public void increasePostAnswer() { this.postAnswer++; - updateLevelAndExtraDiscount(); + updateGradeAndExtraDiscount(); } public void increasePostChoose() { this.postChoose++; - updateLevelAndExtraDiscount(); + updateGradeAndExtraDiscount(); } public void increasePostChosen() { this.postChosen += 3; - updateLevelAndExtraDiscount(); + updateGradeAndExtraDiscount(); } public void increasePostPopularityCreate() { this.postPopularityCreate += 3; - updateLevelAndExtraDiscount(); + updateGradeAndExtraDiscount(); } public void increasePostPopularityAnswer() { this.postPopularityAnswer += 2; - updateLevelAndExtraDiscount(); + updateGradeAndExtraDiscount(); } public void increasePostPopularityChosen() { this.postPopularityChosen += 3; - updateLevelAndExtraDiscount(); + updateGradeAndExtraDiscount(); } - private void updateLevelAndExtraDiscount() { + private void updateGradeAndExtraDiscount() { long total = this.postCreate + this.postAnswer + this.postChoose + this.postChosen + this.postPopularityCreate + this.postPopularityAnswer + this.postPopularityChosen; if (total == 0) { - this.level = 1L; + this.grade = 1; this.extraDiscount = 0.0; } else if (total <= 7) { - this.level = 2L; + this.grade = 2; this.extraDiscount = 0.01; } else if (total <= 15) { - this.level = 3L; + this.grade = 3; this.extraDiscount = 0.02; } else if (total <= 25) { - this.level = 4L; + this.grade = 4; this.extraDiscount = 0.03; } else if (total <= 100) { - this.level = 5L; + this.grade = 5; this.extraDiscount = 0.05; } else if (total <= 500) { - this.level = 6L; + this.grade = 6; this.extraDiscount = 0.06; } else if (total <= 1500) { - this.level = 7L; + this.grade = 7; this.extraDiscount = 0.07; } else if (total <= 4000) { - this.level = 8L; + this.grade = 8; this.extraDiscount = 0.08; } else if (total <= 10000) { - this.level = 9L; + this.grade = 9; this.extraDiscount = 0.09; } else { - this.level = 10L; + this.grade = 10; this.extraDiscount = 0.1; } } From 8aa461052d9e0d0c8f3eb85a866c9e35caf87e48 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 20:59:20 +0900 Subject: [PATCH 12/14] =?UTF-8?q?#280=20feat:=20=EC=83=81=EB=8B=B4?= =?UTF-8?q?=EC=82=AC=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=8B=9C=20=EA=B2=BD=ED=97=98=EC=B9=98=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=EC=99=80=20=EC=97=B0=EA=B2=B0=EB=90=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=A1=9C=EC=A7=81=20=EC=83=9D=EC=84=B1=20=EB=B0=8F?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/ConsultCreateResponse.java | 2 +- .../sharemind/counselor/domain/Counselor.java | 17 +++++++++-------- .../response/CounselorGetBannerResponse.java | 2 +- .../CounselorGetForConsultResponse.java | 5 +++-- .../dto/response/CounselorGetInfoResponse.java | 5 +++-- .../dto/response/CounselorGetListResponse.java | 2 +- .../CounselorGetMinderProfileResponse.java | 2 +- .../response/CounselorGetWishListResponse.java | 2 +- .../sharemind/customer/domain/Customer.java | 1 + .../sharemind/payment/domain/Payment.java | 3 ++- .../review/dto/response/ReviewGetResponse.java | 5 +++-- 11 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/example/sharemind/consult/dto/response/ConsultCreateResponse.java b/src/main/java/com/example/sharemind/consult/dto/response/ConsultCreateResponse.java index 8ada4310..59c88a0b 100644 --- a/src/main/java/com/example/sharemind/consult/dto/response/ConsultCreateResponse.java +++ b/src/main/java/com/example/sharemind/consult/dto/response/ConsultCreateResponse.java @@ -48,7 +48,7 @@ public static ConsultCreateResponse of(Consult consult, Counselor counselor) { .collect(Collectors.toSet()); return new ConsultCreateResponse(consult.getConsultId(), - counselor.getNickname(), counselor.getLevel(), counselor.getRatingAverage(), + counselor.getNickname(), counselor.getLevel().getGrade(), counselor.getRatingAverage(), counselor.getTotalReview(), consultCategories, counselor.getConsultStyle().getDisplayName(), consult.getConsultType().getDisplayName(), consult.getCost()); } diff --git a/src/main/java/com/example/sharemind/counselor/domain/Counselor.java b/src/main/java/com/example/sharemind/counselor/domain/Counselor.java index 03ad2056..98e5a94a 100644 --- a/src/main/java/com/example/sharemind/counselor/domain/Counselor.java +++ b/src/main/java/com/example/sharemind/counselor/domain/Counselor.java @@ -3,6 +3,7 @@ import com.example.sharemind.counselor.content.ProfileStatus; import com.example.sharemind.counselor.exception.CounselorErrorCode; import com.example.sharemind.counselor.exception.CounselorException; +import com.example.sharemind.customer.domain.Level; import com.example.sharemind.global.common.BaseEntity; import com.example.sharemind.global.content.ConsultCategory; import com.example.sharemind.counselor.content.ConsultStyle; @@ -24,7 +25,6 @@ public class Counselor extends BaseEntity { private static final Integer RETRY_EDUCATION_OFFSET = 1; - private static final Integer COUNSELOR_BASIC_LEVEL = 1; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -90,10 +90,6 @@ public class Counselor extends BaseEntity { @Column(columnDefinition = "TEXT") private String introduction; - @PositiveOrZero(message = "상담사 레벨은 0 이상입니다.") - @Column(nullable = false) - private Integer level; - private String account; private String bank; @@ -119,11 +115,14 @@ public class Counselor extends BaseEntity { @JoinColumn(name = "settlement_id", unique = true) private Settlement settlement; + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "level_id", unique = true) + private Level level; + @Builder public Counselor(String nickname, String email) { this.nickname = nickname; this.email = email; - this.level = 0; this.totalReview = 0L; this.ratingAverage = 0.0; this.profileStatus = ProfileStatus.NO_PROFILE; @@ -132,6 +131,10 @@ public Counselor(String nickname, String email) { this.settlement = Settlement.builder().build(); } + public void setLevel(Level level) { + this.level = level; + } + public Long getConsultCost(ConsultType consultType) { return this.consultCosts.stream() .filter(consultCost -> consultCost.getConsultType().equals(consultType)) @@ -172,8 +175,6 @@ public void updateIsEducated(Boolean isEducated) { if (isEducated.equals(false)) { this.retryEducation = LocalDateTime.now().plusDays(RETRY_EDUCATION_OFFSET); - } else { - this.level = COUNSELOR_BASIC_LEVEL; } } diff --git a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetBannerResponse.java b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetBannerResponse.java index 57213fe3..c790a699 100644 --- a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetBannerResponse.java +++ b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetBannerResponse.java @@ -40,6 +40,6 @@ public static CounselorGetBannerResponse of(Counselor counselor) { return new CounselorGetBannerResponse(counselor.getCounselorId(), counselor.getNickname(), CounselorUtil.convertConsultCategories(counselor), counselor.getConsultStyle().getDisplayName(), counselor.getIntroduction(), - counselor.getLevel(), counselor.getTotalReview(), counselor.getRatingAverage()); + counselor.getLevel().getGrade(), counselor.getTotalReview(), counselor.getRatingAverage()); } } diff --git a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetForConsultResponse.java b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetForConsultResponse.java index c88e6762..1f02b439 100644 --- a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetForConsultResponse.java +++ b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetForConsultResponse.java @@ -49,8 +49,9 @@ public static CounselorGetForConsultResponse of(Counselor counselor, ConsultType .map(ConsultCategory::getDisplayName) .toList(); - return new CounselorGetForConsultResponse(counselor.getCounselorId(), counselor.getNickname(), - counselor.getLevel(), counselor.getRatingAverage(), counselor.getTotalReview(), consultCategories, + return new CounselorGetForConsultResponse(counselor.getCounselorId(), + counselor.getNickname(), counselor.getLevel().getGrade(), + counselor.getRatingAverage(), counselor.getTotalReview(), consultCategories, counselor.getConsultStyle().getDisplayName(), consultType.getDisplayName(), counselor.getConsultCost(consultType), counselor.getTotalConsult()); } diff --git a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetInfoResponse.java b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetInfoResponse.java index d0d0c1f7..28a27324 100644 --- a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetInfoResponse.java +++ b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetInfoResponse.java @@ -36,8 +36,9 @@ public static CounselorGetInfoResponse of(Counselor counselor) { if (counselor.getConsultStyle() != null) { consultStyle = counselor.getConsultStyle().getDisplayName(); } - - return new CounselorGetInfoResponse(counselor.getNickname(), counselor.getLevel(), consultStyle, counselor.getIsEducated(), + + return new CounselorGetInfoResponse(counselor.getNickname(), + counselor.getLevel().getGrade(), consultStyle, counselor.getIsEducated(), counselor.getProfileStatus().name()); } } diff --git a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetListResponse.java b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetListResponse.java index 84982deb..381564af 100644 --- a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetListResponse.java +++ b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetListResponse.java @@ -32,7 +32,7 @@ public class CounselorGetListResponse extends CounselorGetBaseResponse { protected CounselorGetListResponse(Counselor counselor, Boolean isWishList, Boolean isRealtime) { super(counselor); this.counselorId = counselor.getCounselorId(); - this.level = counselor.getLevel(); + this.level = counselor.getLevel().getGrade(); this.totalReview = counselor.getTotalReview(); this.ratingAverage = counselor.getRatingAverage(); this.isWishList = isWishList; diff --git a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetMinderProfileResponse.java b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetMinderProfileResponse.java index 7ac12bbf..bdf9935f 100644 --- a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetMinderProfileResponse.java +++ b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetMinderProfileResponse.java @@ -80,7 +80,7 @@ public static CounselorGetMinderProfileResponse of(Counselor counselor, Boolean return CounselorGetMinderProfileResponse.builder() .counselorId(counselor.getCounselorId()) .nickname(counselor.getNickname()) - .level(counselor.getLevel()) + .level(counselor.getLevel().getGrade()) .totalReview(counselor.getTotalReview()) .ratingAverage(counselor.getRatingAverage()) .consultCategories(CounselorUtil.convertConsultCategories(counselor)) diff --git a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetWishListResponse.java b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetWishListResponse.java index 5d480ce9..b95d19c8 100644 --- a/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetWishListResponse.java +++ b/src/main/java/com/example/sharemind/counselor/dto/response/CounselorGetWishListResponse.java @@ -42,7 +42,7 @@ private CounselorGetWishListResponse(Counselor counselor, WishList wishList, Boo super(counselor); this.wishlistId = wishList.getWishlistId(); this.counselorId = counselor.getCounselorId(); - this.level = counselor.getLevel(); + this.level = counselor.getLevel().getGrade(); this.totalReview = counselor.getTotalReview(); this.ratingAverage = counselor.getRatingAverage(); this.updatedAt = wishList.getUpdatedAt(); diff --git a/src/main/java/com/example/sharemind/customer/domain/Customer.java b/src/main/java/com/example/sharemind/customer/domain/Customer.java index f15ba07f..86f63959 100644 --- a/src/main/java/com/example/sharemind/customer/domain/Customer.java +++ b/src/main/java/com/example/sharemind/customer/domain/Customer.java @@ -72,6 +72,7 @@ public void updateIsBanned(Boolean isBanned) { public void setCounselor(Counselor counselor) { this.counselor = counselor; + this.counselor.setLevel(this.level); } public void setQuit(Quit quit) { diff --git a/src/main/java/com/example/sharemind/payment/domain/Payment.java b/src/main/java/com/example/sharemind/payment/domain/Payment.java index 1ac982b7..8197abe7 100644 --- a/src/main/java/com/example/sharemind/payment/domain/Payment.java +++ b/src/main/java/com/example/sharemind/payment/domain/Payment.java @@ -66,7 +66,8 @@ public class Payment extends BaseEntity { public Payment(String customerPhoneNumber, Consult consult) { this.customerPhoneNumber = customerPhoneNumber; this.consult = consult; - this.fee = Math.round(consult.getCost() * BASE_FEE); + this.fee = Math.round(consult.getCost() * (BASE_FEE - consult.getCounselor().getLevel() + .getExtraDiscount())); this.isPaid = false; updateBothStatusNone(); } diff --git a/src/main/java/com/example/sharemind/review/dto/response/ReviewGetResponse.java b/src/main/java/com/example/sharemind/review/dto/response/ReviewGetResponse.java index f3e469a0..630309de 100644 --- a/src/main/java/com/example/sharemind/review/dto/response/ReviewGetResponse.java +++ b/src/main/java/com/example/sharemind/review/dto/response/ReviewGetResponse.java @@ -55,8 +55,9 @@ public static ReviewGetResponse of(Review review, Boolean isCustomer) { if (isCustomer) { Counselor counselor = consult.getCounselor(); return new ReviewGetResponse(review.getReviewId(), counselor.getNickname(), - counselor.getConsultStyle().getDisplayName(), counselor.getLevel(), counselor.getRatingAverage(), - counselor.getTotalReview(), consult.getConsultType().getDisplayName(), consult.getConsultedAt(), + counselor.getConsultStyle().getDisplayName(), counselor.getLevel().getGrade(), + counselor.getRatingAverage(), counselor.getTotalReview(), + consult.getConsultType().getDisplayName(), consult.getConsultedAt(), consult.getCost(), review.getRating(), review.getComment()); } else { return new ReviewGetResponse(review.getReviewId(), consult.getCustomer().getNickname(), null, From 4f219e3c389503bddc17183e3095606d334b86f1 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 21:02:28 +0900 Subject: [PATCH 13/14] =?UTF-8?q?#280=20refactor:=20=EC=83=81=EB=8B=B4?= =?UTF-8?q?=EC=82=AC=20=EA=B2=BD=ED=97=98=EC=B9=98=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=ED=98=B8=EC=B6=9C=20=EB=A1=9C=EC=A7=81=20=ED=9A=A8?= =?UTF-8?q?=EC=9C=A8=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sharemind/comment/application/CommentServiceImpl.java | 6 +++--- .../example/sharemind/post/application/PostServiceImpl.java | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java index b7d61499..202d911d 100644 --- a/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java +++ b/src/main/java/com/example/sharemind/comment/application/CommentServiceImpl.java @@ -92,8 +92,8 @@ public void createComment(CommentCreateRequest commentCreateRequest, Long custom counselor.increaseTotalConsult(); if (post.getIsPublic()) { - Level counselorExperience = customerService.getCustomerByCounselor(counselor).getLevel(); - counselorExperience.increasePostAnswer(); + Level counselorlevel = counselor.getLevel(); + counselorlevel.increasePostAnswer(); } } @@ -120,7 +120,7 @@ public void updateCustomerChosenComment(Long postId, Long commentId, Long custom Level customerLevel = customer.getLevel(); customerLevel.increasePostChoose(); - Level counselorLevel = customerService.getCustomerByCounselor(comment.getCounselor()).getLevel(); + Level counselorLevel = comment.getCounselor().getLevel(); counselorLevel.increasePostChosen(); if (post.getIsPopular()) { counselorLevel.increasePostPopularityChosen(); diff --git a/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java b/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java index aa1bfbc2..88d914f0 100644 --- a/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java +++ b/src/main/java/com/example/sharemind/post/application/PostServiceImpl.java @@ -269,8 +269,7 @@ public void checkPostStatusAndPopularity() { customerLevel.increasePostPopularityCreate(); commentRepository.findByPostAndIsActivatedIsTrue(post).forEach(comment -> { - Level counselorLevel = customerService.getCustomerByCounselor( - comment.getCounselor()).getLevel(); + Level counselorLevel = comment.getCounselor().getLevel(); counselorLevel.increasePostPopularityAnswer(); if (comment.getIsChosen()) { From a67a6919ff7140b4e782a66c8f7e78c9771a6d41 Mon Sep 17 00:00:00 2001 From: letskuku Date: Sun, 23 Feb 2025 21:17:39 +0900 Subject: [PATCH 14/14] =?UTF-8?q?#280=20fix:=20=EA=B2=BD=ED=97=98=EC=B9=98?= =?UTF-8?q?=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EA=B4=80=EB=A0=A8=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sharemind/counselor/repository/CounselorRepository.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/sharemind/counselor/repository/CounselorRepository.java b/src/main/java/com/example/sharemind/counselor/repository/CounselorRepository.java index e00f6f80..e3b550b1 100644 --- a/src/main/java/com/example/sharemind/counselor/repository/CounselorRepository.java +++ b/src/main/java/com/example/sharemind/counselor/repository/CounselorRepository.java @@ -35,13 +35,13 @@ public interface CounselorRepository extends JpaRepository { + "AND c.isActivated = true") List findAllByNicknameOrEmail(String keyword); - @Query("SELECT c FROM Counselor c WHERE (c.nickname LIKE %:word% OR c.experience LIKE %:word% OR c.introduction LIKE %:word%) AND c.level >= 1 AND c.isActivated = true AND c.profileStatus = 'EVALUATION_COMPLETE'") + @Query("SELECT c FROM Counselor c WHERE (c.nickname LIKE %:word% OR c.experience LIKE %:word% OR c.introduction LIKE %:word%) AND c.level.grade >= 1 AND c.isActivated = true AND c.profileStatus = 'EVALUATION_COMPLETE'") Page findByWordAndLevelAndStatus(String word, Pageable pageable); - @Query("SELECT c FROM Counselor c WHERE :category MEMBER OF c.consultCategories AND c.level >= 1 AND c.isActivated = true AND c.profileStatus = 'EVALUATION_COMPLETE'") + @Query("SELECT c FROM Counselor c WHERE :category MEMBER OF c.consultCategories AND c.level.grade >= 1 AND c.isActivated = true AND c.profileStatus = 'EVALUATION_COMPLETE'") Page findByConsultCategoryAndLevelAndStatus(ConsultCategory category, Pageable pageable); - @Query("SELECT c FROM Counselor c WHERE c.level >= 1 AND c.isActivated = true AND c.profileStatus = 'EVALUATION_COMPLETE'") + @Query("SELECT c FROM Counselor c WHERE c.level.grade >= 1 AND c.isActivated = true AND c.profileStatus = 'EVALUATION_COMPLETE'") Page findByLevelAndStatus(Pageable pageable); }