Procházet zdrojové kódy

Merge branch 'main' of http://117.174.100.38:3000/lishiqiang/ship-ota-server into main1

luofeiyun před 2 týdny
rodič
revize
3bf30bd1f2
13 změnil soubory, kde provedl 334 přidání a 789 odebrání
  1. 16 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  2. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/ShipTradeOrderCreateReqVO.java
  3. 9 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderPdaRespVO.java
  4. 9 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRespNewVO.java
  5. 9 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRespVO.java
  6. 9 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderDO.java
  7. 2 38
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java
  8. 3 8
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderRoomModelMapper.java
  9. 6 13
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderService.java
  10. 40 111
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java
  11. 33 10
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java
  12. 174 609
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml
  13. 21 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderRoomModelMapper.xml

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

@@ -55,6 +55,8 @@ import java.nio.file.Files;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
 
 import static com.yc.ship.framework.common.pojo.CommonResult.success;
 import static com.yc.ship.framework.operatelog.core.enums.OperateTypeEnum.*;
@@ -258,10 +260,24 @@ public class OtcTradeOrderController {
             } else {
                 item.setTotalPerson(0);
             }
+
+            Map<String, List<TradeOrderRoomModelVO>> roomDesc = item.getRoomModelList().stream().collect(Collectors.groupingBy(p -> p.getRoomModelName() + "(" + p.getFloor()+"F)"));
+            AtomicReference<String> roomDescStr = new AtomicReference<>("");
+            roomDesc.forEach((key, value) -> roomDescStr.set( roomDescStr.get()+" "+  value.size() +"*"+key ));
+            item.setRoomModelDetails(roomDescStr.get().trim());
         });
         return success(page);
     }
 
+    @PostMapping("/window/getOrderCount")
+    @OperateLog(type = API)
+    @Operation(summary = "win-平台订单列表[分页]", description = "根据条件查询订单列表")
+    @PlatTenantEnv
+    public CommonResult<?> getOrderCount(@Valid @RequestBody TradeOrderPageReqVO pageReqVO) {
+        String totalDesc = tradeOrderService.getOrderCount(pageReqVO);
+        return success(totalDesc);
+    }
+
 
 
     @PostMapping("/window/paidOrderList")

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

@@ -63,6 +63,9 @@ public class ShipTradeOrderCreateReqVO implements Serializable {
     @Schema(description = "是否审阅", example = "100")
     private Integer isRead;
 
+    @Schema(description = "订单序号", example = "100")
+    private Integer orderSort;
+
     @Schema(description = "订单联系人")
     private String linkMan;
 

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

@@ -429,4 +429,13 @@ public class TradeOrderPdaRespVO {
     @Schema(description = "是否审阅(0否 1是)")
     private Integer isRead;
 
+    @Schema(description = "审阅人")
+    private Long readUser;
+
+    @Schema(description = "审阅人名称")
+    private String readUserName;
+
+    @Schema(description = "排序")
+    private Integer orderSort;
+
 }

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

@@ -39,6 +39,9 @@ public class TradeOrderRespNewVO {
     @ExcelProperty("订单号")
     private String orderNo;
 
+    @Schema(description = "序号")
+    private Integer orderSort;
+
     @Schema(description = "团号")
     @ExcelProperty("团号")
     private String groupNo;
@@ -175,6 +178,9 @@ public class TradeOrderRespNewVO {
     @Schema(description = "房型信息")
     private List<TradeOrderRoomModelVO> roomModelList;
 
+    @Schema(description = "房型信息")
+    private String roomModelDetails;
+
     @Schema(description = "审核人")
     @ExcelProperty("审核人")
     private String auditUser;
@@ -187,4 +193,7 @@ public class TradeOrderRespNewVO {
     @Schema(description = "是否审阅(0否 1是)")
     private Integer isRead;
 
+    @Schema(description = "审阅人")
+    private Long readUser;
+
 }

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

@@ -509,5 +509,14 @@ public class TradeOrderRespVO {
     @Schema(description = "是否审阅(0否 1是)")
     private Integer isRead;
 
+    @Schema(description = "审阅人")
+    private Long readUser;
+
+    @Schema(description = "审阅人名称")
+    private String readUserName;
+
+    @Schema(description = "订单序号")
+    private Integer orderSort;
+
 
 }

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

@@ -320,4 +320,13 @@ public class TradeOrderDO extends TenantBaseDO {
      * 灰点(已审阅)/红点(未审阅) 0 未审阅 1 已审阅
      */
     private Integer isRead;
+    /**
+     * 审阅人员ID
+     */
+    private Long readUser;
+
+    /**
+     * 排序
+     */
+    private Integer orderSort;
 }

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

@@ -5,7 +5,6 @@ import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.ota.controller.admin.distributor.vo.DistributorPageReqVO;
 import com.yc.ship.module.otc.api.agency.dto.AgencyUserLoginInfoRespDTO;
-import com.yc.ship.module.otc.api.agency.dto.CooperateRespDTO;
 import com.yc.ship.module.product.api.dto.CategoryRespDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.check.CheckOrderPageVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
@@ -15,17 +14,12 @@ import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRecordPag
 import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRecordRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.rule.MarketingPageReqVO;
-import com.yc.ship.module.trade.controller.admin.supplier.vo.SupplierOrderPageReqVO;
-import com.yc.ship.module.trade.controller.admin.supplier.vo.SupplierOrderRespVO;
-import com.yc.ship.module.trade.controller.admin.supplier.vo.SupplierRefundPageReqVO;
-import com.yc.ship.module.trade.controller.admin.supplier.vo.SupplierRefundRespVO;
 import com.yc.ship.module.trade.controller.app.pda.vo.SupplierCheckOrderPageVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
 import com.yc.ship.module.trade.service.order.bo.TradeBindOrderQueryBO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
-import org.springframework.cache.annotation.Cacheable;
 
 import java.util.List;
 import java.util.Map;
@@ -49,25 +43,8 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
 
     TradeOrderCountRespVO getTradeOrderUserCount(@Param("vo") TradeOrderPageReqVO vo);
 
-    IPage<TradeOrderRespVO> getOtcTradeOrderUserPage(IPage<TradeOrderRespVO> page, @Param("vo") TradeOrderPageReqVO vo);
-
-    TradeOrderCountRespVO getOtcTradeOrderUserCount(@Param("vo") TradeOrderPageReqVO vo, @Param("key") String key);
-
-    IPage<TradeTranOrderRespVO> getTransOrderPage(IPage<TradeOrderRespVO> page, @Param("vo") TradeOrderPageReqVO vo);
-
-    List<Map<String, Object>> getTotalTransOrder(@Param("vo") TradeOrderPageReqVO vo);
-
     IPage<TradeOrderRespVO> getPaidOrderPage(IPage<TradeOrderRespVO> page, @Param("vo") TradeOrderPageReqVO vo);
 
-    //由于联查 trade_order_bind 表 需要租户忽略
-    @TenantIgnore
-    IPage<TradeOrderRespVO> getCanBindOrder(IPage<TradeOrderRespVO> page, @Param("vo") TradeOrderPageReqVO vo);
-
-    @TenantIgnore
-    List<TradeOrderRespVO> getBoundOrder(@Param("bindOrderId") Long bindOrderId);
-
-    List<CooperateRespDTO> transCooperateList(@Param("vo") TradeOrderPageReqVO vo);
-
     IPage<TradeDetailRespVO> getRefundDetailPage(IPage<TradeDetailRespVO> page, @Param("vo") TradeDetailPageReqVO vo);
 
     IPage<RefundRespVO> getRefundRecordPage(IPage<RefundRespVO> page, @Param("vo") RefundPageReqVO vo);
@@ -76,8 +53,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
 
     TradeOrderPdaRespVO getPdaOrderInfo(Long id);
 
-    IPage<TradeOrderRespVO> selectBindOrderPage(IPage<TradeOrderRespVO> page, @Param("vo") MarketingPageReqVO vo);
-
     @TenantIgnore
     IPage<TradeOrderRespVO> getMarketingApplyOrderPage(IPage<TradeOrderRespVO> page, @Param("vo") MarketingPageReqVO vo);
 
@@ -105,7 +80,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     TradeOrderDO getOrderByVoucherCode(@Param("voucherCode") String voucherCode);
 
     TradeOrderDO getOrderByExternalOrderNo(@Param("tradeNo") String tradeNo);
-    TradeOrderDO getLastOrderByOrderNo(@Param("orderNo") String orderNo);
 
     List<Map<String, Object>> getOtcOrderByExternalOrderNo(@Param("tradeNo") String tradeNo);
 
@@ -151,11 +125,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     @TenantIgnore
     List<TradeOrderDO> orderList(@Param("tenantId") Long tenantId, @Param("orderStatus") List<Integer> orderStatus, @Param("travelDate") String travelDate, @Param("name") String name, @Param("mobile") String mobile, @Param("credentialNo") String credentialNo);
 
-    @TenantIgnore
-    int countDirectOrderByOrderId(@Param("orderId") Long orderId);
-
-    @TenantIgnore
-    List<Long> queryRelatedOrderId(@Param("orderId") Long orderId);
 
     @TenantIgnore
     TradeOrderDO queryOneByOrderNo(@Param("orderNo") String orderNo);
@@ -172,8 +141,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
 
     Map<String, Object> selectPlatPayAmountByOriginOrderNo(@Param("originOrderNo") String originOrderNo);
 
-    List<TradeOrderDO> queryOrderStatusError();
-
     /**
      * 查询订单出行状态为null的订单总数
      *
@@ -205,11 +172,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     @TenantIgnore
     IPage<TradeDetailRespVO> getOtaTradeOrderPage(IPage<TradeDetailRespVO> page, @Param("vo") DistributorPageReqVO vo, @Param("distributorId") Long distributorId);
 
-    @TenantIgnore
-    IPage<SupplierOrderRespVO> getSupplierOrderPage(IPage<SupplierOrderRespVO> page, @Param("vo") SupplierOrderPageReqVO vo);
-
-    IPage<SupplierRefundRespVO> getSupplierRefundPage(IPage<SupplierRefundRespVO> page, @Param("vo") SupplierRefundPageReqVO vo);
-
     List<Map<String, Object>> regionStatic(@Param("vo") TradeStaticReqVO regionStatic);
 
     List<TradeOrderDO> queryOrderByLast(@Param("orderNo")  String orderNo);
@@ -218,4 +180,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
      * 查询订单确认单中入住的房型国家信息
      */
     List<TradeOrderConfirmationCountryRespVO> selectConfirmationCountry(@Param("orderId") Long orderId);
+
+    Map<String, Object> getOrderCount(@Param("vo") TradeOrderPageReqVO pageReqVO);
 }

+ 3 - 8
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderRoomModelMapper.java

@@ -20,15 +20,10 @@ import java.util.List;
 public interface TradeOrderRoomModelMapper extends BaseMapperX<TradeOrderRoomModelDO> {
 
 
-    default List<TradeOrderRoomModelDO> selectListByOrderId(Long id) {
-        return selectList(new LambdaQueryWrapperX<TradeOrderRoomModelDO>()
-                .eq(TradeOrderRoomModelDO::getOrderId, id));
-    }
+    List<TradeOrderRoomModelDO> selectListByOrderId(@Param("orderId") Long id);
 
-    default List<TradeOrderRoomModelDO> selectListByOrderIds(List<Long> orderIds) {
-        return selectList(new LambdaQueryWrapperX<TradeOrderRoomModelDO>()
-                .in(TradeOrderRoomModelDO::getOrderId, orderIds));
-    }
+
+    List<TradeOrderRoomModelDO> selectListByOrderIds(@Param("orderIds") List<Long> orderIds);
 
     default void deleteByOrderId(Long orderId) {
         delete(new LambdaQueryWrapperX<TradeOrderRoomModelDO>()

+ 6 - 13
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderService.java

@@ -3,7 +3,10 @@ package com.yc.ship.module.trade.service.order;
 
 import com.yc.ship.framework.common.pojo.CommonResult;
 import com.yc.ship.framework.common.pojo.PageResult;
-import com.yc.ship.module.trade.api.dto.*;
+import com.yc.ship.module.trade.api.dto.TradeBindOrderReqDTO;
+import com.yc.ship.module.trade.api.dto.TradeModifyVisitorReqDTO;
+import com.yc.ship.module.trade.api.dto.TradeOrderCreateReqDTO;
+import com.yc.ship.module.trade.api.dto.TradeOrderRespDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.ShipTradeOrderCreateReqVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderPageReqVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO;
@@ -62,18 +65,6 @@ public interface TradeOrderService {
     CommonResult<?> modifyVisitor(TradeModifyVisitorReqDTO tradeModifyVisitorReqDTO);
 
 
-    /**
-     * 根据订单规格变更
-     *
-     */
-    CommonResult<TradeOrderChangeRespDTO> changeOrder(TradeOrderChangeReqDTO tradeOrderChangeReqDTO, TradeOrderDO tradeOrderDO);
-
-    /**
-     * 根据明细规格变更,暂时未使用
-     *
-     */
-    CommonResult<TradeOrderChangeRespDTO> changeTicket(TradeOrderChangeReqDTO tradeOrderChangeReqDTO, TradeOrderDO tradeOrderDO);
-
     void bindChangeOrder(List<Long> originDetailIdList, Long orderId, Long originOrderId);
 
     int getMaxOrderNo(Long voyageId);
@@ -82,4 +73,6 @@ public interface TradeOrderService {
     List<TradeOrderDO> getTradeOrderByExpire(String expiretime);
 
     TradeOrderDO getLastOrderByOrderNo(String orderNo);
+
+    String getOrderCount(TradeOrderPageReqVO pageReqVO);
 }

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

@@ -13,6 +13,7 @@ import com.yc.ship.framework.common.exception.ServiceException;
 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.collection.CollectionUtils;
 import com.yc.ship.framework.common.util.date.DateUtils;
 import com.yc.ship.framework.common.util.object.ObjectUtils;
 import com.yc.ship.framework.security.core.LoginUser;
@@ -23,11 +24,10 @@ import com.yc.ship.module.product.api.dto.*;
 import com.yc.ship.module.product.enums.ProductTypeEnum;
 import com.yc.ship.module.product.enums.SpecTypeEnum;
 import com.yc.ship.module.system.api.permission.RoleApi;
+import com.yc.ship.module.system.api.user.AdminUserApi;
+import com.yc.ship.module.system.api.user.dto.AdminUserRespDTO;
 import com.yc.ship.module.trade.api.dto.*;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.ShipTradeOrderCreateReqVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderPageReqVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeVisitorRespVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
 import com.yc.ship.module.trade.convert.order.TradeOrderConvert;
 import com.yc.ship.module.trade.dal.dataobject.order.*;
 import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
@@ -56,6 +56,7 @@ import com.yc.ship.module.trade.utils.AgencyAuthUtils;
 import com.yc.ship.module.trade.utils.BeanUtils;
 import com.yc.ship.module.trade.utils.TradeUUCodeUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
@@ -117,6 +118,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     @Resource
     private RoleApi roleApi;
 
+    @Resource
+    private AdminUserApi adminUserApi;
+
 
     @Override
     public PageResult<TradeOrderRespVO> getPlatOrderPage(TradeOrderPageReqVO pageReqVO) {
@@ -132,6 +136,10 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         List<Long> currentRoleList = roleApi.getCurrentRoleList();
 
         IPage<TradeOrderRespVO> iPage = tradeOrderMapper.getTradeOrderUserPage(page, pageReqVO);
+
+        List<AdminUserRespDTO> userList = adminUserApi.getUserList();
+        Map<Long, String> userMap = new HashMap<>(userList.stream().collect(Collectors.toMap(AdminUserRespDTO::getId, AdminUserRespDTO::getUsername)));
+
         iPage.getRecords().forEach(tradeOrderRespVO -> {
             List<TradeVisitorRespVO> visitorDOList = tradeVisitorMapper.queryVisitorByOrderId(tradeOrderRespVO.getId());
             tradeOrderRespVO.setVisitors(visitorDOList);
@@ -148,6 +156,12 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             if(tradeOrderRespVO.getIsRead()==null){
                 tradeOrderRespVO.setIsRead(0);
             }
+            if(StringUtils.isNotBlank(tradeOrderRespVO.getAuditUser())){
+                tradeOrderRespVO.setAuditUserName(userMap.get(Long.parseLong(tradeOrderRespVO.getAuditUser())));
+            }
+            if(tradeOrderRespVO.getReadUser()!=null){
+                tradeOrderRespVO.setReadUserName(userMap.get(tradeOrderRespVO.getReadUser()));
+            }
         });
         return new PageResult<>(iPage.getRecords(), iPage.getTotal());
     }
@@ -370,91 +384,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
 
-    @Override
-    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_APPLY_CHANGE)
-    public CommonResult<TradeOrderChangeRespDTO> changeOrder(TradeOrderChangeReqDTO tradeOrderChangeReqDTO, TradeOrderDO tradeOrderDO) {
-        Asserts.isTrue(tradeOrderDO.getIsChangeOrder() == null || ObjectUtil.equal(tradeOrderDO.getIsChangeOrder(), ORDER_CHANGE_TYPE_OLD), "改签订单不能再改签");
-        Asserts.isTrue(ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNUSED.getStatus(), TradeOrderStatusEnum.PARTIAL_REFUND.getStatus()), "当前订单状态不能改签{}", tradeOrderDO.getOrderStatus());
-        if (ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.PARTIAL_REFUND.getStatus())) {
-            //部分退可能有已检票门票
-            Long checkCount = tradeOrderRepositoryService.getCheckCount(tradeOrderDO.getId());
-            if (checkCount != null && checkCount > 0) {
-                Asserts.isTrue(false, "当前订单已核销不能进行改签");
-            }
-        }
-        //获取有效门票数量
-        int validCount = tradeOrderRepositoryService.queryEffectyCount(tradeOrderDO.getId()).intValue();
-        //改签票数要与原订单有效票数要一致
-        int changeCount = tradeOrderChangeReqDTO.getItemlList().stream().mapToInt(item -> item.getDetailList().stream().mapToInt(TradeOrderCreateReqDTO.OrderDetail::getCount).sum()).sum();
-        Asserts.isTrue(validCount == changeCount, "改签新订单下单数量与原订单有效数量不一致,{},{}", validCount, changeCount);
-
-        //验证改签订单的支付金额与原订单支付金额,如果大于则需补款,返回补款金额,如果小于则出票,并退款
-        BigDecimal subPayAmount = tradeOrderChangeReqDTO.getPayAmount().subtract(tradeOrderDO.getPayAmount());
-        if (ObjectUtil.equal(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.PARTIAL_REFUND.getStatus())) {
-            //如果改签订单有退款,扣除退款金额
-            BigDecimal orderRefundAmount = tradeRefundRepositoryService.getOrderOriginRefundAmount(tradeOrderDO.getId());
-            subPayAmount = subPayAmount.add(orderRefundAmount);
-        }
-
-        tradeOrderChangeReqDTO.setOrderId(IdWorker.getId());
-        bindChangeOrder(null, tradeOrderChangeReqDTO.getOrderId(), tradeOrderChangeReqDTO.getMainOrderId());
-        //2.改签新订单,不扣库存
-        tradeOrderChangeReqDTO.setIsChange(YES);
-
-        TradeOrderRespDTO tradeOrderRespDTO = createOrder(tradeOrderChangeReqDTO).getCheckedData();
-
-        //3.返回金额
-        TradeOrderChangeRespDTO respDTO = new TradeOrderChangeRespDTO();
-        respDTO.setOrderId(tradeOrderRespDTO.getOrderId());
-        respDTO.setOrderNo(tradeOrderRespDTO.getOrderNo());
-        //返回金额让售票员确认,只做参考,窗口可以修改差额
-        respDTO.setRealPayAmount(subPayAmount);
-        respDTO.setIsDirectStock(tradeOrderRespDTO.getIsDirectStock());
-        //记录订单日志
-        TradeOrderLogUtils.setOrderInfo(tradeOrderChangeReqDTO.getMainOrderId(), tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(), MapUtil.<String, Object>builder().put("newOrderNo", respDTO.getOrderNo())
-                .put("changeAmountMessage", subPayAmount.compareTo(BigDecimal.ZERO) >= 0 ? "需补缴" + subPayAmount : "需退款" + subPayAmount.abs()).build());
-        return CommonResult.success(respDTO);
-    }
-
-    @Override
-    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_APPLY_CHANGE)
-    public CommonResult<TradeOrderChangeRespDTO> changeTicket(TradeOrderChangeReqDTO tradeOrderChangeReqDTO, TradeOrderDO tradeOrderDO) {
-        Asserts.isTrue(tradeOrderDO.getIsChangeOrder() == null || ObjectUtil.equal(tradeOrderDO.getIsChangeOrder(), ORDER_CHANGE_TYPE_OLD), "改签订单不能再改签");
-        List<TradeDetailDO> detailList = tradeOrderRepositoryService.getDetailListByIds(tradeOrderChangeReqDTO.getOriginDetailIdList(), tradeOrderChangeReqDTO.getMainOrderId());
-        Asserts.isTrue(detailList.size() == tradeOrderChangeReqDTO.getOriginDetailIdList().size(), "改签数据不正确");
-
-        //获取改签原金额
-        BigDecimal changeAmount = detailList.stream().map(detail -> {
-            Asserts.isTrue(ObjectUtils.equalsAny(detail.getVoucherStatus(), VoucherStatusEnum.UNUSED.getStatus(), VoucherStatusEnum.TOOK.getStatus()), "当前订单明细状态不可变更");
-            return detail.getActualPrice();
-        }).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-        //1.保存改签关系
-        tradeOrderChangeReqDTO.setOrderId(IdWorker.getId());
-        bindChangeOrder(tradeOrderChangeReqDTO.getOriginDetailIdList(), tradeOrderChangeReqDTO.getOrderId(), tradeOrderChangeReqDTO.getMainOrderId());
-        //2.改签新订单,不扣库存
-        tradeOrderChangeReqDTO.setIsChange(YES);
-        ThreadLocalUtil.setChangeDetailList(tradeOrderChangeReqDTO.getOriginDetailIdList());
-        TradeOrderRespDTO tradeOrderRespDTO;
-        try {
-            tradeOrderRespDTO = createOrder(tradeOrderChangeReqDTO).getCheckedData();
-        } finally {
-            ThreadLocalUtil.clearChangeDetailList();
-        }
-
-        //3.返回金额
-        BigDecimal subPayAmount = tradeOrderChangeReqDTO.getPayAmount().subtract(changeAmount);
-        TradeOrderChangeRespDTO respDTO = new TradeOrderChangeRespDTO();
-        respDTO.setOrderId(tradeOrderRespDTO.getOrderId());
-        respDTO.setOrderNo(tradeOrderRespDTO.getOrderNo());
-        //返回金额让售票员确认,只做参考,窗口可以修改差额
-        respDTO.setRealPayAmount(subPayAmount);
-        //记录订单日志
-        TradeOrderLogUtils.setOrderInfo(tradeOrderChangeReqDTO.getMainOrderId(), tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(), MapUtil.<String, Object>builder().put("newOrderNo", respDTO.getOrderNo())
-                .put("changeAmountMessage", subPayAmount.compareTo(BigDecimal.ZERO) >= 0 ? "需补缴" + subPayAmount : "需退款" + subPayAmount.abs()).build());
-        return CommonResult.success(respDTO);
-    }
-
     /**
      * 构建创建订单
      */
@@ -550,6 +479,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         tradeOrderDO.setTravelDate(orderCreateReqDTO.getTravelDate());
         tradeOrderDO.setAmount(orderCreateReqDTO.getAmount());
         tradeOrderDO.setIsRead(orderCreateReqDTO.getIsRead());
+        tradeOrderDO.setOrderSort(orderCreateReqDTO.getOrderSort());
         tradeOrderDO.setPayAmount(orderCreateReqDTO.getPayAmount());
         tradeOrderDO.setRemark(orderCreateReqDTO.getRemark());
         tradeOrderDO.setItemId(orderCreateReqDTO.getItemId());
@@ -1188,7 +1118,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         List<String> credentialNoList = tradeVisitorDOList.stream().filter(v -> {
             TradeDetailDO filterDetailDO = tradeDetailDOList.stream().filter(td -> ObjectUtil.equal(td.getId(), v.getDetailId())).findFirst().get();
             return StrUtil.isNotBlank(v.getCredentialNo()) && ObjectUtil.notEqual(filterDetailDO.getSpecType(), SpecTypeEnum.OTHER.getType());
-        }).map(item -> item.getCredentialNo()).collect(Collectors.toList());
+        }).map(TradeVisitorDO::getCredentialNo).collect(Collectors.toList());
         //验证产品是否重复购买
         if (ObjectUtil.equal(productSpuRespDTO.getProductSaleRule().getCanRepeatBuy(), NO) && tradeDetailDO.getUseDate() != null && CollUtil.isNotEmpty(credentialNoList)) {
             Set<String> numberSet = new HashSet<>(credentialNoList);
@@ -1223,7 +1153,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                         credentialNoList = tradeVisitorDOList.stream().filter(visitor -> {
                             Long detailId = detailIdList.stream().filter(id -> ObjectUtil.equal(id, visitor.getDetailId())).findFirst().orElse(null);
                             return detailId != null && StrUtil.isNotBlank(visitor.getCredentialNo());
-                        }).map(item -> item.getCredentialNo()).collect(Collectors.toList());
+                        }).map(TradeVisitorDO::getCredentialNo).collect(Collectors.toList());
                         if (CollUtil.isEmpty(credentialNoList)) {
                             continue;
                         }
@@ -1242,8 +1172,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     /**
      * 因窗口可以改价,小程序有优惠券,重新计算支付单价和需要补的金额
      *
-     * @param orderCreateReqDTO
-     * @return
      */
     private BigDecimal resetPriceAndReturnSubAmount(TradeOrderCreateReqDTO orderCreateReqDTO) {
         //订单可以改价,规格的总金额可以改价
@@ -1290,11 +1218,15 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         tradeDetailDO.setActualPrice(tradeDetailDO.getActualPrice().add(subAmount));
         TradeDetailBaseDO tradeDetailBaseDO = tradeOrderDetailBOList.get(0).getTradeDetailBaseDOList().stream().filter(item -> ObjectUtil.equal(item.getDetailId(), tradeDetailDO.getId())).findFirst().orElse(null);
         Asserts.isTrue(tradeDetailBaseDO != null, "数据异常");
-        tradeDetailBaseDO.setPrice(tradeDetailBaseDO.getPrice().add(subAmount));
+        if (tradeDetailBaseDO != null) {
+            tradeDetailBaseDO.setPrice(tradeDetailBaseDO.getPrice().add(subAmount));
+        }
         if (CollUtil.isNotEmpty(tradeOrderDetailBOList.get(0).getTradeDetailPriceDOList())) {
             TradeDetailPriceDO tradeDetailPriceDO = tradeOrderDetailBOList.get(0).getTradeDetailPriceDOList().stream().filter(item -> ObjectUtil.equal(item.getDetailId(), tradeDetailDO.getId())).findFirst().orElse(null);
             Asserts.isTrue(tradeDetailPriceDO != null, "数据异常[1]");
-            tradeDetailPriceDO.setSalePrice(tradeDetailPriceDO.getSalePrice().add(subAmount));
+            if (tradeDetailPriceDO != null) {
+                tradeDetailPriceDO.setSalePrice(tradeDetailPriceDO.getSalePrice().add(subAmount));
+            }
         }
     }
 
@@ -1376,6 +1308,19 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         }
     }
 
+    @Override
+    public String getOrderCount(TradeOrderPageReqVO pageReqVO) {
+        LoginUser agencyLoginUser = agencyAuthUtils.getAgencyLoginUser();
+        if (agencyLoginUser.getDistributorId() != null) {
+            pageReqVO.setDistributorId(agencyLoginUser.getDistributorId());
+        }
+        if (agencyLoginUser.getStoreId() != null) {
+            pageReqVO.setStoreId(agencyLoginUser.getStoreId());
+        }
+        Map<String, Object> map = tradeOrderMapper.getOrderCount(pageReqVO);
+        return MapUtil.getStr(map, "name")+";成人:"+MapUtil.getStr(map, "num1")+",儿童:"+MapUtil.getStr(map, "num2")+",陪同:"+MapUtil.getStr(map, "num3")+";领队:"+MapUtil.getStr(map, "num4");
+    }
+
 
     private List<TradeDetailPriceDO> buildTradeDetailPrice(TradeOrderDO tradeOrderDO, List<TradeOrderCreateReqDTO.DetailPrice> tradeDetailPriceList, TradeDetailDO tradeDetailDO) {
         if (ObjectUtils.equalsAny(tradeOrderDO.getSellMethod(), SellMethodEnum.MINI_APP.getType()) && ObjectUtil.equal(tradeDetailDO.getCateType(), ProductTypeEnum.Hotel.getValue())) {
@@ -1400,22 +1345,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         return list;
     }
 
-    private BigDecimal getPackProductPrice(Long packProductId, Long productId, String specType) {
-//        ChildProductAndPriceDTO childProductAndPriceDTO = ThreadLocalUtil.getPackProduct().get(packProductId);
-//        Asserts.isTrue(childProductAndPriceDTO!=null && childProductAndPriceDTO.getPriceList()!=null,"未找到小程序产品信息{}",packProductId);
-//        ChildProductCalendarPriceDTO childProductCalendarPriceDTO = childProductAndPriceDTO.getPriceList().stream().filter(item -> ObjectUtil.equal(item.getProductId(), productId) && ObjectUtil.equal(item.getSpecType(), specType))
-//                .findFirst().orElse(null);
-        //现在有组全部为非必选的规格进行售卖情况,返回0
-//        Asserts.isTrue(childProductCalendarPriceDTO!=null,"小程序产品未设置价格{},{},{}",packProductId,productId,specType);
-        return BigDecimal.ZERO;
-    }
-
-    private TradeOrderCreateReqDTO.PackProduct getPackProduct(TradeOrderCreateReqDTO tradeOrderCreateReqDTO, Long packProductId) {
-        if (packProductId == null || CollUtil.isEmpty(tradeOrderCreateReqDTO.getPackProductList())) {
-            return null;
-        }
-        return tradeOrderCreateReqDTO.getPackProductList().stream().filter(item -> ObjectUtil.equal(item.getPackProductId(), packProductId)).findFirst().orElse(null);
-    }
 
     private void setOrderByRelateOrder(TradeOrderDO tradeOrderDO, TradeOrderDO relateOrder) {
         if (relateOrder == null) {

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

@@ -122,8 +122,7 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 import static com.yc.ship.framework.common.util.collection.CollectionUtils.convertList;
-import static com.yc.ship.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
-import static com.yc.ship.framework.security.core.util.SecurityFrameworkUtils.getLoginUserNickname;
+import static com.yc.ship.framework.security.core.util.SecurityFrameworkUtils.*;
 import static com.yc.ship.module.trade.enums.ApiConstants.ORDER_CHANGE_TYPE_NEW;
 import static com.yc.ship.module.trade.enums.ErrorCodeConstants.*;
 
@@ -1378,6 +1377,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             }
             shipTradeOrderCreateReqVO.setRealMoney(realAmount);
             shipTradeOrderCreateReqVO.setIsRead(0);
+            shipTradeOrderCreateReqVO.setOrderSort(maxOrderNo+1);
             shipTradeOrderCreateReqVO.setOtherMoney(otherMoney);
 
             ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser();
@@ -1570,6 +1570,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
             shipTradeOrderCreateReqVO.setTravelDate(tradeOrderDO.getTravelDate());
             shipTradeOrderCreateReqVO.setOrderId(orderId);
+            shipTradeOrderCreateReqVO.setOrderSort(tradeOrderDO.getOrderSort());
             shipTradeOrderCreateReqVO.setIsRead(0);
             TradeOrderTotalVO summary = createVO.getSummary();
             BigDecimal realAmount = summary.getRealMoney();
@@ -1678,11 +1679,31 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             TradeOrderTotalDO oldTradeOrderTotal = tradeOrderTotalMapper.selectOne(new LambdaQueryWrapper<TradeOrderTotalDO>().eq(TradeOrderTotalDO::getOldOrderId, orderId));
             shipTradeOrderCreateReqVO.setOldtradeOrderTotalDO(oldTradeOrderTotal);
             TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
+            List<TradeVisitorDO> oldvisitorDOList = tradeVisitorMapper.selectList(new LambdaQueryWrapper<TradeVisitorDO>().eq(TradeVisitorDO::getOrderId, tradeOrderDO.getId()));
+            String changedFields0="";
+            AtomicReference<String> oldCardNo = new AtomicReference<>("");
+            AtomicReference<String> newCardNo = new AtomicReference<>("");
+            oldvisitorDOList.forEach(v -> {
+                oldCardNo.set(oldCardNo.get() + v.getCredentialNo() + ";");
+            });
+            createVO.getTourist().forEach(v -> {
+                newCardNo.set(newCardNo.get() + v.getCardNo() + ";");
+            });
+            for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
+                String cardNo = tradeVistorReqVO.getCardNo();
+                List<TradeVisitorDO> collect = oldvisitorDOList.stream().filter(v -> v.getCredentialNo().equals(cardNo)).collect(Collectors.toList());
+                if(collect.isEmpty()) {
+                    changedFields0 = "游客信息发生变更:"+oldCardNo.get()+"->"+newCardNo.get();
+                    break;
+                }
+            }
+
+
 
             String changedFields1 = com.yc.ship.module.trade.utils.BeanUtils.getChangedFields(oldTradeOrderTotal, tradeOrderTotalDO);
             System.err.println("changedFields1=" + changedFields1);
 
-            shipTradeOrderCreateReqVO.setChangedFields1(changedFields1);
+            shipTradeOrderCreateReqVO.setChangedFields1(changedFields0+";"+changedFields1);
             CommonResult<TradeOrderRespDTO> result = doShipModifyOrder(loginUser, shipTradeOrderCreateReqVO);
             if (result.isError()) {
                 return CommonResult.error(result.getCode(), result.getMsg());
@@ -1868,16 +1889,16 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         });
         orderRespNewVO.setCountryDesc(String.join(",", countryDesList));
 
-        List<TradeOrderRoomModelDO> tradeOrderRoomModelDOS = tradeOrderRoomModelMapper.selectListByOrderId(tradeOrderDO.getId());
-        Map<String, Double> useNumMap = tradeOrderRoomModelDOS.stream().collect(Collectors.groupingBy(item -> item.getRoomModelId() + "_" + item.getFloor(), Collectors.summingDouble(TradeOrderRoomModelDO::getUseRoomNum)));
-        List<Long> roomModelIds = convertList(tradeOrderRoomModelDOS, TradeOrderRoomModelDO::getRoomModelId);
-        List<ResourceRoomModelDO> roomModelRespVOS = resourceRoomModelService.getList(roomModelIds);
-        Map<Long, ResourceRoomModelDO> roomModelDOMap = CollectionUtils.convertMap(roomModelRespVOS, ResourceRoomModelDO::getId);
+        List<TradeOrderRoomModelDO> tradeOrderRoomModels = tradeOrderRoomModelMapper.selectListByOrderId(tradeOrderDO.getId());
+        Map<String, Double> useNumMap = tradeOrderRoomModels.stream().collect(Collectors.groupingBy(item -> item.getRoomModelId() + "_" + item.getFloor(), Collectors.summingDouble(TradeOrderRoomModelDO::getUseRoomNum)));
+        List<Long> roomModelIds = convertList(tradeOrderRoomModels, TradeOrderRoomModelDO::getRoomModelId);
+        List<ResourceRoomModelDO> roomModelRespList = resourceRoomModelService.getList(roomModelIds);
+        Map<Long, ResourceRoomModelDO> roomModelMap = CollectionUtils.convertMap(roomModelRespList, ResourceRoomModelDO::getId);
         List<String> useRoomDesList = new ArrayList<>();
-        useNumMap.keySet().stream().forEach(key -> {
+        useNumMap.keySet().forEach(key -> {
             Long roomModelId = Long.valueOf(key.split("_")[0]);
             Integer floor = Integer.valueOf(key.split("_")[1]);
-            ResourceRoomModelDO roomModelDO = roomModelDOMap.get(roomModelId);
+            ResourceRoomModelDO roomModelDO = roomModelMap.get(roomModelId);
             if (roomModelDO != null) {
                 useRoomDesList.add(useNumMap.get(key) + roomModelDO.getShowName() + "(" + floor + "F)");
             } else {
@@ -2033,8 +2054,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
     @Override
     public CommonResult<?> orderRead(Long orderId) {
+        Long userId = getLoginUserId();
         tradeOrderMapper.update(new LambdaUpdateWrapper<TradeOrderDO>()
                 .set(TradeOrderDO::getIsRead, 1)
+                .set(TradeOrderDO::getReadUser, userId)
                 .eq(TradeOrderDO::getId, orderId));
         return CommonResult.success(orderId);
     }

+ 174 - 609
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -191,7 +191,7 @@
 
     <select id="getTradeOrderUserPage"
             resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO">
-        SELECT td.*,su.nickname auditUserName,toa.audit_time auditTime,tou.contact_name,tou.credential_no,tou.mobile,count(tdl.id) num,sum(CASE WHEN tdl.voucher_status in (1,2,3,4,6,8,9) THEN	1 ELSE 0 END) realnum,(tr.origin_amount-tr.refund_amount) feeAmount,tdl.product_name,tdl.spec_type,ifnull(tr.origin_amount-tr.refund_amount,0) realAmount
+        SELECT td.*,toa.audit_time auditTime,tou.contact_name,tou.credential_no,tou.mobile,count(tdl.id) num,sum(CASE WHEN tdl.voucher_status in (1,2,3,4,6,8,9) THEN	1 ELSE 0 END) realnum,(tr.origin_amount-tr.refund_amount) feeAmount,tdl.product_name,tdl.spec_type,ifnull(tr.origin_amount-tr.refund_amount,0) realAmount
              ,tr.refund_amount refundAmount,
              ps.product_tag productTag,ps.product_tag2 productTag2,ps.product_tag3 productTag3,ps.product_tag4 productTag4
         FROM trade_order td
@@ -200,7 +200,6 @@
         left JOIN product_spu ps on ps.id = tdl.product_id
         LEFT JOIN ota_distributor od on od.id = td.source_id
         LEFT JOIN trade_order_audit toa on toa.order_id = td.id and toa.audit_status = 1
-        left join system_users su on toa.audit_user = su.id
         LEFT JOIN (select m2.order_id,sum(m2.refund_amount) refund_amount,sum(m2.origin_amount) origin_amount from trade_refund m2  where m2.refund_status = 6 and m2.refund_method !=2 GROUP BY m2.order_id) tr on td.id = tr.order_id
         where td.deleted = 0 and tou.deleted = 0
         <if test="vo.orderStatus!=null and vo.orderStatus.size()>0">
@@ -537,444 +536,6 @@
 
     </select>
 
-    <select id="getOtcTradeOrderUserPage"
-            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO">
-        SELECT td.*,tou.contact_name,tou.credential_no,tou.mobile,count(tdl.id) num,
-        sum(CASE WHEN tdl.voucher_status in (1,2,3,4,6,8,9) THEN	1 ELSE 0 END) realnum,tdl.product_name,
-        tdl.spec_type,if(td.is_change_order = 0,ifnull(tr.origin_amount-tr.refund_amount,0),if(td.order_status>=6,td.pay_amount,0)-ifnull(tr.refund_amount,0))  realAmount,ifnull(td.plat_amount,0) platAmount,
-        if(td.is_change_order = 0,ifnull(td.pay_amount - tr.origin_amount+tr.refund_amount,td.pay_amount),tr.refund_amount)  refundAmount, SUM(IF(tv.credential_no IS NULL and tdl.voucher_status in (1,2,3,4,6,8,9) ,1,0)) notRealNum
-        <if test="vo.otcType==null or vo.otcType ==0">
-            ,(td.amount - td.pay_amount) saleAmount
-        </if>
-        <if test="vo.otcType!=null and vo.otcType ==1">
-            ,obt.discountAmount saleAmount
-        </if>
-        ,ps.product_tag productTag,ps.product_tag2 productTag2,ps.product_tag3 productTag3,ps.product_tag4 productTag4,
-        (
-        select GROUP_CONCAT(specTypeInfo)
-        from (
-        select CONCAT(tdt.spec_type,'*',count(*)) specTypeInfo
-        from
-        trade_detail tdt
-        where tdt.order_id = td.id
-        and tdt.voucher_status in (1,2,3,6,8,9)
-        GROUP BY tdt.spec_type
-        ) t
-        ) allSpecTypeInfo
-        FROM trade_order td
-        INNER JOIN trade_order_user tou on td.id = tou.order_id
-        INNER JOIN trade_detail tdl on td.id = tdl.order_id
-        INNER JOIN product_spu ps on ps.id = tdl.product_id
-        LEFT JOIN trade_visitor tv on tv.detail_id = tdl.id
-        left JOIN product_route_plan rt on rt.id = td.route_plan_id
-        LEFT JOIN (select m2.order_id,sum(m2.refund_amount) refund_amount,sum(m2.origin_amount) origin_amount from trade_refund m2  where m2.refund_status = 6 and m2.refund_method !=2 GROUP BY m2.order_id) tr on td.id = tr.order_id
-        <if test="vo.otcType!=null and vo.otcType ==1">
-            left join (select tod.order_id, sum(tod.custom) discountAmount from trade_order_bind tod where deleted=0 and type in (7,8)
-            group by tod.order_id
-            ) obt ON obt.order_id = td.id
-        </if>
-        where 1= 1
-        <if test="vo.tenantId!=null">
-            AND td.tenant_id = #{vo.tenantId}
-        </if>
-        <if test="vo.orderStatus!=null and vo.orderStatus.size()>0">
-            and  td.order_status in
-            <foreach collection="vo.orderStatus" item="item" separator=","  open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-          <if test="vo.groupNo!=null and vo.groupNo!=''">
-             AND td.group_no = #{vo.groupNo}
-          </if>
-
-        <choose>
-            <when test="vo.orderNo != null and vo.orderNo.length() == 4">
-                AND td.order_no like concat('%',#{vo.orderNo})
-            </when>
-            <when test="vo.orderNo != null and vo.orderNo != ''">
-                AND td.order_no = #{vo.orderNo}
-            </when>
-            <otherwise>
-            </otherwise>
-        </choose>
-
-        <if test="vo.externalOrderNos != null and vo.externalOrderNos != '' and vo.externalOrderNos.size()>0 ">
-            and  td.external_order_no in
-            <foreach collection="vo.externalOrderNos" item="item" separator=","  open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="vo.memberId != null and vo.memberId != ''">
-            AND td.member_id = #{vo.memberId}
-        </if>
-        <if test="vo.productTag != null and vo.productTag != ''">
-            AND ps.product_tag = #{vo.productTag}
-        </if>
-        <if test="vo.productTag2 != null and vo.productTag2 != ''">
-            AND ps.product_tag2 = #{vo.productTag2}
-        </if>
-        <if test="vo.productTag3 != null and vo.productTag3 != ''">
-            AND ps.product_tag3 = #{vo.productTag3}
-        </if>
-        <if test="vo.productTag4 != null and vo.productTag4 != ''">
-            AND ps.product_tag4 = #{vo.productTag4}
-        </if>
-        <if test="vo.storeId != null and vo.storeId != ''">
-            AND td.store_id = #{vo.storeId}
-        </if>
-        <if test="vo.storeIds!=null and vo.storeIds.size()>0">
-            and  td.store_id in
-            <foreach collection="vo.storeIds" item="item" separator=","  open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="vo.externalOrderNo != null and vo.externalOrderNo != ''">
-            AND td.external_order_no = #{vo.externalOrderNo}
-        </if>
-        <if test="vo.credentialNo != null and vo.credentialNo != ''">
-            and tv.credential_no = #{vo.credentialNo}
-        </if>
-        <if test="vo.userName != null and vo.userName != ''">
-            AND tv.name = #{vo.userName}
-        </if>
-        <choose>
-            <when test="vo.mobile != null and vo.mobile.length() == 4">
-                AND tou.mobile like concat('%',#{vo.mobile})
-            </when>
-            <when test="vo.mobile != null and vo.mobile != ''">
-                AND tou.mobile = #{vo.mobile}
-            </when>
-            <otherwise>
-            </otherwise>
-        </choose>
-        <if test="vo.contactName != null and vo.contactName != ''">
-            AND tou.contact_name = #{vo.contactName}
-        </if>
-        <if test="vo.travelDate != null and vo.travelDate != ''">
-            AND td.travel_date = #{vo.travelDate}
-        </if>
-        <if test="vo.travelDateStart != null and vo.travelDateStart != ''">
-            AND td.travel_date <![CDATA[ >= ]]> #{vo.travelDateStart}
-        </if>
-        <if test="vo.travelDateEnd != null and vo.travelDateEnd != ''">
-            AND td.travel_date <![CDATA[ <= ]]> #{vo.travelDateEnd}
-        </if>
-        <if test="vo.orderDateStart != null and vo.orderDateStart != ''">
-            AND td.create_time <![CDATA[ >= ]]> #{vo.orderDateStart}
-        </if>
-        <if test="vo.orderDateEnd != null and vo.orderDateEnd != ''">
-            AND td.create_time <![CDATA[ <= ]]> #{vo.orderDateEnd}
-        </if>
-        <if test="vo.orderDate != null and vo.orderDate != ''">
-            AND td.create_time = #{vo.orderDate}
-        </if>
-        <if test="vo.sellerId != null and vo.sellerId != ''">
-            AND td.seller_id = #{vo.sellerId}
-        </if>
-        <if test="vo.voucherCode != null and vo.voucherCode != ''">
-            AND tdl.voucher_code = #{vo.voucherCode}
-        </if>
-        <if test="vo.sellMethod != null and vo.sellMethod != ''">
-            AND td.sell_method = #{vo.sellMethod}
-        </if>
-        <if test="vo.productName != null and vo.productName != ''">
-            AND tdl.product_name like concat('%',#{vo.productName}, '%')
-        </if>
-        <if test="vo.isFullPay == 0">
-            AND td.is_full_pay = #{vo.isFullPay}
-        </if>
-        <if test="vo.isComment != null">
-            AND td.is_comment = #{vo.isComment}
-        </if>
-        <if test="vo.sourceId != null and vo.sourceId != ''">
-            AND td.source_id = #{vo.sourceId}
-        </if>
-        <if test="vo.shareName != null and vo.shareName != ''">
-            AND td.share_name like concat('%',#{vo.shareName},'%')
-        </if>
-        <if test="vo.sourceName != null and vo.sourceName != ''">
-            AND td.source_name like concat('%',#{vo.sourceName}, '%')
-        </if>
-        <if test="vo.travelStatus != null">
-            AND td.travel_status = #{vo.travelStatus}
-        </if>
-        <if test="vo.orderRefundDateStart != null and vo.orderRefundDateEnd != ''">
-            AND exists (select 1 from trade_refund tr  where tr.order_id=td.id and tr.refund_status = 6 and tr.refund_time BETWEEN #{vo.orderRefundDateStart} and #{vo.orderRefundDateEnd} )
-        </if>
-        GROUP BY td.id
-        ORDER BY td.create_time DESC
-
-    </select>
-
-
-
-    <select id="getOtcTradeOrderUserCount" resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderCountRespVO">
-        SELECT count(DISTINCT td.id) orderNum,sum(tdl.quantity_of_one) totalNum,
-        sum(if(tdl.spec_type='full' and tdl.voucher_status in (1,2,3,4,6,8,9), quantity_of_one,0)) fullNum,
-        sum(if(tdl.spec_type='half' and tdl.voucher_status in (1,2,3,4,6,8,9),quantity_of_one,0)) halfNum,
-        sum(if(tdl.spec_type='free' and tdl.voucher_status in (1,2,3,4,6,8,9),quantity_of_one,0)) freeNum,
-        sum(if(tdl.spec_type='common' and tdl.voucher_status in (1,2,3,4,6,8,9),quantity_of_one,0)) commonNum,
-        sum(if(tdl.spec_type='car_seat' and tdl.voucher_status in (1,2,3,4,6,8,9),quantity_of_one,0)) carSeatNum,
-        sum(if(tdl.spec_type='car_yd' and tdl.voucher_status in (1,2,3,4,6,8,9),quantity_of_one,0)) carYdNum,
-        sum(if(tdl.spec_type='other' and tdl.voucher_status in (1,2,3,4,6,8,9),quantity_of_one,0)) otherNum,
-        sum(if(tdl.spec_type='carrying_children' and tdl.voucher_status in (1,2,3,4,6,8,9),quantity_of_one,0)) carryingChildrenNum
-        FROM trade_order td
-        INNER JOIN trade_order_user tou on td.id = tou.order_id
-        INNER JOIN trade_detail tdl on td.id = tdl.order_id
-        INNER JOIN product_spu ps on ps.id = tdl.product_id
-        where 1= 1
-        <if test="vo.tenantId!=null">
-            AND td.tenant_id = #{vo.tenantId}
-        </if>
-        <if test="vo.orderStatus!=null and vo.orderStatus.size()>0">
-            and  td.order_status in
-            <foreach collection="vo.orderStatus" item="item" separator=","  open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="vo.groupNo!=null and vo.groupNo!=''">
-            AND td.group_no = #{vo.groupNo}
-        </if>
-
-        <choose>
-            <when test="vo.orderNo != null and vo.orderNo.length() == 4">
-                AND td.order_no like concat('%',#{vo.orderNo})
-            </when>
-            <when test="vo.orderNo != null and vo.orderNo != ''">
-                AND td.order_no = #{vo.orderNo}
-            </when>
-            <otherwise>
-            </otherwise>
-        </choose>
-
-        <if test="vo.externalOrderNos != null and vo.externalOrderNos != '' and vo.externalOrderNos.size()>0 ">
-            and  td.external_order_no in
-            <foreach collection="vo.externalOrderNos" item="item" separator=","  open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="vo.memberId != null and vo.memberId != ''">
-            AND td.member_id = #{vo.memberId}
-        </if>
-        <if test="vo.storeId != null and vo.storeId != ''">
-            AND td.store_id = #{vo.storeId}
-        </if>
-        <if test="vo.storeIds!=null and vo.storeIds.size()>0">
-            and  td.store_id in
-            <foreach collection="vo.storeIds" item="item" separator=","  open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="vo.externalOrderNo != null and vo.externalOrderNo != ''">
-            AND td.external_order_no = #{vo.externalOrderNo}
-        </if>
-        <if test="vo.productTag != null and vo.productTag != ''">
-            AND ps.product_tag = #{vo.productTag}
-        </if>
-        <if test="vo.productTag2 != null and vo.productTag2 != ''">
-            AND ps.product_tag2 = #{vo.productTag2}
-        </if>
-        <if test="vo.productTag3 != null and vo.productTag3 != ''">
-            AND ps.product_tag3 = #{vo.productTag3}
-        </if>
-        <if test="vo.productTag4 != null and vo.productTag4 != ''">
-            AND ps.product_tag4 = #{vo.productTag4}
-        </if>
-        <if test="vo.credentialNo != null and vo.credentialNo != ''">
-            AND exists (select tv.id from trade_visitor tv where tv.detail_id = tdl.id and tv.credential_no = #{vo.credentialNo})
-        </if>
-        <if test="vo.userName != null and vo.userName != ''">
-            AND exists (select tv.id from trade_visitor tv where tv.detail_id = tdl.id and tv.name = #{vo.userName})
-        </if>
-        <choose>
-            <when test="vo.mobile != null and vo.mobile.length() == 4">
-                AND tou.mobile like concat('%',#{vo.mobile})
-            </when>
-            <when test="vo.mobile != null and vo.mobile != ''">
-                AND tou.mobile = #{vo.mobile}
-            </when>
-            <otherwise>
-            </otherwise>
-        </choose>
-        <if test="vo.contactName != null and vo.contactName != ''">
-            AND tou.contact_name = #{vo.contactName}
-        </if>
-        <if test="vo.travelDate != null and vo.travelDate != ''">
-            AND td.travel_date = #{vo.travelDate}
-        </if>
-        <if test="vo.travelDateStart != null and vo.travelDateStart != ''">
-            AND td.travel_date <![CDATA[ >= ]]> #{vo.travelDateStart}
-        </if>
-        <if test="vo.travelDateEnd != null and vo.travelDateEnd != ''">
-            AND td.travel_date <![CDATA[ <= ]]> #{vo.travelDateEnd}
-        </if>
-        <if test="vo.orderDateStart != null and vo.orderDateStart != ''">
-            AND td.create_time <![CDATA[ >= ]]> #{vo.orderDateStart}
-        </if>
-        <if test="vo.orderDateEnd != null and vo.orderDateEnd != ''">
-            AND td.create_time <![CDATA[ <= ]]> #{vo.orderDateEnd}
-        </if>
-        <if test="vo.orderDate != null and vo.orderDate != ''">
-            AND td.create_time = #{vo.orderDate}
-        </if>
-        <if test="vo.sellerId != null and vo.sellerId != ''">
-            AND td.seller_id = #{vo.sellerId}
-        </if>
-        <if test="vo.voucherCode != null and vo.voucherCode != ''">
-            AND tdl.voucher_code = #{vo.voucherCode}
-        </if>
-        <if test="vo.sellMethod != null and vo.sellMethod != ''">
-            AND td.sell_method = #{vo.sellMethod}
-        </if>
-        <if test="vo.productName != null and vo.productName != ''">
-            AND tdl.product_name like concat('%',#{vo.productName}, '%')
-        </if>
-        <if test="vo.isFullPay == 0">
-            AND td.is_full_pay = #{vo.isFullPay}
-        </if>
-        <if test="vo.isComment != null">
-            AND td.is_comment = #{vo.isComment}
-        </if>
-        <if test="vo.sourceId != null and vo.sourceId != ''">
-            AND td.source_id = #{vo.sourceId}
-        </if>
-        <if test="vo.shareName != null and vo.shareName != ''">
-            AND td.share_name like concat('%',#{vo.shareName},'%')
-        </if>
-        <if test="vo.sourceName != null and vo.sourceName != ''">
-            AND td.source_name like concat('%',#{vo.sourceName}, '%')
-        </if>
-        <if test="vo.travelStatus != null">
-            AND td.travel_status = #{vo.travelStatus}
-        </if>
-        <if test="vo.orderRefundDateStart != null and vo.orderRefundDateEnd != ''">
-            AND exists (select 1 from trade_refund tr  where tr.order_id=td.id and tr.refund_status = 6 and tr.refund_time BETWEEN #{vo.orderRefundDateStart} and #{vo.orderRefundDateEnd} )
-        </if>
-    </select>
-
-    <select id="getTransOrderPage"
-            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeTranOrderRespVO">
-        SELECT td.*, oac.name transDistributorName, tou.contact_name,tou.credential_no,tou.mobile,COUNT(tdl.id) num,tdl.product_name,tdl.spec_type
-        FROM trade_order td
-        INNER JOIN trade_order_user tou on td.id = tou.order_id
-        INNER JOIN trade_detail tdl on td.id = tdl.order_id
-        inner join otc_agency_cooperate oac on oac.id = td.trans_distributor_id
-        left join trade_visitor tv on tdl.id = tv.detail_id
-        where 1= 1 AND td.trans_distributor_id is not null
-        <if test="vo.orderNo != null and vo.orderNo != ''">
-            AND td.order_no = #{vo.orderNo}
-        </if>
-        <if test="vo.memberId != null and vo.memberId != ''">
-            AND td.member_id = #{vo.memberId}
-        </if>
-        <if test="vo.credentialNo != null and vo.credentialNo != ''">
-            AND tv.credential_no = #{vo.credentialNo}
-        </if>
-        <if test="vo.mobile != null and vo.mobile != ''">
-            AND tou.mobile = #{vo.mobile}
-        </if>
-        <if test="vo.contactName != null and vo.contactName != ''">
-            AND tou.contact_name = #{vo.contactName}
-        </if>
-        <if test="vo.travelDate != null and vo.travelDate != ''">
-            AND td.travel_date = #{vo.travelDate}
-        </if>
-        <if test="vo.travelDateStart != null and vo.travelDateStart != ''">
-            AND td.travel_date <![CDATA[ >= ]]> #{vo.travelDateStart}
-        </if>
-        <if test="vo.travelDateEnd != null and vo.travelDateEnd != ''">
-            AND td.travel_date <![CDATA[ <= ]]> #{vo.travelDateEnd}
-        </if>
-        <if test="vo.orderDateStart != null and vo.orderDateStart != ''">
-            AND td.travel_date <![CDATA[ >= ]]> #{vo.orderDateStart}
-        </if>
-        <if test="vo.orderDateEnd != null and vo.orderDateEnd != ''">
-            AND td.create_time <![CDATA[ <= ]]> #{vo.orderDateEnd}
-        </if>
-        <if test="vo.orderDate != null and vo.orderDate != ''">
-            AND td.create_time = #{vo.orderDate}
-        </if>
-        <if test="vo.sellerId != null and vo.sellerId != ''">
-            AND td.seller_id = #{vo.sellerId}
-        </if>
-        <if test="vo.voucherCode != null and vo.voucherCode != ''">
-            AND tdl.voucher_code = #{vo.voucherCode}
-        </if>
-        <if test="vo.productName != null and vo.productName != ''">
-            AND tdl.product_name like concat('%',#{vo.productName}, '%')
-        </if>
-        <if test="vo.transDistributorName != null and vo.transDistributorName != ''">
-            AND oac.name like concat('%',#{vo.transDistributorName}, '%')
-        </if>
-        <if test="vo.sellMethod != null and vo.sellMethod != ''">
-            AND td.sell_method = #{vo.sellMethod}
-        </if>
-        GROUP BY td.id
-        ORDER BY td.create_time DESC
-
-    </select>
-
-    <select id="getTotalTransOrder" resultType="java.util.Map">
-        SELECT sum(pay_amount) payAmount,sum(trans_amount) transAmount from (
-        SELECT td.id,td.pay_amount,td.trans_amount
-        FROM trade_order td
-        INNER JOIN trade_order_user tou on td.id = tou.order_id
-        INNER JOIN trade_detail tdl on td.id = tdl.order_id
-        inner join otc_agency_cooperate oac on oac.id = td.trans_distributor_id
-        left join trade_visitor tv on tdl.id = tv.detail_id
-        where 1= 1 AND td.trans_distributor_id is not null
-        <if test="vo.orderNo != null and vo.orderNo != ''">
-            AND td.order_no = #{vo.orderNo}
-        </if>
-        <if test="vo.memberId != null and vo.memberId != ''">
-            AND td.member_id = #{vo.memberId}
-        </if>
-        <if test="vo.credentialNo != null and vo.credentialNo != ''">
-            AND tv.credential_no = #{vo.credentialNo}
-        </if>
-        <if test="vo.mobile != null and vo.mobile != ''">
-            AND tou.mobile = #{vo.mobile}
-        </if>
-        <if test="vo.contactName != null and vo.contactName != ''">
-            AND tou.contact_name = #{vo.contactName}
-        </if>
-        <if test="vo.travelDate != null and vo.travelDate != ''">
-            AND td.travel_date = #{vo.travelDate}
-        </if>
-        <if test="vo.travelDateStart != null and vo.travelDateStart != ''">
-            AND td.travel_date <![CDATA[ >= ]]> #{vo.travelDateStart}
-        </if>
-        <if test="vo.travelDateEnd != null and vo.travelDateEnd != ''">
-            AND td.travel_date <![CDATA[ <= ]]> #{vo.travelDateEnd}
-        </if>
-        <if test="vo.orderDateStart != null and vo.orderDateStart != ''">
-            AND td.travel_date <![CDATA[ >= ]]> #{vo.orderDateStart}
-        </if>
-        <if test="vo.orderDateEnd != null and vo.orderDateEnd != ''">
-            AND td.create_time <![CDATA[ <= ]]> #{vo.orderDateEnd}
-        </if>
-        <if test="vo.orderDate != null and vo.orderDate != ''">
-            AND td.create_time = #{vo.orderDate}
-        </if>
-        <if test="vo.sellerId != null and vo.sellerId != ''">
-            AND td.seller_id = #{vo.sellerId}
-        </if>
-        <if test="vo.voucherCode != null and vo.voucherCode != ''">
-            AND tdl.voucher_code = #{vo.voucherCode}
-        </if>
-        <if test="vo.productName != null and vo.productName != ''">
-            AND tdl.product_name like concat('%',#{vo.productName}, '%')
-        </if>
-        <if test="vo.transDistributorName != null and vo.transDistributorName != ''">
-            AND oac.name like concat('%',#{vo.transDistributorName}, '%')
-        </if>
-        <if test="vo.sellMethod != null and vo.sellMethod != ''">
-            AND td.sell_method = #{vo.sellMethod}
-        </if>
-        GROUP BY td.id
-        ) p
-
-    </select>
 
     <select id="getPaidOrderPage"
             resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO">
@@ -1018,47 +579,6 @@
         ORDER BY td.create_time DESC
     </select>
 
-    <select id="getCanBindOrder"
-            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO">
-        SELECT o.*, u.contact_name, u.credential_no, u.mobile, COUNT(d.id) num, d.product_name, d.spec_type
-        FROM trade_order o
-                 INNER JOIN trade_detail d ON d.order_id = o.id
-                 INNER JOIN trade_order_user u on o.id = u.order_id,
-             ( SELECT o.*, d.product_id
-               FROM trade_order o
-                    INNER JOIN trade_detail d ON d.order_id = o.id
-               WHERE o.id = #{vo.orderId}
-                 AND not EXISTS ( SELECT 1 FROM trade_order_bind b WHERE b.deleted = 0 AND o.id= b.bind_id)
-                 AND o.order_status > 5 AND o.deleted = 0
-               GROUP BY o.id) t
-        WHERE
-            o.order_status > 5 AND o.deleted = 0
-          AND o.is_bind IS NULL and o.id != #{vo.orderId}
-          AND DATE_FORMAT( o.travel_date, '%Y-%m-%d' ) = DATE_FORMAT( t.travel_date, '%Y-%m-%d' )
-          AND d.product_id = t.product_id
-          AND ((t.route_plan_id is NULL) or (t.route_plan_id is not NULL AND o.route_plan_id = t.route_plan_id))
-        <if test="vo.mobile != null and vo.mobile != ''">
-            AND u.mobile = #{vo.mobile}
-        </if>
-        <if test="vo.sourceId != null and vo.sourceId != ''">
-            AND o.source_id = #{vo.sourceId}
-        </if>
-        GROUP BY o.id ORDER BY o.create_time DESC
-    </select>
-
-    <select id="getBoundOrder"
-            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO">
-        SELECT o.*, u.contact_name, u.credential_no, u.mobile, COUNT(d.id) num, d.product_name, d.spec_type
-        FROM trade_order o
-        INNER JOIN trade_detail d ON d.order_id = o.id
-        INNER JOIN trade_order_user u on o.id = u.order_id
-        WHERE
-        o.order_status > 5 AND o.deleted = 0
-         AND EXISTS  ( select * from (
-        select bind_id id from trade_order_bind where order_id = #{bindOrderId} and deleted = 0 union all
-        select order_id id from trade_order_bind where bind_id = #{bindOrderId} and deleted = 0 ) m where m.id =o.id)
-        GROUP BY o.id ORDER BY o.create_time DESC
-    </select>
 
     <select id="getRefundDetailPage"
             resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO">
@@ -1221,23 +741,6 @@
     </select>
 
 
-    <select id="selectBindOrderPage"  resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO">
-        SELECT td.id,td.pay_amount,td.order_no,td.external_order_no,td.route_plan_id,td.visitor_type,td.travel_date,td.sell_method,td.source_name,td.seller_id,td.member_id,td.amount,td.order_status,td.remark,td.share_name,td.create_time,td.is_bind,td.area_manager_id,
-               tou.contact_name contactName,tou.credential_no credentialNo,tou.mobile,
-               td.store_name,pma.audit_state
-        FROM
-            trade_order td
-                INNER JOIN trade_order_user tou ON td.id = tou.order_id
-                INNER JOIN  trade_order_bind tob on tob.order_id = td.id
-                LEFT JOIN   product_marketing_audit pma on pma.order_id = td.id
-        WHERE
-            tob.type = 7 AND tob.deleted = 0 and td.order_status in (6,8)
-        <if test="vo.orderNo != null and vo.orderNo != ''">
-            AND td.order_no = #{vo.orderNo}
-        </if>
-        ORDER BY td.id
-    </select>
-
     <select id="getMarketingApplyOrderPage"  resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespVO">
         SELECT td.id,td.pay_amount,td.order_no,td.external_order_no,td.route_plan_id,td.visitor_type,td.travel_date,td.sell_method,td.source_name,td.source_id,td.seller_id,td.member_id,td.amount,td.order_status,td.remark,td.share_name,td.create_time,td.is_bind,td.area_manager_id,td.agency_group_id,
                tou.contact_name contactName,tou.credential_no credentialNo,tou.mobile,
@@ -1643,9 +1146,6 @@
     <select id="getOrderByExternalOrderNo" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
         select t1.* from trade_order t1 inner join trade_supplier_order t2 on t1.id = t2.order_id where t2.trade_no=#{tradeNo} limit 1
     </select>
-    <select id="getLastOrderByOrderNo" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
-        select t1.* from trade_order where order_no=#{orderNo} and delete=1 limit 1
-    </select>
 
     <select id="getOtcOrderByExternalOrderNo"  resultType="java.util.Map">
         select t2.* from trade_order t1 inner join trade_supplier_order t2 on t1.id = t2.order_id where t1.order_no=#{tradeNo} limit 1
@@ -2088,15 +1588,6 @@
             t1.payment_date DESC
     </select>
 
-    <select id="transCooperateList"
-            resultType="com.yc.ship.module.otc.api.agency.dto.CooperateRespDTO">
-        SELECT t1.* FROM otc_agency_cooperate t1
-            where  t1.deleted=0
-            <if test="vo.transDistributorId != null ">
-                AND t1.id = #{vo.transDistributorId}
-            </if>
-    </select>
-
     <select id="orderList" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
         SELECT
         t1.*
@@ -2128,23 +1619,6 @@
     </select>
 
 
-    <select id="countDirectOrderByOrderId" resultType="java.lang.Integer">
-        select count(o.id) total
-        from trade_supplier_order so
-        inner join trade_order o on so.supplier_order_no = o.order_no
-        where so.order_id = #{orderId} and o.is_direct = 1
-    </select>
-
-    <select id="queryRelatedOrderId" resultType="java.lang.Long">
-        SELECT td.order_id FROM trade_detail td
-            INNER JOIN trade_detail_base db ON db.supplier_voucher_code=td.voucher_code
-        WHERE db.order_id=#{orderId} GROUP BY td.order_id
-        UNION ALL
-        SELECT db.order_id FROM trade_detail_base db
-            INNER JOIN trade_detail td ON db.supplier_voucher_code=td.voucher_code
-        WHERE td.order_id=#{orderId} GROUP BY db.order_id
-    </select>
-
     <select id="queryOneByOrderNo" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
         SELECT DISTINCT o2.*
         FROM trade_order o
@@ -2200,17 +1674,6 @@
         where tod.external_origin_order_no =#{originOrderNo} and tod.order_status>=6
     </select>
 
-    <select id="queryOrderStatusError" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
-        SELECT  o.* FROM trade_order o
-        INNER JOIN (
-        SELECT d.order_id, sum(d.voucher_status = 3) checkNum, COUNT(*) totalNum
-            FROM trade_detail d
-                INNER JOIN trade_order o on o.id = d.order_id and o.order_status in (7, 13) GROUP BY d.order_id) t on
-            t.order_id = o.id
-        WHERE t.checkNum = t.totalNum
-        ORDER BY o.travel_date DESC
-    </select>
-
 
     <select id="selectChangeCountByOrderId" resultType="java.lang.Integer">
         select count(*) totalCount
@@ -2389,78 +1852,7 @@
         GROUP BY td.voucher_code
         ORDER BY td.create_time DESC
     </select>
-    <select id="getSupplierOrderPage"
-            resultType="com.yc.ship.module.trade.controller.admin.supplier.vo.SupplierOrderRespVO">
-        SELECT ts.*,tr.order_no,tt.pay_amount payAmount
-        FROM trade_supplier_order ts
-        inner join trade_order tr on ts.order_id = tr.id
-        left join trade_order tt on ts.supplier_order_no=tt.order_no
-        where 1= 1 And ts.tenant_id = #{vo.tenantId}
-        <choose>
-            <when test="vo.orderNo != null and vo.orderNo.length() == 4">
-                AND tr.order_no like concat('%',#{vo.orderNo})
-            </when>
-            <when test="vo.orderNo != null and vo.orderNo != ''">
-                AND tr.order_no = #{vo.orderNo}
-            </when>
-            <otherwise>
-            </otherwise>
-        </choose>
-        <choose>
-            <when test="vo.tradeNo != null and vo.tradeNo.length() == 4">
-                AND ts.trade_no like concat('%',#{vo.tradeNo})
-            </when>
-            <when test="vo.tradeNo != null and vo.tradeNo != ''">
-                AND ts.trade_no = #{vo.tradeNo}
-            </when>
-            <otherwise>
-            </otherwise>
-        </choose>
 
-        <choose>
-            <when test="vo.supplierOrderNo != null and vo.supplierOrderNo.length() == 4">
-                AND ts.supplier_order_no like concat('%',#{vo.supplierOrderNo})
-            </when>
-            <when test="vo.supplierOrderNo != null and vo.supplierOrderNo != ''">
-                AND ts.supplier_order_no = #{vo.supplierOrderNo}
-            </when>
-            <otherwise>
-            </otherwise>
-        </choose>
-        <if test="vo.supplierName != null and vo.supplierName != ''">
-            AND ts.supplier_name like concat('%',#{vo.supplierName},'%')
-        </if>
-        <if test="vo.orderStatus != null and vo.orderStatus != ''">
-            AND ts.order_status = #{vo.orderStatus}
-        </if>
-        <if test="vo.useDate != null and vo.useDate != ''">
-            AND ts.use_date = #{vo.useDate}
-        </if>
-        <if test="vo.sourceId != null and vo.sourceId != ''">
-            AND tr.source_id = #{vo.sourceId}
-        </if>
-        ORDER BY ts.create_time DESC
-    </select>
-    <select id="getSupplierRefundPage"
-            resultType="com.yc.ship.module.trade.controller.admin.supplier.vo.SupplierRefundRespVO">
-        SELECT ts.*,tr.order_no
-        FROM trade_supplier_refund ts
-        inner join trade_order tr on ts.order_id = tr.id
-        where 1= 1
-        <if test="vo.orderNo != null and vo.orderNo != ''">
-            AND tr.order_no = #{vo.orderNo}
-        </if>
-        <if test="vo.supplierName != null and vo.supplierName != ''">
-            AND ts.supplier_name = #{vo.supplierName}
-        </if>
-        <if test="vo.supplierOrderNo != null and vo.supplierOrderNo != ''">
-            AND ts.supplier_order_no = #{vo.supplierOrderNo}
-        </if>
-        <if test="vo.refundStatus != null and vo.refundStatus != ''">
-            AND ts.refund_status = #{vo.refundStatus}
-        </if>
-        order by ts.create_time desc
-    </select>
 
     <select id="regionStatic"  resultType="java.util.Map">
         select t4.id,t4.`name`,t6.province,t6.city,count(DISTINCT t3.id) num from trade_order t1 inner join trade_detail t2 on t1.id = t2.order_id
@@ -2503,4 +1895,177 @@
         GROUP BY t2.room_model_id, t2.floor, t2.type
         ORDER BY floor desc
     </select>
+
+    <select id="getOrderCount" resultType="java.util.Map">
+        select GROUP_CONCAT(num,'*',name) name,sum(num1) num1,sum(num2) num2,sum(num3) num3,sum(num4) num4 from (
+        SELECT  sum(CASE WHEN tv.type='adultPlus' or tv.type='adultTake' THEN 1 ELSE 0 END) num1,
+        sum(CASE WHEN tv.type='babyTake' or tv.type='babyPlus' or tv.type='babyNonTake' or tv.type='childTake' or tv.type='childPlus' or tv.type='childNonTake'  THEN 1 ELSE 0 END) num2,
+        sum(CASE WHEN tv.type='with'  THEN 1 ELSE 0 END) num3,
+        sum(CASE WHEN tv.type='leader'  THEN 1 ELSE 0 END) num4,
+        CONCAT(rrm.short_name,'(',tv.floor,'F)') name ,count(1) num
+        FROM trade_order td
+        INNER JOIN trade_order_user tou on td.id = tou.order_id
+        left JOIN trade_detail tdl on td.id = tdl.order_id and tdl.deleted = 0
+        left join trade_visitor tv on tdl.id = tv.detail_id
+        left JOIN product_spu ps on ps.id = tdl.product_id
+        LEFT JOIN ota_distributor od on od.id = td.source_id
+        left join trade_order_room_model tm on tv.room_index_id = tm.room_index_id and tm.deleted =0
+        left join resource_room_model rrm on tm.room_model_id = rrm.id
+        LEFT JOIN (select m2.order_id,sum(m2.refund_amount) refund_amount,sum(m2.origin_amount) origin_amount from trade_refund m2  where m2.refund_status = 6 and m2.refund_method !=2 GROUP BY m2.order_id) tr on td.id = tr.order_id
+        where td.deleted = 0 and tou.deleted = 0 and td.order_status >0 and tv.type is not null
+        <if test="vo.orderStatus!=null and vo.orderStatus.size()>0">
+            and  td.order_status in
+            <foreach collection="vo.orderStatus" item="item" separator=","  open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="vo.tenantId!=null">
+            AND td.tenant_id = #{vo.tenantId}
+        </if>
+        <choose>
+            <when test="vo.orderNo != null and vo.orderNo.length() == 4">
+                AND td.order_no like concat('%',#{vo.orderNo})
+            </when>
+            <when test="vo.orderNo != null and vo.orderNo != ''">
+                AND td.order_no = #{vo.orderNo}
+            </when>
+            <otherwise>
+            </otherwise>
+        </choose>
+
+        <if test="vo.externalOriginOrderNo != null and vo.externalOriginOrderNo != ''">
+            AND td.external_origin_order_no = #{vo.externalOriginOrderNo}
+        </if>
+
+        <if test="vo.memberId != null and vo.memberId != ''">
+            AND td.member_id = #{vo.memberId}
+        </if>
+        <if test="vo.voyageId != null and vo.voyageId != ''">
+            AND td.voyage_id = #{vo.voyageId}
+        </if>
+        <if test="vo.shipId != null and vo.shipId != ''">
+            AND td.ship_id = #{vo.shipId}
+        </if>
+        <if test="vo.routeId != null and vo.routeId != ''">
+            AND exists (select 1 from product_voyage top where top.id = td.voyage_id and top.route_id = #{vo.routeId})
+        </if>
+        <if test="vo.dispatchStatus != null">
+            AND td.dispatch_status = #{vo.dispatchStatus}
+        </if>
+        <if test="vo.payType != null">
+            AND exists (select 1 from trade_order_pay top where top.order_id = td.id and top.payment_type = #{vo.payType})
+        </if>
+        <if test="vo.otaCateId != null and vo.otaCateId != ''">
+            AND od.ota_category_id = #{vo.otaCateId}
+        </if>
+        <if test="vo.otaCateIds!=null and vo.otaCateIds.size()>0">
+            and od.ota_category_id in
+            <foreach collection="vo.otaCateIds" item="item" separator=","  open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="vo.otaId != null and vo.otaId != ''">
+            AND td.source_id = #{vo.otaId}
+        </if>
+        <if test="vo.storeId != null and vo.storeId != ''">
+            AND td.store_id = #{vo.storeId}
+        </if>
+        <if test="vo.productTag != null and vo.productTag != ''">
+            AND ps.product_tag = #{vo.productTag}
+        </if>
+        <if test="vo.productTag2 != null and vo.productTag2 != ''">
+            AND ps.product_tag2 = #{vo.productTag2}
+        </if>
+        <if test="vo.productTag3 != null and vo.productTag3 != ''">
+            AND ps.product_tag3 = #{vo.productTag3}
+        </if>
+        <if test="vo.productTag4 != null and vo.productTag4 != ''">
+            AND ps.product_tag4 = #{vo.productTag4}
+        </if>
+        <if test="vo.cateIds!=null and vo.cateIds.size()>0 and (vo.planIds==null or vo.planIds.size()==0)">
+            AND tdl.product_id in
+            <foreach collection="vo.cateIds" item="item" separator=","  open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        <if test="vo.externalOrderNo != null and vo.externalOrderNo != ''">
+            AND td.external_order_no = #{vo.externalOrderNo}
+        </if>
+        <if test="vo.credentialNo != null and vo.credentialNo != ''">
+            AND exists (select tv.id from trade_visitor tv where tv.detail_id = tdl.id and tv.credential_no = #{vo.credentialNo})
+        </if>
+        <if test="vo.userName != null and vo.userName != ''">
+            AND exists (select tv.id from trade_visitor tv where tv.detail_id = tdl.id and tv.name = #{vo.userName})
+        </if>
+        <choose>
+            <when test="vo.mobile != null and vo.mobile.length() == 4">
+                AND tou.mobile like concat('%',#{vo.mobile})
+            </when>
+            <when test="vo.mobile != null and vo.mobile != ''">
+                AND tou.mobile = #{vo.mobile}
+            </when>
+            <otherwise>
+            </otherwise>
+        </choose>
+        <if test="vo.contactName != null and vo.contactName != ''">
+            AND tou.contact_name = #{vo.contactName}
+        </if>
+        <if test="vo.travelDate != null and vo.travelDate != ''">
+            AND td.travel_date = #{vo.travelDate}
+        </if>
+        <if test="vo.travelDateStart != null and vo.travelDateStart != ''">
+            AND td.travel_date <![CDATA[ >= ]]> #{vo.travelDateStart}
+        </if>
+        <if test="vo.travelDateEnd != null and vo.travelDateEnd != ''">
+            AND td.travel_date <![CDATA[ <= ]]> #{vo.travelDateEnd}
+        </if>
+        <if test="vo.orderDateStart != null and vo.orderDateStart != ''">
+            AND td.create_time <![CDATA[ >= ]]> #{vo.orderDateStart}
+        </if>
+        <if test="vo.orderDateEnd != null and vo.orderDateEnd != ''">
+            AND td.create_time <![CDATA[ <= ]]> #{vo.orderDateEnd}
+        </if>
+        <if test="vo.orderDate != null and vo.orderDate != ''">
+            AND td.create_time = #{vo.orderDate}
+        </if>
+        <if test="vo.sellerId != null and vo.sellerId != ''">
+            AND td.seller_id = #{vo.sellerId}
+        </if>
+        <if test="vo.shareName != null and vo.shareName != ''">
+            AND td.share_name like concat('%',#{vo.shareName},'%')
+        </if>
+        <if test="vo.voucherCode != null and vo.voucherCode != ''">
+            AND tdl.voucher_code = #{vo.voucherCode}
+        </if>
+        <if test="vo.sellMethod != null and vo.sellMethod != ''">
+            AND td.sell_method = #{vo.sellMethod}
+        </if>
+        <if test="vo.productName != null and vo.productName != ''">
+            AND tdl.product_name like concat('%',#{vo.productName}, '%')
+        </if>
+        <if test="vo.isFullPay == 0">
+            AND td.is_full_pay = #{vo.isFullPay}
+        </if>
+        <if test="vo.isComment != null">
+            AND td.is_comment = #{vo.isComment}
+        </if>
+        <if test="vo.sourceId != null and vo.sourceId != ''">
+            AND td.source_id = #{vo.sourceId}
+        </if>
+        <if test="vo.distributorId != null and vo.distributorId != ''">
+            AND td.source_id = #{vo.distributorId}
+        </if>
+        <if test="vo.sourceName != null and vo.sourceName != ''">
+            AND td.source_name like concat('%',#{vo.sourceName}, '%')
+        </if>
+        <if test="vo.travelStatus != null">
+            AND td.travel_status = #{vo.travelStatus}
+        </if>
+        <if test="vo.orderRefundDateStart != null and vo.orderRefundDateEnd != ''">
+            AND exists (select 1 from trade_refund tr  where tr.order_id=td.id and tr.refund_status = 6 and tr.refund_time BETWEEN #{vo.orderRefundDateStart} and #{vo.orderRefundDateEnd} )
+        </if>
+        GROUP BY rrm.short_name,tv.floor
+        ) p
+    </select>
 </mapper>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 21 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderRoomModelMapper.xml