| 
					
				 | 
			
			
				@@ -16,6 +16,7 @@ import com.yc.ship.framework.common.pojo.PageResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.common.util.object.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.common.util.object.ObjectUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.ip.core.utils.AreaUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.security.core.LoginUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.tenant.core.context.TenantContextHolder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.tenant.core.util.TenantUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -278,6 +279,17 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return  tradeOrderService.createShipOrder(otcTradeOrderCreateReqVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private CommonResult<TradeOrderRespDTO> doShipModifyOrder(LoginUser loginUser, ShipTradeOrderCreateReqVO otcTradeOrderCreateReqVO,SellMethodEnum sellMethodEnum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ShipTradeOrderCreateReqVO.OrderProperty orderProperty = otcTradeOrderCreateReqVO.getOrderProperty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(orderProperty == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderProperty.setSellMethod(sellMethodEnum.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setShipOrderPropertyFromLoginUser(loginUser,orderProperty,sellMethodEnum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        otcTradeOrderCreateReqVO.setOrderProperty(orderProperty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return  tradeOrderService.createShipOrder(otcTradeOrderCreateReqVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public CommonResult<PayOrderRespVO> windowPayOrder(LoginUser loginUser, PayOrderReqVO payOrderReqVO) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2251,16 +2263,24 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //0 游船产品 1 附加产品 2:赠票 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(tradeSpuReqVO.getProductId()!=null && !tradeSpuReqVO.getVistorList().isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(tradeSpuReqVO.getProductId()!=null && !tradeSpuReqVO.getTourist().isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 orderDetail1.setProductType(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else if(tradeSpuReqVO.getProductId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else if(tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired()!=null && tradeSpuReqVO.getRequired()==1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 orderDetail1.setProductType(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(tradeSpuReqVO.getProductId()!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //有产品ID没有游客信息跳过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 orderDetail1.setProductType(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(orderDetail1.getProductType()==0||orderDetail1.getProductType()==1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for (TradeVistorReqVO tradeVistorReqVO : tradeSpuReqVO.getVistorList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (String touristId : tradeSpuReqVO.getTourist()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getOrderId().equals(touristId)).findFirst().get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(tradeVistorReqVO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     visitor.setName(tradeVistorReqVO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     visitor.setMobile(tradeVistorReqVO.getPhone()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2373,6 +2393,206 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public CommonResult<?> motifyOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long distributorId = loginUser.getDistributorId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long storeId = loginUser.getStoreId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取当前分销商信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(distributorId==null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return CommonResult.error(ORDER_OTC_FAIL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(storeId==null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return CommonResult.error(ORDER_STORE_FAIL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取当前分销商信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DistributorDO distributorDO = distributorMapper.selectById(distributorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(distributorDO==null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return CommonResult.error(ORDER_OTC_NONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取当前门店 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        StoreInfoRespDTO storeInfo = storeApi.getStoreInfo(storeId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(storeInfo==null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return CommonResult.error(ORDER_STORE_NONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String date = DateUtils.format(new Date(),"yyyyMMddmmss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String orderNo = distributorDO.getCode()+"-"+voyage.getCode()+"-"+date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeOrderCountryReqVO> countryData = createVO.getCountryData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setAmount(createVO.getSummary().getOrderMoney()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setPayAmount(createVO.getSummary().getOrderMoney()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setDicountId(createVO.getSummary().getDicountId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(createVO.getSummary().getRealOrderMoney()!=null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            shipTradeOrderCreateReqVO.setPayAmount(createVO.getSummary().getRealOrderMoney()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderUser.setContactName(createVO.getLinkMan()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderUser.setMobile(createVO.getLinkMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderUser.setEmail(createVO.getLinkEmail()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setOrderUser(orderUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setRemark(createVO.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setIsYd(createVO.getIsYd()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setOrderNo(orderNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderProperty.setSellMethod(SellMethodEnum.OTC.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderProperty.setSourceId(distributorDO.getId()+""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderProperty.setSourceName(distributorDO.getName()+""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderProperty.setStoreId(storeInfo.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderProperty.setStoreName(storeInfo.getName()+""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderProperty.setSellMethod(SellMethodEnum.OTC.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setOrderProperty(orderProperty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitor.setName(tradeVistorReqVO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitor.setMobile(tradeVistorReqVO.getPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitor.setCredentialNo(tradeVistorReqVO.getCardNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitor.setCredentialType(tradeVistorReqVO.getCardType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitor.setYczz(tradeVistorReqVO.getYichang()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitor.setCqzz(tradeVistorReqVO.getChongqing()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitor.setRoomId(tradeVistorReqVO.getRoomId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            visitorList.add(visitor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderDetail.setVisitorList(visitorList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderDetail.setCount(visitorList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal spuMoney = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //0 游船产品 1 附加产品 2:赠票 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(tradeSpuReqVO.getProductId()!=null && !tradeSpuReqVO.getVistorList().isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setProductType(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else if(tradeSpuReqVO.getProductId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setProductType(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setProductType(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(orderDetail1.getProductType()==0||orderDetail1.getProductType()==1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (TradeVistorReqVO tradeVistorReqVO : tradeSpuReqVO.getVistorList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setName(tradeVistorReqVO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setMobile(tradeVistorReqVO.getPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setCredentialNo(tradeVistorReqVO.getCardNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setCredentialType(tradeVistorReqVO.getCardType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setYczz(tradeVistorReqVO.getYichang()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setCqzz(tradeVistorReqVO.getChongqing()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitorList1.add(visitor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    spuMoney = spuMoney.add(tradeSpuReqVO.getPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setVisitorList(visitorList1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setProductId(tradeSpuReqVO.getProductId() + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setPrice(tradeSpuReqVO.getPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setCount(visitorList1.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                detailList.add(orderDetail1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setName(tradeVistorReqVO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setMobile(tradeVistorReqVO.getPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setCredentialNo(tradeVistorReqVO.getCardNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setCredentialType(tradeVistorReqVO.getCardType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setYczz(tradeVistorReqVO.getYichang()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitor.setCqzz(tradeVistorReqVO.getChongqing()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visitorList1.add(visitor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setVisitorList(visitorList1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setProductId(tradeSpuReqVO.getProductId() + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setPrice(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setOriginPrice(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDetail1.setCount(visitorList1.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                detailList.add(orderDetail1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(createVO.getSummary().getOrderMoney()!=null && createVO.getSummary().getOrderMoney().compareTo(new BigDecimal(0))>0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal price = createVO.getSummary().getOrderMoney().subtract(spuMoney).divide(new BigDecimal(visitorList.size()), 2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setPrice(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setOriginPrice(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal price = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setPrice(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setOriginPrice(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderDetail.setProductType(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        detailList.add(orderDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderItem.setDetailList(detailList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setItemlList(Arrays.asList(orderItem)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        BigDecimal totalAmount = spuMoney.add(createVO.getSummary().getOrderMoney()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shipTradeOrderCreateReqVO.setSpuAmount(spuMoney); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        shipTradeOrderCreateReqVO.setPayAmount(totalAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CommonResult<TradeOrderRespDTO> result = doShipModifyOrder(loginUser,shipTradeOrderCreateReqVO,SellMethodEnum.WINDOW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (result.isError()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return CommonResult.error(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TradeOrderTotalVO summary = createVO.getSummary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long orderId  = result.getCheckedData().getOrderId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderTotalDO.setOrderId(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderTotalMapper.insertOrUpdate(tradeOrderTotalDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //创建订单国籍数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeOrderRoomModelDO> list = new ArrayList<>(); //创建订单房型数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeOrderCountryDO> tradeOrderCountryDOList = new ArrayList<>(); //创建订单国籍数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeOrderFloorDO> floorPlus = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        countryData.stream().forEach(item -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TradeOrderCountryDO countryDO = BeanUtils.toBean(item, TradeOrderCountryDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Long countryId = IdWorker.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            countryDO.setOrderId(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            countryDO.setId(countryId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tradeOrderCountryDOList.add(countryDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TradeOrderRoomModelReqVO> roomModels = item.getRoomModels(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //创建订单房型数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roomModels.stream().forEach(roomModel -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TradeOrderRoomModelDO roomModelDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Long roomModelId = IdWorker.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                roomModelDO.setOrderId(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                roomModelDO.setId(roomModelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                roomModelDO.setCountryId(countryId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                list.add(roomModelDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 房型升楼层数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<TradeOrderFloorReqVO> floorReqVOList = roomModel.getFloorPlus(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(floorReqVOList == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                floorReqVOList.stream().forEach(floor -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TradeOrderFloorDO floorDO = BeanUtils.toBean(floor, TradeOrderFloorDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    floorDO.setOrderId(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    floorDO.setRoomModelId(roomModelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    floorPlus.add(floorDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderCountryMapper.insertOrUpdateBatch(tradeOrderCountryDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderRoomModelMapper.insertOrUpdateBatch(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderFloorMapper.insertOrUpdateBatch(floorPlus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return CommonResult.success(respVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public TradeOrderRespNewVO getOrderInfoNew(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2418,6 +2638,29 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return CommonResult.success(tradeOrderMapper.regionStatic(regionStatic)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public CommonResult<TradeOrderVO> getOrderById(Long orderId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TradeOrderVO tradeOrderVO = new TradeOrderVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderVO.setOrderDO(tradeOrderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //设置国籍数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeOrderCountryDO> countryDOS = tradeOrderCountryMapper.selectListByOrderId(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderVO.setCountryData(countryDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取订单门票信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeDetailRespVO> detailList = tradeDetailMapper.getOrderIdDetail(tradeOrderDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderVO.setTradeDetailDOList(detailList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //设置订单汇总数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TradeOrderTotalDO tradeOrderTotalDO = tradeOrderTotalMapper.selectOne(TradeOrderTotalDO::getOrderId, orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderVO.setSummary(tradeOrderTotalDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OrderJzDO orderJzDO = orderJzMapper.selectOne(OrderJzDO::getOrderId, orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderVO.setOrderJzDO(orderJzDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeOrderRoomModelDO> roomModelDOList = tradeOrderRoomModelMapper.selectList(TradeOrderRoomModelDO::getOrderId, orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeOrderVO.setRoomModelList(roomModelDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return CommonResult.success(tradeOrderVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void markChangeOrder(Long orderId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String key =  String.format(KEY_MARK_CHANGE_ORDER,orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         stringRedisTemplate.opsForValue().set(key,orderId.toString(),60, TimeUnit.MINUTES); 
			 |