diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardAmountUnitEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardAmountUnitEnum.java index f09cbc2..46c4d78 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardAmountUnitEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardAmountUnitEnum.java @@ -14,7 +14,9 @@ public enum RewardAmountUnitEnum { PERCENT(2, "百分比"), - MONTH(3, "月"); + MONTH(3, "月"), + + DAY(4, "天"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java index 743d126..f2b951e 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java @@ -64,6 +64,16 @@ public enum RewardTypeEnum { MATCHMAKER_JOIN_RECOMMEND_UP_MIN(125, "红娘入驻向上推荐最小奖励"), + /** + * 红娘到期续费保护周期 + */ + MATCHMAKER_PARTNER_RENEW_VALIDITY_PERIOD(126,"高级红娘续费保护周期"), + + MATCHMAKER_ONLINE_RENEW_VALIDITY_PERIOD(127,"线上红娘续费保护周期"), + + MATCHMAKER_TRAINEE_RENEW_VALIDITY_PERIOD(128,"实习红娘续费保护周期"), + + // 2** 服务费 PLATFORM_SERVICE_FEE(201, "平台服务费"), diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java index 4d6c1d1..7ea431a 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java @@ -59,6 +59,11 @@ public class RewardConfig extends Entity { } public LocalDateTime getPeriodTime(LocalDateTime time) { - return time.plusMonths(Long.parseLong(value)); + if (RewardAmountUnitEnum.MONTH.equals(rewardAmountUnit)) { + return time.plusMonths(Long.parseLong(value)); + } else if (RewardAmountUnitEnum.DAY.equals(rewardAmountUnit)) { + return time.plusDays(Long.parseLong(value)); + } + return time; } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index 03e9c7c..3fb9b4c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -540,12 +540,16 @@ public class OrderApplicationService extends BaseApplicationService { throw new BizException("没有查询到红娘信息"); } else { orderItem.setOriginalAmount(orderItem.getUnitOriginalPrice()); - BigDecimal discountAmount = BigDecimal.ZERO; - RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_RENEW_DISCOUNT); - if (Objects.nonNull(rewardConfig)) { - discountAmount = rewardConfig.calculatePrice(orderItem.getOriginalAmount()); + RewardConfig validityPeriodRewardConfig = rewardConfigQueryService.queryMatchmakerRenewValidityPeriod(matchmaker); + if (Objects.nonNull(validityPeriodRewardConfig)) { + if (LocalDateTime.now().isBefore(validityPeriodRewardConfig.getPeriodTime(matchmaker.getValidityPeriodTo()))) { + //在保护期内 + RewardConfig discountRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_RENEW_DISCOUNT); + if (Objects.nonNull(discountRewardConfig)) { + orderItem.setDiscountAmount(discountRewardConfig.calculatePrice(orderItem.getOriginalAmount())); + } + } } - orderItem.setDiscountAmount(discountAmount); orderItem.calculate(); orderItem.setUnitSettlementPrice(orderItem.getSettlementAmount()); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java index cd18875..d5d0e63 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java @@ -27,4 +27,6 @@ public interface RewardConfigQueryService { BigDecimal queryRecommendRewardPct(MatchmakerLevelEnum initiatorLevel, MatchmakerLevelEnum receiveLevel); + + RewardConfig queryMatchmakerRenewValidityPeriod(Matchmaker matchmaker); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java index 049a663..a50808e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java @@ -118,6 +118,23 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService { return null; } + @Override + public RewardConfig queryMatchmakerRenewValidityPeriod(Matchmaker matchmaker) { + if (Objects.nonNull(matchmaker)) { + if (ProductSubCategoryEnum.MATCHMAKER_TRAINEE_FEE.equals(matchmaker.getType())) { + //实习红娘 + return queryByRewardType(RewardTypeEnum.MATCHMAKER_TRAINEE_RENEW_VALIDITY_PERIOD); + } else if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) { + //线上红娘 + return queryByRewardType(RewardTypeEnum.MATCHMAKER_ONLINE_RENEW_VALIDITY_PERIOD); + } else { + //红娘合伙人 + return queryByRewardType(RewardTypeEnum.MATCHMAKER_PARTNER_RENEW_VALIDITY_PERIOD); + } + } + return null; + } + @Override public BigDecimal queryRecommendRewardPct(MatchmakerLevelEnum initiatorLevel, MatchmakerLevelEnum receiveLevel) {