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 014bbec..4e35942 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 @@ -35,11 +35,11 @@ public enum RewardTypeEnum { PLATFORM_SERVICE_STORE_UPGRADE_REWARD(204, "平台服务费门店升级佣金"), // 3** 招亲榜 MarriageBounty - MARRIAGE_BOUNTY_MEETING_MIN_AMOUNT(301, "招亲榜-见面"), + MARRIAGE_BOUNTY_MEETING_MIN_AMOUNT(301, "招亲榜-见面低消"), - MARRIAGE_BOUNTY_DATING_MIN_AMOUNT(302, "招亲榜-牵手"), + MARRIAGE_BOUNTY_DATING_MIN_AMOUNT(302, "招亲榜-牵手低消"), - MARRIAGE_BOUNTY_MARRIAGE_MIN_AMOUNT(303, "招亲榜-结婚"); + MARRIAGE_BOUNTY_MARRIAGE_MIN_AMOUNT(303, "招亲榜-结婚低消"); // 4** 红娘合伙人 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 be1e5f9..3e21514 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 @@ -6,6 +6,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.*; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.domain.Entity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -82,4 +83,14 @@ public class MarriageBountyOrder extends Entity { } return meetingQuantity; } + + public RewardTypeEnum getRewardType() { + RewardTypeEnum rewardType = RewardTypeEnum.MARRIAGE_BOUNTY_MARRIAGE_MIN_AMOUNT; + if (MarriageBountyOrderType.MEETING.equals(type)) { + rewardType = RewardTypeEnum.MARRIAGE_BOUNTY_MEETING_MIN_AMOUNT; + } else if (MarriageBountyOrderType.DATING.equals(type)) { + rewardType = RewardTypeEnum.MARRIAGE_BOUNTY_DATING_MIN_AMOUNT; + } + return rewardType; + } } 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 521e1ab..b4e62a7 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 @@ -18,6 +18,7 @@ import com.qniao.dam.domain.aggregate.product.entity.Product; import com.qniao.dam.domain.aggregate.product.repository.ProductRepository; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository; +import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; import com.qniao.dam.domain.service.order.SubmitOrderDomainService; import com.qniao.dam.domain.service.order.SubmitSiteActivityOrderDomainService; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum; @@ -27,6 +28,7 @@ import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; @@ -34,6 +36,7 @@ import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.matchmaker.MatchmakerQueryService; import com.qniao.dam.query.order.OrderQueryService; import com.qniao.dam.query.product.ProductQueryService; +import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.dam.query.right.RightQueryService; import com.qniao.das.application.DatingAgencyServiceApplicationService; import com.qniao.das.application.request.CalculateSiteActivityFeeDto; @@ -88,6 +91,8 @@ public class OrderApplicationService extends BaseApplicationService { private RightQueryService rightQueryService; @Resource private DatingAgencyServiceApplicationService datingAgencyServiceApplicationService; + @Resource + private RewardConfigQueryService rewardConfigQueryService; @Value("${marriage_bounty_meeting_quantity:5}") private Integer marriageBountyMeetingQuantity; @@ -190,19 +195,31 @@ public class OrderApplicationService extends BaseApplicationService { fillMarriageBountyOrderInfo(order, productList, meetingQuantity); //3. 订单金额计算 countOrderAmount(order, false); + //3.1. 低消确认 + MarriageBountyOrder existMarriageBountyOrder = marriageBountyOrderQueryService.queryBy(order.getUserId(), order.getMiId(), + MarriageBountyOrderStatusEnum.MATCHMAKING, MarriageBountyOrderPaymentStatusEnum.PAID); + if (Objects.isNull(existMarriageBountyOrder)) { + checkMinAmount(marriageBountyOrder,order); + } //4. 设置订单号 order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode()); //5. 组装付款单信息 PaymentOrder paymentOrder = makePaymentOrder(order); submitOrderDomainService.handle(order, paymentOrder); - MarriageBountyOrder existMarriageBountyOrder = marriageBountyOrderQueryService.queryBy(order.getUserId(), order.getMiId(), - MarriageBountyOrderStatusEnum.MATCHMAKING, MarriageBountyOrderPaymentStatusEnum.PAID); if (Objects.isNull(existMarriageBountyOrder)) { marriageBountyOrderAggregate.init(marriageBountyOrder); } return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), false); } + private void checkMinAmount(MarriageBountyOrder marriageBountyOrder, Order order) { + RewardTypeEnum rewardType = marriageBountyOrder.getRewardType(); + RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(rewardType); + if (Objects.nonNull(rewardConfig) && rewardConfig.getRewardAmount().compareTo(order.getSettlementAmount()) > 0) { + throw new BizException("悬赏招亲发布最低" + rewardConfig.getRewardAmount().stripTrailingZeros().toPlainString() + "元"); + } + } + private void handleProduct(Product product, List productSpecList) { Product existProduct = productQueryService.queryBy(product.getUserId(), product.getMiId(), product.getSubCategory());