|
|
@@ -50,6 +50,7 @@ import com.yc.ship.module.trade.service.supplier.TradeSupplierService;
|
|
|
import com.yc.ship.module.trade.service.supplier.bo.TradeSupplierOrderRespBO;
|
|
|
import com.yc.ship.module.trade.service.thirdsystem.ThirdGateSystemService;
|
|
|
import com.yc.ship.module.trade.utils.AgencyAuthUtils;
|
|
|
+import com.yc.ship.module.trade.utils.BeanUtils;
|
|
|
import com.yc.ship.module.trade.utils.TradeUUCodeUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -201,11 +202,14 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
beforeOrderCreate(tradeOrderBO);
|
|
|
//3.保存订单
|
|
|
tradeOrderBO.setUpdateTime(shipTradeOrderCreateReqVO.getUpdateTime());
|
|
|
+
|
|
|
+ String changedFields = BeanUtils.getChangedFields(shipTradeOrderCreateReqVO.getOldtradeOrderDO(), tradeOrderBO.getTradeOrderDO());
|
|
|
+ System.err.println("changedFields=" + changedFields + shipTradeOrderCreateReqVO.getChangedFields1());
|
|
|
tradeOrderRepositoryService.modifyOrder(tradeOrderBO);
|
|
|
//4 下单成功回调
|
|
|
tradeSupplierCallbackService.afterAllOrderCreate(tradeOrderBO.getTradeOrderDO());
|
|
|
//5.下单后处理
|
|
|
- afterOrderCreate(tradeOrderBO);
|
|
|
+ afterOrderModify(tradeOrderBO, changedFields + shipTradeOrderCreateReqVO.getChangedFields1());
|
|
|
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())
|
|
|
@@ -524,11 +528,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
}
|
|
|
}
|
|
|
tradeOrderDO.setId(IdWorker.getId());
|
|
|
-// if (orderCreateReqDTO.getOrderId() != null) {
|
|
|
-// tradeOrderDO.setId(orderCreateReqDTO.getOrderId());
|
|
|
-// } else {
|
|
|
-// tradeOrderDO.setId(IdWorker.getId());
|
|
|
-// }
|
|
|
//旅行社编号 + 航次编号 + 3位 旅行社当天订单流水号
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(orderCreateReqDTO.getOrderNo())) {
|
|
|
tradeOrderDO.setOrderNo(orderCreateReqDTO.getOrderNo());
|
|
|
@@ -961,9 +960,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
|
|
|
/**
|
|
|
* 验证订单 产品规则验证
|
|
|
- *
|
|
|
- * @param tradeOrderDO
|
|
|
- * @param productSpuRespDTO
|
|
|
*/
|
|
|
private void validateOrder(TradeOrderCreateReqDTO orderCreateReqDTO, TradeOrderDO tradeOrderDO, TradeOrderCreateReqDTO.OrderItem orderItem, ProductSpuRespDTO productSpuRespDTO) {
|
|
|
Asserts.isTrue(productSpuRespDTO != null, "产品不存在,{}", orderItem.getProductId());
|
|
|
@@ -976,19 +972,14 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
//获取产品sku价格
|
|
|
ProductSkuRespDTO productSku = getProductSku(orderDetail.getSpecType(), productSpuRespDTO);
|
|
|
//如果是小程序酒店产品,单独判断
|
|
|
- BigDecimal packProductPrice;
|
|
|
BigDecimal price;
|
|
|
if (ObjectUtils.equalsAny(tradeOrderDO.getSellMethod(), SellMethodEnum.MINI_APP.getType())) {
|
|
|
//获取住宿期间的日历价格
|
|
|
if (ObjectUtil.equal(productSpuRespDTO.getProductType(), ProductTypeEnum.Hotel.getValue())) {
|
|
|
//暂时不验证酒店产品
|
|
|
break;
|
|
|
- } else {
|
|
|
-// packProductPrice = getPackProductPrice(orderItem.getPackProductId(), Long.parseLong(orderItem.getProductId()), orderDetail.getSpecType());
|
|
|
- packProductPrice = null;
|
|
|
}
|
|
|
-
|
|
|
- price = packProductPrice == null ? (productSku == null ? BigDecimal.ZERO : productSku.getSalePrice()) : packProductPrice;
|
|
|
+ price = productSku == null ? BigDecimal.ZERO : productSku.getSalePrice();
|
|
|
} else {
|
|
|
price = productSku == null ? BigDecimal.ZERO : productSku.getSalePrice();
|
|
|
}
|
|
|
@@ -1083,33 +1074,22 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
tradeOrderHandlers.forEach(handler -> handler.afterOrderCreate(tradeOrderBO));
|
|
|
tradePublishUtils.publishOrderCreateSuccessMsg(tradeOrderBO.getTradeOrderDO().getId().toString());
|
|
|
//支付倒计时--不超时,有预订单
|
|
|
- TradeOrderLogUtils.setOrderInfo(tradeOrderBO.getTradeOrderDO().getId(), null, tradeOrderBO.getTradeOrderDO().getOrderStatus(), TradeOrderLogUtils.append("result", "成功"));
|
|
|
+ Map<String, Object> append = TradeOrderLogUtils.append("result", "成功");
|
|
|
+ append.put("content", "");
|
|
|
+ TradeOrderLogUtils.setOrderInfo(tradeOrderBO.getTradeOrderDO().getId(), null, tradeOrderBO.getTradeOrderDO().getOrderStatus(), append);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- public void afterOrderDispatch(List<TradeOrderDispatchDO> dispatchList) {
|
|
|
- List<TradeOrderDO> tradeOrderDOList = new ArrayList<>();
|
|
|
- for (TradeOrderDispatchDO tradeOrderDispatchDO : dispatchList) {
|
|
|
- //不跟基础产品关联,只要有相同项目的计调了就算计调了
|
|
|
- Map<String, Long> dispatchCountMap = tradeOrderRepositoryService.getDispatchCount(tradeOrderDispatchDO.getOrderId());
|
|
|
- Long totalCount = dispatchCountMap.get("totalCount");
|
|
|
- Long dispatchCount = dispatchCountMap.get("dispatchCount");
|
|
|
- TradeOrderDO tradeOrderDO = new TradeOrderDO();
|
|
|
- tradeOrderDO.setId(tradeOrderDispatchDO.getOrderId());
|
|
|
- if (totalCount == 0) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (ObjectUtil.equal(totalCount, dispatchCount)) {
|
|
|
- //全部出票
|
|
|
- tradeOrderDO.setDispatchStatus(ORDER_DISPATCH_STATUS_FINISH);
|
|
|
- } else {
|
|
|
- tradeOrderDO.setDispatchStatus(ORDER_DISPATCH_STATUS_PART);
|
|
|
- }
|
|
|
- tradeOrderDOList.add(tradeOrderDO);
|
|
|
- }
|
|
|
- tradeOrderRepositoryService.updateOrderBatch(tradeOrderDOList);
|
|
|
+ private void afterOrderModify(TradeOrderBO tradeOrderBO, String content) {
|
|
|
+ //执行下单后处理器
|
|
|
+ tradeOrderHandlers.forEach(handler -> handler.afterOrderCreate(tradeOrderBO));
|
|
|
+ tradePublishUtils.publishOrderCreateSuccessMsg(tradeOrderBO.getTradeOrderDO().getId().toString());
|
|
|
+ //支付倒计时--不超时,有预订单
|
|
|
+ Map<String, Object> append = TradeOrderLogUtils.append("result", "订单修改");
|
|
|
+ append.put("content", content);
|
|
|
+ TradeOrderLogUtils.setOrderInfo(tradeOrderBO.getTradeOrderDO().getId(), null, tradeOrderBO.getTradeOrderDO().getOrderStatus(), append);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private void batchCheckVisitorBuyLimit(List<TradeDetailDO> tradeDetailDOList, List<TradeOrderCreateReqDTO.OrderDetail> orderDetailList, List<TradeVisitorDO> tradeVisitorDOList, List<TradeDetailBaseDO> tradeDetailBaseDOList, ProductSpuRespDTO productSpuRespDTO, Long excludeOrderId) {
|
|
|
TradeDetailDO tradeDetailDO = tradeDetailDOList.get(0);
|
|
|
if (CollUtil.isEmpty(tradeVisitorDOList) || tradeDetailDO.getUseDate() == null) {
|