|
|
|
@ -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<ProductSpec> productSpecList) { |
|
|
|
Product existProduct = productQueryService.queryBy(product.getUserId(), product.getMiId(), product.getSubCategory()); |
|
|
|
|