Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
0f28119fab
11 changed files with 199 additions and 6 deletions
  1. 26
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalorder/valueobj/ExternalOrderRel.java
  2. 14
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java
  3. 19
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java
  4. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java
  5. 21
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitSiteActivityOrderDto.java
  6. 47
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  7. 32
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitSiteActivityOrderDomainService.java
  8. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ExternalOrderRelDao.java
  9. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/SiteActivityDao.java
  10. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java
  11. 22
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java

26
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalorder/valueobj/ExternalOrderRel.java

@ -0,0 +1,26 @@
package com.qniao.dam.domain.aggregate.externalorder.valueobj;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_external_order_rel")
public class ExternalOrderRel extends ValueObject<ExternalOrderRel> {
@ApiModelProperty("外部标识")
private Long externalId;
@ApiModelProperty("订单标识")
private Long orderId;
public static ExternalOrderRel build(Long externalId, Long orderId) {
ExternalOrderRel rel = new ExternalOrderRel();
rel.setExternalId(externalId);
rel.setOrderId(orderId);
return rel;
}
}

14
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java

@ -59,4 +59,18 @@ public class Order extends Entity<Order> {
}
return orderBelonging;
}
public static Order build(Long userId,
Long miId,
OrderBelongingEnum orderBelonging,
String orderBelongName,
OrderTypeEnum orderType) {
Order order = new Order();
order.setUserId(userId);
order.setMiId(miId);
order.setOrderBelonging(orderBelonging);
order.setOrderBelongName(orderBelongName);
order.setOrderType(orderType);
return order;
}
}

19
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java

@ -49,4 +49,23 @@ public class OrderItem extends Entity<OrderItem> {
@ApiModelProperty("结算金额")
private BigDecimal settlementAmount;
public static OrderItem build(Long productId,
Long productSpecId,
ProductTypeEnum productType,
ProductMainCategoryEnum mainCategory,
ProductSubCategoryEnum subCategory,
String productTitle,
BigDecimal unitSettlementPrice,
Integer quantity) {
OrderItem orderItem = new OrderItem();
orderItem.setProductId(productId);
orderItem.setProductSpecId(productSpecId);
orderItem.setProductType(productType);
orderItem.setMainCategory(mainCategory);
orderItem.setSubCategory(subCategory);
orderItem.setProductTitle(productTitle);
orderItem.setUnitSettlementPrice(unitSettlementPrice);
orderItem.setQuantity(quantity);
return orderItem;
}
}

8
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java

@ -3,6 +3,7 @@ package com.qniao.dam.api.command.order.user;
import com.qniao.dam.api.command.order.user.request.UserBatchSubmitOrderDto;
import com.qniao.dam.api.command.order.user.request.UserSubmitMarriageBountyOrderDto;
import com.qniao.dam.api.command.order.user.request.UserSubmitOrderDto;
import com.qniao.dam.api.command.order.user.request.UserSubmitSiteActivityOrderDto;
import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo;
import com.qniao.dam.application.service.order.OrderApplicationService;
import com.qniao.dam.domain.aggregate.order.entity.Order;
@ -51,4 +52,11 @@ public class OrderUserCommandController {
productList.forEach(product -> product.setUserId(userId));
return orderApplicationService.submitMarriageBountyOrder(order, productList);
}
@ApiOperation("用户提交线下活动订单")
@PostMapping("submit/site-activity-order")
public UserSubmitOrderVo userSubmitSiteActivityOrder(@RequestBody @Valid UserSubmitSiteActivityOrderDto dto,
@RequestParam("userId") Long userId) {
return orderApplicationService.submitSiteActivityOrder(dto, userId);
}
}

21
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitSiteActivityOrderDto.java

@ -0,0 +1,21 @@
package com.qniao.dam.api.command.order.user.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class UserSubmitSiteActivityOrderDto {
@ApiModelProperty("活动标识")
@NotNull
private Long siteActivityId;
@ApiModelProperty("征婚资料标识")
@NotNull
private Long miId;
@ApiModelProperty("是否开通会员")
private Boolean openVip = false;
}

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

@ -1,8 +1,8 @@
package com.qniao.dam.application.service.order;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Tuple;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qniao.dam.api.command.order.user.request.UserSubmitSiteActivityOrderDto;
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.ActivityProduct;
@ -16,6 +16,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.service.order.SubmitOrderDomainService;
import com.qniao.dam.domain.service.order.SubmitSiteActivityOrderDomainService;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum;
import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum;
@ -23,15 +24,17 @@ 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.infrastructure.persistent.dao.activity.ActivityProductDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.utils.CompareEntityUtil;
import com.qniao.dam.infrastructure.persistent.dao.domain.SiteActivityDao;
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil;
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.right.RightQueryService;
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.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.framework.exception.BizException;
import org.springframework.beans.factory.annotation.Value;
@ -40,11 +43,9 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
public class OrderApplicationService {
@ -52,6 +53,8 @@ public class OrderApplicationService {
@Resource
private SubmitOrderDomainService submitOrderDomainService;
@Resource
private SubmitSiteActivityOrderDomainService submitSiteActivityOrderDomainService;
@Resource
private ProductSpecRepository productSpecRepository;
@Resource
private ProductRepository productRepository;
@ -71,6 +74,10 @@ public class OrderApplicationService {
private ProductApplicationService productApplicationService;
@Resource
private MarriageBountyOrderQueryService marriageBountyOrderQueryService;
@Resource
private SiteActivityDao siteActivityDao;
@Resource
private RightQueryService rightQueryService;
@Value("${marriage_bounty_meeting_quantity:5}")
private Integer marriageBountyMeetingQuantity;
@ -252,4 +259,32 @@ public class OrderApplicationService {
}
}
}
public UserSubmitOrderVo submitSiteActivityOrder(UserSubmitSiteActivityOrderDto dto, Long userId) {
MarriageInformation marriageInformation = marriageInformationDao.selectById(dto.getMiId());
Product product = productQueryService.querySiteActivityBy(dto.getSiteActivityId(), marriageInformation.getGenderCode());
SiteActivity siteActivity = siteActivityDao.selectById(dto.getSiteActivityId());
Order order = Order.build(userId, dto.getMiId(), OrderBelongingEnum.CUSTOMER, marriageInformation.getNickName(), OrderTypeEnum.NORMAL);
PaymentOrder paymentOrder = null;
if (dto.getOpenVip()) {
//开通会员送活动
} else {
//是否vip
boolean vip = rightQueryService.checkUserVipRight(userId, dto.getMiId()).getVip();
//报名参加活动
ProductSpec productSpec = product.getProductSpecList().get(0);
OrderItem orderItem = OrderItem.build(productSpec.getProductId(), productSpec.getId(), product.getProductType(), product.getMainCategory(), product.getSubCategory(),
product.getProductTitle(), siteActivity.calculateFee(GenderEnum.get(marriageInformation.getGenderCode()), vip), 1);
order.setOrderItemList(Collections.singletonList(orderItem));
//2. 订单金额计算
countOrderAmount(order);
//3. 设置订单号
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode());
//4. 组织付款单信息
paymentOrder = makePaymentOrder(order);
submitSiteActivityOrderDomainService.handle(order, paymentOrder, dto.getSiteActivityId());
}
return new UserSubmitOrderVo(order.getId(), paymentOrder.getId());
}
}

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

@ -0,0 +1,32 @@
package com.qniao.dam.domain.service.order;
import com.qniao.dam.domain.aggregate.externalorder.valueobj.ExternalOrderRel;
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.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Service
public class SubmitSiteActivityOrderDomainService {
@Resource
private OrderAggregate orderAggregate;
@Resource
private PaymentOrderAggregate paymentOrderAggregate;
@Resource
private ExternalOrderRelDao externalOrderRelDao;
@Transactional(rollbackFor = Exception.class)
public void handle(Order order, PaymentOrder paymentOrder, Long siteActivityId) {
orderAggregate.submit(order);
paymentOrder.setOrderId(order.getId());
paymentOrderAggregate.create(paymentOrder);
ExternalOrderRel externalOrderRel = ExternalOrderRel.build(siteActivityId, order.getId());
externalOrderRelDao.insert(externalOrderRel);
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ExternalOrderRelDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.externalorder.valueobj.ExternalOrderRel;
public interface ExternalOrderRelDao extends BaseMapper<ExternalOrderRel> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/SiteActivityDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.das.domian.aggregate.siteactivity.SiteActivity;
public interface SiteActivityDao extends BaseMapper<SiteActivity> {
}

2
dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java

@ -33,4 +33,6 @@ public interface ProductQueryService {
List<ProductSpec> listProductSpecBy(Long productId);
UserGetMatchmakerFranchiseInfoVo getMatchmakerFranchiseInfo();
Product querySiteActivityBy(Long siteActivityId, Integer genderCode);
}

22
dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java

@ -7,6 +7,7 @@ import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQue
import com.qniao.dam.api.query.product.user.request.UserPageProductByMatchmakerQueryParam;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
import com.qniao.dam.api.query.product.user.response.*;
import com.qniao.dam.domain.aggregate.externalproduct.valueobj.ExternalProductRel;
import com.qniao.dam.domain.aggregate.product.entity.Product;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
@ -14,11 +15,13 @@ import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermUnitEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalProductRelDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecTermDao;
import com.qniao.dam.infrastructure.persistent.dao.view.ProductViewDao;
import com.qniao.dam.query.product.ProductQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.constant.GenderEnum;
import com.qniao.framework.utils.PageUtil;
import com.qniao.framework.utils.TypeConvertUtils;
import org.checkerframework.checker.units.qual.A;
@ -43,6 +46,8 @@ public class ProductQueryServiceImpl implements ProductQueryService {
@Resource
private ProductSpecDao productSpecDao;
@Resource
private ExternalProductRelDao externalProductRelDao;
@Resource
private ProductSpecTermDao productSpecTermDao;
@Value("${service-phone}")
private String servicePhone;
@ -127,6 +132,23 @@ public class ProductQueryServiceImpl implements ProductQueryService {
return infoVo;
}
@Override
public Product querySiteActivityBy(Long externalId, Integer genderCode) {
List<ExternalProductRel> externalProductRelList = externalProductRelDao.selectList(new LambdaQueryWrapper<ExternalProductRel>()
.eq(ExternalProductRel::getExternalId, externalId));
Product siteActivityProduct = null;
for (ExternalProductRel externalProductRel : externalProductRelList) {
Product product = productDao.selectById(externalProductRel.getProductId());
product.setProductSpecList(listProductSpecBy(product.getId()));
if ((GenderEnum.MAN.getValue().equals(genderCode) && ProductSubCategoryEnum.SITE_ACTIVITY_MAN_FEE.equals(product.getSubCategory())) ||
(GenderEnum.WOMAN.getValue().equals(genderCode) && ProductSubCategoryEnum.MARRIAGE_BOUNTY_WOMAN_FEE.equals(product.getSubCategory()))) {
siteActivityProduct = product;
break;
}
}
return siteActivityProduct;
}
@Override
public ProductSpecTerm getTermByName(List<ProductSpecTerm> productSpecTermList, ProductSpecTermNameEnum name) {
ProductSpecTerm productSpecTerm = null;

Loading…
Cancel
Save