Browse Source

委托服务

master
张彭杰 3 weeks ago
parent
commit
739f0798b2
6 changed files with 132 additions and 11 deletions
  1. 2
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java
  2. 4
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java
  3. 61
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  4. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/product/ProductApplicationService.java
  5. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/eso/EntrustServiceOrderAggregate.java
  6. 37
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitEntrustServiceOrderDomainService.java

2
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java

@ -23,6 +23,8 @@ public enum ProductMainCategoryEnum {
SITE_ACTIVITY(8, "线下活动"),
CUSTOMIZED_SERVICE(9, "定制服务"),
ENTRUST_SERVICE(12, "委托服务"),
VIRTUAL_CURRENCY(20, "虚拟货币"),
CHAT_FEE(21, "聊天"),

4
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java

@ -55,6 +55,10 @@ public enum ProductSubCategoryEnum {
CUSTOMIZED_SERVICE(1101, "定制服务"),
ENTRUST_SERVICE_CONTACT_INFO_EXCHANGE_FEE(1201, "委托服务交换联系方式费用"),
ENTRUST_SERVICE_OFFLINE_MEETING_FEE(1202, "委托服务线下见面费用"),
VIRTUAL_CURRENCY(2001, "虚拟货币"),
CHAT_FEE(2101, "聊天费用"),

61
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

@ -23,6 +23,7 @@ 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.SubmitEntrustServiceOrderDomainService;
import com.qniao.dam.domain.service.order.SubmitOrderDomainService;
import com.qniao.dam.domain.service.order.SubmitSiteActivityOrderDomainService;
import com.qniao.dam.domian.aggregate.eso.constant.EntrustServiceTypeEnum;
@ -50,7 +51,6 @@ import com.qniao.dam.query.odc.OrderDiscountConfigQueryService;
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.dam.query.usermanagement.UserManagementQueryService;
import com.qniao.dam.query.usermarriageinformation.UserMarriageInformationQueryService;
import com.qniao.das.application.DatingAgencyServiceApplicationService;
@ -60,14 +60,12 @@ import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.das.domian.aggregate.marriageinformation.UserMarriageInformation;
import com.qniao.das.domian.aggregate.matchmakermarriage.MatchmakerMarriageInformation;
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.dau.domain.aggregate.matchmakeraudit.entity.MatchmakerAudit;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import com.qniao.framework.exception.BizException;
import com.qniao.framework.utils.TypeConvertUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -129,6 +127,8 @@ public class OrderApplicationService extends BaseApplicationService {
private UserManagementQueryService userManagementQueryService;
@Resource
private EntrustServiceOrderQueryService entrustServiceOrderQueryService;
@Resource
private SubmitEntrustServiceOrderDomainService submitEntrustServiceOrderDomainService;
@Value("${default_marriage_bounty_matchmaker_id}")
private Long defaultMarriageBountyMatchmakerId;
@ -289,13 +289,60 @@ public class OrderApplicationService extends BaseApplicationService {
public UserSubmitOrderVo submitEntrustServiceOrder(Order order,
EntrustServiceOrder entrustServiceOrder) {
//1.查询是否存在委托服务
//查询是否存在委托服务
entrustServiceOrderQueryService.checkEntrustServiceOrder(entrustServiceOrder);
//2.查询委托服务价格
//查询委托服务价格
BigDecimal amount = queryEntrustServiceAmount(entrustServiceOrder);
//3.组装产品信息
//组装产品信息
Product product = productApplicationService.handleEntrustServiceProduct(entrustServiceOrder, amount);
return null;
//提交产品信息
handleProduct(product, product.getProductSpecList());
//下单人信息
UserMarriageInformation initiatorUserMarriageInformation = userMarriageInformationQueryService.queryByOwn(order.getUserId());
order.setMiId(initiatorUserMarriageInformation.getMiId());
//订单信息处理
fillEntrustServiceOrderInfo(order, product);
//委托服务订单处理
handleEntrustServiceOrder(entrustServiceOrder, initiatorUserMarriageInformation, amount);
//组装付款单信息
PaymentOrder paymentOrder = makePaymentOrder(order);
submitEntrustServiceOrderDomainService.handle(order, paymentOrder, entrustServiceOrder);
return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), false);
}
private void handleEntrustServiceOrder(EntrustServiceOrder entrustServiceOrder,
UserMarriageInformation initiatorUserMarriageInformation,
BigDecimal amount) {
entrustServiceOrder.setInitiatorMiId(initiatorUserMarriageInformation.getMiId());
UserMarriageInformation targetUserMarriageInformation = userMarriageInformationQueryService.queryOwnByMiId(entrustServiceOrder.getTargetMiId());
entrustServiceOrder.setTargetMiId(targetUserMarriageInformation.getMiId());
entrustServiceOrder.setRewardAmount(amount);
}
private void fillEntrustServiceOrderInfo(Order order, Product product) {
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode());
order.setOrderBelonging(OrderBelongingEnum.CUSTOMER);
MarriageInformation marriageInformation = marriageInformationDao.selectById(order.getMiId());
order.setOrderBelongName(marriageInformation.getNickName());
order.setOrderType(OrderTypeEnum.ENTRUST_SERVICE);
ProductSpec productSpec = product.getProductSpecList().get(0);
OrderItem orderItem = getOrderItem(product, productSpec);
order.setOrderItemList(Collections.singletonList(orderItem));
}
private OrderItem getOrderItem(Product product, ProductSpec productSpec) {
OrderItem orderItem = new OrderItem();
orderItem.setProductId(product.getId());
orderItem.setProductSpecId(productSpec.getId());
orderItem.setProductType(product.getProductType());
orderItem.setMainCategory(product.getMainCategory());
orderItem.setSubCategory(product.getSubCategory());
orderItem.setProductTitle(product.getProductTitle());
orderItem.setProductDesc(product.getProductDesc());
orderItem.setUnitOriginalPrice(productSpec.getUnitSellingPrice());
orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice());
orderItem.setQuantity(1);
return orderItem;
}
/**

31
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/product/ProductApplicationService.java

@ -9,7 +9,10 @@ import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.service.product.CreateProductDomainService;
import com.qniao.dam.domain.service.product.EditProductDomainService;
import com.qniao.dam.domian.aggregate.eso.constant.EntrustServiceTypeEnum;
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;
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao;
import com.qniao.framework.exception.BizException;
@ -17,6 +20,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
@Service
@ -65,10 +69,29 @@ public class ProductApplicationService {
*/
public Product handleEntrustServiceProduct(EntrustServiceOrder entrustServiceOrder,
BigDecimal amount) {
if(EntrustServiceTypeEnum.CONTACT_INFO_EXCHANGE.equals(entrustServiceOrder.getType())){
}else{
if (EntrustServiceTypeEnum.CONTACT_INFO_EXCHANGE.equals(entrustServiceOrder.getType())) {
return geteEntrustServiceProduct(entrustServiceOrder, ProductSubCategoryEnum.ENTRUST_SERVICE_CONTACT_INFO_EXCHANGE_FEE, amount);
} else {
return geteEntrustServiceProduct(entrustServiceOrder, ProductSubCategoryEnum.ENTRUST_SERVICE_OFFLINE_MEETING_FEE, amount);
}
}
private Product geteEntrustServiceProduct(EntrustServiceOrder entrustServiceOrder,
ProductSubCategoryEnum entrustServiceContactInfoExchangeFee,
BigDecimal amount) {
Product product = new Product();
product.setUserId(entrustServiceOrder.getInitiatorUserId());
product.setManageEnable(false);
product.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL);
product.setMainCategory(ProductMainCategoryEnum.ENTRUST_SERVICE);
product.setSubCategory(entrustServiceContactInfoExchangeFee);
product.setProductTitle(entrustServiceContactInfoExchangeFee.getDesc());
product.setStatus(ProductStatusEnum.SOLD_OUTED);
ProductSpec productSpec = new ProductSpec();
productSpec.setUnitOriginalPrice(amount);
productSpec.setUnitSellingPrice(amount);
productSpec.setAvailableStockNumber(-1);
product.setProductSpecList(Collections.singletonList(productSpec));
return product;
}
}

8
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/eso/EntrustServiceOrderAggregate.java

@ -2,6 +2,8 @@ package com.qniao.dam.domain.aggregate.eso;
import com.qniao.dam.domain.aggregate.eso.entity.EntrustServiceOrder;
import com.qniao.dam.domain.aggregate.eso.repository.EntrustServiceOrderRepository;
import com.qniao.dam.domian.aggregate.eso.constant.EntrustServicePaymentStatusEnum;
import com.qniao.dam.domian.aggregate.eso.constant.EntrustServiceStatusEnum;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -28,4 +30,10 @@ public class EntrustServiceOrderAggregate {
public void delete(Long id) {
repository.delete(id);
}
public void init(EntrustServiceOrder entity) {
entity.setStatus(EntrustServiceStatusEnum.INIT);
entity.setPaymentStatus(EntrustServicePaymentStatusEnum.INIT);
repository.save(entity);
}
}

37
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitEntrustServiceOrderDomainService.java

@ -0,0 +1,37 @@
package com.qniao.dam.domain.service.order;
import com.qniao.dam.domain.aggregate.eso.EntrustServiceOrderAggregate;
import com.qniao.dam.domain.aggregate.eso.entity.EntrustServiceOrder;
import com.qniao.dam.domain.aggregate.order.OrderAggregate;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.paymentorder.PaymentOrderAggregate;
import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder;
import com.qniao.domain.BaseDomainEvent;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
@Service
public class SubmitEntrustServiceOrderDomainService {
@Resource
private OrderAggregate orderAggregate;
@Resource
private PaymentOrderAggregate paymentOrderAggregate;
@Resource
private EntrustServiceOrderAggregate entrustServiceOrderAggregate;
@Transactional(rollbackFor = Exception.class)
public void handle(Order order,
PaymentOrder paymentOrder,
EntrustServiceOrder entrustServiceOrder) {
orderAggregate.submit(order);
paymentOrder.setOrderId(order.getId());
paymentOrderAggregate.create(paymentOrder);
entrustServiceOrder.setAssociateOrderId(order.getId());
entrustServiceOrderAggregate.init(entrustServiceOrder);
}
}
Loading…
Cancel
Save