Przeglądaj źródła

小程序下单相关代码

lishiqiang 2 tygodni temu
rodzic
commit
877511e45d

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

@@ -581,10 +581,6 @@ public class OtcTradeOrderController {
     @PlatTenantEnv
     public void exportOrderExcel(@Valid TradeOrderPageReqVO pageReqVO, HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(10000);
-//        if (pageReqVO.getVoyageId() == null) {
-//            ExcelUtils.exportError(response, "游客列表.xls");
-//            return;
-//        }
         List<TradeOrderRespExcelVO> list = tradeOrderService.getExportVisitorList(pageReqVO);
         ExcelUtils.write(response, "游客列表.xls", "数据", TradeOrderRespExcelVO.class, list);
     }

+ 26 - 10
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/MiniTradeOrderCreateReqVO.java

@@ -11,11 +11,11 @@ import java.util.List;
 @Data
 public class MiniTradeOrderCreateReqVO {
 
-    @Schema(description = "分销商ID", example = "MT1231312")
-    private Long distributorId;
+    @Schema(description = "订单ID")
+    private Long orderId;
 
-    @Schema(description = "用户ID", example = "MT1231312")
-    private String userId;
+    @Schema(description = "订单号")
+    private String orderNo;
 
     @Schema(description = "客户名称")
     private String customerName;
@@ -23,9 +23,12 @@ public class MiniTradeOrderCreateReqVO {
     @Schema(description = "订单联系人")
     private String linkMan;
 
-    @Schema(description = "时间")
+    @Schema(description = "登船时间")
     private Date boardingTime;
 
+    @Schema(description = "离开时间")
+    private Date leaveTime;
+
     @Schema(description = "联系人手机")
     private String linkMobile;
 
@@ -35,6 +38,9 @@ public class MiniTradeOrderCreateReqVO {
     @Schema(description = "船ID")
     private Long shipId;
 
+    @Schema(description = "是否搬单")
+    private boolean moveOrder;
+
     @Schema(description = "航次ID")
     private Long voyageId;
 
@@ -62,21 +68,31 @@ public class MiniTradeOrderCreateReqVO {
     @Schema(description = "接站联系电话")
     private String jzLinkPhone;
 
+    @Schema(description = "分销商ID", example = "MT1231312")
+    private Long distributorId;
+
     @Schema(description = "门店ID", example = "123")
     private Long storeId;
 
-    @Schema(description = "订单总额-前端修改")
-    private BigDecimal realAmount;
-
-    @Schema(description = "房间房型数据")
-    List<TradeOrderRoomModelVO> roomModelList;
+    @Schema(description = "房型信息")
+    private List<TradeOrderRoomModelVO> roomModelList;
 
     @Schema(description = "订单汇总信息")
     private TradeOrderTotalVO summary;
 
+    @Schema(description = "游客信息")
     private List<TradeVistorReqVO> tourist;
 
     @Schema(description = "附加产品信息")
     private List<TradeSpuReqVO> spuList;
 
+    @Schema(description = "政策信息")
+    private List<TradeOrderPolicyReqVO> policyList;
+
+    @Schema(description = "用户ID", example = "MT1231312")
+    private String userId;
+
+    @Schema(description = "订单总额-前端修改")
+    private BigDecimal realAmount;
+
 }

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

@@ -1,31 +0,0 @@
-package com.yc.ship.module.trade.controller.admin.order.vo.order;
-
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
-
-@Schema(description = "旅行社交易改签 Request VO")
-@Data
-public class OtcTradeChangeOrderReqVO{
-
-    @Schema(description = "主订单ID,通过此订单再新增订单(增加产品/数量,改签时传递)", example = "")
-    @NotNull(message = "主订单ID不能为空")
-    private Long mainOrderId;
-
-    @Schema(description = "新订单ID", example = "")
-    @NotNull(message = "新订单ID不能为空")
-    private Long orderId;
-
-    @Schema(description = "实际支付或退款金额")
-    @NotNull(message = "实际支付或退款金额不能为空")
-    private BigDecimal realPayAmount;
-
-    @Schema(description = "0原路退回,1线下退款 ", example = "")
-    private Integer refundBackType;
-
-    @Schema(description = "如需支付时的支付参数 ", example = "")
-    private PayOrderReqVO payOrderParams;
-}

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

@@ -1,12 +0,0 @@
-package com.yc.ship.module.trade.controller.admin.order.vo.order;
-
-import com.yc.ship.module.trade.api.dto.TradeOrderChangeReqDTO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-
-@Schema(description = "旅行社改签 Request VO")
-@Data
-public class OtcTradeOrderChangeReqVO extends TradeOrderChangeReqDTO {
-
-}

+ 2 - 5
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java

@@ -1,18 +1,15 @@
 package com.yc.ship.module.trade.dal.mysql.order;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.product.api.dto.*;
-import com.yc.ship.module.trade.api.dto.*;
 import com.yc.ship.module.trade.api.sms.dto.SmsSendLogDTO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.OtaTradeLogPageReqVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.OtaTradeLogRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderDetailCountRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundDetailRespVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.rule.*;
+import com.yc.ship.module.trade.controller.admin.order.vo.rule.GateCheckDetailRespVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.rule.MarketingPageReqVO;
 import com.yc.ship.module.trade.controller.admin.smsSendconfig.vo.SmsSendconfigQueryRespVO;
 import com.yc.ship.module.trade.dal.dataobject.order.CategoryRespVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeDetailBaseDO;

+ 163 - 80
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/AppOtcTradeOrderServiceImpl.java

@@ -1,40 +1,58 @@
 package com.yc.ship.module.trade.service.otc.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.excel.util.DateUtils;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.yc.ship.framework.common.lang.Asserts;
 import com.yc.ship.framework.common.pojo.CommonResult;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.common.util.object.BeanUtils;
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.security.core.LoginUser;
 import com.yc.ship.module.infra.api.config.ConfigApi;
+import com.yc.ship.module.marketing.api.policy.PolicyApi;
 import com.yc.ship.module.product.api.ProductApi;
 import com.yc.ship.module.product.api.dto.VoyageRespDTO;
+import com.yc.ship.module.resource.api.route.RouteApi;
+import com.yc.ship.module.resource.api.route.dto.RouteRespDTO;
+import com.yc.ship.module.resource.api.ship.ShipApi;
+import com.yc.ship.module.resource.api.ship.dto.ShipRespDTO;
 import com.yc.ship.module.trade.api.dto.TradeOrderRespDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderPageReqVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderRespVO;
 import com.yc.ship.module.trade.convert.order.TradeOrderConvert;
+import com.yc.ship.module.trade.dal.dataobject.audituser.AuditUserDO;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderRoomModelDO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderTotalDO;
+import com.yc.ship.module.trade.dal.dataobject.orderpolicy.OrderPolicyDO;
+import com.yc.ship.module.trade.dal.mysql.audituser.AuditUserMapper;
+import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
 import com.yc.ship.module.trade.dal.mysql.order.TradeOrderRoomModelMapper;
 import com.yc.ship.module.trade.dal.mysql.order.TradeOrderTotalMapper;
+import com.yc.ship.module.trade.dal.mysql.orderpolicy.OrderPolicyMapper;
+import com.yc.ship.module.trade.dal.mysql.tradeOrderaudit.TradeOrderAuditMapper;
 import com.yc.ship.module.trade.enums.PayAccountTypeEnum;
 import com.yc.ship.module.trade.enums.SellMethodEnum;
+import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
+import com.yc.ship.module.trade.framework.common.TradeOrderLogUtils;
+import com.yc.ship.module.trade.framework.mq.TradePublishUtils;
 import com.yc.ship.module.trade.service.order.TradeOrderService;
 import com.yc.ship.module.trade.service.otc.AppOtcTradeOrderService;
 import com.yc.ship.module.trade.service.otc.OtcTradeOrderService;
 import com.yc.ship.module.trade.service.pay.TradeOrderPayService;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
+import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 import static com.yc.ship.module.trade.enums.ErrorCodeConstants.ORDER_PAY_TENAND_FAIL;
 
@@ -59,6 +77,31 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
     private OtcTradeOrderService otcTradeOrderService;
     @Resource
     private ProductApi productApi;
+    @Resource
+    private RouteApi routeApi;
+    @Resource
+    private ShipApi shipApi;
+
+    @Resource
+    private AuditUserMapper auditUserMapper;
+
+    @Resource
+    private TradeOrderAuditMapper tradeOrderAuditMapper;
+
+    @Resource
+    private OrderPolicyMapper orderPolicyMapper;
+
+    @Resource
+    private PolicyApi policyApi;
+
+    @Resource
+    private RedissonClient redissonClient;
+
+    @Resource
+    private TradePublishUtils tradePublishUtils;
+
+    @Resource
+    private TradeOrderMapper tradeOrderMapper;
 
     @Resource
     private TradeOrderTotalMapper tradeOrderTotalMapper;
@@ -89,8 +132,20 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
 
         shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
         VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId());
-        String date = DateUtils.format(new Date(), "yyyyMMddmmss");
-        String orderNo = "MINI" + "-" + voyage.getCode() + "-" + date;
+        RouteRespDTO routeRespDTO = routeApi.queryRouteById(voyage.getRouteId());
+        ShipRespDTO ship = shipApi.queryShip(createVO.getShipId());
+        int maxOrderNo = tradeOrderService.getMaxOrderNo(createVO.getVoyageId());
+        String date = DateUtils.format(voyage.getBoardingTime(), "yyyyMMdd");
+        String code = "YC";
+        if (routeRespDTO != null && routeRespDTO.getDirection() == 2) {
+            code = "CY";
+        }
+        String orderNo;
+        if (ship.getCode() == null) {
+            orderNo = "MINI"+date + "-" + voyage.getCode() + "-" + (maxOrderNo + 1);
+        } else {
+            orderNo = "MINI"+ship.getCode() + "-" + date + "-" + code + "-" + (maxOrderNo + 1);
+        }
         shipTradeOrderCreateReqVO.setOrderNo(orderNo);
 
         ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
@@ -105,13 +160,23 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
         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()) {
+            List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
+            ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
+            BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
+            visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
+            visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
+            visitorDetailId.setProductType(0);
+            visitorDetailId.setBoardingTime(createVO.getBoardingTime());
+            visitorDetailId.setLeaveTime(createVO.getLeaveTime());
+            visitorDetailId.setProductType(0);
             ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
             visitorList.add(visitor);
+            visitorDetailId.setVisitorList(visitorList);
+            visitorDetailId.setCount(1);
+            detailList.add(visitorDetailId);
         }
-        orderDetail.setVisitorList(visitorList);
-        orderDetail.setCount(visitorList.size());
+        orderItem.setDetailList(detailList);
 
         BigDecimal spuMoney = new BigDecimal(0);
         for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
@@ -122,103 +187,121 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
             } else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
                 orderDetail1.setProductType(2);
             } else {
-                if (tradeSpuReqVO.getProductId() != null) {
-                    //有产品ID没有游客信息跳过
-                    continue;
-                }
-                orderDetail1.setProductType(0);
+                continue;
             }
             List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
-            if (orderDetail1.getProductType() == 0 || orderDetail1.getProductType() == 1) {
-                for (String touristId : tradeSpuReqVO.getTourist()) {
-                    TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
-                    ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
-                    visitor.setName(tradeVistorReqVO.getName());
-                    visitor.setVid(tradeVistorReqVO.getId());
-                    visitor.setMobile(tradeVistorReqVO.getMobile());
-                    visitor.setGender(tradeVistorReqVO.getGender());
-                    visitor.setCredentialNo(tradeVistorReqVO.getCardNo());
-                    visitor.setCredentialType(tradeVistorReqVO.getCardType());
-                    visitor.setYczz(tradeVistorReqVO.getYichang());
-                    visitor.setCqzz(tradeVistorReqVO.getChongqing());
-                    visitor.setNationality(tradeVistorReqVO.getNationality());
-                    visitor.setRoomId(tradeVistorReqVO.getRoomId());
-                    visitor.setCohabitation(tradeVistorReqVO.getCohabitation());
-                    visitor.setRoomIndexId(tradeVistorReqVO.getRoomIndexId());
-                    visitor.setRoomModelId(tradeVistorReqVO.getRoomModelId());
-                    visitor.setFloor(tradeVistorReqVO.getFloor());
-                    visitorList1.add(visitor);
-                    spuMoney = spuMoney.add(tradeSpuReqVO.getPrice());
-                }
-                orderDetail1.setVisitorList(visitorList1);
-                orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
-                orderDetail1.setPrice(tradeSpuReqVO.getPrice());
-                orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
-            } else {
-                for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
-                    ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
-                    visitor.setName(tradeVistorReqVO.getName());
-                    visitor.setMobile(tradeVistorReqVO.getMobile());
-                    visitor.setCredentialNo(tradeVistorReqVO.getCardNo());
-                    visitor.setCredentialType(tradeVistorReqVO.getCardType());
-                    visitor.setYczz(tradeVistorReqVO.getYichang());
-                    visitor.setCqzz(tradeVistorReqVO.getChongqing());
-                    visitor.setRoomId(tradeVistorReqVO.getRoomId());
-                    visitor.setNationality(tradeVistorReqVO.getNationality());
-                    visitor.setCohabitation(tradeVistorReqVO.getCohabitation());
-                    visitor.setRoomIndexId(tradeVistorReqVO.getRoomIndexId());
-                    visitor.setRoomModelId(tradeVistorReqVO.getRoomModelId());
-                    visitor.setFloor(tradeVistorReqVO.getFloor());
-                    visitorList1.add(visitor);
-                }
-                orderDetail1.setVisitorList(visitorList1);
-                orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
-                orderDetail1.setPrice(BigDecimal.ZERO);
-                orderDetail1.setOriginPrice(BigDecimal.ZERO);
+            for (String touristId : tradeSpuReqVO.getTourist()) {
+                TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
+                ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
+                visitorList1.add(visitor);
+                BigDecimal price = tradeSpuReqVO.getPrice() == null ? BigDecimal.ZERO : tradeSpuReqVO.getPrice();
+                spuMoney = spuMoney.add(price);
             }
+            orderDetail1.setVisitorList(visitorList1);
+            orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
+            orderDetail1.setPrice(tradeSpuReqVO.getPrice());
+            orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
+
             orderDetail1.setCount(visitorList1.size());
             detailList.add(orderDetail1);
         }
-        BigDecimal price;
-        if (createVO.getSummary().getOrderMoney() != null && createVO.getSummary().getOrderMoney().compareTo(new BigDecimal(0)) > 0) {
-            price = createVO.getSummary().getOrderMoney().subtract(spuMoney).divide(new BigDecimal(visitorList.size()), 2, RoundingMode.HALF_UP);
-        } else {
-            price = new BigDecimal(0);
-        }
-        orderDetail.setPrice(price);
-        orderDetail.setOriginPrice(price);
-
-        orderDetail.setProductType(0);
-        detailList.add(orderDetail);
-
-
-        orderItem.setDetailList(detailList);
 
         shipTradeOrderCreateReqVO.setItemlList(Collections.singletonList(orderItem));
-
+        Date travelDate = shipTradeOrderCreateReqVO.getTravelDate();
         shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
+        if (DateUtil.compare(travelDate, new Date()) < 0) {
+            Asserts.isTrue(false, "选择的游玩日期不能早于当前时间");
+        }
 
-        CommonResult<TradeOrderRespDTO> result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
+        CommonResult<TradeOrderRespDTO> result;
+        try {
+            result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
+        } catch (Exception e) {
+            return CommonResult.error(500, e.getMessage());
+        }
         if (result.isError()) {
-            return CommonResult.error(result);
+            return CommonResult.error(result.getCode(), result.getMsg());
         }
         TradeOrderTotalVO summary = createVO.getSummary();
         TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
         Long orderId = result.getCheckedData().getOrderId();
+        Integer orderStatus = result.getCheckedData().getOrderStatus();
         tradeOrderTotalDO.setOrderId(IdWorker.getId());
         tradeOrderTotalDO.setOldOrderId(orderId);
+        tradeOrderTotalDO.setOtherRemark(summary.getOtherRemark());
         tradeOrderTotalMapper.insert(tradeOrderTotalDO);
 
         // 创建订单房型数据
-        List<TradeOrderRoomModelDO> tradeOrderRoomList = new ArrayList<>();
+        List<TradeOrderRoomModelDO> tradeOrderRoomDOList = new ArrayList<>();
         List<TradeOrderRoomModelVO> roomModelList = createVO.getRoomModelList();
         roomModelList.forEach(roomModel -> {
             TradeOrderRoomModelDO tradeOrderRoomDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class);
             tradeOrderRoomDO.setOrderId(orderId);
-            tradeOrderRoomList.add(tradeOrderRoomDO);
+            tradeOrderRoomDO.setOrderNo(orderNo);
+            tradeOrderRoomDO.setDiscount(tradeOrderRoomDO.getUnitPrice().subtract(tradeOrderRoomDO.getRealMoney()));
+            tradeOrderRoomDOList.add(tradeOrderRoomDO);
         });
-        tradeOrderRoomModelMapper.insertBatch(tradeOrderRoomList);
 
+        // 创建订单优惠政策数据
+        //1.先删除原来的
+        orderPolicyMapper.deleteByOrderId(orderId);
+        List<OrderPolicyDO> orderPolicyDOList = new ArrayList<>();
+        List<TradeOrderPolicyReqVO> policyList = createVO.getPolicyList();
+        if (policyList != null) {
+            policyList.forEach(policy -> {
+                OrderPolicyDO orderPolicyDO = new OrderPolicyDO();
+                orderPolicyDO.setOrderId(orderId);
+                orderPolicyDO.setOrderNo(orderNo);
+                orderPolicyDO.setPolicyId(policy.getPolicyId());
+                if (createVO.getIsYd() != null && createVO.getIsYd() == 1) {
+                    orderPolicyDO.setPreUseNum(policy.getUseNum());
+                    orderPolicyDO.setRealUseNum(BigDecimal.ZERO);
+                } else {
+                    //TODO: 需要修改订单金额,参考文档
+                    orderPolicyDO.setPreUseNum(BigDecimal.ZERO);
+                    orderPolicyDO.setRealUseNum(policy.getUseNum());
+                    policyApi.updatePolicySurplusNum(policy.getPolicyId(), createVO.getVoyageId(), policy.getUseNum());
+                }
+                orderPolicyDO.setAmount(policy.getAmount());
+                orderPolicyDO.setRooms(policy.getRooms());
+                orderPolicyDOList.add(orderPolicyDO);
+            });
+            if (!orderPolicyDOList.isEmpty()) {
+                //TODO: 判断优惠政策是否需要审核
+                orderPolicyMapper.insertBatch(orderPolicyDOList);
+            }
+        }
+
+        int auditType = 0;
+        BigDecimal leaderAmount1 = summary.getLeaderAmount();
+        BigDecimal withAmount1 = summary.getWithAmount();
+        BigDecimal otherMoney1 = summary.getOtherMoney();
+        if (!CollUtil.isEmpty(createVO.getPolicyList())) {
+            auditType = 2;
+        }
+        if (leaderAmount1 != null && leaderAmount1.compareTo(new BigDecimal(0)) > 0) {
+            auditType = 4;
+        }
+        if (withAmount1 != null && withAmount1.compareTo(new BigDecimal(0)) > 0) {
+            auditType = 4;
+        }
+        if (otherMoney1 != null && otherMoney1.compareTo(new BigDecimal(0)) > 0) {
+            auditType = 4;
+        }
+        if (auditType > 0 && createVO.getIsYd() != 1) {
+            orderStatus = TradeOrderStatusEnum.TRANSFER.getStatus();
+            AuditUserDO auditUserDO = auditUserMapper.selectOne(new LambdaQueryWrapperX<AuditUserDO>().eq(AuditUserDO::getType, auditType).eq(AuditUserDO::getAuditStatus, 1).eq(AuditUserDO::getDeleted, 0).orderByDesc(AuditUserDO::getCreateTime).last("limit 1"));
+            tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_user",auditUserDO.getAuditUser()).set("audit_status", 1).eq("id", orderId));
+        }
+        if (!tradeOrderRoomDOList.isEmpty()) {
+            tradeOrderRoomModelMapper.deleteByOrderId(orderId);
+            tradeOrderRoomModelMapper.insertBatch(tradeOrderRoomDOList);
+        }
+        //支付倒计时--不超时,有预订单
+        Map<String, Object> append = TradeOrderLogUtils.append("result", "订单创建成功");
+        append.put("content", "");
+        TradeOrderLogUtils.setOrderInfo(orderId, null, orderStatus, append);
+        tradePublishUtils.publishOrderCreateSuccessMsg(orderId + "");
         OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
         return CommonResult.success(respVO);