Browse Source

基础配置

release
张彭杰 2 years ago
parent
commit
f20b9a43d5
5 changed files with 61 additions and 9 deletions
  1. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  2. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/right/RightApplicationService.java
  3. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java
  4. 41
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java
  5. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java

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

@ -10,7 +10,10 @@ 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.domian.aggregate.product.constant.ProductTypeEnum;
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil;
import com.qniao.dam.query.order.OrderQueryService;
import com.qniao.framework.exception.BizException;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -27,6 +30,8 @@ public class OrderApplicationService {
private ProductRepository productRepository;
@Resource
private SnowFlakeUtil snowFlakeUtil;
@Resource
private OrderQueryService orderQueryService;
/**
@ -36,7 +41,7 @@ public class OrderApplicationService {
* @return
*/
public UserSubmitOrderVo submit(Order order) {
//1. 填充订单信息
//1. 填充订单信息 + 同类型权益不同规格限制购买和提醒
fillOrderInfo(order);
//2. 订单金额计算
countOrderAmount(order);
@ -44,7 +49,7 @@ public class OrderApplicationService {
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode());
//4. 组织付款单信息
PaymentOrder paymentOrder = makePaymentOrder(order);
submitOrderDomainService.handle(order,paymentOrder);
submitOrderDomainService.handle(order, paymentOrder);
return new UserSubmitOrderVo(order.getId(), paymentOrder.getId());
}
@ -69,7 +74,7 @@ public class OrderApplicationService {
private void fillOrderInfo(Order order) {
if (CollUtil.isNotEmpty(order.getOrderItemList())) {
order.getOrderItemList().forEach(orderItem -> {
for (OrderItem orderItem : order.getOrderItemList()) {
ProductSpec productSpec = productSpecRepository.load(orderItem.getProductSpecId());
Product product = productRepository.load(productSpec.getProductId());
orderItem.setProductId(product.getId());
@ -79,7 +84,14 @@ public class OrderApplicationService {
orderItem.setProductTitle(product.getProductTitle());
orderItem.setProductDesc(product.getProductDesc());
orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice());
});
//1.1. 同类型权益不同规格限制购买和提醒
if (ProductTypeEnum.VIRTUAL.equals(product.getProductType())) {
boolean diffFlag = orderQueryService.checkDiffSpecRight(order, orderItem, productSpec);
if (diffFlag) {
throw new BizException("您已经拥有相同类型的权益");
}
}
}
}
}
}

2
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/right/RightApplicationService.java

@ -126,7 +126,7 @@ public class RightApplicationService {
/**
* 权益类型枚举转换
*/
private RightTypeEnum transformRightType(ProductSubCategoryEnum subCategory) {
public RightTypeEnum transformRightType(ProductSubCategoryEnum subCategory) {
switch (subCategory) {
case EDUCATION_CERTIFICATION:
return RightTypeEnum.EDUCATION_CERTIFICATION;

5
dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java

@ -4,10 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryParam;
import com.qniao.dam.api.query.order.user.response.GetOrderStatisticsByOperatorVo;
import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.order.entity.OrderItem;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.framework.utils.PageUtil;
public interface OrderQueryService {
IPage<UserPageOrderByOperatorVo> pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam);
GetOrderStatisticsByOperatorVo getOrderStatisticsByOperator(UserPageOrderByOperatorQueryParam queryParam);
boolean checkDiffSpecRight(Order order, OrderItem orderItem, ProductSpec productSpec);
}

41
dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java

@ -5,14 +5,28 @@ import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryPa
import com.qniao.dam.api.query.order.user.response.GetOrderStatisticsByOperatorVo;
import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo;
import com.qniao.dam.api.query.order.user.response.UserPageOrderItemByOperatorVo;
import com.qniao.dam.application.service.right.RightApplicationService;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.order.entity.OrderItem;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository;
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
import com.qniao.dam.domain.aggregate.right.entity.Right;
import com.qniao.dam.domain.aggregate.right.entity.RightTerm;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.domian.aggregate.right.constant.RightNameEnum;
import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.view.OrderViewDao;
import com.qniao.dam.query.order.OrderQueryService;
import com.qniao.dam.query.product.ProductQueryService;
import com.qniao.dam.query.right.RightQueryService;
import com.qniao.framework.utils.PageUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@ -20,6 +34,14 @@ public class OrderQueryServiceImpl implements OrderQueryService {
@Resource
private OrderViewDao orderViewDao;
@Resource
private RightQueryService rightQueryService;
@Resource
private RightApplicationService rightApplicationService;
@Resource
private ProductSpecRepository productSpecRepository;
@Resource
private ProductQueryService productQueryService;
@Override
public IPage<UserPageOrderByOperatorVo> pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam) {
@ -28,9 +50,7 @@ public class OrderQueryServiceImpl implements OrderQueryService {
List<Long> orderIdList = page.getRecords().stream().map(UserPageOrderByOperatorVo::getOrderId).collect(Collectors.toList());
List<UserPageOrderItemByOperatorVo> allOrderItemList = orderViewDao.listOrderItemByOperatorByOrderIds(orderIdList);
Map<Long, List<UserPageOrderItemByOperatorVo>> allOrderItemMap = allOrderItemList.stream().collect(Collectors.groupingBy(UserPageOrderItemByOperatorVo::getOrderId));
page.getRecords().forEach(record -> {
record.setOrderItemList(allOrderItemMap.get(record.getOrderId()));
});
page.getRecords().forEach(record -> record.setOrderItemList(allOrderItemMap.get(record.getOrderId())));
}
return page;
}
@ -39,4 +59,19 @@ public class OrderQueryServiceImpl implements OrderQueryService {
public GetOrderStatisticsByOperatorVo getOrderStatisticsByOperator(UserPageOrderByOperatorQueryParam queryParam) {
return orderViewDao.getOrderStatisticsByOperator(queryParam);
}
@Override
public boolean checkDiffSpecRight(Order order, OrderItem orderItem, ProductSpec productSpec) {
boolean flag = false;
ProductSpecTerm productSpecTerm = productQueryService.getTermByName(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.SPEC);
RightTypeEnum rightType = rightApplicationService.transformRightType(orderItem.getSubCategory());
if (Objects.nonNull(rightType) && Objects.nonNull(productSpecTerm)) {
Right right = rightQueryService.getEnableSpecPeriodRight(order.getUserId(), order.getMiId(), rightType);
if (Objects.nonNull(right)) {
RightTerm rightTerm = rightQueryService.getRightTermByName(right, RightNameEnum.SPEC);
flag = !rightTerm.getUnit().getValue().equals(productSpecTerm.getUnit().getValue());
}
}
return flag;
}
}

2
dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java

@ -14,5 +14,5 @@ public interface RightQueryService {
Right getEnableSpecPeriodRight(Long userId, Long miId, RightTypeEnum type);
RightTerm getRightTermByName(Right oldSpecPeriodRight, RightNameEnum name);
RightTerm getRightTermByName(Right right, RightNameEnum name);
}
Loading…
Cancel
Save