Quellcode durchsuchen

Merge remote-tracking branch 'origin/main' into main

luofeiyun vor 2 Wochen
Ursprung
Commit
f04a21966b
11 geänderte Dateien mit 319 neuen und 33 gelöschten Zeilen
  1. 1 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyage/VoyageMapper.java
  2. 19 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  3. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderOtcCreateVO.java
  4. 33 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderVO.java
  5. 5 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeSpuReqVO.java
  6. 0 6
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/order/TradeStandardSupplierController.java
  7. 2 2
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/ota/OtaStandardController.java
  8. 0 18
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/AppOtcTradeOrderController.java
  9. 7 4
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeStockOrderHandler.java
  10. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java
  11. 246 3
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

+ 1 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyage/VoyageMapper.java

@@ -49,6 +49,7 @@ public interface VoyageMapper extends BaseMapperX<VoyageDO> {
     default List<VoyageDO> selectOnShelfListByShipId(Long shipId) {
         return selectList(new LambdaQueryWrapperX<VoyageDO>()
                 .eq(VoyageDO::getShipId, shipId)
+                .gt(VoyageDO::getLeaveTime, LocalDate.now())
                 .eq(VoyageDO::getShelfStatus, VoyageShelfStatusEnum.ON_SHELF.getValue())
                 .orderByAsc(VoyageDO::getCreateTime));
     }

+ 19 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java

@@ -119,6 +119,25 @@ public class OtcTradeOrderController {
         return otcTradeOrderService.createOtcOrder(agencyAuthUtils.getAgencyLoginUser(), createVO);
     }
 
+    @RequestDecryption
+    @GetMapping("/travl/getOrderById")
+    @Operation(summary = "win-旅行社游船订单获取")
+    @OperateLog(type = TRADE)
+    @TradeRateLimit(name = "getOrderById", limitNum = 2, limitTime = 5)
+    public CommonResult<?> getOrderById(@RequestParam Long orderId) {
+        return otcTradeOrderService.getOrderById(orderId);
+    }
+
+
+    @RequestDecryption
+    @PostMapping("/travl/motifyOtcOrder")
+    @Operation(summary = "win-旅行社游船订单修改")
+    @OperateLog(type = TRADE)
+    @TradeRateLimit(name = "motifyOtcOrder", limitNum = 2, limitTime = 5)
+    public CommonResult<?> motifyOtcOrder(@Validated(value = WindowCreateOrderGroup.class)  @RequestBody TradeOrderOtcCreateVO createVO) {
+        return otcTradeOrderService.motifyOtcOrder(agencyAuthUtils.getAgencyLoginUser(), createVO);
+    }
+
     @RequestDecryption
     @PostMapping("/travl/createOtcFisrtOrder")
     @Operation(summary = "win-旅行社游船订单创建-预定单")

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderOtcCreateVO.java

@@ -10,6 +10,9 @@ import java.util.List;
 @Data
 public class TradeOrderOtcCreateVO {
 
+    @Schema(description = "订单ID")
+    private Long orderId;
+
     @Schema(description = "客户名称")
     private String customerName;
 

+ 33 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderVO.java

@@ -0,0 +1,33 @@
+package com.yc.ship.module.trade.controller.admin.order.vo.order;
+
+import com.yc.ship.module.trade.dal.dataobject.order.*;
+import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Schema(description = "旅行社订单创建参数")
+@Data
+public class TradeOrderVO {
+
+    @Schema(description = "订单信息")
+    private TradeOrderDO orderDO;
+
+    @Schema(description = "接站信息")
+    private OrderJzDO orderJzDO;
+
+    @Schema(description = "国籍数据")
+    private List<TradeOrderCountryDO> countryData;
+
+    @Schema(description = "房型数据")
+    private List<TradeOrderRoomModelDO> roomModelList;
+
+    @Schema(description = "订单汇总信息")
+    private TradeOrderTotalDO summary;
+
+    @Schema(description = "附加产品信息")
+    private List<TradeDetailRespVO> tradeDetailDOList;
+
+}

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeSpuReqVO.java

@@ -12,8 +12,13 @@ public class TradeSpuReqVO {
     @Schema(description = "附加产品ID")
     private Long productId;
 
+    @Schema(description = "是否必填 0附加产品 1赠票")
+    private Integer required;
+
     @Schema(description = "单价")
     private BigDecimal price;
 
     private List<TradeVistorReqVO> vistorList;
+    @Schema(description = "游客ID")
+    private List<String> tourist;
 }

+ 0 - 6
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/order/TradeStandardSupplierController.java

@@ -42,10 +42,4 @@ public class TradeStandardSupplierController {
         return CommonResult.success(null);
     }
 
-    @PostMapping("/xxxx/refundAuditNotify")
-    @Operation(summary = "示例:用于接收xxx供应商的退款审核通知,我们对接对方系统")
-    public CommonResult<?> xxxRefundAuditNotify(@RequestBody Map<String,Object> requestData){
-
-        return CommonResult.success(null);
-    }
 }

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/ota/OtaStandardController.java

@@ -30,10 +30,10 @@ import static com.yc.ship.framework.operatelog.core.enums.OperateTypeEnum.TRADE;
  */
 @Tag(name = "ota标准服务")
 @RestController
-@RequestMapping("/trade/ota")
+@RequestMapping("/ship/ota")
 @Validated
 @Slf4j
-public class OtaStandardController {
+public class OtaRelationController {
 
     @Resource
     private XieChengService xieChengService;

+ 0 - 18
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/otc/AppOtcTradeOrderController.java

@@ -54,24 +54,6 @@ public class AppOtcTradeOrderController {
     @Resource
     private AdminTradeOrderService adminTradeOrderService;
 
-    @RequestDecryption
-    @PostMapping("/autoMachine/createOrder")
-    @Operation(summary = "自助机创建订单")
-    @OperateLog(type = TRADE)
-    public CommonResult<AppOtcTradeOrderCreateRespVO> autoMachineCreateOrder(@Parameter(hidden = true) @StoreMachine StoreMachineDTO storeMachineDTO, @Valid @RequestBody OtcTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
-
-        return appOtcTradeOrderService.autoMachineCreateOrder(storeMachineDTO, otcTradeOrderCreateReqVO);
-    }
-
-    @RequestDecryption
-    @PostMapping("/autoMachine/payOrder")
-    @Operation(summary = "自助机支付订单")
-    @OperateLog(type = TRADE)
-    public CommonResult<PayOrderRespVO> autoMachinePayOrder(@Parameter(hidden = true) @StoreMachine StoreMachineDTO storeMachineDTO, @Valid @RequestBody PayOrderReqVO payOrderReqVO) {
-
-        return appOtcTradeOrderService.autoMachinePayOrder(storeMachineDTO, payOrderReqVO);
-    }
-
     @RequestDecryption
     @PostMapping("/miniApp/createOrder")
     @Operation(summary = "小程序创建订单")

+ 7 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeStockOrderHandler.java

@@ -10,6 +10,7 @@ import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
 import com.yc.ship.module.trade.service.order.bo.TradeOrderBO;
 import com.yc.ship.module.trade.service.order.bo.TradeOrderDetailBO;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
@@ -59,10 +60,12 @@ public class TradeStockOrderHandler implements TradeOrderHandler{
         List<OrderRoomUseDTO> orderRoomUseDTOList = new ArrayList<>();
         Map<String, Long> collect = tradeDetailDOList.stream().filter(tradeVisitorDO -> tradeVisitorDO.getRoomId() != null).collect(Collectors.groupingBy(TradeVisitorDO::getRoomId, Collectors.counting()));
         collect.keySet().forEach(roomId -> {
-            OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
-            orderRoomUseDTO.setRoomId(Long.valueOf(roomId));
-            orderRoomUseDTO.setNum(BigDecimal.valueOf(collect.get(roomId)).divide(new BigDecimal(2)));
-            orderRoomUseDTOList.add(orderRoomUseDTO);
+            if(StringUtils.isNotBlank(roomId)) {
+                OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
+                orderRoomUseDTO.setRoomId(Long.valueOf(roomId));
+                orderRoomUseDTO.setNum(BigDecimal.valueOf(collect.get(roomId)).divide(new BigDecimal(2)));
+                orderRoomUseDTOList.add(orderRoomUseDTO);
+            }
         });
         reqDTO.setOrderRoomList(orderRoomUseDTOList);
         Integer orderStatus = reqDTO.getOrderStatus();

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java

@@ -141,6 +141,7 @@ public interface OtcTradeOrderService {
      * @return
      */
     CommonResult<?> createOtcOrder(LoginUser agencyLoginUser, TradeOrderOtcCreateVO createVO);
+    CommonResult<?> motifyOtcOrder(LoginUser agencyLoginUser, TradeOrderOtcCreateVO createVO);
 
     /**
      * 获取订单详情 新
@@ -150,4 +151,6 @@ public interface OtcTradeOrderService {
     TradeOrderRespNewVO getOrderInfoNew(Long id);
 
     CommonResult<?> regionStatic(TradeStaticReqVO reqVO);
+
+    CommonResult<?> getOrderById(Long orderId);
 }

+ 246 - 3
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

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