Browse Source

悬赏招亲

master
张彭杰 1 year ago
parent
commit
5020711eb7
3 changed files with 33 additions and 5 deletions
  1. 6
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java
  2. 11
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java
  3. 21
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

6
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** 红娘合伙人

11
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<MarriageBountyOrder> {
}
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;
}
}

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

Loading…
Cancel
Save