Browse Source

下单流程

lishiqiang 1 week ago
parent
commit
c04435ab80

+ 57 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorrecharge/DistributorRechargeServiceImpl.java

@@ -28,8 +28,10 @@ import com.yc.ship.module.ota.enums.DistributorTypeEnum;
 import com.yc.ship.module.ota.service.distributor.DistributorService;
 import com.yc.ship.module.ota.service.tradelog.TradeLogService;
 import com.yc.ship.module.otc.api.store.StoreApi;
+import com.yc.ship.module.otc.api.store.dto.StoreInfoReqDTO;
 import com.yc.ship.module.otc.api.store.dto.StoreReqDTO;
 import com.yc.ship.module.otc.api.store.dto.StoreRespDTO;
+import com.yc.ship.module.otc.enums.StoreBalanceTypeEnum;
 import com.yc.ship.module.otc.enums.TradeModeEnum;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -45,6 +47,7 @@ import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
 
@@ -355,6 +358,60 @@ public class DistributorRechargeServiceImpl implements DistributorRechargeServic
                             if (rechargeReqDTO.getIsFixed() == 1 || streamSupplier.get().noneMatch(element -> ObjectUtil.equals(element, DistributorTradeTypeEnum.CREDIT_RECHARGE.getType().toString()))) {
                                 canChangeToCredit =false;
                             }
+                            if (isUseBalance) {
+
+                                AtomicBoolean isShareBalance = new AtomicBoolean(false);
+                                AtomicReference<StoreRespDTO> storeRespDTO = new AtomicReference<>();
+                                try{
+                                    if (rechargeReqDTO.getStoreId() != null){
+                                        isShareBalance.set(true);
+//                                        StoreReqDTO reqDTO = this.convertStorePlatBalance(rechargeReqDTO.getStoreId(), tradeMode, money, Long.parseLong(rechargeReqDTO.getOrderId()), tradeType, null);
+//                                        TenantUtils.execute(distributor.getAccountTenantId(), () -> {
+//                                            StoreInfoReqDTO storeData = storeApi.getStoreById(rechargeReqDTO.getStoreId()).getCheckedData();
+//                                            Asserts.isTrue(!ObjectUtil.equals(storeData.getBalanceType(), StoreBalanceTypeEnum.FORBIDDEN.getType()), "当前门店禁止使用预付款");
+//                                            if(ObjectUtil.equals(storeData.getBalanceType(), StoreBalanceTypeEnum.FIXED.getType())){
+//                                                //只能使用门店自己的预付款
+//                                                CommonResult<StoreRespDTO> storeResult = storeApi.storePlatTrade(reqDTO);
+//                                                Asserts.isTrue(storeResult.isSuccess(), storeResult.getMsg());
+//                                                storeRespDTO.set(storeResult.getCheckedData());
+//                                            }else if(ObjectUtil.equals(storeData.getBalanceType(), StoreBalanceTypeEnum.SHARE.getType())){
+//                                                isShareBalance.set(true);
+//                                            }else {
+//                                                Asserts.isTrue(true,"门店禁用预付款");
+//                                            }
+//                                        });
+                                    }else {
+                                        isShareBalance.set(true);
+                                    }
+
+                                    if(isShareBalance.get()){
+                                        Asserts.isTrue(afterBalance.compareTo(BigDecimal.ZERO)>=0,"平台余额不足额");
+                                        tradeName = "消费金额:" + money + "元,消费后剩余余额" + afterBalance + "元;";
+                                        flag = distributorService.subBalance(distributor.getId(), money);
+                                    }else if(storeRespDTO.get()!=null){
+                                        StoreRespDTO storeRsp = storeRespDTO.get();
+                                        beforeBalance = storeRsp.getBeforeAmount();
+                                        afterBalance = storeRsp.getAfterAmount();
+                                        tradeName = "消费金额:" + money + "元,消费后门店账户剩余余额" + storeRsp.getAfterAmount() + "元;";
+                                        flag = true;
+                                    }
+
+                                }catch (ServiceException e){
+                                    if(!canChangeToCredit){
+                                        throw e;
+                                    }
+                                }
+
+                                if(!flag){
+                                    //尝试授信
+                                    tradeType = DistributorTradeTypeEnum.CREDIT_TRANS.getType();
+                                }
+                            } else {
+                                if (!canChangeToCredit) {
+                                    throw exception0(11_028, "分销商无预付款交易权限!");
+                                }
+                                tradeType = DistributorTradeTypeEnum.CREDIT_TRANS.getType();
+                            }
 
                             if(tradeType == DistributorTradeTypeEnum.CREDIT_TRANS.getType()){
 

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

@@ -1,9 +1,6 @@
 package com.yc.ship.module.trade.controller.admin.order.vo.order;
 
 import cn.hutool.json.JSONObject;
-import com.yc.ship.framework.common.validation.IntEnum;
-import com.yc.ship.module.trade.enums.PaySourceEnum;
-import com.yc.ship.module.trade.enums.PayTypeEnum;
 import io.swagger.v3.oas.annotations.Hidden;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -24,7 +21,6 @@ public class PayOrderReqVO {
     @NotNull(message = "订单ID不能为空")
     private Long orderId;
 
-    @IntEnum(value = PayTypeEnum.class,message = "支付方式不正确")
     @NotNull(message = "支付方式不能为空")
     private Integer payType;
 
@@ -52,7 +48,6 @@ public class PayOrderReqVO {
     @Schema(description = "前台支付传入的参数", example = "")
     private PayParams payParams;
 
-    @IntEnum(value = PaySourceEnum.class,message = "支付来源不正确")
     @Schema(description = "支付来源,外部订单支付必传", example = "")
     private Integer paySource;
 

+ 200 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderPageReqVO.java

@@ -1,10 +1,20 @@
 package com.yc.ship.module.trade.controller.admin.order.vo.order;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.yc.ship.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.Hidden;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 
 @Schema(description = "管理后台 - 交易订单分页 Request VO")
@@ -13,12 +23,198 @@ import lombok.ToString;
 @ToString(callSuper = true)
 public class TradeOrderPageReqVO extends PageParam {
 
-    @Schema(description = "订单号")
-    private String orderNo;
+    @Schema(description = "订单id")
+    private String orderId;
+    @Schema(description = "订单类型")
+    private Integer type;
 
-    @Schema(description = "分销商id")
+    @Schema(description = "门店id")
+    private Long storeId;
+
+    @Schema(description = "门店id")
     private Long distributorId;
 
     @Schema(description = "门店id")
-    private Long storeId;
+    private List<Long> storeIds;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "团号")
+    private String groupNo;
+
+    @Schema(description = "关联订单号")
+    @ExcelProperty("关联订单号")
+    private String bindOrderNo;
+
+    @Schema(description = "第三方订单号")
+    private String externalOrderNo;
+
+    @Schema(description = "第三方原始订单号")
+    private String externalOriginOrderNo;
+
+    @Schema(description = "第三方订单号列表")
+    private List<String> externalOrderNos;
+
+    @Schema(description = "时间方案", example = "12322")
+    private Long routePlanId;
+
+    @Schema(description = "销售方式")
+    private String sellMethod;
+
+    @Schema(description = "销售来源", example = "31758")
+    private String sourceId;
+
+    @Schema(description = "来源名称", example = "张三")
+    private String sourceName;
+
+    @Schema(description = "销售员ID", example = "23415")
+    private Long sellerId;
+
+    @Schema(description = "会员ID", example = "23415")
+    private String memberId;
+
+    @Schema(description = "订单金额")
+    private BigDecimal amount;
+
+    @Schema(description = "支付时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String travelDate;
+
+    @Schema(description = "支付时间", example = "")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String travelDateStart;
+
+    @Schema(description = "支付时间", example = "")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String travelDateEnd;
+
+    @Schema(description = "下单时间", example = "")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String orderDateStart;
+
+    @Schema(description = "下单时间", example = "")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String orderDateEnd;
+
+    @Schema(description = "退款时间", example = "")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String orderRefundDateStart;
+
+    @Schema(description = "退款时间", example = "")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String orderRefundDateEnd;
+
+    @Schema(description = "下单时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private String orderDate;
+
+    @Schema(description = "支付方式")
+    private Integer payType;
+
+    @Schema(description = "支付金额")
+    private BigDecimal payAmount;
+
+    @Schema(description = "订单状态", example = "2")
+    private List<Integer> orderStatus;
+
+    @Schema(description = "导出的表头", example = "2")
+    private List<String> headers;
+
+    @Schema(description = "调度状态", example = "2")
+    private Integer dispatchStatus;
+
+    @Schema(description = "支付状态", example = "2")
+    private Integer paymentStatus;
+
+    @Schema(description = "支付时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime paymentDate;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime createTime;
+
+    @Schema(description = "证件号")
+    private String credentialNo;
+
+    @Schema(description = "联系人")
+    private String contactName;
+
+    @Schema(description = "联系人手机号")
+    private String mobile;
+
+    @Schema(description = "转交分销商ID")
+    private Long transDistributorId;
+
+    @Schema(description = "转交分销商名称")
+    private String transDistributorName;
+
+    @Schema(description = "转交金额")
+    private BigDecimal transAmount;
+
+
+    @Schema(description = "凭证码(票号)")
+    private String voucherCode;
+
+    @Schema(description = "是否完全支付 0 否 1是")
+    private Integer isFullPay;
+
+    @Schema(description = "是否已评论")
+    private Integer isComment;
+
+    @Schema(description = "产品名称")
+    private String productName;
+
+    @Schema(description = "来源名称", example = "张三")
+    private Long businessId;
+
+    @Schema(description = "操作员", example = "张三")
+    private String sellerName;
+
+    @Schema(description = "业务员", example = "张三")
+    private String businessName;
+
+    @Schema(description = "业绩共享员", example = "张三")
+    private String shareName;
+
+    @Schema(description = "分销商分组ID", example = "张三")
+    private String otaCateId;
+
+    @Schema(description = "分销商ID", example = "张三")
+    private String otaId;
+
+    @Schema(description = "旅行社类型", example = "0自营 1外部")
+    @Hidden
+    private Integer otcType;
+
+    @Schema(description = "游客姓名", example = "张三")
+    private String userName;
+
+    @Schema(description = "租户ID", example = "张三")
+    private Long tenantId;
+
+    @Schema(description = "出行状态", example = "2")
+    private Integer travelStatus;
+
+    @Schema(description = "分销商分组ID", example = "张三")
+    private List<String> otaCateIds;
+
+    @Schema(description = "时间方案列")
+    private List<Long> planIds;
+
+    @Schema(description = "分组列")
+    private List<Long> cateIds;
+
+    @Schema(description = "财务标签", example = "张三")
+    private String productTag;
+
+    @Schema(description = "运营标签", example = "张三")
+    private String productTag2;
+
+    @Schema(description = "业务标签", example = "张三")
+    private String productTag3;
+
+    @Schema(description = "标签4", example = "张三")
+    private String productTag4;
 }

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

@@ -175,14 +175,14 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             //3.保存订单
             tradeOrderRepositoryService.saveOrder(tradeOrderBO);
             //4.供应商下单
-            CommonResult<TradeSupplierOrderRespBO> tradeSupplierOrderResp = tradeSupplierService.createOrder(tradeOrderBO);
-            if (tradeSupplierOrderResp.isError()) {
-                //4.1 供应商下单失败回调
-                tradeSupplierCallbackService.afterAnyOrderCreateFail(tradeOrderBO.getTradeOrderDO());
-                return CommonResult.error(tradeSupplierOrderResp);
-            }
+//            CommonResult<TradeSupplierOrderRespBO> tradeSupplierOrderResp = tradeSupplierService.createOrder(tradeOrderBO);
+//            if (tradeSupplierOrderResp.isError()) {
+//                //4.1 供应商下单失败回调
+//                tradeSupplierCallbackService.afterAnyOrderCreateFail(tradeOrderBO.getTradeOrderDO());
+//                return CommonResult.error(tradeSupplierOrderResp);
+//            }
             //4.2 供应商下单成功回调
-            tradeSupplierCallbackService.afterAllOrderCreate(tradeOrderBO.getTradeOrderDO());
+//            tradeSupplierCallbackService.afterAllOrderCreate(tradeOrderBO.getTradeOrderDO());
             //5.下单后处理
             afterOrderCreate(tradeOrderBO);
             TradeOrderRespDTO tradeOrderRespDTO = new TradeOrderRespDTO().setOrderId(tradeOrderBO.getTradeOrderDO().getId()).setOrderNo(tradeOrderBO.getTradeOrderDO().getOrderNo())
@@ -818,8 +818,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         ProductSpuRespDTO finalProductSpuRespDTO = productSpuRespDTO;
         orderItem.getDetailList().forEach(orderDetail -> {
 
-            List<String> ticketNoList =  tradeUUCodeUtils.generateTicketNo(orderDetail.getCount());
-            for (int i = 0; i < orderDetail.getCount(); i++) {
+            List<String> ticketNoList =  tradeUUCodeUtils.generateTicketNo(1);
                 //订单详情
                 TradeDetailDO tradeDetailDO = new TradeDetailBO();
 
@@ -903,7 +902,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
 //                }
 
                 tradeDetailDO.setId(IdWorker.getId());
-                tradeDetailDO.setVoucherCode(ticketNoList.get(i));
+                tradeDetailDO.setVoucherCode(ticketNoList.get(0));
                 tradeDetailDO.setVoucherStatus(VoucherStatusEnum.INIT.getStatus());
                 //游客信息
 //                buildTradeVisitor(orderCreateReqDTO,productSpuRespDTO,tradeVisitorDOList,tradeDetailDO,orderDetail,i);
@@ -920,7 +919,20 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                     //补任意游玩日期
                     tradeOrderDO.setTravelDate(DateUtils.of(tradeDetailDO.getUseDate()));
                 }
+
+            for (ShipTradeOrderCreateReqVO.Visitor visitor : orderDetail.getVisitorList()) {
+                TradeVisitorDO tradeVisitorDO = new TradeVisitorDO();
+                tradeVisitorDO.setId(IdWorker.getId());
+                tradeVisitorDO.setOrderId(tradeOrderDO.getId());
+                tradeVisitorDO.setName(visitor.getName());
+                tradeVisitorDO.setDetailId(tradeDetailDO.getId());
+                tradeVisitorDO.setCredentialType(visitor.getCredentialType());
+                tradeVisitorDO.setCredentialNo(visitor.getCredentialNo());
+                tradeVisitorDO.setDeleted(false);
+                tradeVisitorDO.setCreateTime(LocalDateTime.now());
+                tradeVisitorDOList.add(tradeVisitorDO);
             }
+
         });
 
         //批量验证游客购买限制规则

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

@@ -2334,77 +2334,8 @@ 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);
-//
-//        //创建订单汇总信息
-//        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());
@@ -2442,7 +2373,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             visitorList.add(visitor);
         }
         orderDetail.setVisitorList(visitorList);
-        orderDetail.setCount(totalNum);
+        orderDetail.setCount(1);
         orderItem.setDetailList(Arrays.asList(orderDetail));
         shipTradeOrderCreateReqVO.setItemlList(Arrays.asList(orderItem));
         CommonResult<TradeOrderRespDTO> result = doShipCreateOrder(loginUser,shipTradeOrderCreateReqVO,SellMethodEnum.WINDOW);

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

@@ -144,9 +144,11 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
             }
         }catch (ServiceException e){
             ExceptionUtils.log(log,"下单支付失败:",e);
+            e.printStackTrace();
             return CommonResult.error(e);
         }catch (Exception e){
             log.error("下单支付失败:",e);
+            e.printStackTrace();
             return CommonResult.error(ORDER_PAY_FAIL);
         }
     }
@@ -539,8 +541,8 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
             }
         }
 
-        BigDecimal hadPayAmount = tradeOrderRepositoryService.getHadPayAmount(tradeOrder.getId());
-        Asserts.isTrue((tradeOrder.getPayAmount().subtract(hadPayAmount)).compareTo(payOrderReqVO.getPayAmount())>=0,"支付金额大于订单需支付金额");
+//        BigDecimal hadPayAmount = tradeOrderRepositoryService.getHadPayAmount(tradeOrder.getId());
+//        Asserts.isTrue((tradeOrder.getPayAmount().subtract(hadPayAmount)).compareTo(payOrderReqVO.getPayAmount())>=0,"支付金额大于订单需支付金额");
     }
 
     /**
@@ -549,13 +551,12 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
      * @return
      */
     private boolean needPayPlatCreateOrder(PayOrderReqVO payOrderReqVO,TradeOrderPayDO tradeOrderPayDO){
-        boolean flag =  ObjectUtils.equalsAny(payOrderReqVO.getPayType(), PayTypeEnum.WEIXIN_PAY.getType(),PayTypeEnum.ALI_PAY.getType()
-        ,PayTypeEnum.UNION_PAY.getType(),PayTypeEnum.BANK_CARD.getType());
-        if(flag && (payOrderReqVO.getPayAmount().compareTo(BigDecimal.ZERO) == 0)){
-            throw exception0(PAY_TYPE_NOT_SUPPORT_ZERO.getCode(),PAY_TYPE_NOT_SUPPORT_ZERO.getMsg());
-        }
-
-        return flag;
+//        boolean flag =  ObjectUtils.equalsAny(payOrderReqVO.getPayType(), PayTypeEnum.WEIXIN_PAY.getType(),PayTypeEnum.ALI_PAY.getType()
+//        ,PayTypeEnum.UNION_PAY.getType(),PayTypeEnum.BANK_CARD.getType());
+//        if(flag && (payOrderReqVO.getPayAmount().compareTo(BigDecimal.ZERO) == 0)){
+//            throw exception0(PAY_TYPE_NOT_SUPPORT_ZERO.getCode(),PAY_TYPE_NOT_SUPPORT_ZERO.getMsg());
+//        }
+        return false;
     }
 
     private TradeOrderPayDO buildOrderPay(TradeOrderDO tradeOrder,PayOrderReqVO payOrderReqVO){
@@ -585,10 +586,26 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
             return "0";
         }
 
-        PayTypeEnum payTypeEnum = PayTypeEnum.valueOf(payOrderReqVO.getPayType());
-        PayTypeService payTypeService = payTypeServiceMap.get(payTypeEnum.getServiceName());
-        Asserts.isTrue(payTypeService!=null,"当前支付方式未实现{},{}",payTypeEnum.getServiceName(),payOrderReqVO.getPayType());
-        return payTypeService.deduct(tradeOrderPayDO,payOrderReqVO).toString();
+        if(payOrderReqVO.getPayType() == 1){
+            //预付款
+            PayTypeEnum payTypeEnum = PayTypeEnum.valueOf(5);
+            PayTypeService payTypeService = payTypeServiceMap.get(payTypeEnum.getServiceName());
+            Asserts.isTrue(payTypeService!=null,"当前支付方式未实现{},{}",payTypeEnum.getServiceName(),payOrderReqVO.getPayType());
+            return payTypeService.deduct(tradeOrderPayDO,payOrderReqVO).toString();
+        }else if(payOrderReqVO.getPayType() == 2){
+            //授信
+            PayTypeEnum payTypeEnum = PayTypeEnum.valueOf(6);
+            PayTypeService payTypeService = payTypeServiceMap.get(payTypeEnum.getServiceName());
+            Asserts.isTrue(payTypeService!=null,"当前支付方式未实现{},{}",payTypeEnum.getServiceName(),payOrderReqVO.getPayType());
+            return payTypeService.deduct(tradeOrderPayDO,payOrderReqVO).toString();
+        }else{
+            //qt
+            PayTypeEnum payTypeEnum = PayTypeEnum.valueOf(payOrderReqVO.getPayType());
+            PayTypeService payTypeService = payTypeServiceMap.get(payTypeEnum.getServiceName());
+            Asserts.isTrue(payTypeService!=null,"当前支付方式未实现{},{}",payTypeEnum.getServiceName(),payOrderReqVO.getPayType());
+            return payTypeService.deduct(tradeOrderPayDO,payOrderReqVO).toString();
+        }
+
     }
 
     private Map usePayPlatCreatePayOrder(PayOrderReqVO payOrderReqVO,TradeOrderPayDO tradeOrderPayDO){

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeDetailBaseMapper.xml

@@ -5,13 +5,13 @@
     <select id="selectNeedSupplierOrderList"
             resultType="com.yc.ship.module.trade.service.order.bo.TradeOrderDetailBaseBO">
 
-        SELECT tdb.*,td.product_id,td.route_plan_id,td.hotel_order_id,td.quantity_of_one,td.use_real_name,count(distinct td.id) quantity,sum(tdb.price) amount
+        SELECT tdb.*,td.product_id,td.quantity_of_one,td.use_real_name,count(distinct td.id) quantity,sum(tdb.price) amount
         FROM trade_detail td
         INNER JOIN trade_detail_base tdb on td.id = tdb.detail_id
         WHERE td.order_id=#{orderId} and tdb.product_base_type = 1
         GROUP BY tdb.supplier_product_id,td.product_id
         UNION ALL
-        SELECT tdb.*,td.product_id,td.route_plan_id,td.hotel_order_id,td.quantity_of_one,td.use_real_name,count(distinct td.id) quantity,sum(tdb.price) amount
+        SELECT tdb.*,td.product_id,td.quantity_of_one,td.use_real_name,count(distinct td.id) quantity,sum(tdb.price) amount
         FROM trade_detail td
         INNER JOIN trade_detail_base tdb on td.id = tdb.detail_id
         WHERE td.order_id=#{orderId} and tdb.is_system_direct = 1 and tdb.product_base_type = 0