| 
					
				 | 
			
			
				@@ -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; 
			 |