|
@@ -576,6 +576,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
TradeOrderBO tradeOrderBO = new TradeOrderBO();
|
|
|
//订单
|
|
|
TradeOrderDO tradeOrderDO = TradeOrderConvert.INSTANCE.convert(orderCreateReqDTO);
|
|
|
+ //设置团散类型
|
|
|
if(tradeOrderDO.getVisitorType()==null){
|
|
|
if(tradeOrderDO.getSellMethod() == 7){
|
|
|
tradeOrderDO.setVisitorType(1);
|
|
@@ -583,9 +584,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
tradeOrderDO.setVisitorType(0);
|
|
|
}
|
|
|
}
|
|
|
+ //如果下单传入了订单ID 则会加票订单
|
|
|
if(orderCreateReqDTO.getOrderId()!=null){
|
|
|
tradeOrderDO.setId(orderCreateReqDTO.getOrderId());
|
|
|
if(ObjectUtil.equal(orderCreateReqDTO.getIsChange(),YES)){
|
|
|
+ //当前订单为加票新订单
|
|
|
tradeOrderDO.setIsChangeOrder(ORDER_CHANGE_TYPE_NEW);
|
|
|
}
|
|
|
}else {
|
|
@@ -593,11 +596,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
}
|
|
|
tradeOrderDO.setOrderNo(tradeUUCodeUtils.generateOrderNo(ORDER_PREFIX));
|
|
|
tradeOrderDO.setOrderStatus(TradeOrderStatusEnum.INIT.getStatus());
|
|
|
-// if(orderCreateReqDTO.getRoutePlanId()!=null){
|
|
|
-// RoutePlanRespDTO planDTO = tradeOrderRepositoryService.getRoutePlanByPlanId(orderCreateReqDTO.getRoutePlanId());
|
|
|
-// Asserts.isTrue(planDTO!=null,"未找到对应时间方案");
|
|
|
-// tradeOrderDO.setRoutePlanGroupType(planDTO.getGroupType());
|
|
|
-// }
|
|
|
//根据原订单设置新订单
|
|
|
setOrderByRelateOrder(tradeOrderDO,relateOrder);
|
|
|
|
|
@@ -614,7 +612,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
extraInfo.setIsTimePay(orderCreateReqDTO.getIsTimePay());
|
|
|
extraInfo.setMainOrderId(orderCreateReqDTO.getMainOrderId());
|
|
|
tradeOrderBO.setExtraInfo(extraInfo);
|
|
|
- //订单交付信息
|
|
|
+ //订单交付信息-小程序酒店、特产、二消等产品(邮寄、自提配置)
|
|
|
if(orderCreateReqDTO.getDeliveryInfo()!=null){
|
|
|
TradeOrderCreateReqDTO.DeliveryInfo deliveryInfo = orderCreateReqDTO.getDeliveryInfo();
|
|
|
if(ObjectUtil.equal(deliveryInfo.getDeliveryType(),DELIVERY_TYPE_EXPRESS)){
|
|
@@ -650,25 +648,25 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(orderCreateReqDTO.getMainOrderId());
|
|
|
Asserts.isTrue(tradeOrderDO!=null,"关联订单不存在{}",orderCreateReqDTO.getMainOrderId());
|
|
|
Asserts.isTrue(ObjectUtil.notEqual(tradeOrderDO.getIsBill(),2),"订单{}已经出账单,不能进行变更、增加等操作",orderCreateReqDTO.getMainOrderId());
|
|
|
- //主订单必须与当前登录账号为同一租户
|
|
|
+ //主订单必须与当前登录账号为同一单位
|
|
|
if(SellMethodEnum.isPlatSellMethod(tradeOrderDO.getSellMethod())){
|
|
|
Asserts.isTrue(ObjectUtil.equal(tradeOrderDO.getSourceId(),orderCreateReqDTO.getOrderProperty().getSourceId()),"无该订单操作权限");
|
|
|
}
|
|
|
- //如果被关联订单已经是增加订单了,则不能再增加
|
|
|
- if(ObjectUtil.equal(orderCreateReqDTO.getIsAddOrder() ,YES)){
|
|
|
- TradeOrderBindDO bindOrder = tradeOrderRepositoryService.getBindOrder(orderCreateReqDTO.getMainOrderId(), TradeOrderBindEnum.ADD_ORDER.getType());
|
|
|
- Asserts.isTrue(bindOrder == null,"当前订单为增加订单,不能再被增加");
|
|
|
- //增加订单,原订单不能被核销,全部退款
|
|
|
- Asserts.isTrue(ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNUSED.getStatus(),TradeOrderStatusEnum.PARTIAL_REFUND.getStatus())
|
|
|
- ,"当前订单状态不能被增加{}",tradeOrderDO.getOrderStatus());
|
|
|
- if(ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(),TradeOrderStatusEnum.PARTIAL_REFUND.getStatus())){
|
|
|
- //部分退可能有已检票门票
|
|
|
- Long checkCount = tradeOrderRepositoryService.getCheckCount(tradeOrderDO.getId());
|
|
|
- if(checkCount!=null && checkCount>0){
|
|
|
- Asserts.isTrue(false,"当前订单已核销不能被增加");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+// //如果被关联订单已经是增加订单了,则不能再增加
|
|
|
+// if(ObjectUtil.equal(orderCreateReqDTO.getIsAddOrder() ,YES)){
|
|
|
+// TradeOrderBindDO bindOrder = tradeOrderRepositoryService.getBindOrder(orderCreateReqDTO.getMainOrderId(), TradeOrderBindEnum.ADD_ORDER.getType());
|
|
|
+// Asserts.isTrue(bindOrder == null,"当前订单为增加订单,不能再被增加");
|
|
|
+// //增加订单,原订单不能被核销,全部退款
|
|
|
+// Asserts.isTrue(ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNUSED.getStatus(),TradeOrderStatusEnum.PARTIAL_REFUND.getStatus())
|
|
|
+// ,"当前订单状态不能被增加{}",tradeOrderDO.getOrderStatus());
|
|
|
+// if(ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(),TradeOrderStatusEnum.PARTIAL_REFUND.getStatus())){
|
|
|
+// //部分退可能有已检票门票
|
|
|
+// Long checkCount = tradeOrderRepositoryService.getCheckCount(tradeOrderDO.getId());
|
|
|
+// if(checkCount!=null && checkCount>0){
|
|
|
+// Asserts.isTrue(false,"当前订单已核销不能被增加");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
return tradeOrderDO;
|
|
|
}
|
|
|
|
|
@@ -677,28 +675,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
TradeOrderDetailBO tradeOrderDetailBO = new TradeOrderDetailBO();
|
|
|
//获取产品信息
|
|
|
ProductSpuRespDTO productSpuRespDTO = null;
|
|
|
- //多产品下单,分别配置了时间方案
|
|
|
-// RoutePlanRespDTO planDTO = null;
|
|
|
-// if(orderItem.getRoutePlanId()!=null){
|
|
|
-// planDTO = tradeOrderRepositoryService.getRoutePlanByPlanId(orderItem.getRoutePlanId());
|
|
|
-// Asserts.isTrue(planDTO!=null,"未找到对应时间方案[1]");
|
|
|
-// }
|
|
|
-// Long routePlanId = planDTO == null? tradeOrderDO.getRoutePlanId() : planDTO.getId();
|
|
|
-// Integer routePlanGroupType = planDTO == null? tradeOrderDO.getRoutePlanGroupType() : planDTO.getGroupType();
|
|
|
-
|
|
|
-// if(orderItem.getProductType() == PRODUCT_BASE_TYPE_PLAT){
|
|
|
-// //平台产品
|
|
|
-// DistributorProductRespDTO distributorProductRespDTO = otaDistributorApi.getDistributorProductById(Long.parseLong(orderItem.getProductId())).getCheckedData();
|
|
|
-// AtomicReference<ProductSpuRespDTO> productSpuAtomicRef = new AtomicReference<>();
|
|
|
-// TenantUtils.execute(distributorProductRespDTO.getTenantId(),()->{
|
|
|
-// productSpuAtomicRef.set(productApi.getCalendarProduct(distributorProductRespDTO.getProductId(),DateUtil.formatDate(orderItem.getUseDate()),routePlanId).getCheckedData());
|
|
|
-// });
|
|
|
-// productSpuRespDTO = productSpuAtomicRef.get();
|
|
|
-// }else{
|
|
|
-// //自建产品,平台才管时间方案
|
|
|
-// Long useRoutePlanId = SellMethodEnum.isPlatSellMethod(tradeOrderDO.getSellMethod())?routePlanId:null;
|
|
|
-// productSpuRespDTO = productApi.getCalendarProduct(Long.parseLong(orderItem.getProductId()), DateUtil.formatDate(orderItem.getUseDate()),useRoutePlanId).getCheckedData();
|
|
|
-// }
|
|
|
tradeOrderDetailBO.setProductType(orderItem.getProductType());
|
|
|
|
|
|
validateOrder(orderCreateReqDTO,tradeOrderDO,orderItem,productSpuRespDTO);
|
|
@@ -1184,8 +1160,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
|
|
}
|
|
|
}
|
|
|
//重新计算的总价只会比支付价格小
|
|
|
- BigDecimal subAmount = orderCreateReqDTO.getPayAmount().subtract(totalAmount);
|
|
|
- return subAmount;
|
|
|
+ return orderCreateReqDTO.getPayAmount().subtract(totalAmount);
|
|
|
}
|
|
|
|
|
|
return BigDecimal.ZERO;
|