Bläddra i källkod

Merge branch 'main' of http://47.98.207.247:3000/lsq/ship-ota-server into main

luofeiyun 1 månad sedan
förälder
incheckning
28fd070a65
22 ändrade filer med 796 tillägg och 30 borttagningar
  1. 9 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  2. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderOtcCreateVO.java
  3. 124 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/OrderJzDetailController.java
  4. 51 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailPageReqVO.java
  5. 56 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailRespVO.java
  6. 41 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailSaveReqVO.java
  7. 20 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/shipSaleRule/vo/ShipSaleRuleRespVO.java
  8. 15 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/shipSaleRule/vo/ShipSaleRuleSaveReqVO.java
  9. 63 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/orderjzdetail/OrderJzDetailDO.java
  10. 21 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/shipSaleRule/ShipSaleRuleDO.java
  11. 1 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java
  12. 1 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java
  13. 41 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/orderjzdetail/OrderJzDetailMapper.java
  14. 78 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/job/OrderStausJob.java
  15. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderService.java
  16. 5 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java
  17. 60 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailService.java
  18. 155 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailServiceImpl.java
  19. 33 22
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java
  20. 7 4
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/pay/impl/TradeOrderPayServiceImpl.java
  21. 3 1
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml
  22. 3 3
      ship-server-web/src/main/resources/application-sxtest.yaml

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

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

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

@@ -58,6 +58,12 @@ public class TradeOrderOtcCreateVO {
     @Schema(description = "接站联系电话")
     private String jzLinkPhone;
 
+    @Schema(description = "分销商ID", example = "MT1231312")
+    private Long distributorId;
+
+    @Schema(description = "门店ID", example = "123")
+    private Long storeId;
+
 
     @Schema(description = "国籍数据")
     List<TradeOrderCountryReqVO> countryData;

+ 124 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/OrderJzDetailController.java

@@ -0,0 +1,124 @@
+package com.yc.ship.module.trade.controller.admin.orderjzdetail;
+
+import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
+import com.yc.ship.module.product.service.voyage.VoyageService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.annotation.security.PermitAll;
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.yc.ship.framework.common.pojo.PageParam;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.pojo.CommonResult;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+
+import static com.yc.ship.framework.common.pojo.CommonResult.success;
+
+import com.yc.ship.framework.excel.core.util.ExcelUtils;
+
+import com.yc.ship.framework.apilog.core.annotation.ApiAccessLog;
+
+import static com.yc.ship.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
+import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
+import com.yc.ship.module.trade.service.orderjzdetail.OrderJzDetailService;
+
+@Tag(name = "管理后台 - 订单接站人员名单")
+@RestController
+@RequestMapping("/trade/order-jz-detail")
+@Validated
+public class OrderJzDetailController {
+
+  @Resource
+  private OrderJzDetailService orderJzDetailService;
+
+  @Resource
+  private VoyageService voyageService;
+
+  @PostMapping("/create")
+  @Operation(summary = "创建订单接站人员名单")
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:create')")
+  public CommonResult<Long> createOrderJzDetail(@Valid @RequestBody OrderJzDetailSaveReqVO createReqVO) {
+    return success(orderJzDetailService.createOrderJzDetail(createReqVO));
+  }
+
+  @PutMapping("/update")
+  @Operation(summary = "更新订单接站人员名单")
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:update')")
+  public CommonResult<Boolean> updateOrderJzDetail(@Valid @RequestBody OrderJzDetailSaveReqVO updateReqVO) {
+    orderJzDetailService.updateOrderJzDetail(updateReqVO);
+    return success(true);
+  }
+
+  @DeleteMapping("/delete")
+  @Operation(summary = "删除订单接站人员名单")
+  @Parameter(name = "id", description = "编号", required = true)
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:delete')")
+  public CommonResult<Boolean> deleteOrderJzDetail(@RequestParam("id") Long id) {
+    orderJzDetailService.deleteOrderJzDetail(id);
+    return success(true);
+  }
+
+  @GetMapping("/get")
+  @Operation(summary = "获得订单接站人员名单")
+  @Parameter(name = "id", description = "编号", required = true, example = "1024")
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:query')")
+  public CommonResult<OrderJzDetailRespVO> getOrderJzDetail(@RequestParam("id") Long id) {
+    OrderJzDetailDO orderJzDetail = orderJzDetailService.getOrderJzDetail(id);
+    return success(BeanUtils.toBean(orderJzDetail, OrderJzDetailRespVO.class));
+  }
+
+  @GetMapping("/page")
+  @Operation(summary = "获得订单接站人员名单分页")
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:query')")
+  public CommonResult<PageResult<OrderJzDetailRespVO>> getOrderJzDetailPage(@Valid OrderJzDetailPageReqVO pageReqVO) {
+    PageResult<OrderJzDetailDO> pageResult = orderJzDetailService.getOrderJzDetailPage(pageReqVO);
+    return success(BeanUtils.toBean(pageResult, OrderJzDetailRespVO.class));
+  }
+
+  @GetMapping("/export-excel")
+  @Operation(summary = "导出订单接站人员名单 Excel")
+  @ApiAccessLog(operateType = EXPORT)
+//  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:query')")
+  public void exportOrderJzDetailExcel(@Valid OrderJzDetailPageReqVO pageReqVO,
+                                       HttpServletResponse response) throws IOException {
+    if (StringUtils.isEmpty(pageReqVO.getVoyageId())) {
+      throw new RuntimeException("航次编号不能为空");
+    }
+    VoyageDO voyageDO = voyageService.getVoyage(Long.valueOf(pageReqVO.getVoyageId()));
+    if (voyageDO == null) {
+      throw new RuntimeException("航次信息不能为空");
+    }
+
+    pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+    List<OrderJzDetailDO> list = orderJzDetailService.selectPageByVoyageId(pageReqVO.getVoyageId());
+    // 导出 Excel
+    List<OrderJzDetailRespVO> exportList = BeanUtils.toBean(list, OrderJzDetailRespVO.class);
+    exportList.forEach(vo -> {
+      vo.setVoyage(voyageDO.getName());
+    });
+    ExcelUtils.write(response, "订单接站人员名单.xls", "数据", OrderJzDetailRespVO.class,
+      BeanUtils.toBean(list, OrderJzDetailRespVO.class));
+  }
+
+
+  @PostMapping("/sign")
+  @PermitAll
+  public CommonResult<Long> createOrderJzDetail(@Valid @RequestBody List<OrderJzDetailSaveReqVO> createReqVOList) {
+    return success(orderJzDetailService.createOrderJzDetail(createReqVOList));
+  }
+}

+ 51 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailPageReqVO.java

@@ -0,0 +1,51 @@
+package com.yc.ship.module.trade.controller.admin.orderjzdetail.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.yc.ship.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 订单接站人员名单分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class OrderJzDetailPageReqVO extends PageParam {
+
+    @Schema(description = "接站单ID", example = "18565")
+    private Long jzId;
+
+    private String batchNo;
+
+    @Schema(description = "抵达时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] arriveTime;
+
+    @Schema(description = "接站地址")
+    private String address;
+
+    @Schema(description = "接站联系人", example = "李四")
+    private String name;
+
+    @Schema(description = "接站联系电话")
+    private String phone;
+
+    @Schema(description = "备注车次航班", example = "随便")
+    private String remark;
+
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+
+    /**
+     * 航次编号
+     */
+    private String voyageId;
+}

+ 56 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailRespVO.java

@@ -0,0 +1,56 @@
+package com.yc.ship.module.trade.controller.admin.orderjzdetail.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 订单接站人员名单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class OrderJzDetailRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6145")
+    private Long id;
+
+    @Schema(description = "接站单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18565")
+    private Long jzId;
+
+    @ExcelProperty("航次")
+    private String voyage;
+
+    @Schema(description = "批次编号")
+    @ExcelProperty("批次编号")
+    private String batchNo;
+
+    @Schema(description = "抵达时间")
+    @ExcelProperty("抵达时间")
+    private LocalDateTime arriveTime;
+
+    @Schema(description = "接站地址")
+    @ExcelProperty("接站地址")
+    private String address;
+
+    @Schema(description = "接站联系人", example = "李四")
+    @ExcelProperty("接站联系人")
+    private String name;
+
+    @Schema(description = "接站联系电话")
+    @ExcelProperty("接站联系电话")
+    private String phone;
+
+    @Schema(description = "备注车次航班", example = "随便")
+    @ExcelProperty("备注车次航班")
+    private String remark;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+//    @ExcelProperty("状态")
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("登记时间")
+    private LocalDateTime createTime;
+
+}

+ 41 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailSaveReqVO.java

@@ -0,0 +1,41 @@
+package com.yc.ship.module.trade.controller.admin.orderjzdetail.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 订单接站人员名单新增/修改 Request VO")
+@Data
+public class OrderJzDetailSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6145")
+    private Long id;
+
+    @Schema(description = "接站单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18565")
+    private Long jzId;
+
+    private String batchNo;
+
+    private String arriveTime;
+
+    @Schema(description = "接站地址")
+    private String address;
+
+    @Schema(description = "接站联系人", example = "李四")
+    private String name;
+
+    @Schema(description = "接站联系电话")
+    private String phone;
+
+    @Schema(description = "备注车次航班", example = "随便")
+    private String remark;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer status;
+
+    private String oid; // 订单ID
+}

+ 20 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/shipSaleRule/vo/ShipSaleRuleRespVO.java

@@ -36,6 +36,26 @@ public class ShipSaleRuleRespVO {
     @ExcelProperty("过期时间(不填默认0点,结合过期天数)")
     private Integer expireHour;
 
+    @Schema(description = "直客确定日期(开航前多少天)")
+    @ExcelProperty("直客确定日期(开航前多少天)")
+    private Integer zkqdDay;
+
+    @Schema(description = "直客确定时间(当天几点,比如:12点)")
+    @ExcelProperty("直客确定时间(当天几点,比如:12点)")
+    private Integer zkqdHour;
+
+    @Schema(description = "直客变更时间(开航前多少天内修改游客信息需要审核)")
+    @ExcelProperty("直客变更时间(开航前多少天内修改游客信息需要审核)")
+    private Integer zkbgDay;
+
+    @Schema(description = "直客过期天数(开航前多少天过期)")
+    @ExcelProperty("直客过期天数(开航前多少天过期)")
+    private Integer zkexpireDay;
+
+    @Schema(description = "直客过期时间(不填默认0点,结合过期天数)")
+    @ExcelProperty("直客过期时间(不填默认0点,结合过期天数)")
+    private Integer zkexpireHour;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;

+ 15 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/shipSaleRule/vo/ShipSaleRuleSaveReqVO.java

@@ -25,4 +25,19 @@ public class ShipSaleRuleSaveReqVO {
     @Schema(description = "过期时间(不填默认0点,结合过期天数)")
     private Integer expireHour;
 
+    @Schema(description = "确定日期(开航前多少天)")
+    private Integer zkqdDay;
+
+    @Schema(description = "确定时间(当天几点,比如:12点)")
+    private Integer zkqdHour;
+
+    @Schema(description = "变更时间(开航前多少天内修改游客信息需要审核)")
+    private Integer zkbgDay;
+
+    @Schema(description = "过期天数(开航前多少天过期)")
+    private Integer zkexpireDay;
+
+    @Schema(description = "过期时间(不填默认0点,结合过期天数)")
+    private Integer zkexpireHour;
+
 }

+ 63 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/orderjzdetail/OrderJzDetailDO.java

@@ -0,0 +1,63 @@
+package com.yc.ship.module.trade.dal.dataobject.orderjzdetail;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.yc.ship.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 订单接站人员名单 DO
+ *
+ * @author 管理员
+ */
+@TableName("trade_order_jz_detail")
+@KeySequence("trade_order_jz_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrderJzDetailDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 接站单ID
+     */
+    private Long jzId;
+
+    private String batchNo;
+
+    /**
+     * 抵达时间
+     */
+    private LocalDateTime arriveTime;
+    /**
+     * 接站地址
+     */
+    private String address;
+    /**
+     * 接站联系人
+     */
+    private String name;
+    /**
+     * 接站联系电话
+     */
+    private String phone;
+    /**
+     * 备注车次航班
+     */
+    private String remark;
+    /**
+     * 状态
+     */
+    private Integer status;
+
+}

+ 21 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/shipSaleRule/ShipSaleRuleDO.java

@@ -47,4 +47,25 @@ public class ShipSaleRuleDO extends BaseDO {
      */
     private Integer expireHour;
 
+    /**
+     * 确定日期(开航前多少天)
+     */
+    private Integer zkqdDay;
+    /**
+     * 确定时间(当天几点,比如:12点)
+     */
+    private Integer zkqdHour;
+    /**
+     * 变更时间(开航前多少天内修改游客信息需要审核)
+     */
+    private Integer zkbgDay;
+    /**
+     * 过期天数(开航前多少天过期)
+     */
+    private Integer zkexpireDay;
+    /**
+     * 过期时间(不填默认0点,结合过期天数)
+     */
+    private Integer zkexpireHour;
+
 }

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

@@ -161,6 +161,7 @@ public interface TradeDetailMapper extends BaseMapperX<TradeDetailDO> {
     TradeDetailDO selectTradeDetailByVistorId(@Param("visitorId") Long visitorId);
 
     TradeDetailBaseDO selectPlatTradeBaseDetail(@Param("voucherCode") String voucherCode);
+    TradeDetailBaseDO getTradeOrderByExpire(@Param("voucherCode") String voucherCode);
 
     List<Map<String,Object>> selectDispatchRecord(@Param("dispatchId") String dispatchId, @Param("detailId") long detailId);
 

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

@@ -94,6 +94,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     List<Long> selectBindUseMarketing(@Param("orderId") Long orderId);
 
     TradeOrderRespVO getRefundOrderInfo(Long id);
+    List<TradeOrderDO> getTradeOrderByExpire(@Param("expiretime")  String expiretime);
 
 
     IPage<RefundRecordRespVO> getPageRefundRecord(IPage<RefundRecordRespVO> page, @Param("vo") RefundRecordPageReqVO vo);

+ 41 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/orderjzdetail/OrderJzDetailMapper.java

@@ -0,0 +1,41 @@
+package com.yc.ship.module.trade.dal.mysql.orderjzdetail;
+
+import java.util.*;
+
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
+import io.swagger.v3.oas.annotations.servers.Server;
+import org.apache.ibatis.annotations.Mapper;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * 订单接站人员名单 Mapper
+ *
+ * @author 管理员
+ */
+@Mapper
+public interface OrderJzDetailMapper extends BaseMapperX<OrderJzDetailDO> {
+
+  default PageResult<OrderJzDetailDO> selectPage(OrderJzDetailPageReqVO reqVO) {
+    return selectPage(reqVO, new LambdaQueryWrapperX<OrderJzDetailDO>()
+      .eqIfPresent(OrderJzDetailDO::getJzId, reqVO.getJzId())
+      .betweenIfPresent(OrderJzDetailDO::getArriveTime, reqVO.getArriveTime())
+      .eqIfPresent(OrderJzDetailDO::getAddress, reqVO.getAddress())
+      .likeIfPresent(OrderJzDetailDO::getName, reqVO.getName())
+      .eqIfPresent(OrderJzDetailDO::getPhone, reqVO.getPhone())
+      .eqIfPresent(OrderJzDetailDO::getRemark, reqVO.getRemark())
+      .eqIfPresent(OrderJzDetailDO::getStatus, reqVO.getStatus())
+      .betweenIfPresent(OrderJzDetailDO::getCreateTime, reqVO.getCreateTime())
+      .orderByDesc(OrderJzDetailDO::getId));
+  }
+
+  @Select(("select d.* from trade_order_jz_detail d " +
+    " inner join trade_order_jz oz on d.jz_id = oz.id " +
+    " inner join trade_order o on o.id = oz.order_id " +
+    " where o.voyage_id = #{voyageId}" +
+    " order by d.arrive_time asc, d.batch_no"))
+  List<OrderJzDetailDO> selectPageByVoyageId(String voyageId);
+}

+ 78 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/job/OrderStausJob.java

@@ -0,0 +1,78 @@
+package com.yc.ship.module.trade.job;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.yc.ship.framework.quartz.core.handler.JobHandler;
+import com.yc.ship.framework.security.core.LoginUser;
+import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.framework.tenant.core.job.TenantJob;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.PayOrderReqVO;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
+import com.yc.ship.module.trade.dal.dataobject.shipSaleRule.ShipSaleRuleDO;
+import com.yc.ship.module.trade.service.order.TradeOrderService;
+import com.yc.ship.module.trade.service.otc.OtcTradeOrderService;
+import com.yc.ship.module.trade.service.shipSaleRule.ShipSaleRuleService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+@Component
+@Slf4j
+public class OrderStausJob implements JobHandler {
+    @Resource
+    private ShipSaleRuleService shipSaleRuleService;
+
+    @Resource
+    private TradeOrderService tradeOrderService;
+
+    @Resource
+    private OtcTradeOrderService otcTradeOrderService;
+
+    /**
+     * 执行订单状态相关操作-初定自动确认
+     *
+     * 当前实现中,该方法会获取一条船舶销售规则,但未使用传入的参数和获取的规则,
+     * 直接返回固定字符串"成功"。实际业务逻辑可能需要进一步完善。
+     *
+     * @param param 传入的参数(当前未使用)
+     * @return 固定返回字符串"成功"
+     */
+    @Override
+    @TenantJob
+    public String execute(String param) {
+        ShipSaleRuleDO shipSaleRuleOne = shipSaleRuleService.getShipSaleRuleOne();
+        int  qdday = shipSaleRuleOne.getQdDay();
+        int qdhour = shipSaleRuleOne.getQdHour();
+        Date n = DateUtil.offsetDay(new DateTime(), qdday);
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(n);
+        calendar.set(Calendar.HOUR_OF_DAY, qdhour);
+        Date time = calendar.getTime();
+        List<TradeOrderDO> tradeOrderByExpire = tradeOrderService.getTradeOrderByExpire(DateUtil.format(time, "yyyy-MM-dd HH:mm:ss"));
+        log.error("自动确认订单时间:{},tradeOrderByExpire={}", DateUtil.format(time, "yyyy-MM-dd HH:mm:ss"),tradeOrderByExpire.size());
+        tradeOrderByExpire.forEach(tradeOrderDO -> {
+            try {
+                LoginUser agencyUser = new LoginUser();
+                agencyUser.setStoreId(tradeOrderDO.getStoreId());
+                agencyUser.setDistributorId(Long.parseLong(tradeOrderDO.getSourceId()));
+                PayOrderReqVO payOrderReqVO = new PayOrderReqVO();
+                payOrderReqVO.setOrderId(tradeOrderDO.getId());
+                payOrderReqVO.setPayAmount(tradeOrderDO.getPayAmount());
+                payOrderReqVO.setPayType(5);
+                payOrderReqVO.setStoreId(tradeOrderDO.getStoreId());
+                payOrderReqVO.setAccountId("9999");
+                otcTradeOrderService.windowPayOrder(agencyUser, payOrderReqVO);
+                log.error("自动确认订单成功:{}", tradeOrderDO.getOrderNo());
+            }catch (Exception e){
+                log.error(tradeOrderDO.getOrderNo()+";自动确认订单失败", e);
+            }
+        });
+        return "成功";
+    }
+
+}

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

@@ -115,6 +115,9 @@ public interface TradeOrderService {
 
     TradeDetailBaseDO getTradeDetailByNo(String ticketNo);
 
+
+    List<TradeOrderDO> getTradeOrderByExpire(String expiretime);
+
     
     void autoBindRelatedOrder(TradeOrderDO tradeOrderDO);
 

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

@@ -1502,6 +1502,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         return tradeDetailMapper.selectPlatTradeBaseDetail(ticketNo);
     }
 
+    @Override
+    public List<TradeOrderDO> getTradeOrderByExpire(String expiretime) {
+        return tradeOrderMapper.getTradeOrderByExpire(expiretime);
+    }
+
 
     @Override
     public void autoBindRelatedOrder(TradeOrderDO tradeOrderDO) {

+ 60 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailService.java

@@ -0,0 +1,60 @@
+package com.yc.ship.module.trade.service.orderjzdetail;
+
+import java.util.*;
+import javax.validation.*;
+
+import com.yc.ship.framework.common.util.collection.MapUtils;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
+import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.pojo.PageParam;
+
+/**
+ * 订单接站人员名单 Service 接口
+ *
+ * @author 管理员
+ */
+public interface OrderJzDetailService {
+
+  /**
+   * 创建订单接站人员名单
+   *
+   * @param createReqVO 创建信息
+   * @return 编号
+   */
+  Long createOrderJzDetail(@Valid OrderJzDetailSaveReqVO createReqVO);
+
+  Long createOrderJzDetail(List<OrderJzDetailSaveReqVO> createReqVOList);
+
+  /**
+   * 更新订单接站人员名单
+   *
+   * @param updateReqVO 更新信息
+   */
+  void updateOrderJzDetail(@Valid OrderJzDetailSaveReqVO updateReqVO);
+
+  /**
+   * 删除订单接站人员名单
+   *
+   * @param id 编号
+   */
+  void deleteOrderJzDetail(Long id);
+
+  /**
+   * 获得订单接站人员名单
+   *
+   * @param id 编号
+   * @return 订单接站人员名单
+   */
+  OrderJzDetailDO getOrderJzDetail(Long id);
+
+  /**
+   * 获得订单接站人员名单分页
+   *
+   * @param pageReqVO 分页查询
+   * @return 订单接站人员名单分页
+   */
+  PageResult<OrderJzDetailDO> getOrderJzDetailPage(OrderJzDetailPageReqVO pageReqVO);
+
+  List<OrderJzDetailDO> selectPageByVoyageId(String voyageId);
+}

+ 155 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailServiceImpl.java

@@ -0,0 +1,155 @@
+package com.yc.ship.module.trade.service.orderjzdetail;
+
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
+import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
+import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
+import com.yc.ship.module.trade.dal.mysql.orderjz.OrderJzMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
+import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.pojo.PageParam;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+
+import com.yc.ship.module.trade.dal.mysql.orderjzdetail.OrderJzDetailMapper;
+
+import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.yc.ship.module.trade.enums.ErrorCodeConstants.*;
+
+/**
+ * 订单接站人员名单 Service 实现类
+ *
+ * @author 管理员
+ */
+@Service
+@Validated
+public class OrderJzDetailServiceImpl implements OrderJzDetailService {
+
+  @Resource
+  private TradeOrderMapper tradeOrderMapper;
+
+  @Resource
+  private OrderJzMapper orderJzMapper;
+
+  @Resource
+  private OrderJzDetailMapper orderJzDetailMapper;
+
+  @Override
+  public Long createOrderJzDetail(OrderJzDetailSaveReqVO createReqVO) {
+    // 插入
+    OrderJzDetailDO orderJzDetail = BeanUtils.toBean(createReqVO, OrderJzDetailDO.class);
+    orderJzDetailMapper.insert(orderJzDetail);
+    // 返回
+    return orderJzDetail.getId();
+  }
+
+
+  @Override
+  @TenantIgnore
+  public Long createOrderJzDetail(List<OrderJzDetailSaveReqVO> createReqVOList) {
+    if (createReqVOList == null || createReqVOList.isEmpty()) {
+      return 0L;
+    }
+    String oid = createReqVOList.get(0).getOid();
+    if (oid == null || oid.isEmpty()) {
+      throw new RuntimeException("未查询到相关订单");
+    }
+    TradeOrderDO orderDo = tradeOrderMapper.selectOne(new LambdaQueryWrapper<TradeOrderDO>().eq(TradeOrderDO::getId, oid));
+    if (orderDo == null) {
+      throw new RuntimeException("未查询到相关订单");
+    }
+    // 根据订单编号查询jz编号
+    OrderJzDO orderJzDO = orderJzMapper.selectOne(new LambdaQueryWrapper<OrderJzDO>().eq(OrderJzDO::getOrderId, oid));
+    if (orderJzDO == null) { // 没有接站信息,就保存一条新数据
+      orderJzDO = new OrderJzDO();
+      orderJzDO.setId(IdUtil.getSnowflake(0, 0).nextId());
+      orderJzDO.setIsJz(1);
+      orderJzDO.setJzAddress("");
+      orderJzDO.setJzLinkName("");
+      orderJzDO.setJzLinkPhone("");
+      orderJzDO.setOrderId(orderDo.getId());
+      orderJzMapper.insert(orderJzDO);
+    }
+
+    long count = 0;
+    String batchNo = IdUtil.getSnowflake(0, 0).nextIdStr(); //生成批次号,只是为了区分是同一批人
+    // 先删除上一次手机号录入的数据
+    for (OrderJzDetailSaveReqVO orderJzDetailSaveReqVO : createReqVOList) {
+      orderJzDetailSaveReqVO.setJzId(orderJzDO.getId());
+      deleteDetailList(orderJzDetailSaveReqVO.getJzId(), orderJzDetailSaveReqVO.getPhone());
+    }
+    for (OrderJzDetailSaveReqVO orderJzDetailSaveReqVO : createReqVOList) {
+      orderJzDetailSaveReqVO.setBatchNo(batchNo);
+      createOrderJzDetail(orderJzDetailSaveReqVO);
+      count++;
+    }
+    return count;
+  }
+
+  private void deleteDetailList(Long jzId, String phone) {
+    LambdaQueryWrapper<OrderJzDetailDO> w1 = new LambdaQueryWrapper<>();
+    w1.eq(OrderJzDetailDO::getJzId, jzId);
+    w1.eq(OrderJzDetailDO::getPhone, phone);
+    List<OrderJzDetailDO> detailList = orderJzDetailMapper.selectList(w1);
+    if (detailList == null || detailList.isEmpty()) {
+      return;
+    }
+    for (OrderJzDetailDO orderJzDetailDO : detailList) {
+      // 删除同批次的
+      LambdaQueryWrapper<OrderJzDetailDO> w2 = new LambdaQueryWrapper<>();
+      w2.eq(OrderJzDetailDO::getBatchNo, orderJzDetailDO.getBatchNo());
+      orderJzDetailMapper.delete(w2);
+    }
+  }
+
+
+  @Override
+  public void updateOrderJzDetail(OrderJzDetailSaveReqVO updateReqVO) {
+    // 校验存在
+    validateOrderJzDetailExists(updateReqVO.getId());
+    // 更新
+    OrderJzDetailDO updateObj = BeanUtils.toBean(updateReqVO, OrderJzDetailDO.class);
+    orderJzDetailMapper.updateById(updateObj);
+  }
+
+  @Override
+  public void deleteOrderJzDetail(Long id) {
+    // 校验存在
+    validateOrderJzDetailExists(id);
+    // 删除
+    orderJzDetailMapper.deleteById(id);
+  }
+
+  private void validateOrderJzDetailExists(Long id) {
+    if (orderJzDetailMapper.selectById(id) == null) {
+      throw exception(500,"不存在");
+    }
+  }
+
+  @Override
+  public OrderJzDetailDO getOrderJzDetail(Long id) {
+    return orderJzDetailMapper.selectById(id);
+  }
+
+  @Override
+  public PageResult<OrderJzDetailDO> getOrderJzDetailPage(OrderJzDetailPageReqVO pageReqVO) {
+    return orderJzDetailMapper.selectPage(pageReqVO);
+  }
+
+  @Override
+  public List<OrderJzDetailDO> selectPageByVoyageId(String voyageId) {
+    return orderJzDetailMapper.selectPageByVoyageId(voyageId);
+  }
+}

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

@@ -303,8 +303,12 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     }
 
     private void initPayParams(LoginUser loginUser, PayOrderReqVO payOrderReqVO){
-        payOrderReqVO.setAccountId(loginUser.getDistributorId().toString());
-        payOrderReqVO.setAccountType(PayAccountTypeEnum.OTC.getType());
+        if(loginUser.getDistributorId()==null){
+            payOrderReqVO.setAccountType(PayAccountTypeEnum.OTC.getType());
+        }else {
+            payOrderReqVO.setAccountId(loginUser.getDistributorId().toString());
+            payOrderReqVO.setAccountType(PayAccountTypeEnum.OTC.getType());
+        }
     }
 
 
@@ -2192,25 +2196,28 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public CommonResult<?> createOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
-        Long distributorId = loginUser.getDistributorId();
-        Long storeId = loginUser.getStoreId();
+        Long distributorId = createVO.getDistributorId()!=null ? createVO.getDistributorId() :loginUser.getDistributorId();
+        Long storeId = createVO.getStoreId()!=null ? createVO.getStoreId() : loginUser.getStoreId();
         //获取当前分销商信息
         if(distributorId==null) {
             return CommonResult.error(ORDER_OTC_FAIL);
         }
-        if(storeId==null) {
-            return CommonResult.error(ORDER_STORE_FAIL);
-        }
+//        if(storeId==null) {
+//            return CommonResult.error(ORDER_STORE_FAIL);
+//        }
         //获取当前分销商信息
         DistributorDO distributorDO = distributorMapper.selectById(distributorId);
         if(distributorDO==null) {
             return CommonResult.error(ORDER_OTC_NONE);
         }
         //获取当前门店
-        StoreInfoRespDTO storeInfo = storeApi.getStoreInfo(storeId);
-        if(storeInfo==null) {
-            return CommonResult.error(ORDER_STORE_NONE);
+        StoreInfoRespDTO storeInfo = null;
+        if(storeId!=null){
+            storeInfo = storeApi.getStoreInfo(storeId);
         }
+//        if(storeInfo==null) {
+//            return CommonResult.error(ORDER_STORE_NONE);
+//        }
         VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId());
         String date = DateUtils.format(new Date(),"yyyyMMddmmss");
         String orderNo = distributorDO.getCode()+"-"+voyage.getCode()+"-"+date;
@@ -2239,8 +2246,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
         orderProperty.setSourceId(distributorDO.getId()+"");
         orderProperty.setSourceName(distributorDO.getName()+"");
-        orderProperty.setStoreId(storeInfo.getId());
-        orderProperty.setStoreName(storeInfo.getName()+"");
+        if(storeInfo!=null) {
+            orderProperty.setStoreId(storeInfo.getId());
+            orderProperty.setStoreName(storeInfo.getName() + "");
+        }
         orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
 
         shipTradeOrderCreateReqVO.setOrderProperty(orderProperty);
@@ -2401,24 +2410,24 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public CommonResult<?> motifyOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
-        Long distributorId = loginUser.getDistributorId();
-        Long storeId = loginUser.getStoreId();
+        Long distributorId = createVO.getDistributorId()!=null ? createVO.getDistributorId() :loginUser.getDistributorId();
+        Long storeId = createVO.getStoreId()!=null ? createVO.getStoreId() : loginUser.getStoreId();
         //获取当前分销商信息
         if(distributorId==null) {
             return CommonResult.error(ORDER_OTC_FAIL);
         }
-        if(storeId==null) {
-            return CommonResult.error(ORDER_STORE_FAIL);
-        }
+//        if(storeId==null) {
+//            return CommonResult.error(ORDER_STORE_FAIL);
+//        }
         //获取当前分销商信息
         DistributorDO distributorDO = distributorMapper.selectById(distributorId);
         if(distributorDO==null) {
             return CommonResult.error(ORDER_OTC_NONE);
         }
         //获取当前门店
-        StoreInfoRespDTO storeInfo = storeApi.getStoreInfo(storeId);
-        if(storeInfo==null) {
-            return CommonResult.error(ORDER_STORE_NONE);
+        StoreInfoRespDTO storeInfo = null;
+        if(storeId!=null) {
+            storeInfo = storeApi.getStoreInfo(storeId);
         }
         Long orderId = createVO.getOrderId();
         TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(orderId);
@@ -2452,8 +2461,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
         orderProperty.setSourceId(distributorDO.getId()+"");
         orderProperty.setSourceName(distributorDO.getName()+"");
-        orderProperty.setStoreId(storeInfo.getId());
-        orderProperty.setStoreName(storeInfo.getName()+"");
+        if(storeInfo!=null) {
+            orderProperty.setStoreId(storeInfo.getId());
+            orderProperty.setStoreName(storeInfo.getName() + "");
+        }
         orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
 
         shipTradeOrderCreateReqVO.setOrderProperty(orderProperty);

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

@@ -121,6 +121,9 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
                     if(tradeOrder == null) {
                         Asserts.isTrue(false,"订单不存在");
                     }
+                    if(payOrderReqVO.getAccountId() == null && tradeOrder.getSourceId() != null) {
+                        payOrderReqVO.setAccountId(tradeOrder.getSourceId());
+                    }
                     if(ObjectUtil.equal(tradeOrder.getPayStatus(), PaymentStatusEnum.PAID.getStatus())){
                         //重复支付
                         return doRePayOrder(tradeOrder);
@@ -429,7 +432,7 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
         BigDecimal hadPayAmount = tradeOrderRepositoryService.getHadPayAmount(orderId);
 
         if(ObjectUtil.equal(tradeOrderDO.getOrderStatus(),TradeOrderStatusEnum.CANCELED.getStatus()) ||
-                NumberUtil.isGreater(hadPayAmount,tradeOrderDO.getPayAmount())){
+                hadPayAmount.compareTo(tradeOrderDO.getPayAmount())<0){
             //如果此时订单已经被系统取消,则应自动退款。 如果支付金额大于订单金额也自动退款
             log.error("当前订单已不能支付,自动退款,订单{},支付单{},状态{},金额{}",orderId,tradeOrderPayDO.getId()
                     ,tradeOrderDO.getOrderStatus(),hadPayAmount);
@@ -439,12 +442,12 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
         }
 
         Asserts.isTrue(ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(),TradeOrderStatusEnum.UNPAID.getStatus()
-                ,TradeOrderStatusEnum.PAYING.getStatus()),"{}当前状态{}不能被修改为已支付",orderId,tradeOrderDO.getOrderStatus());
+                ,TradeOrderStatusEnum.PAYING.getStatus(),TradeOrderStatusEnum.YD.getStatus()),"{}当前状态{}不能被修改为已支付",orderId,tradeOrderDO.getOrderStatus());
 
 
         //如果是改签订单只需要支付差额
         boolean isChangeOrderPay = tradeOrderDO.getIsChangeOrder()!=null && tradeOrderDO.getIsChangeOrder() == ORDER_CHANGE_TYPE_NEW;
-        if(ObjectUtil.equals(hadPayAmount,tradeOrderDO.getPayAmount()) || isChangeOrderPay){
+        if( hadPayAmount.compareTo(tradeOrderDO.getPayAmount())>=0|| isChangeOrderPay){
             //订单变更为已支付
             updateOrderPaid(tradeOrderDO,tradeOrderPayDO);
             //向供应商出票
@@ -515,7 +518,7 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
 
     private void validate(TradeOrderDO tradeOrder,PayOrderReqVO payOrderReqVO){
 
-        Asserts.isTrue(ObjectUtils.equalsAny(tradeOrder.getOrderStatus(),TradeOrderStatusEnum.UNPAID.getStatus()
+        Asserts.isTrue(ObjectUtils.equalsAny(tradeOrder.getOrderStatus(),TradeOrderStatusEnum.UNPAID.getStatus(),TradeOrderStatusEnum.YD.getStatus()
                 ,TradeOrderStatusEnum.PAYING.getStatus()),"当前状态无法支付{}",tradeOrder.getOrderStatus());
         if(ObjectUtil.equal(tradeOrder.getSellMethod(),SellMethodEnum.OTC_MOVE_ORDER.getType()) && ObjectUtil.notEqual(tradeOrder.getIsChangeOrder(),ORDER_CHANGE_TYPE_NEW)){
             //如果旅行社搬单,必须一次性支付

+ 3 - 1
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -1405,7 +1405,9 @@
         </if>
 
     </select>
-
+    <select id="getTradeOrderByExpire"  resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
+        select * from trade_order where order_status =14 and travel_date <![CDATA[ <= ]]> #{expiretime}
+    </select>
 
     <select id="getPageRefundRecord"
             resultType="com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRecordRespVO">

+ 3 - 3
ship-server-web/src/main/resources/application-sxtest.yaml

@@ -7,7 +7,7 @@ spring:
     # noinspection SpringBootApplicationYaml
     exclude:
       - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
-      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
+#      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
       - de.codecentric.boot.admin.server.config.AdminServerAutoConfiguration # 禁用 Spring Boot Admin 的 Server 的自动配置
       - de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration # 禁用 Spring Boot Admin 的 Server UI 的自动配置
       - de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置
@@ -49,12 +49,12 @@ spring:
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship_test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
           username: root
           password: W1ses0ft@zshl
         slave: # 模拟从库,可根据自己需要修改
           lazy: true # 开启懒加载,保证启动速度
-          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
+          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship_test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
           username: root
           password: W1ses0ft@zshl