From 920f7e9bdcde6564097e0741c125b42d777c2a45 Mon Sep 17 00:00:00 2001 From: Derran Date: Mon, 5 Aug 2024 15:31:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=80=80=E6=AC=BE=E7=94=B3?= =?UTF-8?q?=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MarriageBountyOrderPaymentStatusEnum.java | 2 + .../MarriageBountyOrderStatusEnum.java | 2 + .../constant/MarriageBountyOrderType.java | 38 ++++++++++++ .../entity/MarriageBountyOrder.java | 4 ++ .../user/OrderUserCommandController.java | 5 +- .../UserSubmitMarriageBountyOrderDto.java | 51 +++++++++++----- ...MarriageBountyOrderApplicationService.java | 59 ++++++++++--------- .../order/OrderApplicationService.java | 12 ++-- .../MarriageBountyOrderAggregate.java | 7 +++ 9 files changed, 131 insertions(+), 49 deletions(-) create mode 100644 dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderType.java diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderPaymentStatusEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderPaymentStatusEnum.java index 9354364..535fbcc 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderPaymentStatusEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderPaymentStatusEnum.java @@ -10,6 +10,8 @@ import lombok.Getter; @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum MarriageBountyOrderPaymentStatusEnum { + INIT(0,"初始化"), + PAID(1, "已支付"), BEING_REFUNDED(2, "退款中"), diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderStatusEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderStatusEnum.java index f5853bf..cb3ce01 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderStatusEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderStatusEnum.java @@ -10,6 +10,8 @@ import lombok.Getter; @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum MarriageBountyOrderStatusEnum { + INIT(0,"初始化"), + MATCHMAKING(1, "匹配中"), MATCH_SUCCESS(2, "匹配成功"), diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderType.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderType.java new file mode 100644 index 0000000..e028ee3 --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderType.java @@ -0,0 +1,38 @@ +package com.qniao.dam.domian.aggregate.marriagebount.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +@Getter +@JsonFormat(shape = JsonFormat.Shape.OBJECT) +public enum MarriageBountyOrderType { + + MEETING(1, "见面"), + + DATING(2, "恋爱"), + + MARRIAGE(3, "结婚"); + + @EnumValue + @JsonValue + private final Integer value; + private final String desc; + + MarriageBountyOrderType(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static MarriageBountyOrderType get(Object code) { + for (MarriageBountyOrderType e : MarriageBountyOrderType.values()) { + if (e.getValue().equals(code)) { + return e; + } + } + return null; + } +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java index 7dc0985..7174f4c 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java @@ -5,6 +5,7 @@ import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrde import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; +import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderType; import com.qniao.domain.Entity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,6 +27,9 @@ public class MarriageBountyOrder extends Entity { @ApiModelProperty("征婚资料标识") private Long miId; + @ApiModelProperty("悬赏招亲类型") + private MarriageBountyOrderType type; + @ApiModelProperty("奖励金额") private BigDecimal rewardAmount; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java index a01b80f..aa64cf8 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java @@ -4,6 +4,7 @@ import com.qniao.dam.api.command.order.user.request.*; import com.qniao.dam.api.command.order.user.response.UserCalculateOrderFeeVo; import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo; import com.qniao.dam.application.service.order.OrderApplicationService; +import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.product.entity.Product; import io.swagger.annotations.Api; @@ -48,7 +49,9 @@ public class OrderUserCommandController { order.setUserId(userId); List productList = dto.trans2Product(); productList.forEach(product -> product.setUserId(userId)); - return orderApplicationService.submitMarriageBountyOrder(order, productList); + MarriageBountyOrder marriageBountyOrder = dto.trans2MarriageBountyOrder(); + marriageBountyOrder.setUserId(userId); + return orderApplicationService.submitMarriageBountyOrder(order, productList,marriageBountyOrder); } @ApiOperation("用户计算线下活动订单费用") diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java index 08a572c..35e0e8e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java @@ -1,8 +1,10 @@ package com.qniao.dam.api.command.order.user.request; +import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.product.entity.Product; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; +import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderType; import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductStatusEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; @@ -12,11 +14,13 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Max; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; @Data public class UserSubmitMarriageBountyOrderDto implements Trans2DomainAssembler { @@ -25,13 +29,21 @@ public class UserSubmitMarriageBountyOrderDto implements Trans2DomainAssembler trans2Product() { List list = new ArrayList<>(); //见面费用 @@ -60,20 +79,22 @@ public class UserSubmitMarriageBountyOrderDto implements Trans2DomainAssembler rewardCategoryPriceMap = new HashMap<>(); - //订单关系 - MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId, order.getSettlementAmount()); - marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel)); - //悬赏招亲订单产品记录 - MarriageBountyOrderProductRecord productRecord = new MarriageBountyOrderProductRecord(); - order.getOrderItemList().forEach(orderItem -> { - ProductSpec productSpec = productSpecDao.selectById(orderItem.getProductSpecId()); - productRecord.getProductSpecRecordList().add(MarriageBountyOrderProductSpecRecord.build( - orderItem.getSubCategory(), productSpec.getUnitOriginalPrice(), productSpec.getUnitOriginalPrice())); - rewardCategoryPriceMap.put(orderItem.getSubCategory().getValue(), orderItem.getUnitSettlementPrice()); - }); - //悬赏招亲订单奖励 - for (MarriageBountyOrderReward orderReward : marriageBountyOrder.getOrderRewardList()) { - if (!orderReward.getIsReceive()) { - BigDecimal addPrice = rewardCategoryPriceMap.get(orderReward.getRewardCategory().getValue()); - addPrice = Objects.nonNull(addPrice) ? addPrice : BigDecimal.ZERO; - orderReward.setRewardAmount(orderReward.getRewardAmount().add(addPrice)); - marriageBountyOrder.getUpdateOrderRewardList().add(orderReward); + marriageBountyOrder = marriageBountyOrderQueryService.queryBy(order.getUserId(), order.getMiId(), + MarriageBountyOrderStatusEnum.MATCHMAKING, MarriageBountyOrderPaymentStatusEnum.PAID); + if (Objects.nonNull(marriageBountyOrder)) { + //修改悬赏招亲订单 + Map rewardCategoryPriceMap = new HashMap<>(); + //订单关系 + MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId, order.getSettlementAmount()); + marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel)); + //悬赏招亲订单产品记录 + MarriageBountyOrderProductRecord productRecord = new MarriageBountyOrderProductRecord(); + order.getOrderItemList().forEach(orderItem -> { + ProductSpec productSpec = productSpecDao.selectById(orderItem.getProductSpecId()); + productRecord.getProductSpecRecordList().add(MarriageBountyOrderProductSpecRecord.build( + orderItem.getSubCategory(), productSpec.getUnitOriginalPrice(), productSpec.getUnitOriginalPrice())); + rewardCategoryPriceMap.put(orderItem.getSubCategory().getValue(), orderItem.getUnitSettlementPrice()); + }); + //悬赏招亲订单奖励 + for (MarriageBountyOrderReward orderReward : marriageBountyOrder.getOrderRewardList()) { + if (!orderReward.getIsReceive()) { + BigDecimal addPrice = rewardCategoryPriceMap.get(orderReward.getRewardCategory().getValue()); + addPrice = Objects.nonNull(addPrice) ? addPrice : BigDecimal.ZERO; + orderReward.setRewardAmount(orderReward.getRewardAmount().add(addPrice)); + marriageBountyOrder.getUpdateOrderRewardList().add(orderReward); + } } + marriageBountyOrder.calculateRewardAmount(); + productRecord.setRewardAmount(marriageBountyOrder.getRewardAmount()); + marriageBountyOrder.setProductRecordList(Collections.singletonList(productRecord)); + marriageBountyOrderAggregate.update(marriageBountyOrder); } - marriageBountyOrder.calculateRewardAmount(); - productRecord.setRewardAmount(marriageBountyOrder.getRewardAmount()); - marriageBountyOrder.setProductRecordList(Collections.singletonList(productRecord)); - marriageBountyOrderAggregate.update(marriageBountyOrder); } } @@ -324,7 +329,7 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic marriageBountyOrder.setUpdateOrderRewardList(Collections.singletonList(marriageBountyOrderReward)); //相关订单金额 BigDecimal totalAssociateOrderAmount = existMarriageBountyOrder.getOrderRelList().stream().map(MarriageBountyOrderRel::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - BaseDomainEvent event = marriageBountyOrderAggregate.confirmMatch(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList(),totalAssociateOrderAmount); + BaseDomainEvent event = marriageBountyOrderAggregate.confirmMatch(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList(), totalAssociateOrderAmount); this.sendEvent(event); } } 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 5bbabc7..f5cd358 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 @@ -7,9 +7,8 @@ import com.qniao.dam.api.command.order.user.request.UserSubmitSiteActivityOrderD import com.qniao.dam.api.command.order.user.response.UserCalculateOrderFeeVo; import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo; import com.qniao.dam.application.service.product.ProductApplicationService; -import com.qniao.dam.domain.aggregate.activity.entity.Activity; import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; -import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository; +import com.qniao.dam.domain.aggregate.marriagebounty.MarriageBountyOrderAggregate; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward; import com.qniao.dam.domain.aggregate.order.entity.Order; @@ -40,8 +39,6 @@ import com.qniao.das.application.DatingAgencyServiceApplicationService; import com.qniao.das.application.request.CalculateSiteActivityFeeDto; import com.qniao.das.application.response.CalculateSiteActivityFeeVo; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; -import com.qniao.das.domian.aggregate.marriageinformation.constant.GenderEnum; -import com.qniao.das.domian.aggregate.siteactivity.SiteActivity; import com.qniao.das.domian.aggregate.vip.VIPEnum; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; import com.qniao.domain.BaseApplicationService; @@ -86,7 +83,7 @@ public class OrderApplicationService extends BaseApplicationService { @Resource private MarriageBountyOrderQueryService marriageBountyOrderQueryService; @Resource - private SiteActivityDao siteActivityDao; + private MarriageBountyOrderAggregate marriageBountyOrderAggregate; @Resource private RightQueryService rightQueryService; @Resource @@ -183,7 +180,9 @@ public class OrderApplicationService extends BaseApplicationService { /** * 提交悬赏招亲订单 */ - public UserSubmitOrderVo submitMarriageBountyOrder(Order order, List productList) { + public UserSubmitOrderVo submitMarriageBountyOrder(Order order, + List productList, + MarriageBountyOrder marriageBountyOrder) { //1. 提交产品信息 productList.forEach(product -> handleProduct(product, product.getProductSpecList())); //2. 填充订单信息 @@ -195,6 +194,7 @@ public class OrderApplicationService extends BaseApplicationService { //5. 组装付款单信息 PaymentOrder paymentOrder = makePaymentOrder(order); submitOrderDomainService.handle(order, paymentOrder); + marriageBountyOrderAggregate.init(marriageBountyOrder); return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), false); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java index c4c486e..73643d1 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java @@ -24,6 +24,12 @@ public class MarriageBountyOrderAggregate { @Resource private MarriageBountyOrderRepository marriageBountyOrderRepository; + public void init(MarriageBountyOrder marriageBountyOrder) { + marriageBountyOrder.setStatus(MarriageBountyOrderStatusEnum.INIT); + marriageBountyOrder.setPaymentStatus(MarriageBountyOrderPaymentStatusEnum.INIT); + marriageBountyOrderRepository.save(marriageBountyOrder); + } + public BaseDomainEvent create(MarriageBountyOrder marriageBountyOrder) { marriageBountyOrder.setStatus(MarriageBountyOrderStatusEnum.MATCHMAKING); marriageBountyOrder.setPaymentStatus(MarriageBountyOrderPaymentStatusEnum.PAID); @@ -78,4 +84,5 @@ public class MarriageBountyOrderAggregate { event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList())); return event; } + }