From ccc570ee537d5005a1fa6a5ca6767f6570584c94 Mon Sep 17 00:00:00 2001 From: Derran Date: Fri, 3 Jan 2025 16:17:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=A8=98=E7=BB=AD=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/MatchmakerOrderTypeEnum.java | 4 +++- .../rewardconfig/constant/RewardTypeEnum.java | 2 ++ .../domain/aggregate/order/entity/Order.java | 6 ++++++ .../request/UserSubmitMatchMakerOrderDto.java | 7 +++++++ .../handler/order/OrderEventHandler.java | 9 ++++----- .../order/OrderApplicationService.java | 20 +++++++++++++++++-- 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/MatchmakerOrderTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/MatchmakerOrderTypeEnum.java index 6a94fa3..1f5f54f 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/MatchmakerOrderTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/MatchmakerOrderTypeEnum.java @@ -12,7 +12,9 @@ public enum MatchmakerOrderTypeEnum { JOIN(1, "红娘加盟"), - UPGRADE(2, "红娘升级"); + UPGRADE(2, "红娘升级"), + + RENEW(3, "红娘续费"); @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 905eaa8..743d126 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 @@ -27,6 +27,8 @@ public enum RewardTypeEnum { MATCHMAKER_JOIN_RECOMMEND_STORE(107, "红娘入驻推荐门店奖励"), + MATCHMAKER_RENEW_DISCOUNT(108, "红娘续费折扣"), + /** * 线上红娘 */ diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java index 83906a2..654bdad 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java @@ -1,7 +1,9 @@ package com.qniao.dam.domain.aggregate.order.entity; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; @@ -14,6 +16,7 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import java.util.Objects; @Data @@ -57,6 +60,9 @@ public class Order extends Entity { @ApiModelProperty("状态") private OrderStatusEnum status; + @TableField(typeHandler = JacksonTypeHandler.class) + private Map extInfo; + private transient List orderItemList; private transient Integer groupType; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchMakerOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchMakerOrderDto.java index dcac57e..c51f94c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchMakerOrderDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchMakerOrderDto.java @@ -1,5 +1,6 @@ package com.qniao.dam.api.command.order.user.request; +import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyField; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.order.entity.OrderItem; import com.qniao.dam.domian.aggregate.order.constant.MatchmakerOrderTypeEnum; @@ -9,7 +10,9 @@ import lombok.Data; import javax.validation.constraints.NotNull; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Data public class UserSubmitMatchMakerOrderDto implements Trans2DomainAssembler { @@ -35,6 +38,10 @@ public class UserSubmitMatchMakerOrderDto implements Trans2DomainAssembler extInfo = new HashMap<>(); + extInfo.put("matchmakerOrderType", matchmakerOrderType.getValue().toString()); + order.setExtInfo(extInfo); return order; } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java index eea845b..6fd7d0f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java @@ -23,6 +23,7 @@ import com.qniao.dam.domain.aggregate.right.RightAggregate; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderRelStatus; import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderTypeEnum; +import com.qniao.dam.domian.aggregate.order.constant.MatchmakerOrderTypeEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; import com.qniao.dam.domian.aggregate.order.event.ExternalOrderCompletedMQEvent; @@ -48,10 +49,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import java.util.*; @Component @Slf4j @@ -119,13 +117,14 @@ public class OrderEventHandler extends BaseApplicationService { //红娘加盟费 if (OrderBelongingEnum.MATCHMAKER.equals(order.getOrderBelonging())) { OrderItem orderItem = order.getOrderItemList().get(0); + MatchmakerOrderTypeEnum matchmakerOrderType = MatchmakerOrderTypeEnum.get(order.getExtInfo().get("matchmakerOrderType")); ProductSpec productSpec = productSpecRepository.load(orderItem.getProductSpecId()); int validityPeriodDays = 0; ProductSpecTerm term = productQueryService.getTermByName(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.VALIDITY_PERIOD); if (Objects.nonNull(term)) { validityPeriodDays = Integer.parseInt(term.getValue()); } - PaidMatchmakerFeeBySdkDto dto = new PaidMatchmakerFeeBySdkDto(order.getUserId(), orderItem.getSubCategory(), order.getOriginalAmount(), validityPeriodDays,order.getId()); + PaidMatchmakerFeeBySdkDto dto = new PaidMatchmakerFeeBySdkDto(order.getUserId(), orderItem.getSubCategory(), order.getOriginalAmount(), validityPeriodDays, order.getId(), matchmakerOrderType); uecServerApplicationService.userPaidMatchmakerFee(dto); } //悬赏招亲 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 6d78dd0..03e9c7c 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 @@ -512,7 +512,7 @@ public class OrderApplicationService extends BaseApplicationService { orderItem.setOriginalAmount(orderItem.getUnitOriginalPrice()); orderItem.setDiscountAmount(BigDecimal.ZERO); orderItem.calculate(); - orderItem.setUnitOriginalPrice(orderItem.getSettlementAmount()); + orderItem.setSettlementAmount(orderItem.getUnitOriginalPrice()); } else if (MatchmakerOrderTypeEnum.UPGRADE.equals(matchmakerOrderType)) { //红娘升级 Matchmaker matchmaker = matchmakerQueryService.queryByUserId(order.getUserId()); @@ -531,7 +531,23 @@ public class OrderApplicationService extends BaseApplicationService { } orderItem.setDiscountAmount(discountAmount); orderItem.calculate(); - orderItem.setUnitOriginalPrice(orderItem.getSettlementAmount()); + orderItem.setUnitSettlementPrice(orderItem.getSettlementAmount()); + } + } else if (MatchmakerOrderTypeEnum.RENEW.equals(matchmakerOrderType)) { + //红娘续费 + Matchmaker matchmaker = matchmakerQueryService.queryByUserId(order.getUserId()); + if (Objects.isNull(matchmaker)) { + 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()); + } + orderItem.setDiscountAmount(discountAmount); + orderItem.calculate(); + orderItem.setUnitSettlementPrice(orderItem.getSettlementAmount()); } } }