瀏覽代碼

代码优化

lishiqiang 2 天之前
父節點
當前提交
06e12ae9bd

+ 23 - 0
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/api/contract/dto/Complaint.java

@@ -0,0 +1,23 @@
+package com.yc.ship.module.trade.api.contract.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "RPC 服务 - Contract 创建合同 Request DTO")
+@Data
+public class Complaint {
+    @Schema(description = "省")
+    private String complaintProvince;
+    @Schema(description = "市")
+    private String complaintCity;
+    @Schema(description = "政务服务便民热线区号")
+    private String complaintAreaCode;
+
+    @Schema(description = "电子邮箱")
+    private String complaintEMail;
+
+    @Schema(description = "地址")
+    private String complaintAddress;
+
+
+}

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

@@ -266,4 +266,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     List<Long> findOrderIdsByCondition(IPage<TradeOrderRespVO> page, @Param("vo")TradeOrderPageReqVO pageReqVO);
 
     List<TradeOrderRespVO> findOrderDetailByIds(@Param("ids")List<Long> orderIds);
+
+    @TenantIgnore
+    List<TradeOrderDO> getCanContractOrder();
 }

+ 56 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/job/ConTractApplyJob.java

@@ -0,0 +1,56 @@
+package com.yc.ship.module.trade.job;
+
+import com.yc.ship.framework.quartz.core.handler.JobHandler;
+import com.yc.ship.framework.tenant.core.util.TenantUtils;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
+import com.yc.ship.module.trade.service.insurance.InsuranceService;
+import com.yc.ship.module.trade.service.order.AdminTradeOrderService;
+import com.yc.ship.module.trade.service.order.TradeOrderRepositoryService;
+import com.yc.ship.module.trade.service.order.TradeOrderService;
+import com.yc.ship.module.trade.service.order.TradeVisitorService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 合同定时任务
+ * 1. 查询需要电子合同的订单,只有确认状态并且开航前一天才可购买
+ */
+@Component
+@Slf4j
+public class ConTractApplyJob implements JobHandler {
+
+
+    @Resource
+    private TradeOrderService tradeOrderService;
+
+    @Resource
+    private TradeVisitorService tradeVisitorService;
+
+    @Resource
+    private AdminTradeOrderService adminTradeOrderService;
+
+    /**
+     * 执行定时任务
+     * 定时电子合同签订
+     */
+    @Override
+    public String execute(String param) {
+        log.info("开始执行电子合同定时任务");
+        TenantUtils.execute(1L, () -> {
+            List<TradeOrderDO> orderList = tradeOrderService.getCanContractOrder();
+            orderList.forEach(orderDO -> {
+                log.info("开始执行电子合同定时任务,订单Id{}", orderDO.getId());
+                try {
+                    adminTradeOrderService.applyContract(orderDO);
+                }catch (Exception e) {
+                    log.error("电子合同定时任务异常,订单id{}", orderDO.getId(), e);
+                }
+            });
+        });
+        log.info("结束执行电子合同定时定时任务");
+        return "success";
+    }
+}

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

@@ -107,6 +107,7 @@ public interface TradeOrderService {
      * @return
      */
     List<Long> getCanBuyInsuranceOrder();
+    List<TradeOrderDO> getCanContractOrder();
 
     TradeOrderDO getByOrderNo(String orderNo);
 

+ 3 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/ContractHandler.java

@@ -38,7 +38,8 @@ public class ContractHandler implements TradeOrderHandler{
     @Override
     public void afterProcessSuccess(TradeOrderDO tradeOrderDO) {
         try {
-            adminTradeOrderService.applyContract(tradeOrderDO);
+            //下单不签 定时任务执行
+//            adminTradeOrderService.applyContract(tradeOrderDO);
         }catch (Exception e){
             log.error("签合同异常",e);
         }
@@ -57,7 +58,7 @@ public class ContractHandler implements TradeOrderHandler{
             //先取消
             contractApi.cancelContractByOrder(tradeOrderDO.getId());
             //重签合同
-            adminTradeOrderService.applyContract(tradeOrderDO);
+//            adminTradeOrderService.applyContract(tradeOrderDO);
         }catch (Exception e){
             log.error("签合同异常",e);
         }

+ 3 - 15
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/AdminTradeOrderServiceImpl.java

@@ -301,20 +301,7 @@ public class AdminTradeOrderServiceImpl implements AdminTradeOrderService {
 
     @Override
     public void applyContract(TradeOrderDO tradeOrderDO) {
-        //目前合同配置是在组合产品上
-        List<Map<String, Object>> contractProductList = tradeOrderRepositoryService.getContractProductFromOrder(tradeOrderDO.getId());
-        if (CollUtil.isEmpty(contractProductList)) {
-            CommonResult.error(ORDER_CONTRACT_PRODUCT_NO_CONFIG);
-            return;
-        }
-        //一个订单只处理一个合同
-        Map<String, Object> contractProduct = contractProductList.get(0);
-        List<TradeVisitorBO> visitorDOList = tradeOrderRepositoryService.getContractVisitor(tradeOrderDO.getId(), MapUtil.getLong(contractProduct, "product_id"));
-        if (CollUtil.isEmpty(visitorDOList)) {
-            log.info("当前产品合同无出行人信息{}", MapUtil.getLong(contractProduct, "product_id"));
-            CommonResult.error(ORDER_CONTRACT_NO_PEOPLE);
-            return;
-        }
+        List<TradeVisitorBO> visitorDOList = tradeOrderRepositoryService.getContractVisitor(tradeOrderDO.getId(), null);
         List<TradeDetailDO> tradeDetailDOList = tradeOrderRepositoryService.queryDetailByOrderId(tradeOrderDO.getId());
         ProductSpuRespDTO productSpu = tradeDetailMapper.getProductSpu(tradeDetailDOList.get(0).getProductId());
         TradeVisitorBO holder = visitorDOList.get(0);
@@ -327,7 +314,8 @@ public class AdminTradeOrderServiceImpl implements AdminTradeOrderService {
         reqDTO.setRouteName(tradeDetailDOList.get(0).getProductName());
         reqDTO.setOperatorMobile(tradeOrderUserDO.getMobile());
         reqDTO.setOrderAmount(tradeOrderDO.getPayAmount());
-        reqDTO.setTemplateId(MapUtil.getStr(contractProduct, "contract_id"));
+        //模板编号 根据实际调整
+        reqDTO.setTemplateId("D00001");
         reqDTO.setTravelerName(tradeOrderUserDO.getContactName());
         reqDTO.setOperatorName(tradeOrderUserDO.getContactName());
         if (StringUtils.isNotBlank(tradeOrderUserDO.getCredentialNo())) {

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

@@ -1512,6 +1512,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         return tradeOrderMapper.selectCanBuyInsuranceOrder();
     }
 
+    @Override
+    public List<TradeOrderDO> getCanContractOrder() {
+        return tradeOrderMapper.getCanContractOrder();
+    }
+
     @Override
     public TradeOrderDO getByOrderNo(String orderNo) {
         return tradeOrderMapper.selectByOrderNo(orderNo);

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -2889,5 +2889,10 @@
         where t1.deleted=0 and t2.deleted=0 and t3.deleted =0
         and t3.extend_order_no is null and DATE_FORMAT(t1.travel_date, '%Y-%m-%d') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL (1) DAY), '%Y-%m-%d')
     </select>
+
+
+    <select id="getCanContractOrder" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
+        SELECT  * FROM trade_order WHERE is_contract is null and travel_date BETWEEN CONCAT(DATE_ADD(CURDATE(),INTERVAL 1 DAY),' 00:00:00') and CONCAT(DATE_ADD(CURDATE(),INTERVAL 2 DAY), ' 23:59:59')
+    </select>
 </mapper>
 

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

@@ -63,13 +63,11 @@
 
     <select id="selectContractVisitor"
             resultType="com.yc.ship.module.trade.service.order.bo.TradeVisitorBO">
-
-        select tv.*,td.use_date
+        select distinct tv.*,td.use_date
         from trade_detail td
-        inner join trade_visitor tv on tv.detail_id = td.id
+        inner join trade_visitor tv on tv.id = td.visitor_id
         <where>
             td.order_id =#{orderId} and td.voucher_status not in (4,5) and td.voucher_status>=1
-            and td.product_id=#{productId}
         </where>
     </select>