lishiqiang 1 nedēļu atpakaļ
vecāks
revīzija
4fece8e408

+ 1 - 1
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/api/dto/TradeOrderCreateReqDTO.java

@@ -135,7 +135,7 @@ public class TradeOrderCreateReqDTO implements Serializable {
      * 币种
      */
     @Schema(description = "币种")
-    private Integer currency;
+    private String currency;
 
     @Schema(description = "订单项")
     @Data

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

@@ -80,73 +80,30 @@ public class OtcTradeOrderController {
     @Resource
     private TradeOrderService tradeOrderService;
 
-    @RequestDecryption
-    @PostMapping("/window/createOrder")
-    @Operation(summary = "win-窗口创建订单(内部)")
-    @OperateLog(type = TRADE)
-    public CommonResult<OtcTradeOrderCreateRespVO> windowCreateOrder(@Validated(value = WindowCreateOrderGroup.class)  @RequestBody OtcTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
-        return otcTradeOrderService.windowCreateOrder(agencyAuthUtils.getAgencyLoginUser(), otcTradeOrderCreateReqVO);
-    }
 
     @RequestDecryption
     @PostMapping("/travl/createOtcOrder")
     @Operation(summary = "win-旅行社游船订单创建")
     @OperateLog(type = TRADE)
     @TradeRateLimit(name = "createOtcOrder", limitNum = 2, limitTime = 5)
-    public CommonResult<Long> createOtcOrder(@Validated(value = WindowCreateOrderGroup.class)  @RequestBody TradeOrderOtcCreateVO createVO) {
-        return success(otcTradeOrderService.createOtcOrder(agencyAuthUtils.getAgencyLoginUser(), createVO));
-    }
-    @RequestDecryption
-    @PostMapping("/travl/createShipOrder")
-    @Operation(summary = "win-游船订单创建(旅行社支付)")
-    @OperateLog(type = TRADE)
-    @TradeRateLimit(name = "createShipOrder", limitNum = 2, limitTime = 5)
-    public CommonResult<OtcTradeOrderCreateRespVO> createShipOrder(@Validated(value = WindowCreateOrderGroup.class)  @RequestBody ShipTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
-        return otcTradeOrderService.createMoveOrder(agencyAuthUtils.getAgencyLoginUser(), otcTradeOrderCreateReqVO);
+    public CommonResult<?> createOtcOrder(@Validated(value = WindowCreateOrderGroup.class)  @RequestBody TradeOrderOtcCreateVO createVO) {
+        return otcTradeOrderService.createOtcOrder(agencyAuthUtils.getAgencyLoginUser(), createVO);
     }
 
     @RequestDecryption
-    @PostMapping("/plat/createOrder")
-    @Operation(summary = "win-平台创建订单")
-    @OperateLog(type = TRADE)
-    public CommonResult<OtcTradeOrderCreateRespVO> platCreateMoveOrder(@Validated(value = WindowCreateOrderGroup.class)  @RequestBody ShipTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
-        return otcTradeOrderService.platCreateMoveOrder(getLoginUser(), otcTradeOrderCreateReqVO);
-    }
-
-    @RequestDecryption
-    @PostMapping("/window/payOrder")
-    @Operation(summary = "win-窗口支付订单")
+    @PostMapping("/travl/payOrder")
+    @Operation(summary = "win-旅行社下单支付订单")
     @OperateLog(type = TRADE)
     public CommonResult<PayOrderRespVO> windowPayOrder(@Valid @RequestBody PayOrderReqVO payOrderReqVO) {
         log.error("windowPayOrder:{}", JSON.toJSONString(payOrderReqVO));
         return otcTradeOrderService.windowPayOrder(agencyAuthUtils.getAgencyLoginUser(), payOrderReqVO);
     }
 
-    @RequestDecryption
-    @PostMapping("/window/payMoveOrder")
-    @Operation(summary = "win-窗口搬单支付订单")
-    @OperateLog(type = TRADE)
-    @PlatTenantEnv
-    public CommonResult<PayOrderRespVO> windowPayMoveOrder(@Valid @RequestBody PayOrderReqVO payOrderReqVO) {
-
-        return otcTradeOrderService.windowPayMoveOrder(agencyAuthUtils.getAgencyLoginUser(), payOrderReqVO);
-    }
-
-    @RequestDecryption
-    @PostMapping("/plat/payMoveOrder")
-    @Operation(summary = "win-平台搬单支付订单")
-    @OperateLog(type = TRADE)
-    public CommonResult<PayOrderRespVO> platPayMoveOrder(@Valid @RequestBody PayOrderReqVO payOrderReqVO) {
-
-        return otcTradeOrderService.platPayMoveOrder(getLoginUser(), payOrderReqVO);
-    }
-
 
     @PostMapping("/window/refund")
     @Operation(summary = "win-窗口退款")
     @OperateLog(type = TRADE)
     public CommonResult<TradeRefundCreateRespVO> windowRefund(@Valid @RequestBody TradeRefundCreateReqVO refundCreateReqVO) {
-
         return adminTradeOrderService.refund(agencyAuthUtils.getAgencyLoginUser(), refundCreateReqVO);
     }
 

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/ShipTradeOrderCreateReqVO.java

@@ -79,7 +79,7 @@ public class ShipTradeOrderCreateReqVO implements Serializable {
     private String groupNo;
 
     @Schema(description = "币种", example = "CNY 字典trade_order_currency")
-    private Integer currency;
+    private String currency;
     /**
      * 航次ID
      */

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

@@ -3,6 +3,7 @@ package com.yc.ship.module.trade.controller.admin.order.vo.order;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 @Schema(description = "旅行社订单创建参数")
@@ -15,6 +16,9 @@ public class TradeOrderOtcCreateVO {
     @Schema(description = "订单联系人")
     private String linkMan;
 
+    @Schema(description = "时间")
+    private Date boardingTime;
+
     @Schema(description = "联系人手机")
     private String linkMobile;
 
@@ -31,7 +35,7 @@ public class TradeOrderOtcCreateVO {
     private String groupNo;
 
     @Schema(description = "币种")
-    private Integer currency;
+    private String currency;
 
     @Schema(description = "国籍数据")
     List<TradeOrderCountryReqVO> countryData;
@@ -39,6 +43,6 @@ public class TradeOrderOtcCreateVO {
     @Schema(description = "订单汇总信息")
     private TradeOrderTotalVO summary;
 
-    private List<TradeVistorReqVO> visitorList;
+    private List<TradeVistorReqVO> tourist;
 
 }

+ 6 - 6
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeVistorReqVO.java

@@ -14,19 +14,19 @@ public class TradeVistorReqVO {
     private String name;
 
     @Schema(description = "性别")
-    private Integer gender;
+    private Integer sex;
 
     @Schema(description = "证件号")
-    private String credentialNo;
+    private String cardNo;
     /**
      * 证件类型
      * 关联 {@link CredentialTypeEnum}
      */
     @Schema(description = "证件类型")
-    private Integer credentialType;
+    private Integer cardType;
 
     @Schema(description = "手机号")
-    private String mobile;
+    private String phone;
 
     @Schema(description = "分销商的明细ID")
     private String otaDetailId;
@@ -38,8 +38,8 @@ public class TradeVistorReqVO {
     private Integer isPush;
 
     @Schema(description = "是否宜昌中转 0:否 1是")
-    private Integer yczz;
+    private Integer yichang;
 
     @Schema(description = "是否重庆中转 0:否 1是")
-    private Integer cqzz;
+    private Integer chongqing;
 }

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -248,7 +248,7 @@ public class TradeOrderDO extends TenantBaseDO {
     /**
      * 币种 字典trade_order_currency
      */
-    private Integer currency;
+    private String currency;
 
     /**
      * 客户名称

+ 86 - 70
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -752,12 +752,12 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         extraInfo.setIsTimePay(orderCreateReqDTO.getIsTimePay());
         tradeOrderBO.setExtraInfo(extraInfo);
 
-//        List<TradeOrderDetailBO> tradeOrderDetailBOList = orderCreateReqDTO.getItemlList().stream().map(orderItem -> buildTradeOrderDetail(orderCreateReqDTO,tradeOrderDO,orderItem))
-//                .collect(Collectors.toList());
+        List<TradeOrderDetailBO> tradeOrderDetailBOList = orderCreateReqDTO.getItemlList().stream().map(orderItem -> buildShipTradeOrderDetail(orderCreateReqDTO,tradeOrderDO,orderItem))
+                .collect(Collectors.toList());
         //订单金额验证
         tradeOrderBO.setTradeOrderDO(tradeOrderDO);
         tradeOrderBO.setTradeOrderUserDO(tradeOrderUserDO);
-//        tradeOrderBO.setTradeOrderDetailBOList(tradeOrderDetailBOList);
+        tradeOrderBO.setTradeOrderDetailBOList(tradeOrderDetailBOList);
         return tradeOrderBO;
     }
 
@@ -794,16 +794,28 @@ public class TradeOrderServiceImpl implements TradeOrderService {
 
         TradeOrderDetailBO tradeOrderDetailBO = new TradeOrderDetailBO();
         //获取产品信息
-        DistributorProductRespDTO distributorProductRespDTO = otaDistributorApi.getDistributorProductById(Long.parseLong(orderItem.getProductId())).getData();
+//        DistributorProductRespDTO distributorProductRespDTO = otaDistributorApi.getDistributorProductById(Long.parseLong(orderItem.getProductId())).getData();
         tradeOrderDetailBO.setProductType(orderItem.getProductType());
-        ProductSpuRespDTO productSpuRespDTO = productApi.getCalendarProduct(distributorProductRespDTO.getProductId(), DateUtil.formatDate(orderItem.getUseDate())).getData();
+//        ProductSpuRespDTO productSpuRespDTO = productApi.getCalendarProduct(distributorProductRespDTO.getProductId(), DateUtil.formatDate(orderItem.getUseDate())).getData();
 //        validateOrder(orderCreateReqDTO,tradeOrderDO,orderItem,productSpuRespDTO);
-
+        ProductSpuRespDTO productSpuRespDTO = null;
+        if(orderItem.getProductId()!=null) {
+            try {
+                productSpuRespDTO = productApi.getProduct(Long.parseLong(orderItem.getProductId())).getData();
+            }catch (Exception e){
+                log.error("获取产品信息失败:{}",e);
+            }
+        }
+        if (productSpuRespDTO == null) {
+            productSpuRespDTO = new ProductSpuRespDTO();
+            productSpuRespDTO.setProductName("游轮产品" + orderItem.getProductId());
+        }
         List<TradeDetailDO> tradeDetailDOList = new ArrayList<>();
         List<TradeDetailBaseDO> tradeDetailBaseDOList = new ArrayList<>();
         List<TradeVisitorDO> tradeVisitorDOList = new ArrayList<>();
         List<TradeDetailPriceDO> tradeDetailPriceDOList = new ArrayList<>();
 
+        ProductSpuRespDTO finalProductSpuRespDTO = productSpuRespDTO;
         orderItem.getDetailList().forEach(orderDetail -> {
 
             List<String> ticketNoList =  tradeUUCodeUtils.generateTicketNo(orderDetail.getCount());
@@ -814,77 +826,81 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                 tradeDetailDO.setOrderId(tradeOrderDO.getId());
                 tradeDetailDO.setUseDate(orderItem.getUseDate() == null ? DateUtil.toLocalDateTime(tradeOrderDO.getTravelDate())
                         : DateUtil.toLocalDateTime(orderItem.getUseDate()));
-                tradeDetailDO.setProductId(Long.parseLong(orderItem.getProductId()));
-                tradeDetailDO.setProductName(productSpuRespDTO.getProductName());
+                try {
+                    tradeDetailDO.setProductId(Long.parseLong(orderItem.getProductId()));
+                }catch (Exception e){
+                    tradeDetailDO.setProductId(0L);
+                }
+                tradeDetailDO.setProductName(finalProductSpuRespDTO.getProductName());
                 tradeDetailDO.setPrice(orderDetail.getOriginPrice());
                 tradeDetailDO.setActualPrice(orderDetail.getPrice());
                 tradeDetailDO.setSpecType(orderDetail.getSpecType());
-                tradeDetailDO.setProductType(orderItem.getProductType());
-                tradeDetailDO.setCateType(productSpuRespDTO.getProductType());
-                tradeDetailDO.setQuantityOfOne(productSpuRespDTO.getProductSaleRule().getOneLimitNum());
-                tradeDetailDO.setUseRealName(productSpuRespDTO.getProductSaleRule().getIsLimitType());
+//                tradeDetailDO.setProductType(orderItem.getProductType());
+//                tradeDetailDO.setCateType(finalProductSpuRespDTO.getProductType());
+//                tradeDetailDO.setQuantityOfOne(finalProductSpuRespDTO.getProductSaleRule().getOneLimitNum());
+//                tradeDetailDO.setUseRealName(finalProductSpuRespDTO.getProductSaleRule().getIsLimitType());
                 //有效门票都是需要激活的,默认立即激活
-                if(productSpuRespDTO.getProductSaleRule().getActivateType()!=null && productSpuRespDTO.getProductSaleRule().getActivateType() == 1){
-                    //立即激活
-                    tradeDetailDO.setActivateStatus(1);
-                    tradeDetailDO.setActivateTime(LocalDateTime.now());
-                }else{
-                    tradeDetailDO.setActivateStatus(0);
-                    tradeDetailDO.setActivateDays(productSpuRespDTO.getProductSaleRule().getActivateDayNum());
-                }
-
-                if(productSpuRespDTO.getProductBasicRule().getNeedPlayDate() == 1){
-                    //需要选择出行日期
-                    Asserts.isTrue(tradeDetailDO.getUseDate()!=null,"此产品需要指定使用日期{}",productSpuRespDTO.getId());
-                    Date travelDate = DateUtils.of(tradeDetailDO.getUseDate());
-                    switch (productSpuRespDTO.getProductBasicRule().getValidityType()){
-                        case 1:
-                            //出行当天
-                            tradeDetailDO.setValidityStartDate(tradeDetailDO.getUseDate());
-                            tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(travelDate).toLocalDateTime());
-                            break;
-                        case 3:
-                            //出行日期前后X天内
-                            tradeDetailDO.setValidityStartDate(DateUtil.offsetDay(travelDate,-productSpuRespDTO.getProductBasicRule().getValidityNum()).toLocalDateTime());
-                            tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(DateUtil.offsetDay(travelDate,productSpuRespDTO.getProductBasicRule().getValidityNum())).toLocalDateTime());
-                            break;
-                        case 4:
-                            //出行日期至指定日期
-                            tradeDetailDO.setValidityStartDate(tradeDetailDO.getUseDate());
-                            Date validityDate =DateUtils.of(productSpuRespDTO.getProductBasicRule().getValidityDate());
-                            tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(validityDate).toLocalDateTime());
-                            break;
-                        default:
-                    }
-                }else {
-                    if(productSpuRespDTO.getProductBasicRule().getValidityType() == 2){
-                        //下单后X天内
-                        Date now = new Date();
-                        tradeDetailDO.setValidityStartDate(DateUtil.beginOfDay(now).toLocalDateTime());
-                        tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(DateUtil.offsetDay(now,productSpuRespDTO.getProductBasicRule().getValidityNum())).toLocalDateTime());
-                    }
-                }
+//                if(finalProductSpuRespDTO.getProductSaleRule().getActivateType()!=null && finalProductSpuRespDTO.getProductSaleRule().getActivateType() == 1){
+//                    //立即激活
+//                    tradeDetailDO.setActivateStatus(1);
+//                    tradeDetailDO.setActivateTime(LocalDateTime.now());
+//                }else{
+//                    tradeDetailDO.setActivateStatus(0);
+//                    tradeDetailDO.setActivateDays(finalProductSpuRespDTO.getProductSaleRule().getActivateDayNum());
+//                }
 
+//                if(finalProductSpuRespDTO.getProductBasicRule().getNeedPlayDate() == 1){
+//                    //需要选择出行日期
+//                    Asserts.isTrue(tradeDetailDO.getUseDate()!=null,"此产品需要指定使用日期{}", finalProductSpuRespDTO.getId());
+//                    Date travelDate = DateUtils.of(tradeDetailDO.getUseDate());
+//                    switch (finalProductSpuRespDTO.getProductBasicRule().getValidityType()){
+//                        case 1:
+//                            //出行当天
+//                            tradeDetailDO.setValidityStartDate(tradeDetailDO.getUseDate());
+//                            tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(travelDate).toLocalDateTime());
+//                            break;
+//                        case 3:
+//                            //出行日期前后X天内
+//                            tradeDetailDO.setValidityStartDate(DateUtil.offsetDay(travelDate,-finalProductSpuRespDTO.getProductBasicRule().getValidityNum()).toLocalDateTime());
+//                            tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(DateUtil.offsetDay(travelDate, finalProductSpuRespDTO.getProductBasicRule().getValidityNum())).toLocalDateTime());
+//                            break;
+//                        case 4:
+//                            //出行日期至指定日期
+//                            tradeDetailDO.setValidityStartDate(tradeDetailDO.getUseDate());
+//                            Date validityDate =DateUtils.of(finalProductSpuRespDTO.getProductBasicRule().getValidityDate());
+//                            tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(validityDate).toLocalDateTime());
+//                            break;
+//                        default:
+//                    }
+//                }else {
+//                    if(finalProductSpuRespDTO.getProductBasicRule().getValidityType() == 2){
+//                        //下单后X天内
+//                        Date now = new Date();
+//                        tradeDetailDO.setValidityStartDate(DateUtil.beginOfDay(now).toLocalDateTime());
+//                        tradeDetailDO.setValidityEndDate(DateUtil.endOfDay(DateUtil.offsetDay(now, finalProductSpuRespDTO.getProductBasicRule().getValidityNum())).toLocalDateTime());
+//                    }
+//                }
 
-                if(productSpuRespDTO.getProductBasicRule().getCheckStartDate()!=null){
-                    LocalDateTime checkStartTime = productSpuRespDTO.getProductBasicRule().getCheckStartDate().atStartOfDay();
-                    //开始检票时间
-                    if(tradeDetailDO.getValidityStartDate() == null || tradeDetailDO.getValidityStartDate().isBefore(checkStartTime)){
-                        tradeDetailDO.setValidityStartDate(checkStartTime);
-                    }
-                }
-                if(productSpuRespDTO.getProductBasicRule().getCheckEndDate()!=null){
-                    LocalDateTime checkEndTime = productSpuRespDTO.getProductBasicRule().getCheckEndDate().atStartOfDay();
-                    DateTime checkEndDate = DateUtil.endOfDay(DateUtils.of(checkEndTime));
 
-                    //结束检票时间
-                    if(tradeDetailDO.getValidityEndDate() == null || tradeDetailDO.getValidityEndDate().isAfter(checkEndDate.toLocalDateTime())){
-                        tradeDetailDO.setValidityEndDate(checkEndDate.toLocalDateTime());
-                    }
-                }
-                if(tradeDetailDO.getValidityEndDate()!=null){
-                    tradeDetailDO.setValidityEndDate(tradeDetailDO.getValidityEndDate().truncatedTo(ChronoUnit.SECONDS));
-                }
+//                if(finalProductSpuRespDTO.getProductBasicRule().getCheckStartDate()!=null){
+//                    LocalDateTime checkStartTime = finalProductSpuRespDTO.getProductBasicRule().getCheckStartDate().atStartOfDay();
+//                    //开始检票时间
+//                    if(tradeDetailDO.getValidityStartDate() == null || tradeDetailDO.getValidityStartDate().isBefore(checkStartTime)){
+//                        tradeDetailDO.setValidityStartDate(checkStartTime);
+//                    }
+//                }
+//                if(finalProductSpuRespDTO.getProductBasicRule().getCheckEndDate()!=null){
+//                    LocalDateTime checkEndTime = finalProductSpuRespDTO.getProductBasicRule().getCheckEndDate().atStartOfDay();
+//                    DateTime checkEndDate = DateUtil.endOfDay(DateUtils.of(checkEndTime));
+//
+//                    //结束检票时间
+//                    if(tradeDetailDO.getValidityEndDate() == null || tradeDetailDO.getValidityEndDate().isAfter(checkEndDate.toLocalDateTime())){
+//                        tradeDetailDO.setValidityEndDate(checkEndDate.toLocalDateTime());
+//                    }
+//                }
+//                if(tradeDetailDO.getValidityEndDate()!=null){
+//                    tradeDetailDO.setValidityEndDate(tradeDetailDO.getValidityEndDate().truncatedTo(ChronoUnit.SECONDS));
+//                }
 
                 tradeDetailDO.setId(IdWorker.getId());
                 tradeDetailDO.setVoucherCode(ticketNoList.get(i));

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

@@ -170,5 +170,5 @@ public interface OtcTradeOrderService {
      * @param createVO
      * @return
      */
-    Long createOtcOrder(LoginUser agencyLoginUser, TradeOrderOtcCreateVO createVO);
+    CommonResult<?> createOtcOrder(LoginUser agencyLoginUser, TradeOrderOtcCreateVO createVO);
 }

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

@@ -1,6 +1,7 @@
 package com.yc.ship.module.trade.service.otc.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -300,6 +301,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         DistributorRespDTO distributorDto = otaDistributorApi.getDistributorByAccountTenantId(loginUser.getTenantId()).getCheckedData();
         //当前旅行社信息
         initPayParams(loginUser,payOrderReqVO);
+        payOrderReqVO.setAccountId(distributorDto.getId().toString());
+        payOrderReqVO.setAccountType(PayAccountTypeEnum.OTC.getType());
         //只在平台环境中下单
         Long tenantId = TenantContextHolder.getTenantId();
         TenantContextHolder.setTenantId(distributorDto.getTenantId());
@@ -331,25 +334,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     }
 
     private void initPayParams(LoginUser loginUser, PayOrderReqVO payOrderReqVO){
-        AgencyUserLoginInfoRespDTO agencyUserLoginInfo = loginUser.getContext(AGENCY_LOGIN_INFO, AgencyUserLoginInfoRespDTO.class);
-        if(agencyUserLoginInfo!=null) {
-            payOrderReqVO.setAccountId(agencyUserLoginInfo.getAgencyId().toString());
-            if(StrUtil.isNotBlank(agencyUserLoginInfo.getStoreName())){
-                payOrderReqVO.setAccountName(agencyUserLoginInfo.getStoreName());
-            }else {
-                payOrderReqVO.setAccountName(agencyUserLoginInfo.getAgencyName());
-            }
-        }
+        payOrderReqVO.setAccountId(loginUser.getDistributorId().toString());
         payOrderReqVO.setAccountType(PayAccountTypeEnum.OTC.getType());
-        //如果为主扫支付则需要获取设备的经纬度信息
-        if(payOrderReqVO.getPayParams()!=null && payOrderReqVO.getPayExtraType()!=null && payOrderReqVO.getPayExtraType() == 0){
-            if(agencyUserLoginInfo.getMachineId()!=null) {
-                TenantUtils.execute(loginUser.getTenantId(),()->{
-                    StoreMachineDTO storeMachineDTO = storeApi.getMachineById(agencyUserLoginInfo.getMachineId()).getCheckedData();
-                    payOrderReqVO.setPayParams(TradeOrderConvert.INSTANCE.convert(payOrderReqVO.getPayParams(), storeMachineDTO));
-                });
-            }
-        }
     }
 
 
@@ -2293,17 +2279,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     }
 
     private void setShipOrderPropertyFromLoginUser(LoginUser loginUser, ShipTradeOrderCreateReqVO.OrderProperty orderProperty, SellMethodEnum sellMethodEnum){
-        AgencyUserLoginInfoRespDTO agencyUserLoginInfo = loginUser.getContext(AGENCY_LOGIN_INFO, AgencyUserLoginInfoRespDTO.class);
-        if(agencyUserLoginInfo!=null) {
-            if(ObjectUtil.notEqual(sellMethodEnum,SellMethodEnum.OTC_MOVE_ORDER) && agencyUserLoginInfo.getMachineId()!=null) {
-                orderProperty.setSourceId(agencyUserLoginInfo.getMachineId().toString());
-                orderProperty.setSourceName(agencyUserLoginInfo.getMachineName());
-            }
-            if(agencyUserLoginInfo.getStoreName()!=null) {
-                orderProperty.setStoreId(agencyUserLoginInfo.getStoreId());
-                orderProperty.setStoreName(agencyUserLoginInfo.getStoreName());
-            }
-        }
         orderProperty.setSellerId(loginUser.getId().toString());
     }
 
@@ -2339,7 +2314,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Long createOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
+    public CommonResult<?> createOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
         Long distributorId = loginUser.getDistributorId();
         Long storeId = loginUser.getStoreId();
         //获取当前分销商信息
@@ -2359,23 +2334,123 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         if(storeInfo==null) {
             throw exception0(500,"该门店不存在");
         }
-        long orderId = IdWorker.getId();
-        // 创建订单
-        TradeOrderDO tradeOrderDO = BeanUtils.toBean(createVO, TradeOrderDO.class);
-        tradeOrderDO.setId(orderId);
-        tradeOrderDO.setOrderNo(tradeUUCodeUtils.generateOrderNo(ORDER_PREFIX));
-        tradeOrderDO.setOrderStatus(TradeOrderStatusEnum.INIT.getStatus());
-        tradeOrderDO.setSellMethod(SellMethodEnum.OTC.getType());
-        tradeOrderDO.setStoreId(storeId);
-        tradeOrderDO.setStoreName(storeInfo.getName());
-        tradeOrderDO.setSourceId(distributorId.toString());
-        tradeOrderDO.setSourceName(distributorDO.getName());
-        tradeOrderDO.setVisitorType(1);//团队
-        tradeOrderMapper.insert(tradeOrderDO);
-
-        //创建订单汇总信息
+//        long orderId = IdWorker.getId();
+//        // 创建订单
+//        TradeOrderDO tradeOrderDO = BeanUtils.toBean(createVO, TradeOrderDO.class);
+//        tradeOrderDO.setId(orderId);
+//        tradeOrderDO.setOrderNo(tradeUUCodeUtils.generateOrderNo(ORDER_PREFIX));
+//        tradeOrderDO.setOrderStatus(TradeOrderStatusEnum.INIT.getStatus());
+//        tradeOrderDO.setSellMethod(SellMethodEnum.OTC.getType());
+//        tradeOrderDO.setStoreId(storeId);
+//        tradeOrderDO.setStoreName(storeInfo.getName());
+//        tradeOrderDO.setSourceId(distributorId.toString());
+//        tradeOrderDO.setSourceName(distributorDO.getName());
+//        tradeOrderDO.setVisitorType(1);//团队
+//        tradeOrderMapper.insert(tradeOrderDO);
+//
+//        //创建订单汇总信息
+//        TradeOrderTotalVO summary = createVO.getSummary();
+//        TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
+//        tradeOrderTotalDO.setOrderId(orderId);
+//        tradeOrderTotalMapper.insert(tradeOrderTotalDO);
+//
+//        //创建订单国籍数据
+//        List<TradeOrderRoomModelDO> list = new ArrayList<>(); //创建订单房型数据
+//        List<TradeOrderCountryDO> tradeOrderCountryDOList = new ArrayList<>(); //创建订单国籍数据
+//        List<TradeOrderFloorDO> floorPlus = new ArrayList<>();
+//        List<TradeOrderCountryReqVO> countryData = createVO.getCountryData();
+//        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();
+//                floorReqVOList.stream().forEach(floor -> {
+//                    TradeOrderFloorDO floorDO = BeanUtils.toBean(floor, TradeOrderFloorDO.class);
+//                    floorDO.setOrderId(orderId);
+//                    floorDO.setRoomModelId(roomModelId);
+//                    floorPlus.add(floorDO);
+//                });
+//
+//            });
+//        });
+//        tradeOrderCountryMapper.insertBatch(tradeOrderCountryDOList);
+//        tradeOrderRoomModelMapper.insertBatch(list);
+//        tradeOrderFloorMapper.insertBatch(floorPlus);
+//
+//        //创建订单游客数据
+//        List<TradeVistorReqVO> visitorList = createVO.getVisitorList();
+//        List<TradeVisitorDO> visitorDOS = BeanUtils.toBean(visitorList, TradeVisitorDO.class);
+//        visitorDOS.stream().forEach(item -> {
+//            item.setOrderId(orderId);
+//        });
+//        tradeVisitorMapper.insertBatch(visitorDOS);
+//        return orderId;
+
+        List<TradeOrderCountryReqVO> countryData = createVO.getCountryData();
+        Integer totalNum = 0;
+        for (TradeOrderCountryReqVO item : countryData) {
+            totalNum += item.getAdultNum() + item.getChildNum() + item.getBabyNum() + item.getWithNum();
+        }
+
+
+        ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
+        shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
+        shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
+        ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser();
+        orderUser.setContactName(createVO.getLinkMan());
+        orderUser.setMobile(createVO.getLinkMobile());
+        orderUser.setEmail(createVO.getLinkEmail());
+        shipTradeOrderCreateReqVO.setOrderUser(orderUser);
+
+        shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
+
+        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();
+
+        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());
+            visitorList.add(visitor);
+        }
+        orderDetail.setVisitorList(visitorList);
+        orderDetail.setCount(totalNum);
+        orderItem.setDetailList(Arrays.asList(orderDetail));
+        shipTradeOrderCreateReqVO.setItemlList(Arrays.asList(orderItem));
+        CommonResult<TradeOrderRespDTO> result = doShipCreateOrder(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.insert(tradeOrderTotalDO);
 
@@ -2383,7 +2458,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         List<TradeOrderRoomModelDO> list = new ArrayList<>(); //创建订单房型数据
         List<TradeOrderCountryDO> tradeOrderCountryDOList = new ArrayList<>(); //创建订单国籍数据
         List<TradeOrderFloorDO> floorPlus = new ArrayList<>();
-        List<TradeOrderCountryReqVO> countryData = createVO.getCountryData();
         countryData.stream().forEach(item -> {
             TradeOrderCountryDO countryDO = BeanUtils.toBean(item, TradeOrderCountryDO.class);
             Long countryId = IdWorker.getId();
@@ -2414,14 +2488,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         tradeOrderRoomModelMapper.insertBatch(list);
         tradeOrderFloorMapper.insertBatch(floorPlus);
 
-        //创建订单游客数据
-        List<TradeVistorReqVO> visitorList = createVO.getVisitorList();
-        List<TradeVisitorDO> visitorDOS = BeanUtils.toBean(visitorList, TradeVisitorDO.class);
-        visitorDOS.stream().forEach(item -> {
-            item.setOrderId(orderId);
-        });
-        tradeVisitorMapper.insertBatch(visitorDOS);
-        return orderId;
+        OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
+        return CommonResult.success(respVO);
+
     }
 
     private void markChangeOrder(Long orderId){

+ 1 - 7
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/pay/impl/TradeOrderPayServiceImpl.java

@@ -119,13 +119,7 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
                     //1.获取订单信息
                     TradeOrderDO tradeOrder = tradeOrderRepositoryService.getById(payOrderReqVO.getOrderId());
                     if(tradeOrder == null) {
-                        //如果订单不存在,可能是出现订单合并,然后在页面继续点支付的情况
-                        TradeOrderBindDO bindDO = tradeOrderRepositoryService.getBindOrder(orderId, TradeOrderBindEnum.ADD_ORDER.getType());
-                        if(bindDO != null){
-                            Asserts.isTrue(false,"当前订单已支付成功,无需再支付,并已合并至原订单,请刷新页面查看原订单");
-                        }else{
-                            Asserts.isTrue(false,"订单不存在");
-                        }
+                        Asserts.isTrue(false,"订单不存在");
                     }
                     if(ObjectUtil.equal(tradeOrder.getPayStatus(), PaymentStatusEnum.PAID.getStatus())){
                         //重复支付