|
@@ -1,6 +1,7 @@
|
|
package com.yc.ship.module.trade.service.order.impl;
|
|
package com.yc.ship.module.trade.service.order.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
@@ -17,6 +18,7 @@ import com.yc.ship.framework.common.util.date.DateUtils;
|
|
import com.yc.ship.framework.common.util.object.ObjectUtils;
|
|
import com.yc.ship.framework.common.util.object.ObjectUtils;
|
|
import com.yc.ship.framework.tenant.core.context.TenantContextHolder;
|
|
import com.yc.ship.framework.tenant.core.context.TenantContextHolder;
|
|
import com.yc.ship.module.ota.api.OtaDistributorApi;
|
|
import com.yc.ship.module.ota.api.OtaDistributorApi;
|
|
|
|
+import com.yc.ship.module.ota.api.dto.DistributorProductRespDTO;
|
|
import com.yc.ship.module.product.api.ProductApi;
|
|
import com.yc.ship.module.product.api.ProductApi;
|
|
import com.yc.ship.module.product.api.dto.*;
|
|
import com.yc.ship.module.product.api.dto.*;
|
|
import com.yc.ship.module.product.enums.ProductTypeEnum;
|
|
import com.yc.ship.module.product.enums.ProductTypeEnum;
|
|
@@ -24,6 +26,7 @@ import com.yc.ship.module.product.enums.SpecTypeEnum;
|
|
import com.yc.ship.module.system.api.dict.DictDataApi;
|
|
import com.yc.ship.module.system.api.dict.DictDataApi;
|
|
import com.yc.ship.module.system.api.dict.dto.DictDataRespDTO;
|
|
import com.yc.ship.module.system.api.dict.dto.DictDataRespDTO;
|
|
import com.yc.ship.module.trade.api.dto.*;
|
|
import com.yc.ship.module.trade.api.dto.*;
|
|
|
|
+import com.yc.ship.module.trade.controller.admin.order.vo.order.ShipTradeOrderCreateReqVO;
|
|
import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO;
|
|
import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO;
|
|
import com.yc.ship.module.trade.convert.order.TradeOrderConvert;
|
|
import com.yc.ship.module.trade.convert.order.TradeOrderConvert;
|
|
import com.yc.ship.module.trade.dal.dataobject.order.*;
|
|
import com.yc.ship.module.trade.dal.dataobject.order.*;
|
|
@@ -57,6 +60,7 @@ import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.function.Supplier;
|
|
import java.util.function.Supplier;
|
|
@@ -146,6 +150,43 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_CREATE)
|
|
|
|
+ public CommonResult<TradeOrderRespDTO> createShipOrder(ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO) {
|
|
|
|
+ TradeOrderBO tradeOrderBO = null;
|
|
|
|
+ try {
|
|
|
|
+ //1.构建订单
|
|
|
|
+ tradeOrderBO = buildShipCreateOrder(shipTradeOrderCreateReqVO);
|
|
|
|
+ //2.下单前处理
|
|
|
|
+ beforeOrderCreate(tradeOrderBO);
|
|
|
|
+ //3.保存订单
|
|
|
|
+ tradeOrderRepositoryService.saveOrder(tradeOrderBO);
|
|
|
|
+ //4.供应商下单
|
|
|
|
+ CommonResult<TradeSupplierOrderRespBO> tradeSupplierOrderResp = tradeSupplierService.createOrder(tradeOrderBO);
|
|
|
|
+ if (tradeSupplierOrderResp.isError()) {
|
|
|
|
+ //4.1 供应商下单失败回调
|
|
|
|
+ tradeSupplierCallbackService.afterAnyOrderCreateFail(tradeOrderBO.getTradeOrderDO());
|
|
|
|
+ return CommonResult.error(tradeSupplierOrderResp);
|
|
|
|
+ }
|
|
|
|
+ //4.2 供应商下单成功回调
|
|
|
|
+ tradeSupplierCallbackService.afterAllOrderCreate(tradeOrderBO.getTradeOrderDO());
|
|
|
|
+ //5.下单后处理
|
|
|
|
+ afterOrderCreate(tradeOrderBO);
|
|
|
|
+ TradeOrderRespDTO tradeOrderRespDTO = new TradeOrderRespDTO().setOrderId(tradeOrderBO.getTradeOrderDO().getId()).setOrderNo(tradeOrderBO.getTradeOrderDO().getOrderNo())
|
|
|
|
+ .setPayAmount(tradeOrderBO.getTradeOrderDO().getPayAmount()).setOriginPayAmount(tradeOrderBO.getExtraInfo().getOriginPayAmount())
|
|
|
|
+ .setDiscountAmount(tradeOrderBO.getExtraInfo().getDiscountAmount()).setMarketingId(tradeOrderBO.getExtraInfo().getMarketingCouponCodeId())
|
|
|
|
+ .setMarketingName(tradeOrderBO.getExtraInfo().getMarketingName());
|
|
|
|
+ return CommonResult.success(tradeOrderRespDTO);
|
|
|
|
+ } catch (ServiceException e) {
|
|
|
|
+ ExceptionUtils.log(log, "下单失败:", e);
|
|
|
|
+ handleAfterOrderCreateFail(e.getCode(), tradeOrderBO);
|
|
|
|
+ return CommonResult.error(e);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("下单失败:", e);
|
|
|
|
+ return CommonResult.error(ORDER_CREATE_FAIL);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@Deprecated
|
|
@Deprecated
|
|
public CommonResult<?> bindVisitor(TradeBindVisitorReqDTO tradeBindVisitorReqDTO) {
|
|
public CommonResult<?> bindVisitor(TradeBindVisitorReqDTO tradeBindVisitorReqDTO) {
|
|
@@ -641,6 +682,72 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
return tradeOrderBO;
|
|
return tradeOrderBO;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 构建创建订单
|
|
|
|
+ * @param orderCreateReqDTO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private TradeOrderBO buildShipCreateOrder(ShipTradeOrderCreateReqVO orderCreateReqDTO){
|
|
|
|
+ //重置金额
|
|
|
|
+ TradeOrderBO tradeOrderBO = new TradeOrderBO();
|
|
|
|
+ //订单
|
|
|
|
+ TradeOrderDO tradeOrderDO = new TradeOrderDO();
|
|
|
|
+ tradeOrderDO.setVisitorType( 1);
|
|
|
|
+ tradeOrderDO.setSellMethod( 1);
|
|
|
|
+ tradeOrderDO.setSourceId( orderCreateReqDTO.getOrderProperty().getSourceId());
|
|
|
|
+ tradeOrderDO.setSourceName( orderCreateReqDTO.getOrderProperty().getSourceName());
|
|
|
|
+ tradeOrderDO.setSellerId(orderCreateReqDTO.getOrderProperty().getSellerId());
|
|
|
|
+ tradeOrderDO.setStoreId(orderCreateReqDTO.getOrderProperty().getStoreId());
|
|
|
|
+ tradeOrderDO.setStoreName( orderCreateReqDTO.getOrderProperty().getStoreName());
|
|
|
|
+ tradeOrderDO.setExternalOrderNo( orderCreateReqDTO.getExternalOrderNo() );
|
|
|
|
+ tradeOrderDO.setTravelDate( orderCreateReqDTO.getTravelDate() );
|
|
|
|
+ tradeOrderDO.setAmount( orderCreateReqDTO.getAmount() );
|
|
|
|
+ tradeOrderDO.setPayAmount( orderCreateReqDTO.getPayAmount() );
|
|
|
|
+ tradeOrderDO.setRemark( orderCreateReqDTO.getRemark() );
|
|
|
|
+ tradeOrderDO.setItemId( orderCreateReqDTO.getItemId() );
|
|
|
|
+ tradeOrderDO.setIsFullPay( orderCreateReqDTO.getIsFullPay() );
|
|
|
|
+ tradeOrderDO.setIsMarketing( orderCreateReqDTO.getIsMarketing() );
|
|
|
|
+ tradeOrderDO.setGroupNo( orderCreateReqDTO.getGroupNo() );
|
|
|
|
+ tradeOrderDO.setVoyageId( orderCreateReqDTO.getVoyageId() );
|
|
|
|
+ tradeOrderDO.setShipId( orderCreateReqDTO.getShipId() );
|
|
|
|
+ tradeOrderDO.setCurrency( orderCreateReqDTO.getCurrency());
|
|
|
|
+ //设置团散类型
|
|
|
|
+ if(tradeOrderDO.getVisitorType()==null){
|
|
|
|
+ if(tradeOrderDO.getSellMethod() == 7){
|
|
|
|
+ tradeOrderDO.setVisitorType(1);
|
|
|
|
+ }else if(tradeOrderDO.getSellMethod() == 0 || tradeOrderDO.getSellMethod() == 2|| tradeOrderDO.getSellMethod() == 3|| tradeOrderDO.getSellMethod() == 4 || tradeOrderDO.getSellMethod() == 6 | tradeOrderDO.getSellMethod() == 8){
|
|
|
|
+ tradeOrderDO.setVisitorType(0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ tradeOrderDO.setId(IdWorker.getId());
|
|
|
|
+ tradeOrderDO.setOrderNo(tradeUUCodeUtils.generateOrderNo(ORDER_PREFIX));
|
|
|
|
+ tradeOrderDO.setOrderStatus(TradeOrderStatusEnum.INIT.getStatus());
|
|
|
|
+ //订单联系人
|
|
|
|
+ TradeOrderUserDO tradeOrderUserDO = new TradeOrderUserDO();
|
|
|
|
+ tradeOrderUserDO.setId(IdWorker.getId());
|
|
|
|
+ tradeOrderUserDO.setOrderId(tradeOrderDO.getId());
|
|
|
|
+ tradeOrderUserDO.setContactName(orderCreateReqDTO.getOrderUser().getContactName());
|
|
|
|
+ tradeOrderUserDO.setCredentialNo(orderCreateReqDTO.getOrderUser().getCredentialNo());
|
|
|
|
+ tradeOrderUserDO.setEmail(orderCreateReqDTO.getOrderUser().getEmail());
|
|
|
|
+ tradeOrderUserDO.setOrderId(tradeOrderDO.getId());
|
|
|
|
+ //订单额外信息
|
|
|
|
+ TradeOrderBO.ExtraInfo extraInfo = new TradeOrderBO.ExtraInfo();
|
|
|
|
+ extraInfo.setCouponCodeId(orderCreateReqDTO.getOrderProperty().getCouponCodeId());
|
|
|
|
+ extraInfo.setLinkId(orderCreateReqDTO.getOrderProperty().getLinkId());
|
|
|
|
+ extraInfo.setPersonalDistributorId(orderCreateReqDTO.getOrderProperty().getPersonalDistributorId());
|
|
|
|
+ extraInfo.setIsChange(orderCreateReqDTO.getIsChange());
|
|
|
|
+ extraInfo.setIsTimePay(orderCreateReqDTO.getIsTimePay());
|
|
|
|
+ tradeOrderBO.setExtraInfo(extraInfo);
|
|
|
|
+
|
|
|
|
+// List<TradeOrderDetailBO> tradeOrderDetailBOList = orderCreateReqDTO.getItemlList().stream().map(orderItem -> buildTradeOrderDetail(orderCreateReqDTO,tradeOrderDO,orderItem))
|
|
|
|
+// .collect(Collectors.toList());
|
|
|
|
+ //订单金额验证
|
|
|
|
+ tradeOrderBO.setTradeOrderDO(tradeOrderDO);
|
|
|
|
+ tradeOrderBO.setTradeOrderUserDO(tradeOrderUserDO);
|
|
|
|
+// tradeOrderBO.setTradeOrderDetailBOList(tradeOrderDetailBOList);
|
|
|
|
+ return tradeOrderBO;
|
|
|
|
+ }
|
|
|
|
+
|
|
private TradeOrderDO checkMainOrder(TradeOrderCreateReqDTO orderCreateReqDTO){
|
|
private TradeOrderDO checkMainOrder(TradeOrderCreateReqDTO orderCreateReqDTO){
|
|
if(orderCreateReqDTO.getMainOrderId() ==null){
|
|
if(orderCreateReqDTO.getMainOrderId() ==null){
|
|
return null;
|
|
return null;
|
|
@@ -670,13 +777,142 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
return tradeOrderDO;
|
|
return tradeOrderDO;
|
|
}
|
|
}
|
|
|
|
|
|
- private TradeOrderDetailBO buildTradeOrderDetail(TradeOrderCreateReqDTO orderCreateReqDTO,TradeOrderDO tradeOrderDO ,TradeOrderCreateReqDTO.OrderItem orderItem){
|
|
|
|
|
|
+ private TradeOrderDetailBO buildShipTradeOrderDetail(ShipTradeOrderCreateReqVO orderCreateReqDTO,TradeOrderDO tradeOrderDO ,ShipTradeOrderCreateReqVO.OrderItem orderItem){
|
|
|
|
|
|
TradeOrderDetailBO tradeOrderDetailBO = new TradeOrderDetailBO();
|
|
TradeOrderDetailBO tradeOrderDetailBO = new TradeOrderDetailBO();
|
|
//获取产品信息
|
|
//获取产品信息
|
|
- ProductSpuRespDTO productSpuRespDTO = null;
|
|
|
|
|
|
+ DistributorProductRespDTO distributorProductRespDTO = otaDistributorApi.getDistributorProductById(Long.parseLong(orderItem.getProductId())).getData();
|
|
tradeOrderDetailBO.setProductType(orderItem.getProductType());
|
|
tradeOrderDetailBO.setProductType(orderItem.getProductType());
|
|
|
|
+ ProductSpuRespDTO productSpuRespDTO = productApi.getCalendarProduct(distributorProductRespDTO.getProductId(), DateUtil.formatDate(orderItem.getUseDate())).getData();
|
|
|
|
+// validateOrder(orderCreateReqDTO,tradeOrderDO,orderItem,productSpuRespDTO);
|
|
|
|
+
|
|
|
|
+ List<TradeDetailDO> tradeDetailDOList = new ArrayList<>();
|
|
|
|
+ List<TradeDetailBaseDO> tradeDetailBaseDOList = new ArrayList<>();
|
|
|
|
+ List<TradeVisitorDO> tradeVisitorDOList = new ArrayList<>();
|
|
|
|
+ List<TradeDetailPriceDO> tradeDetailPriceDOList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ orderItem.getDetailList().forEach(orderDetail -> {
|
|
|
|
+
|
|
|
|
+ List<String> ticketNoList = tradeUUCodeUtils.generateTicketNo(orderDetail.getCount());
|
|
|
|
+ for (int i = 0; i < orderDetail.getCount(); i++) {
|
|
|
|
+ //订单详情
|
|
|
|
+ TradeDetailDO tradeDetailDO = new TradeDetailBO();
|
|
|
|
+
|
|
|
|
+ tradeDetailDO.setOrderId(tradeOrderDO.getId());
|
|
|
|
+ tradeDetailDO.setUseDate(orderItem.getUseDate() == null ? DateUtil.toLocalDateTime(tradeOrderDO.getTravelDate())
|
|
|
|
+ : DateUtil.toLocalDateTime(orderItem.getUseDate()));
|
|
|
|
+ tradeDetailDO.setProductId(Long.parseLong(orderItem.getProductId()));
|
|
|
|
+ tradeDetailDO.setProductName(productSpuRespDTO.getProductName());
|
|
|
|
+ tradeDetailDO.setPrice(orderDetail.getOriginPrice());
|
|
|
|
+ tradeDetailDO.setActualPrice(orderDetail.getPrice());
|
|
|
|
+ tradeDetailDO.setSpecType(orderDetail.getSpecType());
|
|
|
|
+ tradeDetailDO.setProductType(orderItem.getProductType());
|
|
|
|
+ tradeDetailDO.setCateType(productSpuRespDTO.getProductType());
|
|
|
|
+ tradeDetailDO.setQuantityOfOne(productSpuRespDTO.getProductSaleRule().getOneLimitNum());
|
|
|
|
+ tradeDetailDO.setUseRealName(productSpuRespDTO.getProductSaleRule().getIsLimitType());
|
|
|
|
+ //有效门票都是需要激活的,默认立即激活
|
|
|
|
+ if(productSpuRespDTO.getProductSaleRule().getActivateType()!=null && productSpuRespDTO.getProductSaleRule().getActivateType() == 1){
|
|
|
|
+ //立即激活
|
|
|
|
+ tradeDetailDO.setActivateStatus(1);
|
|
|
|
+ tradeDetailDO.setActivateTime(LocalDateTime.now());
|
|
|
|
+ }else{
|
|
|
|
+ tradeDetailDO.setActivateStatus(0);
|
|
|
|
+ tradeDetailDO.setActivateDays(productSpuRespDTO.getProductSaleRule().getActivateDayNum());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(productSpuRespDTO.getProductBasicRule().getNeedPlayDate() == 1){
|
|
|
|
+ //需要选择出行日期
|
|
|
|
+ Asserts.isTrue(tradeDetailDO.getUseDate()!=null,"此产品需要指定使用日期{}",productSpuRespDTO.getId());
|
|
|
|
+ Date travelDate = DateUtils.of(tradeDetailDO.getUseDate());
|
|
|
|
+ switch (productSpuRespDTO.getProductBasicRule().getValidityType()){
|
|
|
|
+ case 1:
|
|
|
|
+ //出行当天
|
|
|
|
+ tradeDetailDO.setValidityStartDate(tradeDetailDO.getUseDate());
|
|
|
|
+ tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(travelDate).toLocalDateTime());
|
|
|
|
+ break;
|
|
|
|
+ case 3:
|
|
|
|
+ //出行日期前后X天内
|
|
|
|
+ tradeDetailDO.setValidityStartDate(DateUtil.offsetDay(travelDate,-productSpuRespDTO.getProductBasicRule().getValidityNum()).toLocalDateTime());
|
|
|
|
+ tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(DateUtil.offsetDay(travelDate,productSpuRespDTO.getProductBasicRule().getValidityNum())).toLocalDateTime());
|
|
|
|
+ break;
|
|
|
|
+ case 4:
|
|
|
|
+ //出行日期至指定日期
|
|
|
|
+ tradeDetailDO.setValidityStartDate(tradeDetailDO.getUseDate());
|
|
|
|
+ Date validityDate =DateUtils.of(productSpuRespDTO.getProductBasicRule().getValidityDate());
|
|
|
|
+ tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(validityDate).toLocalDateTime());
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ if(productSpuRespDTO.getProductBasicRule().getValidityType() == 2){
|
|
|
|
+ //下单后X天内
|
|
|
|
+ Date now = new Date();
|
|
|
|
+ tradeDetailDO.setValidityStartDate(DateUtil.beginOfDay(now).toLocalDateTime());
|
|
|
|
+ tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(DateUtil.offsetDay(now,productSpuRespDTO.getProductBasicRule().getValidityNum())).toLocalDateTime());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if(productSpuRespDTO.getProductBasicRule().getCheckStartDate()!=null){
|
|
|
|
+ LocalDateTime checkStartTime = productSpuRespDTO.getProductBasicRule().getCheckStartDate().atStartOfDay();
|
|
|
|
+ //开始检票时间
|
|
|
|
+ if(tradeDetailDO.getValidityStartDate() == null || tradeDetailDO.getValidityStartDate().isBefore(checkStartTime)){
|
|
|
|
+ tradeDetailDO.setValidityStartDate(checkStartTime);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(productSpuRespDTO.getProductBasicRule().getCheckEndDate()!=null){
|
|
|
|
+ LocalDateTime checkEndTime = productSpuRespDTO.getProductBasicRule().getCheckEndDate().atStartOfDay();
|
|
|
|
+ DateTime checkEndDate = DateUtil.endOfDay(DateUtils.of(checkEndTime));
|
|
|
|
+
|
|
|
|
+ //结束检票时间
|
|
|
|
+ if(tradeDetailDO.getValidityEndDate() == null || tradeDetailDO.getValidityEndDate().isAfter(checkEndDate.toLocalDateTime())){
|
|
|
|
+ tradeDetailDO.setValidityEndDate(checkEndDate.toLocalDateTime());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(tradeDetailDO.getValidityEndDate()!=null){
|
|
|
|
+ tradeDetailDO.setValidityEndDate(tradeDetailDO.getValidityEndDate().truncatedTo(ChronoUnit.SECONDS));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ tradeDetailDO.setId(IdWorker.getId());
|
|
|
|
+ tradeDetailDO.setVoucherCode(ticketNoList.get(i));
|
|
|
|
+ tradeDetailDO.setVoucherStatus(VoucherStatusEnum.INIT.getStatus());
|
|
|
|
+ //游客信息
|
|
|
|
+// buildTradeVisitor(orderCreateReqDTO,productSpuRespDTO,tradeVisitorDOList,tradeDetailDO,orderDetail,i);
|
|
|
|
+ //详情基础产品
|
|
|
|
+// List<TradeDetailBaseDO> detailBaseDOList = buildTradeDetailBase(orderDetail,tradeDetailDO,productSpuRespDTO);
|
|
|
|
+ //明细价格
|
|
|
|
+// List<TradeDetailPriceDO> detailPriceList = buildTradeDetailPrice(tradeOrderDO,orderDetail.getDetailPriceList(),tradeDetailDO);
|
|
|
|
+ tradeDetailDOList.add(tradeDetailDO);
|
|
|
|
+// tradeDetailBaseDOList.addAll(detailBaseDOList);
|
|
|
|
+ /*if(CollUtil.isNotEmpty(detailPriceList)){
|
|
|
|
+ tradeDetailPriceDOList.addAll(detailPriceList);
|
|
|
|
+ }*/
|
|
|
|
+ if(tradeOrderDO.getTravelDate() == null && tradeDetailDO.getUseDate()!=null){
|
|
|
|
+ //补任意游玩日期
|
|
|
|
+ tradeOrderDO.setTravelDate(DateUtils.of(tradeDetailDO.getUseDate()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
|
|
|
|
+ //批量验证游客购买限制规则
|
|
|
|
+// batchCheckVisitorBuyLimit(tradeDetailDOList,orderItem.getDetailList(),tradeVisitorDOList,tradeDetailBaseDOList,productSpuRespDTO,excludeOrderId);
|
|
|
|
+
|
|
|
|
+ tradeOrderDetailBO.setTradeDetailDOList(tradeDetailDOList);
|
|
|
|
+ tradeOrderDetailBO.setTradeDetailBaseDOList(tradeDetailBaseDOList);
|
|
|
|
+ tradeOrderDetailBO.setTradeVisitorDOList(tradeVisitorDOList);
|
|
|
|
+ tradeOrderDetailBO.setTradeDetailPriceDOList(tradeDetailPriceDOList);
|
|
|
|
+ tradeOrderDetailBO.setProductSpuRespDTO(productSpuRespDTO);
|
|
|
|
+
|
|
|
|
+ return tradeOrderDetailBO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private TradeOrderDetailBO buildTradeOrderDetail(TradeOrderCreateReqDTO orderCreateReqDTO,TradeOrderDO tradeOrderDO ,TradeOrderCreateReqDTO.OrderItem orderItem){
|
|
|
|
+
|
|
|
|
+ TradeOrderDetailBO tradeOrderDetailBO = new TradeOrderDetailBO();
|
|
|
|
+ //获取产品信息
|
|
|
|
+ DistributorProductRespDTO distributorProductRespDTO = otaDistributorApi.getDistributorProductById(Long.parseLong(orderItem.getProductId())).getData();
|
|
|
|
+ tradeOrderDetailBO.setProductType(orderItem.getProductType());
|
|
|
|
+ ProductSpuRespDTO productSpuRespDTO = productApi.getCalendarProduct(distributorProductRespDTO.getProductId(), DateUtil.formatDate(orderItem.getUseDate())).getData();
|
|
validateOrder(orderCreateReqDTO,tradeOrderDO,orderItem,productSpuRespDTO);
|
|
validateOrder(orderCreateReqDTO,tradeOrderDO,orderItem,productSpuRespDTO);
|
|
|
|
|
|
List<TradeDetailDO> tradeDetailDOList = new ArrayList<>();
|
|
List<TradeDetailDO> tradeDetailDOList = new ArrayList<>();
|