From c8d8d2b62f6d6fe7359d26bdd28ae13df69b1439 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 08 九月 2025 16:41:48 +0800
Subject: [PATCH] 新增加跨城支付

---
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java                             |   23 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java               |   39 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java        |   45 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java                     |   19 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dispatch.java                                       |   52 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SystemPriceCity.java                                |   90 +
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java            |   53 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java          |   72 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefund.java              |   15 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderCrossCityService.java                       |    2 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java  |   43 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobileRequest.java      |   46 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetStaffNodeRequest.java           |   23 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SystemPriceCityMapper.xml                     |    5 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java               |   63 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfo.java                     |   35 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java                            |  368 ++++
 DispatchQYTTravel/guns-admin/lib/javabase64-1.3.1.jar                                                                                  |    0 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyPwdRequest.java              |   25 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCancelRequest.java       |   19 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java           |   53 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNode.java                 |   31 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SendSmsRequest.java                |   33 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java               |   64 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java                   |   33 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyEnterpriseInfoRequest.java   |   75 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterprise.java              |   46 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java                         |   35 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java                |   53 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SystemPriceCityMapper.java                            |   11 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java                           |  819 +++++++++
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java       |  118 +
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java                      |   27 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderRefundNoticeRequest.java      |   49 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java                   |   31 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemPriceCityService.java                      |   22 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java     |   19 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java            |   27 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/AESUtils.java                            |  155 +
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java                        |  234 ++
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/DeleteStafNodeRequest.java         |   23 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java               |   66 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java                                   |    9 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java         |   23 
 DispatchQYTTravel/guns-admin/lib/openApiClient-1.0.0.jar                                                                               |    0 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java  |   39 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefundRequest.java       |   42 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java                             |  129 +
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java          |  111 +
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EnterpriseInfo.java                |  259 +++
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CheckEnterExist.java               |   40 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemPriceCityServiceImpl.java              |   36 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java            |   27 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java        |   35 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java              |   39 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RefundInfoRequest.java             |   19 
 DispatchQYTTravel/guns-admin/pom.xml                                                                                                   |   20 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderCrossCity.java                                 |  258 +++
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNodeRequest.java          |   63 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java                       |   31 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobile.java             |   26 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java              |   19 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java                   |   42 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ResetPwdRequest.java               |   27 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java              |   62 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java                                         |   16 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SpringContextsUtil.java                              |   37 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java                   |  203 ++
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java |   47 
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java                      |  316 +++
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java                 |   91 +
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java                  |   31 
 72 files changed, 5,130 insertions(+), 28 deletions(-)

diff --git a/DispatchQYTTravel/guns-admin/lib/javabase64-1.3.1.jar b/DispatchQYTTravel/guns-admin/lib/javabase64-1.3.1.jar
new file mode 100644
index 0000000..47d0553
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/lib/javabase64-1.3.1.jar
Binary files differ
diff --git a/DispatchQYTTravel/guns-admin/lib/openApiClient-1.0.0.jar b/DispatchQYTTravel/guns-admin/lib/openApiClient-1.0.0.jar
new file mode 100644
index 0000000..753661b
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/lib/openApiClient-1.0.0.jar
Binary files differ
diff --git a/DispatchQYTTravel/guns-admin/pom.xml b/DispatchQYTTravel/guns-admin/pom.xml
index b03a69b..02bead4 100644
--- a/DispatchQYTTravel/guns-admin/pom.xml
+++ b/DispatchQYTTravel/guns-admin/pom.xml
@@ -200,6 +200,26 @@
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
+        <!--中台sdk-->
+        <dependency>
+            <groupId>com.zhongtai</groupId>
+            <artifactId>zhongtai-sdk</artifactId>
+            <version>1.0.0</version>
+            <scope>system</scope>
+            <systemPath>${pom.basedir}/lib/openApiClient-1.0.0.jar</systemPath>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>it.sauronsoftware</groupId>
+            <artifactId>base64</artifactId>
+            <version>1.3.1</version>
+            <scope>system</scope>
+            <systemPath>${pom.basedir}/lib/javabase64-1.3.1.jar</systemPath>
+        </dependency>
     </dependencies>
 
 
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
index bc8d980..cdbcc1e 100644
--- a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -213,13 +213,17 @@
             @ApiImplicitParam(value = "订单类型(1=专车,2=跨城)", name = "orderType", required = true, dataType = "int"),
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public ResultUtil cancelOrder(Integer orderId, Integer orderType){
+    public ResultUtil cancelOrder(Integer orderId, Integer orderType, HttpServletRequest request){
         try {
+            Integer uid = dispatchService.getUserIdFormRedis(request);
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
             if(orderType == 1){//专车
                 return orderPrivateCarService.cancelOrder(orderId);
             }
             if(orderType == 2){//跨城
-                return orderCrossCityService.cancelOrder(orderId);
+                return orderCrossCityService.cancelOrder(orderId, uid);
             }
             return ResultUtil.success();
         }catch (Exception e){
@@ -237,8 +241,12 @@
             @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城)", name = "orderType", required = true, dataType = "int"),
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public ResultUtil cancelOrder1(Integer orderId, Integer orderType){
+    public ResultUtil cancelOrder1(Integer orderId, Integer orderType, HttpServletRequest request){
         try {
+            Integer uid = dispatchService.getUserIdFormRedis(request);
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
             if(orderType == 1){//专车
                 return orderPrivateCarService.cancelOrder(orderId);
             }
@@ -246,7 +254,7 @@
                 return orderTaxiService.cancelOrder(orderId);
             }
             if(orderType == 3){//跨城
-                return orderCrossCityService.cancelOrder(orderId);
+                return orderCrossCityService.cancelOrder(orderId, uid);
             }
             return ResultUtil.success();
         }catch (Exception e){
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SystemPriceCityMapper.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SystemPriceCityMapper.java
new file mode 100644
index 0000000..f4f4d7a
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SystemPriceCityMapper.java
@@ -0,0 +1,11 @@
+package com.stylefeng.guns.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.stylefeng.guns.modular.system.model.SystemPriceCity;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/26 9:24
+ */
+public interface SystemPriceCityMapper extends BaseMapper<SystemPriceCity> {
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SystemPriceCityMapper.xml b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SystemPriceCityMapper.xml
new file mode 100644
index 0000000..5fbb1c7
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SystemPriceCityMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.stylefeng.guns.modular.system.dao.SystemPriceCityMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dispatch.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dispatch.java
index 2d972fe..b3de36c 100644
--- a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dispatch.java
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dispatch.java
@@ -69,6 +69,26 @@
      */
     @TableField("pushOrder")
     private Integer pushOrder;
+    /**
+     * 中台员工ID
+     */
+    @TableField("empId")
+    private Long empId;
+    /**
+     * 中台员工所属企业ID
+     */
+    @TableField("enterId")
+    private Long enterId;
+    /**
+     * 中台员工所属企业编号
+     */
+    @TableField("entercode")
+    private String entercode;
+    /**
+     * 中台新增状态(0=否,1=是)
+     */
+    @TableField("empnew")
+    private Integer empnew;
 
     public Integer getId() {
         return id;
@@ -158,6 +178,38 @@
         this.pushOrder = pushOrder;
     }
 
+    public Long getEmpId() {
+        return empId;
+    }
+
+    public void setEmpId(Long empId) {
+        this.empId = empId;
+    }
+
+    public Long getEnterId() {
+        return enterId;
+    }
+
+    public void setEnterId(Long enterId) {
+        this.enterId = enterId;
+    }
+
+    public String getEntercode() {
+        return entercode;
+    }
+
+    public void setEntercode(String entercode) {
+        this.entercode = entercode;
+    }
+
+    public Integer getEmpnew() {
+        return empnew;
+    }
+
+    public void setEmpnew(Integer empnew) {
+        this.empnew = empnew;
+    }
+
     @Override
     public String toString() {
         return "Dispatch{" +
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderCrossCity.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderCrossCity.java
index 18a6686..3418a12 100644
--- a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderCrossCity.java
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderCrossCity.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.annotations.TableName;
 import com.baomidou.mybatisplus.enums.IdType;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -323,6 +324,79 @@
      */
     @TableField("bindId")
     private String bindId;
+
+    /**
+     * 是否异常订单 1否 2是
+     */
+    @TableField("abnormal")
+    private Integer abnormal;
+
+
+    /**
+     * 推广订单 1否 2是
+     */
+    @TableField("promotion")
+    private Integer promotion;
+
+
+    /**
+     * 乘客反馈情况
+     */
+    @TableField("abnormalIntro")
+    private String abnormalIntro;
+
+    /**
+     * 乘客反馈图片
+     */
+    @TableField("abnormalImg")
+    private String abnormalImg;
+
+    private Integer promotionDriverId;
+
+    private BigDecimal promotionMoney;
+
+    private String splitAllocation;
+
+    private Integer responsibilityType;
+
+    private Long promotionActivityId;
+    private String promotionUser;
+
+    private String promotionPhone;
+    /**
+     * 中台行程id
+     */
+    private String travelId;
+    /**
+     * 中台是否已创建订单(0=否,1=是)
+     */
+    private Integer isCreated;
+    /**
+     * 是否是追缴单(0=否,1=是)
+     */
+    private Integer recoveryOrder;
+    /**
+     * 是否生成追缴单(0=否,1=是)
+     */
+    private Integer isGenerateRecoveryOrder;
+    /**
+     * 原始订单id
+     */
+    private Integer oldOrderId;
+
+    private Integer abnormalStatus;
+
+    private String abnormalRemark;
+
+    private BigDecimal responsibilityMoney;
+
+    private String voice;
+
+    private Date voiceTime;
+
+    private Date recoveryOrderCreateDate;
+
+    private Date payTime;
 
     public Integer getId() {
         return id;
@@ -812,6 +886,190 @@
         this.oldState = oldState;
     }
 
+    public Integer getAbnormal() {
+        return abnormal;
+    }
+
+    public void setAbnormal(Integer abnormal) {
+        this.abnormal = abnormal;
+    }
+
+    public Integer getPromotion() {
+        return promotion;
+    }
+
+    public void setPromotion(Integer promotion) {
+        this.promotion = promotion;
+    }
+
+    public String getAbnormalIntro() {
+        return abnormalIntro;
+    }
+
+    public void setAbnormalIntro(String abnormalIntro) {
+        this.abnormalIntro = abnormalIntro;
+    }
+
+    public String getAbnormalImg() {
+        return abnormalImg;
+    }
+
+    public void setAbnormalImg(String abnormalImg) {
+        this.abnormalImg = abnormalImg;
+    }
+
+    public Integer getPromotionDriverId() {
+        return promotionDriverId;
+    }
+
+    public void setPromotionDriverId(Integer promotionDriverId) {
+        this.promotionDriverId = promotionDriverId;
+    }
+
+    public BigDecimal getPromotionMoney() {
+        return promotionMoney;
+    }
+
+    public void setPromotionMoney(BigDecimal promotionMoney) {
+        this.promotionMoney = promotionMoney;
+    }
+
+    public String getSplitAllocation() {
+        return splitAllocation;
+    }
+
+    public void setSplitAllocation(String splitAllocation) {
+        this.splitAllocation = splitAllocation;
+    }
+
+    public Integer getResponsibilityType() {
+        return responsibilityType;
+    }
+
+    public void setResponsibilityType(Integer responsibilityType) {
+        this.responsibilityType = responsibilityType;
+    }
+
+    public Long getPromotionActivityId() {
+        return promotionActivityId;
+    }
+
+    public void setPromotionActivityId(Long promotionActivityId) {
+        this.promotionActivityId = promotionActivityId;
+    }
+
+    public String getPromotionUser() {
+        return promotionUser;
+    }
+
+    public void setPromotionUser(String promotionUser) {
+        this.promotionUser = promotionUser;
+    }
+
+    public String getPromotionPhone() {
+        return promotionPhone;
+    }
+
+    public void setPromotionPhone(String promotionPhone) {
+        this.promotionPhone = promotionPhone;
+    }
+
+    public String getTravelId() {
+        return travelId;
+    }
+
+    public void setTravelId(String travelId) {
+        this.travelId = travelId;
+    }
+
+    public Integer getIsCreated() {
+        return isCreated;
+    }
+
+    public void setIsCreated(Integer isCreated) {
+        this.isCreated = isCreated;
+    }
+
+    public Integer getRecoveryOrder() {
+        return recoveryOrder;
+    }
+
+    public void setRecoveryOrder(Integer recoveryOrder) {
+        this.recoveryOrder = recoveryOrder;
+    }
+
+    public Integer getIsGenerateRecoveryOrder() {
+        return isGenerateRecoveryOrder;
+    }
+
+    public void setIsGenerateRecoveryOrder(Integer isGenerateRecoveryOrder) {
+        this.isGenerateRecoveryOrder = isGenerateRecoveryOrder;
+    }
+
+    public Integer getOldOrderId() {
+        return oldOrderId;
+    }
+
+    public void setOldOrderId(Integer oldOrderId) {
+        this.oldOrderId = oldOrderId;
+    }
+
+    public Integer getAbnormalStatus() {
+        return abnormalStatus;
+    }
+
+    public void setAbnormalStatus(Integer abnormalStatus) {
+        this.abnormalStatus = abnormalStatus;
+    }
+
+    public String getAbnormalRemark() {
+        return abnormalRemark;
+    }
+
+    public void setAbnormalRemark(String abnormalRemark) {
+        this.abnormalRemark = abnormalRemark;
+    }
+
+    public BigDecimal getResponsibilityMoney() {
+        return responsibilityMoney;
+    }
+
+    public void setResponsibilityMoney(BigDecimal responsibilityMoney) {
+        this.responsibilityMoney = responsibilityMoney;
+    }
+
+    public String getVoice() {
+        return voice;
+    }
+
+    public void setVoice(String voice) {
+        this.voice = voice;
+    }
+
+    public Date getVoiceTime() {
+        return voiceTime;
+    }
+
+    public void setVoiceTime(Date voiceTime) {
+        this.voiceTime = voiceTime;
+    }
+
+    public Date getRecoveryOrderCreateDate() {
+        return recoveryOrderCreateDate;
+    }
+
+    public void setRecoveryOrderCreateDate(Date recoveryOrderCreateDate) {
+        this.recoveryOrderCreateDate = recoveryOrderCreateDate;
+    }
+
+    public Date getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(Date payTime) {
+        this.payTime = payTime;
+    }
+
     @Override
     public String toString() {
         return "OrderCrossCity{" +
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SystemPriceCity.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SystemPriceCity.java
new file mode 100644
index 0000000..28471eb
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SystemPriceCity.java
@@ -0,0 +1,90 @@
+package com.stylefeng.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/26 9:16
+ */
+@TableName("t_system_price_city")
+public class SystemPriceCity extends BaseBean {
+	/**
+	 * 省编号
+	 */
+	@TableField("areaCode")
+	private String areaCode;
+	/**
+	 * 省名称
+	 */
+	@TableField("areaName")
+	private String areaName;
+	/**
+	 * 市编号
+	 */
+	@TableField("cityCode")
+	private String cityCode;
+	/**
+	 * 市名称
+	 */
+	@TableField("cityName")
+	private String cityName;
+	/**
+	 * 区县编号
+	 */
+	@TableField("provinceCode")
+	private String provinceCode;
+	/**
+	 * 区县名称
+	 */
+	@TableField("provinceName")
+	private String provinceName;
+
+	public String getAreaCode() {
+		return areaCode;
+	}
+
+	public void setAreaCode(String areaCode) {
+		this.areaCode = areaCode;
+	}
+
+	public String getAreaName() {
+		return areaName;
+	}
+
+	public void setAreaName(String areaName) {
+		this.areaName = areaName;
+	}
+
+	public String getCityCode() {
+		return cityCode;
+	}
+
+	public void setCityCode(String cityCode) {
+		this.cityCode = cityCode;
+	}
+
+	public String getCityName() {
+		return cityName;
+	}
+
+	public void setCityName(String cityName) {
+		this.cityName = cityName;
+	}
+
+	public String getProvinceCode() {
+		return provinceCode;
+	}
+
+	public void setProvinceCode(String provinceCode) {
+		this.provinceCode = provinceCode;
+	}
+
+	public String getProvinceName() {
+		return provinceName;
+	}
+
+	public void setProvinceName(String provinceName) {
+		this.provinceName = provinceName;
+	}
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderCrossCityService.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderCrossCityService.java
index 044e097..d625854 100644
--- a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderCrossCityService.java
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderCrossCityService.java
@@ -38,7 +38,7 @@
      * @return
      * @throws Exception
      */
-    ResultUtil cancelOrder(Integer orderId) throws Exception;
+    ResultUtil cancelOrder(Integer orderId, Integer uid) throws Exception;
 
 
 
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemPriceCityService.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemPriceCityService.java
new file mode 100644
index 0000000..213b937
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemPriceCityService.java
@@ -0,0 +1,22 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.stylefeng.guns.modular.system.model.SystemPriceCity;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/26 9:24
+ */
+public interface ISystemPriceCityService extends IService<SystemPriceCity> {
+	
+	
+	/**
+	 * 查询匹配的数据
+	 * @param provinceCode
+	 * @param cityCode
+	 * @param districtCode
+	 * @return
+	 */
+	SystemPriceCity queryOne(String provinceCode, String cityCode, String districtCode);
+	
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java
index 0559021..3bccfe7 100644
--- a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java
@@ -10,6 +10,11 @@
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.OrderRefundNoticeRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.RefundInfoRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.TradeOrderRefund;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.TradeOrderRefundRequest;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.stylefeng.guns.modular.system.warpper.OrderCrossCityWarpper;
 import org.springframework.beans.BeanUtils;
@@ -154,7 +159,7 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil cancelOrder(Integer orderId) throws Exception {
+    public ResultUtil cancelOrder(Integer orderId, Integer uid) throws Exception {
         OrderCrossCity orderCrossCity = this.selectById(orderId);
         if(orderCrossCity.getState() == 10 || orderCrossCity.getState() == 12){
             return ResultUtil.error("不允许重复取消");
@@ -193,7 +198,10 @@
                 driver.setState(2);
                 driverService.updateById(driver);
             }
-
+            //未支付,调取消订单
+            if(null == orderCrossCity.getPayType() && ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){
+                OrderUtil.tradeOrderCancel(orderCrossCity.getTravelId());
+            }
             //已支付的情况下进行退款操作
             if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){
                 if(orderCrossCity.getPayType() == 3){//余额支付
@@ -214,9 +222,36 @@
                     }
 
                     if(query.getPayType() == 1){//微信
-                        Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), orderId + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
-                        if(!"SUCCESS".equals(map.get("return_code"))){
-                            return ResultUtil.error(map.get("return_msg"));
+                        //中台订单退款操作
+                        if(ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){
+                            Dispatch dispatch = dispatchService.selectById(uid);
+                            TradeOrderRefundRequest request = new TradeOrderRefundRequest();
+                            request.setPartnerPayId(orderCrossCity.getTravelId());
+                            request.setPayId(query.getCode());
+                            request.setRefundTotalFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + "");
+                            request.setRemark("调度取消订单退款");
+                            request.setRefundType("RF");
+
+                            RefundInfoRequest refundInfo = new RefundInfoRequest();
+                            refundInfo.setPayItemId(orderCrossCity.getTravelId());
+                            refundInfo.setPayId(query.getCode());
+                            refundInfo.setTradeFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + "");
+                            request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{
+                                add(refundInfo);
+                            }});
+                            TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request);
+                            //退款通知
+                            OrderRefundNoticeRequest request1 = new OrderRefundNoticeRequest();
+                            request1.setOrderId(orderCrossCity.getTravelId());
+                            request1.setRefundPayNum(tradeOrderRefund.getRefundId());
+                            request1.setRefundType("5");
+                            request1.setApplyRefundCharge(new BigDecimal(orderCrossCity.getPayMoney()));
+                            request1.setActualRefundCharge(new BigDecimal(orderCrossCity.getPayMoney()));
+                            request1.setRefundAccount(dispatch.getEnterId().toString());
+                            request1.setRemark("调度取消订单退款");
+                            OrderUtil.orderRefundNotice(request1);
+                            //添加交易明细
+                            transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, orderId);
                         }
                     }else{//支付宝
                         Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
@@ -226,24 +261,6 @@
                         //添加交易明细
                         transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, orderId);
                     }
-                }
-
-                //添加负的收入明细
-                List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", orderId).eq("orderType", 3));
-                for(Income income : incomes){
-                    if(income.getUserType() == 2){//处理司机的收入
-                        Driver driver = driverService.selectById(income.getObjectId());
-                        driver.setBalance(driver.getBalance() - income.getMoney());
-                        driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
-                        driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
-                        driverService.updateById(driver);
-                    }
-                    Income income1 = new Income();
-                    BeanUtils.copyProperties(income, income1);
-                    income1.setMoney(income.getMoney() * -1);
-                    income1.setId(null);
-                    income1.setInsertTime(new Date());
-                    incomeService.insert(income1);
                 }
             }
         }
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemPriceCityServiceImpl.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemPriceCityServiceImpl.java
new file mode 100644
index 0000000..be8b967
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemPriceCityServiceImpl.java
@@ -0,0 +1,36 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.modular.system.dao.SystemPriceCityMapper;
+import com.stylefeng.guns.modular.system.model.SystemPriceCity;
+import com.stylefeng.guns.modular.system.service.ISystemPriceCityService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/26 9:25
+ */
+@Service
+public class SystemPriceCityServiceImpl extends ServiceImpl<SystemPriceCityMapper, SystemPriceCity> implements ISystemPriceCityService {
+	
+	
+	/**
+	 * 查询匹配数据
+	 * @param provinceCode
+	 * @param cityCode
+	 * @param districtCode
+	 * @return
+	 */
+	@Override
+	public SystemPriceCity queryOne(String provinceCode, String cityCode, String districtCode) {
+		SystemPriceCity systemPriceCity = this.selectOne(new EntityWrapper<SystemPriceCity>().eq("areaCode", provinceCode).eq("cityCode", cityCode).eq("provinceCode", districtCode));
+		if(null == systemPriceCity){
+			systemPriceCity = this.selectOne(new EntityWrapper<SystemPriceCity>().eq("areaCode", provinceCode).eq("cityCode", cityCode));
+			if(null == systemPriceCity){
+				systemPriceCity = this.selectOne(new EntityWrapper<SystemPriceCity>().eq("areaCode", provinceCode));
+			}
+		}
+		return systemPriceCity;
+	}}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SpringContextsUtil.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SpringContextsUtil.java
new file mode 100644
index 0000000..fc674da
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SpringContextsUtil.java
@@ -0,0 +1,37 @@
+package com.stylefeng.guns.modular.system.util;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringContextsUtil implements ApplicationContextAware{
+
+	private static ApplicationContext applicationContext;
+	 
+	@Override	
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {		
+		if (SpringContextsUtil.applicationContext == null) {			
+			SpringContextsUtil.applicationContext = applicationContext;		
+		}	
+	} 	
+	// 获取applicationContext	
+	public static ApplicationContext getApplicationContext() {		
+		return applicationContext;	
+	} 	
+	// 通过name获取 Bean.	
+	public static Object getBean(String name) {		
+		return getApplicationContext().getBean(name);	
+	} 	
+	// 通过class获取Bean.	
+	public static <T> T getBean(Class<T> clazz) {		
+		return getApplicationContext().getBean(clazz);	
+	} 	
+	// 通过name,以及Clazz返回指定的Bean	
+	public static <T> T getBean(String name, Class<T> clazz) {	
+		System.out.println(getApplicationContext().getBean(name, clazz));
+		return getApplicationContext().getBean(name, clazz);	
+	}
+    
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java
new file mode 100644
index 0000000..5a2f93b
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java
@@ -0,0 +1,35 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+import org.springframework.data.mongodb.core.geo.GeoJsonPolygon;
+import org.springframework.data.mongodb.core.index.GeoSpatialIndexType;
+import org.springframework.data.mongodb.core.index.GeoSpatialIndexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.io.Serializable;
+
+/**
+ * 地理围栏-多边形
+ * @author zhibing.pu
+ * @date 2023/4/29 23:53
+ */
+@Data
+@Document(collection = "geo_fencing")
+public class GeoFencingPolygon implements Serializable {
+    private static final long serialVersionUID = 4508868382007529971L;
+
+    private String id;
+    /**
+     * 站点id
+     */
+    private Integer siteId;
+    /**
+     * 站点名称
+     */
+    private String name;
+    /**
+     * 多边形经纬度
+     */
+    @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE)
+    private GeoJsonPolygon geoJsonPolygon;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java
new file mode 100644
index 0000000..bb04b82
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java
@@ -0,0 +1,9 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+
+@Data
+public class GeoJson {
+    private String type;
+    private Double[] coordinates;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java
new file mode 100644
index 0000000..a7f14dc
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java
@@ -0,0 +1,23 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+
+@Data
+public class LocationQuery {
+    /**
+     * 当前经纬度[xxx,xxx]
+     **/
+    private Double[] coordinates;
+    /**
+     * 距离,如:200,500,1,3,5,10,20
+     **/
+    private Double distance;
+    /**
+     * 距离单位,如:m,km
+     **/
+    private String unit;
+    /**
+     * 位置类型:1-景点,2-加油站,3-酒店
+     **/
+    private Integer type;
+}
\ No newline at end of file
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/AESUtils.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/AESUtils.java
new file mode 100644
index 0000000..0acac07
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/AESUtils.java
@@ -0,0 +1,155 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong;
+
+import org.apache.commons.codec.binary.Base64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+
+public class AESUtils {
+
+	private static Logger logger = LoggerFactory.getLogger(AESUtils.class);
+	private static String ALG = "AES";
+	private static String CHARSET = "UTF-8";
+	private static String KEY1 = "lur8apa4zu484pvj";
+
+	public AESUtils() {
+	}
+
+	private static byte[] encrypt(byte[] content, String password, String iv) {
+		try {
+			SecretKeySpec key = new SecretKeySpec(password.getBytes(CHARSET), ALG);
+			Cipher cipher = Cipher.getInstance(ALG);
+			cipher.init(1, key);
+			return cipher.doFinal(content);
+		} catch (NoSuchAlgorithmException var5) {
+			var5.printStackTrace();
+		} catch (NoSuchPaddingException var6) {
+			var6.printStackTrace();
+		} catch (InvalidKeyException var7) {
+			var7.printStackTrace();
+		} catch (UnsupportedEncodingException var8) {
+			var8.printStackTrace();
+		} catch (IllegalBlockSizeException var9) {
+			var9.printStackTrace();
+		} catch (BadPaddingException var10) {
+			var10.printStackTrace();
+		}
+
+		return null;
+	}
+
+	private static byte[] decrypt(byte[] content, String password, String iv) {
+		try {
+			SecretKeySpec key = new SecretKeySpec(password.getBytes(CHARSET), ALG);
+			Cipher cipher = Cipher.getInstance(ALG);
+			cipher.init(2, key);
+			return cipher.doFinal(content);
+		} catch (NoSuchAlgorithmException var5) {
+			var5.printStackTrace();
+		} catch (NoSuchPaddingException var6) {
+			var6.printStackTrace();
+		} catch (InvalidKeyException var7) {
+			var7.printStackTrace();
+		} catch (IllegalBlockSizeException var8) {
+			var8.printStackTrace();
+		} catch (BadPaddingException var9) {
+			var9.printStackTrace();
+		} catch (UnsupportedEncodingException var10) {
+			var10.printStackTrace();
+		}
+
+		return null;
+	}
+
+	private static String parseByte2HexStr(byte[] buf) {
+		StringBuffer sb = new StringBuffer();
+
+		for(int i = 0; i < buf.length; ++i) {
+			String hex = Integer.toHexString(buf[i] & 255);
+			if (hex.length() == 1) {
+				hex = '0' + hex;
+			}
+
+			sb.append(hex.toUpperCase());
+		}
+
+		return sb.toString();
+	}
+
+	private static byte[] parseHexStr2Byte(String hexStr) {
+		if (hexStr.length() < 1) {
+			return null;
+		} else {
+			byte[] result = new byte[hexStr.length() / 2];
+
+			for(int i = 0; i < hexStr.length() / 2; ++i) {
+				int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
+				int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
+				result[i] = (byte)(high * 16 + low);
+			}
+
+			return result;
+		}
+	}
+
+	public static String decryptHex(String content) {
+		return decryptHex(content, KEY1);
+	}
+
+	public static String decryptHex(String content, String password) {
+		try {
+			return new String(decrypt(parseHexStr2Byte(content), password, ""), CHARSET);
+		} catch (Exception var3) {
+			return "";
+		}
+	}
+
+	public static String decryptBase64(String content) {
+		try {
+			return decryptBase64(content, KEY1);
+		} catch (Exception var2) {
+			return "";
+		}
+	}
+
+	public static String decryptBase64(String content, String password) {
+		try {
+			return new String(decrypt(Base64.decodeBase64(content), password, ""), CHARSET);
+		} catch (Exception var3) {
+			return "";
+		}
+	}
+
+	public static String encryptHex(String content) {
+		return encryptHex(content, KEY1);
+	}
+
+	public static String encryptHex(String content, String password) {
+		try {
+			return parseByte2HexStr(encrypt(content.getBytes(CHARSET), password, ""));
+		} catch (Exception var3) {
+			return "";
+		}
+	}
+
+	public static String encryptBase64(String content) {
+		return encryptBase64(content, KEY1);
+	}
+
+	public static String encryptBase64(String content, String password) {
+		try {
+			return Base64.encodeBase64String(encrypt(content.getBytes(CHARSET), password, ""));
+		} catch (Exception var3) {
+			logger.error("", var3);
+			return "";
+		}
+	}
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java
new file mode 100644
index 0000000..e01832f
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java
@@ -0,0 +1,234 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.open.common.util.OpenApiClient;
+import com.open.common.util.SystemParameterNames;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.modular.system.util.SpringContextsUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 企业员工工具类
+ *
+ * @author zhibing.pu
+ * @Date 2025/6/6 16:17
+ */
+@Slf4j
+public class EmployeeUtil {
+	
+	private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();
+	
+	public static void main(String[] args) {
+		SaveStaffNodeRequest request = new SaveStaffNodeRequest();
+		request.setMobile("15828353127");
+		request.setEntercode("981100006005951");
+		request.setEmpName("蒲");
+		request.setEmpNickname("蒲");
+		request.setLoginNo("15828353125");
+		request.setEmpSex("男");
+		request.setMphone("15828353125");
+		request.setEmail("15828353125@qyt.com");
+		request.setDeptId(0);
+		request.setPositionId(1);
+		request.setSuperLevel(0);
+		request.setHideMobile(0);
+		ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request);
+		System.out.println(resultUtil.getData());
+	}
+	
+	
+	/**
+	 * 企业增加员工
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static ResultUtil<SaveStaffNode> saveStaffNode(SaveStaffNodeRequest request) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/saveStaffNode";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【企业增加员工】请求地址:" + url);
+		log.info("【企业增加员工】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【企业增加员工】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【企业增加员工】请求失败:" + result);
+			String retMsg = jsonObject.getString("retMsg");
+			retMsg = retMsg.substring(retMsg.indexOf("{"));
+			jsonObject = JSON.parseObject(retMsg);
+			return ResultUtil.error("【企业增加员工】请求失败:" + jsonObject.getString("msg"));
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【企业增加员工】失败:" + object.toJSONString());
+			return ResultUtil.error("【企业增加员工】失败:" + object.getString("desc"));
+		}
+		SaveStaffNode saveStaffNode = object.getObject("data", SaveStaffNode.class);
+		return ResultUtil.success(saveStaffNode);
+	}
+	
+	
+	/**
+	 * 企业修改员工信息
+	 * @param request
+	 * @return
+	 */
+	public static Boolean editStaffNode(EditStaffNodeRequest request){
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/editStaffNode";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【企业修改员工信息】请求地址:" + url);
+		log.info("【企业修改员工信息】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【企业修改员工信息】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【企业修改员工信息】请求失败:" + result);
+			throw new RuntimeException("【企业修改员工信息】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【企业修改员工信息】失败:" + object.toJSONString());
+			throw new RuntimeException("【企业修改员工信息】失败:" + object.toJSONString());
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * 企业删除人员
+	 * @param request
+	 * @return
+	 */
+	public static Boolean ecrmDeleteStafNode(DeleteStafNodeRequest request){
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/ecrmDeleteStafNode";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		String content = "";//业务参数
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【企业删除人员】请求地址:" + url);
+		log.info("【企业删除人员】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【企业删除人员】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【企业删除人员】请求失败:" + result);
+			throw new RuntimeException("【企业删除人员】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【企业删除人员】失败:" + object.toJSONString());
+			throw new RuntimeException("【企业删除人员】失败:" + object.toJSONString());
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * 根据员工ID获取人员信息
+	 * @param request
+	 * @return
+	 */
+	public static StaffNodeInfo getStaffNode(GetStaffNodeRequest request){
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getStaffNode";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【根据员工ID获取人员信息】请求地址:" + url);
+		log.info("【根据员工ID获取人员信息】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【根据员工ID获取人员信息】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据员工ID获取人员信息】请求失败:" + result);
+			return null;
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【根据员工ID获取人员信息】失败:" + object.toJSONString());
+			return null;
+		}
+		StaffNodeInfo staffNodeInfo = object.getObject("data", StaffNodeInfo.class);
+		return staffNodeInfo;
+	}
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java
new file mode 100644
index 0000000..520d248
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java
@@ -0,0 +1,316 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.open.common.util.OpenApiClient;
+import com.open.common.util.SystemParameterNames;
+import com.stylefeng.guns.modular.system.util.SpringContextsUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 企业工具类
+ *
+ * @author zhibing.pu
+ * @Date 2025/6/6 17:06
+ */
+@Slf4j
+public class EnterpriseUtil {
+	
+	private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();
+	
+	
+	public static void main(String[] args) {
+//		CheckEnterExist checkEnterNameExist = checkEnterNameExist("黔南云码通数字产业运营有限公司");
+//		System.err.println(checkEnterNameExist);
+		
+		CreateEnterpriseRequest request = new CreateEnterpriseRequest();
+		request.setName("成都喜望科技有限公司");
+		request.setNickName("成都喜望");
+		request.setIndustry_code("123456");
+		request.setMobile("15828353127");
+		CreateEnterprise enterprise = EnterpriseUtil.createEnterprise(request);
+		System.out.println(enterprise);
+		
+	}
+	
+	/**
+	 * 根据社会信用代码判断企业是否已存在
+	 *
+	 * @param uscc
+	 * @return
+	 */
+	public static CheckEnterExist checkEnterExistByEnterIdCardNo(String uscc) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/check_enter_exist_by_enterIdCardNo";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> map = new HashMap<>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		map.put(SystemParameterNames.getAppKey(), appKey);
+		map.put(SystemParameterNames.getMessage_id(), messageId);
+		map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		map.put("content", "{\"uscc\":\"" + uscc + "\"}");
+		log.info("【根据社会信用代码判断企业是否已存在】请求地址:" + url);
+		log.info("【根据社会信用代码判断企业是否已存在】请求参数:" + JSON.toJSONString(map));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, map);
+		log.info("【根据社会信用代码判断企业是否已存在】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据社会信用代码判断企业是否已存在】请求失败:" + result);
+			return null;
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【根据社会信用代码判断企业是否已存在】失败:" + object.toJSONString());
+			return null;
+		}
+		return jsonObject.getObject("object", CheckEnterExist.class);
+	}
+	
+	
+	/**
+	 * 根据企业名称判断企业是否已存在
+	 *
+	 * @param enterName
+	 * @return
+	 */
+	public static CheckEnterExist checkEnterNameExist(String enterName) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/checkEnterNameExist";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> map = new HashMap<>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		map.put(SystemParameterNames.getAppKey(), appKey);
+		map.put(SystemParameterNames.getMessage_id(), messageId);
+		map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		map.put("content", "{\"enterName\":\"" + enterName + "\"}");
+		log.info("【根据企业名称判断企业是否已存在】请求地址:" + url);
+		log.info("【根据企业名称判断企业是否已存在】请求参数:" + JSON.toJSONString(map));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, map);
+		log.info("【根据企业名称判断企业是否已存在】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据企业名称判断企业是否已存在】请求失败:" + result);
+			return null;
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【根据企业名称判断企业是否已存在】失败:" + object.toJSONString());
+			return null;
+		}
+		return jsonObject.getObject("object", CheckEnterExist.class);
+	}
+	
+	
+	/**
+	 * 查询企业详情
+	 *
+	 * @param enter_code 企业编号
+	 * @return
+	 */
+	public static EnterpriseInfo getEnterpriseDetail(String enter_code) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getEnterpriseDetail";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> map = new HashMap<>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		map.put(SystemParameterNames.getAppKey(), appKey);
+		map.put(SystemParameterNames.getMessage_id(), messageId);
+		map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		map.put("content", "{\"enter_code\":\"" + enter_code + "\"}");
+		log.info("【查询企业详情】请求地址:" + url);
+		log.info("【查询企业详情】请求参数:" + JSON.toJSONString(map));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, map);
+		log.info("【查询企业详情】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【查询企业详情】请求失败:" + result);
+			return null;
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【查询企业详情】失败:" + object.toJSONString());
+			return null;
+		}
+		EnterpriseInfo enterpriseInfo = jsonObject.getObject("object", EnterpriseInfo.class);
+		return enterpriseInfo;
+	}
+	
+	
+	/**
+	 * 修改企业基本信息
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static Boolean modifyEnterpriseInfo(ModifyEnterpriseInfoRequest request) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/modifyEnterpriseInfo";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> map = new HashMap<>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		map.put(SystemParameterNames.getAppKey(), appKey);
+		map.put(SystemParameterNames.getMessage_id(), messageId);
+		map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		map.put("content", new Gson().toJson(request));
+		log.info("【修改企业基本信息】请求地址:" + url);
+		log.info("【修改企业基本信息】请求参数:" + JSON.toJSONString(map));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, map);
+		log.info("【修改企业基本信息】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String status = jsonObject.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【修改企业基本信息】请求失败:" + result);
+			throw new RuntimeException("【修改企业基本信息】请求失败:" + result);
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * 创建企业
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static CreateEnterprise createEnterprise(CreateEnterpriseRequest request) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/createEnterprise";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> map = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		map.put(SystemParameterNames.getAppKey(), appKey);
+		map.put(SystemParameterNames.getMessage_id(), messageId);
+		map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		map.put("content", new Gson().toJson(request));
+		
+		log.info("【创建企业】请求地址:" + url);
+		log.info("【创建企业】请求参数:" + JSON.toJSONString(map));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, map);
+		log.info("【创建企业】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【创建企业】请求失败:" + result);
+			throw new RuntimeException("【创建企业】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【创建企业】请求失败:" + object.toJSONString());
+			throw new RuntimeException("【创建企业】请求失败:" + object.toJSONString());
+		}
+		return object.getObject("data", CreateEnterprise.class);
+	}
+	
+	
+	/**
+	 * 删除企业信息
+	 *
+	 * @param enterNum 企业编号
+	 * @param operator 管理员手机号码
+	 * @return
+	 */
+	public static boolean delEnterprise(String enterNum, String operator) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/delCompany";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> map = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		map.put(SystemParameterNames.getAppKey(), appKey);
+		map.put(SystemParameterNames.getMessage_id(), messageId);
+		map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		map.put("content", "{\"enterNum\":\"" + enterNum + "\",\"operator\":\"" + operator + "\"}");
+		
+		log.info("【删除企业信息】请求地址:" + url);
+		log.info("【删除企业信息】请求参数:" + JSON.toJSONString(map));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, map);
+		log.info("【删除企业信息】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【删除企业信息】请求失败:" + result);
+			throw new RuntimeException("【删除企业信息】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【删除企业信息】请求失败:" + object.toJSONString());
+			throw new RuntimeException("【删除企业信息】请求失败:" + object.toJSONString());
+		}
+		return true;
+	}
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
new file mode 100644
index 0000000..04270a9
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
@@ -0,0 +1,819 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.open.common.util.OpenApiClient;
+import com.open.common.util.SystemParameterNames;
+import com.stylefeng.guns.modular.system.util.SpringContextsUtil;
+import com.stylefeng.guns.modular.system.util.UUIDUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
+import lombok.extern.slf4j.Slf4j;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 9:34
+ */
+@Slf4j
+public class OrderUtil {
+	
+	private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();
+	
+	
+	public static void main(String[] args) {
+		//创建行程
+//		CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
+//		request.setScene("TRAFFIC");
+//		request.setPartnerId("522700");
+//		request.setOrderNo("3456789012345678");
+//		request.setCustomerId("11448156");
+//		request.setDriverId("11448158");
+//		request.setSupplierShopId("981100006005951");
+//		request.setServiceType(1);
+//		String travelItinerary = createTravelItinerary(request);
+//		System.err.println(travelItinerary);//1951088602595872768
+		
+		//修改行程状态
+//		ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+//		request.setScene("TRAFFIC");
+//		request.setPartnerId("522700");
+//		request.setOrderId("1951088602595872768");
+//		request.setStatus(7);
+//		request.setDriverId("11448158");
+//		request.setSupplierShopId("981100006005951");
+//		Boolean aBoolean = modifyTravelItinerary(request);
+		
+		//订单创建及拉起支付
+//		TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData();
+//		tradeOrderCreateData.setScene("TRAFFIC");
+//		tradeOrderCreateData.setPartnerId("522700");
+//		tradeOrderCreateData.setTreatShopId("11448158");
+//		tradeOrderCreateData.setOrderAppId("52270015");
+//		tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}");
+//		tradeOrderCreateData.setCharge(new BigDecimal("0.01"));
+//		tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
+//		tradeOrderCreateData.setOrderId("1951088602595872768");
+//		tradeOrderCreateData.setOrderNo("3456789012345678");
+//		tradeOrderCreateData.setCustomerId("11448156");
+//		tradeOrderCreateData.setPayPartnerId("5400004");
+//		tradeOrderCreateData.setPartnerPayId("1951088602595872768");
+//		tradeOrderCreateData.setCurrency("RMB");
+//		tradeOrderCreateData.setTotalFee("1");
+//		tradeOrderCreateData.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay");
+//		tradeOrderCreateData.setClientIp("127.0.0.1");
+//		tradeOrderCreateData.setNeedLoginFlag("N");
+//		tradeOrderCreateData.setOrderDesc("出行订单支付");
+//		tradeOrderCreateData.setAccessMode("APP");
+//
+//		List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
+//		GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
+//		goodsInfoRequest.setId("981100006005901");
+//		goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
+//		goodsInfoRequest.setSubOpenId("oVLur61wBKJEO7QPR1dsmzS5TSfs");
+//		goodsInfoRequest.setProfitSharing("1");
+//		goodsInfoRequest.setAreaInfo("520100");
+//		goodsInfoRequest.setPayType("0");
+//		goodsInfoRequest.setBusinessType("10408");
+//		goodsInfo.add(goodsInfoRequest);
+//		tradeOrderCreateData.setGoodsInfo(goodsInfo);
+//		TradeOrderCreate tradeOrderCreate = tradeOrderCreate1(tradeOrderCreateData);
+//		System.err.println(tradeOrderCreate);
+		//TradeOrderCreate(orderInfo=OrderInfo(orderId=1950072223939842048, status=null), payInfo=PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=It5FPM1DUjzwIAin7zwiHvUANWKC6I5USCLE8EKoRkg%3D, payId=540000420250729000135600, status=null, payTime=null, payFee=null, paymentInfos=null), sign=525cb843b1eeb5a0451eeb5fbbe02f0f))
+		
+		//查询支付单信息
+//		GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest();
+//		getPaymentInfoDataRequest.setPartnerId("5400004");
+//		getPaymentInfoDataRequest.setPartnerPayId("1948685426689200128");
+//		GetPaymentInfo getPaymentInfo = paymentInfo(getPaymentInfoDataRequest);
+//		System.err.println(getPaymentInfo);
+		
+		//拉起支付
+//		TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
+//		tradePayOff1Data.setPartnerId("5400004");
+//		tradePayOff1Data.setScene("TRAFFIC");
+//		tradePayOff1Data.setPartnerPayId("1951088602595872768");
+//		tradePayOff1Data.setCurrency("RMB");
+//		tradePayOff1Data.setTotalFee("1");
+//		tradePayOff1Data.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay");
+//		tradePayOff1Data.setClientIp("127.0.0.1");
+//		tradePayOff1Data.setNeedLoginFlag("N");
+//		tradePayOff1Data.setOrderDesc("出行订单支付");
+//		tradePayOff1Data.setAccessMode("APP");
+//		List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
+//		GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
+//		goodsInfoRequest.setId("981100006005901");
+//		goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
+//		goodsInfoRequest.setSubOpenId("oVLur61wBKJEO7QPR1dsmzS5TSfs");
+//		goodsInfoRequest.setProfitSharing("1");
+//		goodsInfoRequest.setAreaInfo("520100");
+//		goodsInfoRequest.setPayType("0");
+//		goodsInfoRequest.setBusinessType("10408");
+//		goodsInfo.add(goodsInfoRequest);
+//		tradePayOff1Data.setGoodsInfo(goodsInfo);
+//		PayInfo payInfo = tradePayOff1(tradePayOff1Data);
+//		System.err.println(payInfo);
+		//PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=5nUBXayFpfZz%2FXUZiMu9LzeRXmqmlqaCS%2BHfu5udIt4%3D, payId=540000420250725000135549, status=null, payTime=null, payFee=null, paymentInfos=null), sign=8154ba2728280900b122c56352c1c7fe)
+		
+		
+		// (补偿单)拉起支付
+//		TradePayOffData tradePayOffData = new TradePayOffData();
+//		tradePayOffData.setPartnerId("5400004");
+//		tradePayOffData.setScene("TRAFFIC");
+//		tradePayOffData.setPartnerPayId("1948685426689200128");
+//		tradePayOffData.setCurrency("RMB");
+//		tradePayOffData.setTotalFee("1");
+//		tradePayOffData.setRetUrl("/home/");
+//		tradePayOffData.setClientIp("127.0.0.1");
+//		tradePayOffData.setNeedLoginFlag("N");
+//		tradePayOffData.setOrderDesc("出行订单支付");
+//		tradePayOffData.setAccessMode("APP");
+//		List<PaymentInfoRequest> paymentInfoRequests = new ArrayList<>();
+//		PaymentInfoRequest paymentInfoRequest = new PaymentInfoRequest();
+//		paymentInfoRequest.setPayModeId("501212");
+//		paymentInfoRequests.add(paymentInfoRequest);
+//		tradePayOffData.setPaymentInfos(paymentInfoRequests);
+//		List<GoodsInfo> goodsInfo = new ArrayList<>();
+//		GoodsInfo goodsInfo1 = new GoodsInfo();
+//		goodsInfo1.setMerchantCode("");
+//		goodsInfo1.setCustId("");
+//		goodsInfo1.setCustName("");
+//		goodsInfo1.setProfitSharing("1");
+//		goodsInfo.add(goodsInfo1);
+//		tradePayOffData.setGoodsInfo(goodsInfo);
+//		PayInfo payInfo1 = tradePayOff(tradePayOffData);
+//		System.err.println(payInfo1);
+		
+		//订单创建
+//		CreateOrderRequest createOrderRequest = new CreateOrderRequest();
+//		createOrderRequest.setTreatShopId("11448158");
+//		createOrderRequest.setOrderAppId("52270015");
+//		createOrderRequest.setScene("TRAFFIC");
+//		createOrderRequest.setPartnerId("522700");
+//		createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}");
+//		createOrderRequest.setCharge(new BigDecimal("0.01"));
+//		createOrderRequest.setChannelSource("GRJYCXWXXCX");
+//		createOrderRequest.setOrderId("1948685426689200128");
+//		createOrderRequest.setOrderNo("0123456");
+//		createOrderRequest.setCustomerId("11448156");
+//		OrderInfo orderInfo = tradeOrderCreate(createOrderRequest);
+//		System.err.println(orderInfo);
+		
+		//行程单列表查询
+//		GetTravelItineraryListRequest request = new GetTravelItineraryListRequest();
+//		request.setScene("TRAFFIC");
+//		request.setPartnerId("522700");
+//		request.setCustomerId("11448156");
+//		request.setOrderNo("0123456");
+//		request.setDriverId("11448158");
+//		ListPage<TravelItinerary> travelItineraryList = getTravelItineraryList(request);
+//		System.err.println(travelItineraryList);
+	
+	}
+	
+	/**
+	 * 拉起支付
+	 *
+	 * @param tradePayOff1Data
+	 * @param recoveryOrder
+	 * @return
+	 */
+	public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data, Integer recoveryOrder) {
+		tradePayOff1Data.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
+		tradePayOff1Data.setTimeout("72H");
+		tradePayOff1Data.setScene("TRAFFIC");
+		tradePayOff1Data.setCurrency("RMB");
+		tradePayOff1Data.setNeedLoginFlag("N");
+		tradePayOff1Data.setAccessMode("APP");
+		tradePayOff1Data.getGoodsInfo().forEach(goodsInfoRequest -> {
+			if(0 == recoveryOrder){
+				goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901");
+			}else{
+				goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "981100006228370" : "981100006005901");
+			}
+			goodsInfoRequest.setSubAppId(qianYunTongConfig.getAppId());
+			
+			goodsInfoRequest.setAreaInfo("520100");
+			goodsInfoRequest.setPayType("0");
+			goodsInfoRequest.setBusinessType("10408");
+		});
+		
+		
+		TradeRequest request = new TradeRequest<TradePayOff1Data>();
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954795404533583872" : "1911676727023968256");
+		request.setAppId(qianYunTongConfig.getAppkey());
+		request.setConfigVersion(1);
+		request.setRequestId(UUIDUtil.getRandomCode());
+		request.setData(tradePayOff1Data);
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradePayOff";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【拉起支付】请求地址:" + url);
+		log.info("【拉起支付】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【拉起支付】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【拉起支付】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【拉起支付】失败:" + jsonObject.getString("resMsg"));
+		}
+		JSONObject busiResp = jsonObject.getJSONObject("busiResp");
+		PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class);
+		return payInfo;
+	}
+	
+	/**
+	 * 创建行程单
+	 *
+	 * @param request
+	 * @return 行程单ID
+	 */
+	public static String createTravelItinerary(CreateTravelItineraryRequest request) {
+		request.setScene("TRAFFIC");
+		request.setPartnerId("522700");
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/createTravelItinerary";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【创建行程单】请求地址:" + url);
+		log.info("【创建行程单】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【创建行程单】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【创建行程单】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【创建行程单】失败:" + jsonObject.getString("resMsg"));
+		}
+		return jsonObject.getString("busiResp");
+	}
+	
+	
+	/**
+	 * 修改行程单
+	 *
+	 * @param request
+	 */
+	public static Boolean modifyTravelItinerary(ModifyTravelItineraryRequest request) {
+		request.setScene("TRAFFIC");
+		request.setPartnerId("522700");
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/modifyTravelItinerary";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【修改行程单】请求地址:" + url);
+		log.info("【修改行程单】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【修改行程单】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【修改行程单】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【修改行程单】失败:" + jsonObject.getString("resMsg"));
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * 行程单列表查询
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static ListPage<List<TravelItinerary>> getTravelItineraryList(GetTravelItineraryListRequest request) {
+		request.setScene("TRAFFIC");
+		request.setPartnerId("522700");
+		
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getTravelItineraryList";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【行程单列表查询】请求地址:" + url);
+		log.info("【行程单列表查询】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【行程单列表查询】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【行程单列表查询】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【行程单列表查询】失败:" + jsonObject.getString("resMsg"));
+		}
+		JSONObject busiResp = jsonObject.getJSONObject("busiResp");
+		Integer total = busiResp.getInteger("total");
+		Integer pageNum = busiResp.getInteger("pageNum");
+		Integer pageSize = busiResp.getInteger("pageSize");
+		JSONArray list = busiResp.getJSONArray("list");
+		List<TravelItinerary> travelItineraryList = new ArrayList<>();
+		for (int i = 0; i < list.size(); i++) {
+			TravelItinerary object = list.getObject(i, TravelItinerary.class);
+			travelItineraryList.add(object);
+		}
+		ListPage listPage = new ListPage<List<TravelItinerary>>();
+		listPage.setTotal(total);
+		listPage.setPageNum(pageNum);
+		listPage.setPageSize(pageSize);
+		listPage.setList(travelItineraryList);
+		return listPage;
+	}
+	
+	/**
+	 * 订单创建及拉起支付
+	 *
+	 * @param tradeOrderCreateData
+	 * @return
+	 */
+	public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData, Integer recoveryOrder) {
+		tradeOrderCreateData.setScene("TRAFFIC");
+		tradeOrderCreateData.setPartnerId("522700");
+		tradeOrderCreateData.setTimeout("72H");
+		tradeOrderCreateData.setOrderAppId("52270015");
+		tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
+		tradeOrderCreateData.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
+		tradeOrderCreateData.setCurrency("RMB");
+		tradeOrderCreateData.setNeedLoginFlag("N");
+		tradeOrderCreateData.setAccessMode("APP");
+		tradeOrderCreateData.getGoodsInfo().forEach(goodsInfoRequest -> {
+			if(0 == recoveryOrder){
+				goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901");
+			}else{
+				goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "981100006228370" : "981100006005901");
+			}
+			goodsInfoRequest.setSubAppId(qianYunTongConfig.getAppId());
+			goodsInfoRequest.setAreaInfo("520100");
+			goodsInfoRequest.setPayType("0");
+			goodsInfoRequest.setBusinessType("10408");
+		});
+		
+		
+		TradeRequest request = new TradeRequest<TradeOrderCreateData>();
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954793280550756352" : "1945688132719169536");
+		request.setAppId(qianYunTongConfig.getAppkey());
+		request.setConfigVersion(1);
+		request.setRequestId(UUIDUtil.getRandomCode());
+		request.setData(tradeOrderCreateData);
+		
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCreate";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【订单创建及拉起支付】请求地址:" + url);
+		log.info("【订单创建及拉起支付】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【订单创建及拉起支付】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【订单创建及拉起支付】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【订单创建及拉起支付】失败:" + jsonObject.getString("resMsg"));
+		}
+		TradeOrderCreate busiResp = jsonObject.getObject("busiResp", TradeOrderCreate.class);
+		return busiResp;
+	}
+	
+	/**
+	 * 订单创建
+	 *
+	 * @param createOrderRequest
+	 * @return
+	 */
+	public static OrderInfo tradeOrderCreate(CreateOrderRequest createOrderRequest) {
+		createOrderRequest.setOrderAppId("52270015");
+		createOrderRequest.setScene("TRAFFIC");
+		createOrderRequest.setPartnerId("522700");
+		createOrderRequest.setChannelSource("GRJYCXWXXCX");
+		
+		TradeRequest request = new TradeRequest<CreateOrderRequest>();
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954792737421942784" : "1948289607125864448");
+		request.setAppId(qianYunTongConfig.getAppkey());
+		request.setConfigVersion(1);
+		request.setRequestId(UUIDUtil.getRandomCode());
+		request.setData(createOrderRequest);
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCreate";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【订单创建】请求地址:" + url);
+		log.info("【订单创建】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【订单创建】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【订单创建】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【订单创建】失败:" + jsonObject.getString("resMsg"));
+		}
+		JSONObject busiResp = jsonObject.getJSONObject("busiResp");
+		OrderInfo orderInfo = busiResp.getObject("orderInfo", OrderInfo.class);
+		return orderInfo;
+	}
+	
+	/**
+	 * (补偿单)拉起支付
+	 *
+	 * @param tradePayOffData
+	 * @return
+	 */
+	public static PayInfo tradePayOff(TradePayOffData tradePayOffData) {
+		tradePayOffData.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401008" : "5400005");
+		tradePayOffData.setTimeout("72H");
+		tradePayOffData.setScene("TRAFFIC");
+		tradePayOffData.setCurrency("RMB");
+		tradePayOffData.setRetUrl("");
+		InetAddress inetAddress = null;
+		try {
+			inetAddress = InetAddress.getLocalHost();
+		} catch (UnknownHostException e) {
+			throw new RuntimeException(e);
+		}
+		String ip = inetAddress.getHostAddress();
+		tradePayOffData.setClientIp(ip);
+		tradePayOffData.setNeedLoginFlag("N");
+		tradePayOffData.setAccessMode("APP");
+		List<PaymentInfoRequest> paymentInfoRequests = new ArrayList<>();
+		PaymentInfoRequest paymentInfoRequest = new PaymentInfoRequest();
+		paymentInfoRequest.setPayModeId("501212");
+		paymentInfoRequest.setRealFee(tradePayOffData.getTotalFee().toString());
+		paymentInfoRequest.setTradeFee(tradePayOffData.getTotalFee().toString());
+		paymentInfoRequest.setAccountTyp("501");
+		paymentInfoRequests.add(paymentInfoRequest);
+		tradePayOffData.setPaymentInfos(paymentInfoRequests);
+		List<GoodsInfo> goodsInfo = new ArrayList<>();
+		GoodsInfo goodsInfo1 = new GoodsInfo();
+		goodsInfo1.setMerchantCode("prod".equals(qianYunTongConfig.getActiveProfile()) ? "B00001404" : "B00000905");
+		goodsInfo1.setCustId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "CB0000004853" : "CB0000004686");
+		goodsInfo1.setCustName("prod".equals(qianYunTongConfig.getActiveProfile()) ? "黔南云码通数字产业运营有限公司" : "证联消费平台交易客户");
+		goodsInfo1.setBusinessType("10408");
+		goodsInfo1.setAgreementNo("prod".equals(qianYunTongConfig.getActiveProfile()) ? "00000402485377063581755054680461" : "00000000468618354161754464398681");
+		goodsInfo1.setProfitSharing("1");
+		goodsInfo.add(goodsInfo1);
+		tradePayOffData.setGoodsInfo(goodsInfo);
+		
+		
+		TradeRequest request = new TradeRequest<TradePayOffData>();
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954794605782913024" : "1774717104844095488");
+		request.setAppId(qianYunTongConfig.getAppkey());
+		request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 2);
+		request.setRequestId(UUIDUtil.getRandomCode());
+		request.setData(tradePayOffData);
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradePayOff";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【(补偿单)拉起支付】请求地址:" + url);
+		log.info("【(补偿单)拉起支付】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【(补偿单)拉起支付】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【(补偿单)拉起支付】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【(补偿单)拉起支付】失败:" + jsonObject.getString("resMsg"));
+		}
+		JSONObject busiResp = jsonObject.getJSONObject("busiResp");
+		PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class);
+		return payInfo;
+	}
+	
+	
+	/**
+	 * 查询支付单信息
+	 *
+	 * @param getPaymentInfoDataRequest
+	 * @return
+	 */
+	public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest) {
+		getPaymentInfoDataRequest.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
+		
+		GetPaymentInfoRequest request = new GetPaymentInfoRequest();
+		request.setRequstType("POST");
+		request.setBusType(1);
+		request.setData(getPaymentInfoDataRequest);
+		
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/paymentInfo";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【查询支付单信息】请求地址:" + url);
+		log.info("【查询支付单信息】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【查询支付单信息】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("retCode");
+		if (!"0".equals(resCode)) {
+			log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
+			throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String retCode = object.getString("retCode");
+		if (!"000000".equals(retCode)) {
+			log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
+			throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
+		}
+		GetPaymentInfo payInfo = object.getObject("data", GetPaymentInfo.class);
+		return payInfo;
+	}
+	
+	
+	/**
+	 * (补偿单)支付成功通知
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static OrderInfo paymentOrder(PaymentOrderRequest request) {
+		request.setScene("TRAFFIC");
+		request.setMhltiCenterAppId("52270015");
+		request.setPayType(4);
+		request.setPayChannel(6);
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/paymentOrder";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【(补偿单)支付成功通知】请求地址:" + url);
+		log.info("【(补偿单)支付成功通知】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【(补偿单)支付成功通知】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg"));
+		}
+		OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class);
+		return orderInfo;
+	}
+
+
+
+	/**
+	 * 订单退款
+	 * @param request
+	 * @return
+	 */
+	public static TradeOrderRefund tradeOrderRefund(TradeOrderRefundRequest request) {
+		request.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5400004" : "5401007");
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderRefund";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【订单退款】请求地址:" + url);
+		log.info("【订单退款】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【订单退款】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【订单退款】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【订单退款】失败:" + jsonObject.getString("resMsg"));
+		}
+		JSONObject refundInfo = jsonObject.getJSONObject("busiResp").getJSONObject("refundInfo");
+		String retCode = refundInfo.getString("retCode");
+		if(!"".equals(retCode)){
+			log.error("【订单退款】失败:" + refundInfo.getString("retMsg"));
+			throw new RuntimeException("【订单退款】失败:" + refundInfo.getString("retMsg"));
+		}
+		TradeOrderRefund tradeOrderRefund = refundInfo.getObject("data", TradeOrderRefund.class);
+		return tradeOrderRefund;
+	}
+
+
+	/**
+	 * 订单退款通知
+	 * @param request
+	 */
+	public static void orderRefundNotice(OrderRefundNoticeRequest request) {
+		request.setScene("TRAFFIC");
+		request.setMhltiCenterAppId("52270015");
+
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/orderRefundNotice";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【订单退款通知】请求地址:" + url);
+		log.info("【订单退款通知】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【订单退款通知】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【订单退款通知】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【订单退款通知】失败:" + jsonObject.getString("resMsg"));
+		}
+	}
+
+
+
+	/**
+	 * 订单取消
+	 * @param orderId
+	 */
+	public static void tradeOrderCancel(String orderId) {
+		TradeOrderCancelRequest request = new TradeOrderCancelRequest();
+		request.setScene("TRAFFIC");
+		request.setMhltiCenterAppId("52270015");
+		request.setOrderId(orderId);
+
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCancel";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+
+		String timeStamp = date.format(nowdate);
+		String messageId = UUIDUtil.getRandomCode();
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【订单取消】请求地址:" + url);
+		log.info("【订单取消】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【订单取消】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String resCode = jsonObject.getString("resCode");
+		if (!"000000".equals(resCode)) {
+			log.error("【订单取消】失败:" + jsonObject.getString("resMsg"));
+			throw new RuntimeException("【订单取消】失败:" + jsonObject.getString("resMsg"));
+		}
+	}
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
new file mode 100644
index 0000000..48de991
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
@@ -0,0 +1,203 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/8 11:31
+ */
+@Component
+public class QianYunTongConfig {
+	
+	@Value("${spring.profiles.active}")
+	private String activeProfile;
+	
+	
+	/**
+	 * appkey
+	 */
+	private String appkey;
+	/**
+	 * 私钥地址
+	 */
+	private String privateKeyPath;
+	/**
+	 * 消费者账号
+	 */
+	private String userName;
+	/**
+	 * 状态
+	 * 1:生产环境
+	 * 2:测试环境
+	 */
+	private String status;
+	/**
+	 * API地址
+	 */
+	private String apiUrl;
+	/**
+	 * 桶名
+	 */
+	private String bucketName;
+	/**
+	 * 小程序appId
+	 */
+	private String appId;
+	/**
+	 * HOS的基础路径(公共前缀)
+	 */
+	private String endPoint;
+	/**
+	 * 账户的ID
+	 */
+	private String account;
+	/**
+	 * 向UAAS服务请求到的access_key
+	 */
+	private String accessKey;
+	/**
+	 * 向UAAS服务请求到的secret_key
+	 */
+	private String secretKey;
+
+	public String getActiveProfile() {
+		return activeProfile;
+	}
+
+	public void setActiveProfile(String activeProfile) {
+		this.activeProfile = activeProfile;
+	}
+
+	public String getAppkey() {
+		return appkey;
+	}
+
+	public void setAppkey(String appkey) {
+		this.appkey = appkey;
+	}
+
+	public String getPrivateKeyPath() {
+		return privateKeyPath;
+	}
+
+	public void setPrivateKeyPath(String privateKeyPath) {
+		this.privateKeyPath = privateKeyPath;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getApiUrl() {
+		return apiUrl;
+	}
+
+	public void setApiUrl(String apiUrl) {
+		this.apiUrl = apiUrl;
+	}
+
+	public String getBucketName() {
+		return bucketName;
+	}
+
+	public void setBucketName(String bucketName) {
+		this.bucketName = bucketName;
+	}
+
+	public String getAppId() {
+		return appId;
+	}
+
+	public void setAppId(String appId) {
+		this.appId = appId;
+	}
+
+	public String getEndPoint() {
+		return endPoint;
+	}
+
+	public void setEndPoint(String endPoint) {
+		this.endPoint = endPoint;
+	}
+
+	public String getAccount() {
+		return account;
+	}
+
+	public void setAccount(String account) {
+		this.account = account;
+	}
+
+	public String getAccessKey() {
+		return accessKey;
+	}
+
+	public void setAccessKey(String accessKey) {
+		this.accessKey = accessKey;
+	}
+
+	public String getSecretKey() {
+		return secretKey;
+	}
+
+	public void setSecretKey(String secretKey) {
+		this.secretKey = secretKey;
+	}
+
+	public QianYunTongConfig getQianYunTongConfig() {
+		if("dev".equals(activeProfile)){
+			this.appkey = "10001104";
+			this.privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem";
+			this.userName = "xiaofei";
+			this.status = "1";
+			this.setApiUrl("https://test-zhongtai.stqcloud.com:10070");
+			this.setBucketName("bucuTest0625");
+			this.setAppId("wxcc3c9058e2b294db");
+			this.setEndPoint("http://119.4.112.68:27741/v1");
+			this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e");
+			this.setAccessKey("TYMFTFD5SIIT15DCCUD7");
+			this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z");
+		}
+		if("test".equals(activeProfile)){
+			this.setAppkey("10001104");
+			this.setPrivateKeyPath("/etraffic/server/private_key_test.pem");
+			this.setUserName("xiaofei");
+			this.setStatus("1");
+			this.setApiUrl("https://test-zhongtai.stqcloud.com:10070");
+			this.setBucketName("bucuTest0625");
+			this.setAppId("wxcc3c9058e2b294db");
+			this.setEndPoint("http://10.30.52.45:27741/v1");
+			this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e");
+			this.setAccessKey("TYMFTFD5SIIT15DCCUD7");
+			this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z");
+		}
+		if("prod".equals(activeProfile)){
+			this.setAppkey("10001104");
+			this.setPrivateKeyPath("/etraffic/server/private_key.pem");
+			this.setUserName("xiwang");
+			this.setStatus("1");
+			this.setApiUrl("http://jjzhongtai.stqcloud.com:10010");
+			this.setBucketName("qyt20250702");
+			this.setAppId("wxcc3c9058e2b294db");
+			this.setEndPoint("http://10.30.52.45:27741/v1");
+			this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e");
+			this.setAccessKey("TYMFTFD5SIIT15DCCUD7");
+			this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z");
+		}
+		return this;
+	}
+	
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java
new file mode 100644
index 0000000..1d5fcaa
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java
@@ -0,0 +1,129 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.open.common.util.OpenApiClient;
+import com.open.common.util.SystemParameterNames;
+import com.stylefeng.guns.modular.system.util.SpringContextsUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.SendSmsRequest;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 短信工具类
+ * @author zhibing.pu
+ * @Date 2025/6/10 10:48
+ */
+@Slf4j
+public class SMSUtil {
+	
+	private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();
+	
+	
+	/**
+	 * 获取易信验证码
+	 * @param mobile
+	 * @return
+	 */
+	public static String sendVerifyCode(String mobile) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/sendVerifyCode";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", "{\"mobile\":\"" + mobile + "\"}");
+		log.info("【获取易信验证码】请求地址:" + url);
+		log.info("【获取易信验证码】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【获取易信验证码】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【获取易信验证码】请求失败:" + result);
+			throw new RuntimeException("【获取易信验证码】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【获取易信验证码】失败:" + object.toJSONString());
+			throw new RuntimeException("【获取易信验证码】失败:" + object.toJSONString());
+		}
+		return object.getString("code");
+	}
+	
+	public static void main(String[] args) {
+		SendSmsRequest request = new SendSmsRequest();
+		request.setDestAddress("15828353127");
+		request.setTemplateId("TPL202507300002");
+		Map<String, String> templateParams = new HashMap<>();
+//		templateParams.put("code", "1234");
+		request.setTemplateParams(templateParams);
+//		request.setCode("code");
+		request.setSpId("Y86asr7J");
+		SMSUtil.sendSms(request);
+	}
+	
+	/**
+	 * 根据模板发送短信
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static Boolean sendSms(SendSmsRequest request) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/sendSmsByTpl";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【根据模板发送短信】请求地址:" + url);
+		log.info("【根据模板发送短信】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【根据模板发送短信】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据模板发送短信】请求失败:" + result);
+			throw new RuntimeException("【根据模板发送短信】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【根据模板发送短信】失败:" + object.toJSONString());
+			throw new RuntimeException("【根据模板发送短信】失败:" + object.toJSONString());
+		}
+		return true;
+	}
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java
new file mode 100644
index 0000000..f686686
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java
@@ -0,0 +1,368 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.open.common.util.OpenApiClient;
+import com.open.common.util.SystemParameterNames;
+import com.stylefeng.guns.modular.system.util.SpringContextsUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 用户工具类
+ *
+ * @author zhibing.pu
+ * @Date 2025/6/6 14:47
+ */
+@Slf4j
+public class UserUtil {
+	
+	private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();
+	
+	
+	
+	
+	
+	/**
+	 * 根据手机号码获取人员信息
+	 *
+	 * @param mobile 手机号码
+	 */
+	public static List<QYTUserInfo> getUserInfoByPhone(String mobile) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/2.0/queryUserinfoByMobilev2";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", "{\"list\":[{\"mobile\":\"" + mobile + "\"}]}");
+		log.info("【根据手机号码获取人员信息】请求地址:" + url);
+		log.info("【根据手机号码获取人员信息】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【根据手机号码获取人员信息】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据手机号码获取人员信息】请求失败:" + result);
+			return null;
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【根据手机号码获取人员信息】失败:" + object.toJSONString());
+			return null;
+		}
+		JSONArray data = object.getJSONObject("data").getJSONArray("list");
+		List<QYTUserInfo> list = new ArrayList<>();
+		for (int i = 0; i < data.size(); i++) {
+			QYTUserInfo userInfo = data.getObject(i, QYTUserInfo.class);
+			list.add(userInfo);
+		}
+		return list;
+	}
+	
+	/**
+	 * 根据手机号码获取人员信息
+	 *
+	 * @param mobile   手机号码
+	 * @param enterNum 企业编号
+	 */
+	public static List<QYTUserInfo> getUserInfoByPhone(String mobile, String enterNum) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getUserInfoByPhone";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		Map<String, String> map = new HashMap<>();
+		map.put("mobile", mobile);
+		if (null != enterNum) {
+			map.put("enterNum", enterNum);
+		}
+		contentMap.put("content", JSON.toJSONString(map));
+		log.info("【根据手机号码获取人员信息】请求地址:" + url);
+		log.info("【根据手机号码获取人员信息】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【根据手机号码获取人员信息】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据手机号码获取人员信息】请求失败:" + result);
+			return null;
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【根据手机号码获取人员信息】失败:" + object.toJSONString());
+			return null;
+		}
+		JSONArray data = object.getJSONArray("data");
+		List<QYTUserInfo> list = new ArrayList<>();
+		for (int i = 0; i < data.size(); i++) {
+			data.getJSONObject(i).getString("enter_code");
+			QYTUserInfo userInfo = data.getObject(i, QYTUserInfo.class);
+			list.add(userInfo);
+		}
+		return list;
+	}
+	
+	
+	/**
+	 * 根据手机号注册用户
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static RegisterViaMobile registerViaMobile(RegisterViaMobileRequest request) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/m1_register_via_mobile";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【根据手机号注册用户】请求地址:" + url);
+		log.info("【根据手机号注册用户】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【根据手机号注册用户】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据手机号注册用户】请求失败:" + result);
+			throw new RuntimeException("【根据手机号注册用户】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【根据手机号注册用户】失败:" + object.toJSONString());
+			throw new RuntimeException("【根据手机号注册用户】失败:" + object.toJSONString());
+		}
+		return jsonObject.getObject("object", RegisterViaMobile.class);
+	}
+	
+	
+	/**
+	 * 易信用户修改密码
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static Boolean modifyPwd(ModifyPwdRequest request) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/modifyPwd";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【易信用户修改密码】请求地址:" + url);
+		log.info("【易信用户修改密码】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【易信用户修改密码】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【易信用户修改密码】请求失败:" + result);
+			throw new RuntimeException("【易信用户修改密码】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【易信用户修改密码】失败:" + object.toJSONString());
+			throw new RuntimeException("【易信用户】失败:" + object.toJSONString());
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * 易信重置密码
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static Boolean resetPwd(ResetPwdRequest request) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/resetPwd";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		contentMap.put("content", new Gson().toJson(request));
+		log.info("【易信重置密码】请求地址:" + url);
+		log.info("【易信重置密码】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【易信重置密码】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【易信重置密码】请求失败:" + result);
+			throw new RuntimeException("【易信重置密码】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		String status = object.getString("status");
+		if (!"0".equals(status)) {
+			log.error("【易信重置密码】失败:" + object.toJSONString());
+			throw new RuntimeException("【易信重置密码】失败:" + object.toJSONString());
+		}
+		return true;
+	}
+	
+	
+	
+	/**
+	 * 实名认证
+	 * @param realName
+	 * @param cardNo
+	 * @return
+	 */
+	public static Boolean idCardAuth(String realName, String cardNo) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/idCardAuth";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		Map<String, String> map = new HashMap<>();
+		map.put("realName", realName);
+		map.put("cardNo", cardNo);
+		contentMap.put("content", JSON.toJSONString(map));
+		log.info("【身份证实名认证】请求地址:" + url);
+		log.info("【身份证实名认证】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【身份证实名认证】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【身份证实名认证】请求失败:" + result);
+			throw new RuntimeException("【身份证实名认证】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		return object.getBoolean("isok");
+	}
+	
+	
+	/**
+	 * 根据手机号码获取易信uuid
+	 * @param mobile
+	 * @return
+	 */
+	public static String getOnconUUIDByMobile(String mobile) {
+		//请求路径
+		String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getOnconUUIDByMobile";
+		//私钥文件
+		String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
+		//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
+		String appKey = qianYunTongConfig.getAppkey();//appkey
+		Map<String, String> headers = new HashMap<>();
+		headers.put("Content-Type", "application/json");
+		Map<String, Object> contentMap = new HashMap<String, Object>();
+		Date nowdate = new Date();
+		SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+		String timeStamp = date.format(nowdate);
+		String messageId = UUID.randomUUID().toString().replaceAll("-", "");
+		contentMap.put(SystemParameterNames.getAppKey(), appKey);
+		contentMap.put(SystemParameterNames.getMessage_id(), messageId);
+		contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
+		contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
+		Map<String, String> map = new HashMap<>();
+		map.put("mobile", mobile);
+		contentMap.put("content", JSON.toJSONString(map));
+		log.info("【根据手机号码获取易信uuid】请求地址:" + url);
+		log.info("【根据手机号码获取易信uuid】请求参数:" + JSON.toJSONString(contentMap));
+		String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
+		log.info("【根据手机号码获取易信uuid】请求结果:" + result);
+		JSONObject jsonObject = JSON.parseObject(result);
+		String retCode = jsonObject.getString("retCode");
+		if (!"0".equals(retCode)) {
+			log.error("【根据手机号码获取易信uuid】请求失败:" + result);
+			throw new RuntimeException("【根据手机号码获取易信uuid】请求失败:" + result);
+		}
+		JSONObject object = jsonObject.getJSONObject("object");
+		Integer status = object.getInteger("status");
+		if(0 != status){
+			log.error("【身份证实名认证】请求失败:" + object.getString("desc"));
+			throw new RuntimeException("【身份证实名认证】请求失败:" + object.getString("desc"));
+		}
+		return object.getString("onconUUID");
+	}
+	
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CheckEnterExist.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CheckEnterExist.java
new file mode 100644
index 0000000..837dd93
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CheckEnterExist.java
@@ -0,0 +1,40 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 18:12
+ */
+@Data
+public class CheckEnterExist {
+	/**
+	 * 企业ID
+	 */
+	private String id;
+	/**
+	 * 是否在公有云注册,1:已注册;0:未注册
+	 */
+	private String isReg;
+	/**
+	 * 创建者手机号
+	 */
+	private String mobile;
+	/**
+	 * 创建时间
+	 */
+	private String createTime;
+	/**
+	 * 法人姓名
+	 */
+	private String larName;
+	/**
+	 * 企业编码
+	 */
+	private String enterCode;
+	/**
+	 * 认证状态
+	 * 0:已认证;1:未认证,初始状态;2:认证不通过;3:认证中
+	 */
+	private Integer auth;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterprise.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterprise.java
new file mode 100644
index 0000000..579c4db
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterprise.java
@@ -0,0 +1,46 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/9 19:43
+ */
+@Data
+public class CreateEnterprise {
+	/**
+	 * 企业ID
+	 */
+	private String id;
+	/**
+	 * 开通易信状态
+	 * 0:成功 1:失败
+	 */
+	private String callYixinApi;
+	/**
+	 * 开通办公门户状态
+	 * 0:成功 1:失败
+	 */
+	private String callItdSaveCompany;
+	/**
+	 * 开通企业官网状态
+	 * 0:成功 1:失败
+	 */
+	private String callItdDredgeWebsite;
+	/**
+	 * 电话号码
+	 */
+	private String phone;
+	/**
+	 * 企业idcode
+	 */
+	private String idCode;
+	/**
+	 * 企业节点ID
+	 */
+	private String noteId;
+	/**
+	 * 是否新注册企业
+	 */
+	private String isNew;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java
new file mode 100644
index 0000000..ab18fe9
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java
@@ -0,0 +1,118 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/9 18:20
+ */
+@Data
+public class CreateEnterpriseRequest {
+	/**
+	 * 企业名称
+	 */
+	private String name;
+	/**
+	 * 企业简称/昵称
+	 */
+	private String nickName;
+	/**
+	 * 行业编码
+	 */
+	private String industry_code;
+	/**
+	 * 手机号码
+	 */
+	private String mobile;
+	/**
+	 * 区域编码
+	 */
+	private String area;
+	/**
+	 * 企业地址
+	 */
+	private String address;
+	/**
+	 * 二级域名
+	 */
+	private String secondRealmName;
+	/**
+	 * 企业密码
+	 */
+	private String password;
+	/**
+	 * 一级行业分类描述
+	 */
+	private String industry_level1;
+	/**
+	 * 二级行业分类描述
+	 */
+	private String industry_level2;
+	/**
+	 * 企业来源编码
+	 */
+	private String sourceCode;
+	/**
+	 * 企业分类编码
+	 */
+	private String typeCode;
+	/**
+	 * 代理商id
+	 */
+	private String elecsId;
+	/**
+	 * 是否发送短信
+	 * 0:不发送,1:发送
+	 */
+	private String smsFlag;
+	/**
+	 * 是否激活
+	 * 1:激活;0:未激活
+	 */
+	private String mobileFlag;
+	/**
+	 * 邮箱
+	 */
+	private String email;
+	/**
+	 * 邮箱是否激活
+	 * 1:激活;0:未激活
+	 */
+	private String emailFlag;
+	/**
+	 * 是否同步通讯录
+	 */
+	private String contact_source;
+	/**
+	 * 所属行业通用编码
+	 */
+	private String trade_code;
+	/**
+	 * 营业执照扫描件url
+	 */
+	private String operScanPic;
+	/**
+	 * 运营人员姓名
+	 */
+	private String idcardName;
+	/**
+	 * 运营者身份证号码
+	 */
+	private String idcardNum;
+	/**
+	 * 运营者身份证照片url
+	 */
+	private String idcardPic;
+	/**
+	 * 企业工号
+	 */
+	private String enterID;
+	/**
+	 * 推荐人
+	 */
+	private String recommender;
+	/**
+	 * 创建者姓名
+	 */
+	private String creatorName;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java
new file mode 100644
index 0000000..2201301
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java
@@ -0,0 +1,53 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 9:35
+ */
+@Data
+public class CreateOrderRequest {
+	/**
+	 * 司机id
+	 */
+	private String treatShopId;
+	/**
+	 * 应用场景标识
+	 */
+	private String orderAppId;
+	/**
+	 * 场景标识
+	 */
+	private String scene;
+	/**
+	 * 租户ID。地区行政编码。黔南州传522700
+	 */
+	private String partnerId;
+	/**
+	 * 结算信息json串。其中结算分账标识(profitSharing:0:不分账,1:分账)、是否推广单标识(isPromote:1、是、0、否)必传。例:{"profitSharing":"0",”isPromote”:”0”}
+	 */
+	private String field1;
+	/**
+	 * 订单总金额,单位元
+	 */
+	private BigDecimal charge;
+	/**
+	 * 订单渠道。小程序传GRJYCXWXXCX,贵人家园传GRJY
+	 */
+	private String channelSource;
+	/**
+	 * 行程单ID
+	 */
+	private String orderId;
+	/**
+	 * 业务侧订单号
+	 */
+	private String orderNo;
+	/**
+	 * 下单人ID
+	 */
+	private String customerId;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java
new file mode 100644
index 0000000..8ce9043
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java
@@ -0,0 +1,43 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 16:31
+ */
+@Data
+public class CreateTravelItineraryRequest {
+	/**
+	 * 场景标识。交通场景传”TRAFFIC”
+	 */
+	private String scene;
+	/**
+	 * 租户ID。地区行政编码。黔南州传522700
+	 */
+	private String partnerId;
+	/**
+	 * 业务侧订单号
+	 */
+	private String orderNo;
+	/**
+	 * 乘客ID
+	 */
+	private String customerId;
+	/**
+	 * 司机ID
+	 */
+	private String driverId;
+	/**
+	 * 推广员ID
+	 */
+	private String promoterId;
+	/**
+	 * 服务商商户ID
+	 */
+	private String supplierShopId;
+	/**
+	 * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车
+	 */
+	private Integer serviceType;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/DeleteStafNodeRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/DeleteStafNodeRequest.java
new file mode 100644
index 0000000..0115407
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/DeleteStafNodeRequest.java
@@ -0,0 +1,23 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 16:39
+ */
+@Data
+public class DeleteStafNodeRequest {
+	/**
+	 * 人员ID
+	 */
+	private Long empId;
+	/**
+	 * 手机号
+	 */
+	private String mobile;
+	/**
+	 * 企业编号
+	 */
+	private String entercode;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java
new file mode 100644
index 0000000..9d3e3eb
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java
@@ -0,0 +1,72 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 16:32
+ */
+@Data
+public class EditStaffNodeRequest {
+	/**
+	 * 人员ID
+	 */
+	private Integer empId;
+	/**
+	 * 操作人手机号
+	 */
+	private String mobile;
+	/**
+	 * 操作人企业ID
+	 */
+	private String entercode;
+	/**
+	 * 企业ID
+	 */
+	private Long enterId;
+	/**
+	 * 人员显示名
+	 */
+	private String empName;
+	/**
+	 * 人员显示名
+	 */
+	private String empNickname;
+	/**
+	 * 手机号
+	 */
+	private String mphone;
+	/**
+	 * 登录账号
+	 */
+	private String loginNo;
+	/**
+	 * 人员性别(男\女)
+	 */
+	private String empSex;
+	/**
+	 * 人员邮箱
+	 */
+	private String email;
+	/**
+	 * 员工所属部门ID多个部门英文; 分割
+	 */
+	private Integer deptId;
+	/**
+	 * 员工职务ID
+	 */
+	private Integer positionId;
+	/**
+	 * 员工职务名称,如不知道ID可以直接传入名称
+	 */
+	private String positionName;
+	/**
+	 * 高管模式 1 是 0 不是
+	 */
+	private Integer superLevel;
+	/**
+	 * 隐藏号码 1 是 0 不是
+	 */
+	private Integer hideMobile;
+	
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EnterpriseInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EnterpriseInfo.java
new file mode 100644
index 0000000..476dc50
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EnterpriseInfo.java
@@ -0,0 +1,259 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 17:14
+ */
+@Data
+public class EnterpriseInfo {
+	/**
+	 * 企业ID
+	 */
+	private String id;
+	/**
+	 * 企业编号
+	 */
+	private String enter_code;
+	/**
+	 * 企业名称
+	 */
+	private String enter_name;
+	/**
+	 * 是否是全员号码可见,0:是,1:否
+	 */
+	private String visible;
+	/**
+	 * 认证状态,0:已认证;1:未认证,初始状态;2:认证不通过;3:认证中
+	 */
+	private String auth;
+	/**
+	 * 认证时间
+	 */
+	private String auth_time;
+	/**
+	 * 认证注释
+	 */
+	private String authRemark;
+	/**
+	 * 运营者姓名(委托人)
+	 */
+	private String idcard_name;
+	/**
+	 * 运营者证件号
+	 */
+	private String idcard_num;
+	/**
+	 * 运营者证件扫描件URL
+	 */
+	private String idcard_pic;
+	/**
+	 * 统一社会信用代码
+	 */
+	private String uscc;
+	/**
+	 * 法人姓名
+	 */
+	private String larName;
+	/**
+	 * 法人电话
+	 */
+	private String larPhone;
+	/**
+	 * 法人身份证
+	 */
+	private String larIdCard;
+	/**
+	 * 法人身份证扫描件URL
+	 */
+	private String larIdCardPic;
+	/**
+	 * 发票名称
+	 */
+	private String invoiceName;
+	/**
+	 * 纳税人识别号(发票)
+	 */
+	private String invoiceTIN;
+	/**
+	 * 开户行名称(发票)
+	 */
+	private String invoiceBankersName;
+	/**
+	 * 开户行账号(发票)
+	 */
+	private String invoiceBankersAccount;
+	/**
+	 * 资质机构名称
+	 */
+	private String qualificationOrgName;
+	/**
+	 * 资质注册号/登记号
+	 */
+	private String qualificationRegNum;
+	/**
+	 * 资质有效开始时间
+	 */
+	private String qualificationStartTime;
+	/**
+	 * 资质有效结束时间
+	 */
+	private String qualificationEndTime;
+	/**
+	 * 资格证书扫描件URL
+	 */
+	private String qualificationCertUrl;
+	/**
+	 * 省份编码
+	 */
+	private String provinceCode;
+	/**
+	 * 地市编码
+	 */
+	private String cityCode;
+	/**
+	 * 区县编码
+	 */
+	private String areaCode;
+	/**
+	 * 乡镇编码
+	 */
+	private String townshipCode;
+	/**
+	 * 企业创建时间
+	 */
+	private String enter_createdate;
+	/**
+	 * 地址
+	 */
+	private String address;
+	/**
+	 * 营业期开始时间,格式:yyyy-MM-dd HH:mm:ss
+	 */
+	private String businessTermStartTime;
+	/**
+	 * 营业期结束时间,格式:yyyy-MM-dd HH:mm:ss
+	 */
+	private String businessTermEndTime;
+	/**
+	 * 企业规模
+	 */
+	private String enterScale;
+	/**
+	 * 创建者职位
+	 */
+	private String creatorPosition;
+	/**
+	 * 企业备注/介绍
+	 */
+	private String enterRemark;
+	/**
+	 * 企业logo
+	 */
+	private String enterLogo;
+	/**
+	 * 企业邮箱
+	 */
+	private String enterEmail;
+	/**
+	 * 企业联系电话rg_company_info.enter_tel
+	 */
+	private String enterTel;
+	/**
+	 * 一级行业分类编码
+	 */
+	private String industryStr;
+	/**
+	 * 二级行业分类编码
+	 */
+	private String industryStr2;
+	/**
+	 * 企业联系人姓名
+	 */
+	private String enterLinkman;
+	/**
+	 * 营业执照扫描件ur
+	 */
+	private String operScanPic;
+	/**
+	 * 身份证有效期
+	 */
+	private String larIdCardValidity;
+	/**
+	 * 经营地址
+	 */
+	private String operationAddress;
+	/**
+	 * 法人身份证背面照片
+	 */
+	private String larIdCardPicBack;
+	/**
+	 * 法人身份证手持
+	 */
+	private String larIdCardPicHold;
+	/**
+	 * 开户许可证
+	 */
+	private String accountOpeningPermit;
+	/**
+	 * 自定义的,例如:企业类型
+	 */
+	private String tag1;
+	/**
+	 * 自定义的,例如:行业类型
+	 */
+	private String tag2;
+	/**
+	 * 企业扩展信息
+	 */
+	private String iformContentId;
+	/**
+	 * 国家统计局网站提供的行政地区编码
+	 */
+	private String area;
+	/**
+	 * 行业编码
+	 */
+	private String industryCode;
+	/**
+	 * 企业创建人姓名
+	 */
+	private String creatorName;
+	/**
+	 * 企业创建人手机号
+	 */
+	private String creatorMobile;
+	/**
+	 * 管理员邮箱
+	 */
+	private String email;
+	/**
+	 * 企业简称
+	 */
+	private String enterAbbreviation;
+	/**
+	 * 营业期限
+	 */
+	private String businessTermLong;
+	/**
+	 * 一级行业名称
+	 */
+	private String industryL1Name;
+	/**
+	 * 二级行业名称
+	 */
+	private String industryL2Name;
+	/**
+	 * 企业介绍(全文本)
+	 */
+	private String enterIntro;
+	/**
+	 * 法人身份证正面照片
+	 */
+	private String larIdCardPicFront;
+	/**
+	 * 企业主税机关
+	 */
+	private String enterTaxAuthority;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java
new file mode 100644
index 0000000..7ce17dc
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java
@@ -0,0 +1,53 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 18:24
+ */
+@Data
+public class GetPaymentInfo {
+	/**
+	 * 支付流水号
+	 */
+	private String payId;
+	/**
+	 * 订单中心行程单ID
+	 */
+	private String partnerPayId;
+	/**
+	 * 接入模式:PC H5 APP
+	 */
+	private String accessMode;
+	/**
+	 * 用户标识
+	 */
+	private String customerId;
+	/**
+	 * 商户标识
+	 */
+	private String partnerId;
+	/**
+	 * 币种
+	 */
+	private String currency;
+	/**
+	 * 支付总金额
+	 */
+	private String totalFee;
+	/**
+	 * 支付工单状态
+	 * 0	待支付
+	 * 1	部分支付成功
+	 * 2	支付成功
+	 * 3	支付失败
+	 */
+	private String status;
+	/**
+	 * 商品信息
+	 */
+	private List<GoodsInfoRequest> goodsInfo;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java
new file mode 100644
index 0000000..c7828b8
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java
@@ -0,0 +1,19 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 17:08
+ */
+@Data
+public class GetPaymentInfoDataRequest {
+	/**
+	 * 支付单标识。传行程单ID
+	 */
+	private String partnerPayId;
+	/**
+	 * 商户号,由支付中心分配
+	 */
+	private String partnerId;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java
new file mode 100644
index 0000000..dfd62c0
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java
@@ -0,0 +1,23 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 17:03
+ */
+@Data
+public class GetPaymentInfoRequest {
+	/**
+	 * 默认传POST
+	 */
+	private String requstType;
+	/**
+	 * 默认传1
+	 */
+	private Integer busType;
+	/**
+	 * 业务参数
+	 */
+	private GetPaymentInfoDataRequest data;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetStaffNodeRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetStaffNodeRequest.java
new file mode 100644
index 0000000..aab260b
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetStaffNodeRequest.java
@@ -0,0 +1,23 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 16:42
+ */
+@Data
+public class GetStaffNodeRequest {
+	/**
+	 * 人员ID
+	 */
+	private Long empId;
+	/**
+	 * 操作人手机号
+	 */
+	private String mobile;
+	/**
+	 * 操作人企业ID
+	 */
+	private String entercode;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java
new file mode 100644
index 0000000..fa978a7
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java
@@ -0,0 +1,47 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 16:31
+ */
+@Data
+public class GetTravelItineraryListRequest {
+	/**
+	 * 场景标识。交通场景传”TRAFFIC”
+	 */
+	private String scene;
+	/**
+	 * 租户ID。地区行政编码。黔南州传522700
+	 */
+	private String partnerId;
+	/**
+	 * 业务侧订单号
+	 */
+	private String orderNo;
+	/**
+	 * 乘客ID
+	 */
+	private String customerId;
+	/**
+	 * 司机ID
+	 */
+	private String driverId;
+	/**
+	 * 推广员ID
+	 */
+	private String promoterId;
+	/**
+	 * 服务商商户ID
+	 */
+	private String supplierShopId;
+	/**
+	 * 每页条数
+	 */
+	private Integer pageSize;
+	/**
+	 * 当前页码
+	 */
+	private Integer pageNum;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfo.java
new file mode 100644
index 0000000..8776fcc
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfo.java
@@ -0,0 +1,35 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:35
+ */
+@Data
+public class GoodsInfo {
+	/**
+	 * 商户号
+	 */
+	private String merchantCode;
+	/**
+	 * 付款商户号
+	 */
+	private String custId;
+	/**
+	 * 付款方名称
+	 */
+	private String custName;
+	/**
+	 *交通场景固定值
+	 */
+	private String businessType;
+	/**
+	 * 免密支付协议号
+	 */
+	private String agreementNo;
+	/**
+	 * 分账标识。0:不分账,1:分账
+	 */
+	private String profitSharing;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java
new file mode 100644
index 0000000..b3d7f21
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java
@@ -0,0 +1,39 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:13
+ */
+@Data
+public class GoodsInfoRequest {
+	/**
+	 * 企业ID(补偿场景新创建的订单支付传备用金企业ID)
+	 */
+	private String id;
+	/**
+	 * 子商户微信appId(证联预下单支付必填)
+	 */
+	private String subAppId;
+	/**
+	 * 付款人的openId(证联预下单支付必填)
+	 */
+	private String subOpenId;
+	/**
+	 * 分账标识。0:不分账,1:分账
+	 */
+	private String profitSharing;
+	/**
+	 * 地区标识,默认传520100
+	 */
+	private String areaInfo;
+	/**
+	 * 是否匿名。默认传0
+	 */
+	private String payType;
+	/**
+	 * 业务类型,默认传10408
+	 */
+	private String businessType;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java
new file mode 100644
index 0000000..eda232f
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java
@@ -0,0 +1,27 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 16:45
+ */
+@Data
+public class ListPage<T> {
+	/**
+	 * 总条数
+	 */
+	private Integer total;
+	/**
+	 * 当前页码
+	 */
+	private Integer pageNum;
+	/**
+	 * 每页条数
+	 */
+	private Integer pageSize;
+	/**
+	 * 数据列表
+	 */
+	private T list;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java
new file mode 100644
index 0000000..9670f97
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java
@@ -0,0 +1,39 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/16 23:50
+ */
+@Data
+public class LoginWeChatXiao {
+	/**
+	 * token
+	 */
+	private String token;
+	/**
+	 * 用户UUID
+	 */
+	private String userUUID;
+	/**
+	 * 用户手机号
+	 */
+	private String mobile;
+	/**
+	 * 企业名称,无企业时为空
+	 */
+	private String enterName;
+	/**
+	 * 企业编码
+	 */
+	private String enterCode;
+	/**
+	 * 企业认证状态
+	 */
+	private String enterAuth;
+	/**
+	 * 是否是管理员,是:1;否:0
+	 */
+	private String isAdmin;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyEnterpriseInfoRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyEnterpriseInfoRequest.java
new file mode 100644
index 0000000..8f73990
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyEnterpriseInfoRequest.java
@@ -0,0 +1,75 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/9 18:13
+ */
+@Data
+public class ModifyEnterpriseInfoRequest {
+	/**
+	 * 企业编码
+	 */
+	private String enter_code;
+	/**
+	 * 操作人员手机号
+	 */
+	private String operator;
+	/**
+	 * 企业名称
+	 */
+	private String enter_name;
+	/**
+	 * 企业简称
+	 */
+	private String enter_nickname;
+	/**
+	 * 企业地址
+	 */
+	private String enter_address;
+	/**
+	 * 企业邮箱
+	 */
+	private String enter_email;
+	/**
+	 * 联系人姓名
+	 */
+	private String contact_name;
+	/**
+	 * 联系人手机号
+	 */
+	private String contact_mobile;
+	/**
+	 * 营业执照扫描件URL
+	 */
+	private String operscanpic;
+	/**
+	 * 营业期开始时间
+	 */
+	private String businessTermStartTime;
+	/**
+	 * 营业期结束时间
+	 */
+	private String businessTermEndTime;
+	/**
+	 * 区域编码
+	 */
+	private String area;
+	/**
+	 * 二级域名
+	 */
+	private String second_realms;
+	/**
+	 * 企业来源编码
+	 */
+	private String source_code;
+	/**
+	 * 店铺所属行业编码
+	 */
+	private String trade_code;
+	/**
+	 * 企业分类编码
+	 */
+	private String type_code;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyPwdRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyPwdRequest.java
new file mode 100644
index 0000000..7a04de5
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyPwdRequest.java
@@ -0,0 +1,25 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data; /**
+ * @author zhibing.pu
+ * @Date 2025/6/10 10:42
+ */
+@Data
+public class ModifyPwdRequest {
+	/**
+	 * 手机号码
+	 */
+	private String mobile;
+	/**
+	 * 旧密码
+	 */
+	private String oldPwd;
+	/**
+	 * 新密码
+	 */
+	private String newPwd;
+	/**
+	 * 验证码
+	 */
+	private String code;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java
new file mode 100644
index 0000000..f7ff87c
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java
@@ -0,0 +1,39 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 16:31
+ */
+@Data
+public class ModifyTravelItineraryRequest {
+	/**
+	 * 场景标识。交通场景传”TRAFFIC”
+	 */
+	private String scene;
+	/**
+	 * 租户ID。地区行政编码。黔南州传522700
+	 */
+	private String partnerId;
+	/**
+	 * 行程单ID
+	 */
+	private String orderId;
+	/**
+	 * 行程单状态。2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,9=已完成,10=已取消,11=改派中
+	 */
+	private Integer status;
+	/**
+	 * 司机ID
+	 */
+	private String driverId;
+	/**
+	 * 推广员ID
+	 */
+	private String promoterId;
+	/**
+	 * 服务商商户ID
+	 */
+	private String supplierShopId;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java
new file mode 100644
index 0000000..ef627a3
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java
@@ -0,0 +1,19 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 9:44
+ */
+@Data
+public class OrderInfo {
+	/**
+	 * 订单id
+	 */
+	private String orderId;
+	/**
+	 * 订单状态
+	 */
+	private String status;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderRefundNoticeRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderRefundNoticeRequest.java
new file mode 100644
index 0000000..b6aff86
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderRefundNoticeRequest.java
@@ -0,0 +1,49 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class OrderRefundNoticeRequest {
+    /**
+     * 场景标识
+     */
+    private String scene;
+    /**
+     * 订单中心订单号
+     */
+    private String orderId;
+    /**
+     * 场景应用标识。默认52270015
+     */
+    private String mhltiCenterAppId;
+    /**
+     * 退款工单标识
+     */
+    private String refundPayNum;
+    /**
+     * 退款类型  1:未发货退款 2:未破损拒收 3:破损拒收 4:部分退款 5:全部退款
+     */
+    private String refundType;
+    /**
+     * 申请退款金额
+     */
+    private BigDecimal applyRefundCharge;
+    /**
+     * 实际退款金额
+     */
+    private BigDecimal actualRefundCharge;
+    /**
+     * 退款人
+     */
+    private String refundPerson;
+    /**
+     * 退款账号
+     */
+    private String refundAccount;
+    /**
+     * 退款理由
+     */
+    private String remark;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java
new file mode 100644
index 0000000..c990caa
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java
@@ -0,0 +1,31 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:18
+ */
+@Data
+public class PayInfo {
+	/**
+	 * 证联返回码000000:请求成功
+	 */
+	private String retCode;
+	/**
+	 * 证联返回信息
+	 */
+	private String retMsg;
+	/**
+	 * true、false
+	 */
+	private String success;
+	/**
+	 * 证联返回数据
+	 */
+	private PayInfoData data;
+	/**
+	 * 签名
+	 */
+	private String sign;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java
new file mode 100644
index 0000000..24cf5e5
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java
@@ -0,0 +1,42 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:18
+ */
+@Data
+public class PayInfoData {
+	/**
+	 * 收银台链接
+	 */
+	private String redirectUrl;
+	/**
+	 * 支付流水号
+	 */
+	private String payId;
+	/**
+	 * 支付工单状态
+	 * 0	待支付
+	 * 1	部分支付成功
+	 * 2	支付成功
+	 * 3	支付失败
+	 */
+	private String status;
+	/**
+	 * 支付时间,格式:yyyy-MM-dd HH:mm:ss
+	 */
+	private String payTime;
+	/**
+	 * 扣款金额 单位分
+	 */
+	private String payFee;
+	/**
+	 * 支付信息
+	 */
+	private List<PaymentInfo> paymentInfos;
+	
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java
new file mode 100644
index 0000000..7db70c7
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java
@@ -0,0 +1,31 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:32
+ */
+@Data
+public class PaymentInfo {
+	/**
+	 * 支付模式。此场景下默认传501212(测试和生产一致)
+	 */
+	private String payModeId;
+	/**
+	 * 支付交易明细标识
+	 */
+	private String payItemId;
+	/**
+	 * 支付金额
+	 */
+	private String payFee;
+	/**
+	 * 支付状态
+	 */
+	private String status;
+	/**
+	 * 支付时间
+	 */
+	private String payTime;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java
new file mode 100644
index 0000000..5747bf2
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java
@@ -0,0 +1,27 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:32
+ */
+@Data
+public class PaymentInfoRequest {
+	/**
+	 * 支付模式。此场景下默认传501212(测试和生产一致)
+	 */
+	private String payModeId;
+	/**
+	 * 支付金额
+	 */
+	private String realFee;
+	/**
+	 *
+	 */
+	private String tradeFee;
+	/**
+	 * 账户类型 501
+	 */
+	private String accountTyp;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java
new file mode 100644
index 0000000..ee05019
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java
@@ -0,0 +1,53 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 18:29
+ */
+@Data
+public class PaymentOrderRequest {
+	/**
+	 * 场景标识。交通场景传”TRAFFIC”
+	 */
+	private String scene;
+	/**
+	 * 场景应用标识。默认52270015
+	 */
+	private String mhltiCenterAppId;
+	/**
+	 * 支付流水明细
+	 */
+	private String payItemId;
+	/**
+	 * 支付明细json串
+	 */
+	private String paymentInfo;
+	/**
+	 * 订单ID
+	 */
+	private String orderId;
+	/**
+	 * 支付金额,单位元
+	 */
+	private BigDecimal charge;
+	/**
+	 * 支付时间
+	 */
+	private String payTime;
+	/**
+	 * 支付流水号
+	 */
+	private String paymentSerialNumber;
+	/**
+	 * 付款类型,4、线上支付
+	 */
+	private Integer payType;
+	/**
+	 * 付款方式,6:微信  7:支付宝  8:银行卡 9:银联二维码 10银联购物车收银台
+	 */
+	private Integer payChannel;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java
new file mode 100644
index 0000000..801e14d
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java
@@ -0,0 +1,27 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 19:31
+ */
+@Data
+public class QYTPaymentCallback {
+	/**
+	 * 加密字符串
+	 */
+	private String sign;
+	/**
+	 * 时间戳
+	 */
+	private String timeStamp;
+	/**
+	 * 请求调用唯一标识
+	 */
+	private String messageId;
+	/**
+	 * 支付结果信息
+	 */
+	private QYTPaymentCallbackData data;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java
new file mode 100644
index 0000000..d817c71
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java
@@ -0,0 +1,45 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 19:34
+ */
+@Data
+public class QYTPaymentCallbackData {
+	/**
+	 * 业务侧行程编号
+	 */
+	private String orderNo;
+	/**
+	 * 商户单标识。行程单ID
+	 */
+	private String partnerPayId;
+	/**
+	 * 支付中心商户号
+	 */
+	private String partnerId;
+	/**
+	 * 支付工单标识
+	 */
+	private String payId;
+	/**
+	 * 支付状态。1.未支付 2已支付
+	 */
+	private String status;
+	/**
+	 * 支付时间,格式:YYYY-MM-DD HH:mm:ss
+	 */
+	private String payTime;
+	/**
+	 * 扣款总金额 单位分
+	 */
+	private String payFee;
+	/**
+	 * 支付详细信息
+	 */
+	private List<QYTPaymentInfoCallback> paymentInfos;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java
new file mode 100644
index 0000000..19c03d3
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java
@@ -0,0 +1,35 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 19:37
+ */
+@Data
+public class QYTPaymentInfoCallback {
+	/**
+	 * 支付交易明细标识
+	 */
+	private String payItemId;
+	/**
+	 * 支付模式
+	 */
+	private String payModeId;
+	/**
+	 * 支付金额,单位分
+	 */
+	private String payFee;
+	/**
+	 * 实付金额,单位分
+	 */
+	private String realFee;
+	/**
+	 * 支付状态。1.未支付 2已支付
+	 */
+	private String status;
+	/**
+	 * 支付时间,格式:YYYY-MM-DD HH:mm:ss
+	 */
+	private String payTime;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java
new file mode 100644
index 0000000..84939a7
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java
@@ -0,0 +1,33 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * 用户信息
+ * @author zhibing.pu
+ * @Date 2025/6/6 15:11
+ */
+@Data
+public class QYTUserInfo {
+	/**
+	 * 手机号码
+	 */
+	private String mobile;
+	/**
+	 * 用户昵称
+	 */
+	private String nickname;
+	/**
+	 * 小头像url
+	 */
+	private String photoUrl;
+	/**
+	 * 大头像url
+	 */
+	private String photoUrlBig;
+	/**
+	 * 企业名称
+	 */
+	private String enterName;
+	
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RefundInfoRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RefundInfoRequest.java
new file mode 100644
index 0000000..4b7ff36
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RefundInfoRequest.java
@@ -0,0 +1,19 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+@Data
+public class RefundInfoRequest {
+    /**
+     * 支付交易明细标识
+     */
+    private String payItemId;
+    /**
+     * 支付工单标识
+     */
+    private String payId;
+    /**
+     * 交易金额,单位分
+     */
+    private String tradeFee;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobile.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobile.java
new file mode 100644
index 0000000..4702ff9
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobile.java
@@ -0,0 +1,26 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data; /**
+ * @author zhibing.pu
+ * @Date 2025/6/10 11:34
+ */
+@Data
+public class RegisterViaMobile {
+	/**
+	 * 响应码
+	 * 0:成功;1:失败;2:手机号非法;3:验证码已过期;4:验证码错误;5、用户已存在;9:弱密码
+	 */
+	private String status;
+	/**
+	 * 响应描述
+	 */
+	private String desc;
+	/**
+	 * web登录密码
+	 */
+	private String password;
+	/**
+	 * 用户UUID
+	 */
+	private String onconUUID;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobileRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobileRequest.java
new file mode 100644
index 0000000..57d6638
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/RegisterViaMobileRequest.java
@@ -0,0 +1,46 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 16:59
+ */
+@Data
+public class RegisterViaMobileRequest {
+	/**
+	 * 手机号码
+	 */
+	private String mobile;
+	/**
+	 * 客户端appid
+	 */
+	private String appId;
+	/**
+	 * 用户密码
+	 */
+	private String password;
+	/**
+	 * 短信验证码
+	 */
+	private String verify_code;
+	/**
+	 * 验证码类型
+	 * 0:短信发送的验证码;1:一键获取手机号返回注册验证码;2、验证码验证成功后生成的Ticket
+	 */
+	private String verify_code_type;
+	/**
+	 * 加密类型
+	 * 第三方系统可以填写空
+	 */
+	private String encryptType;
+	/**
+	 * 用户类型
+	 * 0:普通用户
+	 */
+	private String user_type;
+	/**
+	 * 昵称
+	 */
+	private String nickname;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ResetPwdRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ResetPwdRequest.java
new file mode 100644
index 0000000..7af096c
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ResetPwdRequest.java
@@ -0,0 +1,27 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/10 10:42
+ */
+@Data
+public class ResetPwdRequest {
+	/**
+	 * 手机号码
+	 */
+	private String mobile;
+	/**
+	 * 密码
+	 */
+	private String password;
+	/**
+	 * 验证码
+	 */
+	private String code;
+	/**
+	 * 客户端appid
+	 */
+	private String appid;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNode.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNode.java
new file mode 100644
index 0000000..13dfef3
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNode.java
@@ -0,0 +1,31 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2025/6/14 14:10
+ */
+@Data
+public class SaveStaffNode {
+    /**
+     * 人员ID
+     */
+    private Long empId;
+    /**
+     * 员工名称
+     */
+    private String empName;
+    /**
+     * 员工昵称
+     */
+    private String empNickname;
+    /**
+     * 手机号
+     */
+    private String mphone;
+    /**
+     * 登录账号
+     */
+    private String loginNo;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNodeRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNodeRequest.java
new file mode 100644
index 0000000..2f7cc63
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SaveStaffNodeRequest.java
@@ -0,0 +1,63 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 16:22
+ */
+@Data
+public class SaveStaffNodeRequest {
+	/**
+	 * 操作人手机号
+	 */
+	private String mobile;
+	/**
+	 * 操作人企业ID
+	 */
+	private String entercode;
+	/**
+	 * 人员名称
+	 */
+	private String empName;
+	/**
+	 * 人员显示名
+	 */
+	private String empNickname;
+	/**
+	 * 人员账号
+	 */
+	private String loginNo;
+	/**
+	 * 人员性别
+	 */
+	private String empSex;
+	/**
+	 * 人员手机号
+	 */
+	private String mphone;
+	/**
+	 * 人员邮箱
+	 */
+	private String email;
+	/**
+	 * 员工所属部分ID
+	 */
+	private Integer deptId;
+	/**
+	 * 员工职务ID
+	 */
+	private Integer positionId;
+	/**
+	 * 员工职务名称
+	 */
+	private String positionName;
+	/**
+	 * 高管模式 1 是 0 不是
+	 */
+	private Integer superLevel;
+	/**
+	 * 隐藏号码 1 是 0 不是
+	 */
+	private Integer hideMobile;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SendSmsRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SendSmsRequest.java
new file mode 100644
index 0000000..cf44a4d
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SendSmsRequest.java
@@ -0,0 +1,33 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/2 15:41
+ */
+@Data
+public class SendSmsRequest {
+	/**
+	 * 目标地址
+	 */
+	private String destAddress;
+	/**
+	 * 模板id
+	 */
+	private String templateId;
+	/**
+	 * 参数集合
+	 */
+	private Map<String, String> templateParams;
+	/**
+	 * 模板中占位符key
+	 */
+	private String code;
+	/**
+	 * 签名SPID
+	 */
+	private String spId;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java
new file mode 100644
index 0000000..84383c5
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java
@@ -0,0 +1,91 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/6/6 16:44
+ */
+@Data
+public class StaffNodeInfo {
+	/**
+	 * 人员ID
+	 */
+	private Integer empId;
+	/**
+	 * 主要号码
+	 */
+	private String mainMphone;
+	/**
+	 * 备注
+	 */
+	private String remark;
+	/**
+	 * 企业ID
+	 */
+	private String enterNum;
+	/**
+	 * 加密企业名称
+	 */
+	private String empNameEncode;
+	/**
+	 * 人员名称
+	 */
+	private String empName;
+	/**
+	 * 人员显示名
+	 */
+	private String empNickname;
+	/**
+	 * 人员账号
+	 */
+	private String loginNo;
+	/**
+	 * 人员性别(男\女)
+	 */
+	private String empSex;
+	/**
+	 * 人员手机号
+	 */
+	private String mphone;
+	/**
+	 * 人员邮箱加密
+	 */
+	private String mainEmailEncode;
+	/**
+	 * 所属企业id
+	 */
+	private Long enterId;
+	/**
+	 * 唯一编号
+	 */
+	private String onconuuid;
+	/**
+	 * 邮箱
+	 */
+	private String email;
+	/**
+	 * 员工所属部门ID多个部门英文; 分割
+	 */
+	private Integer deptId;
+	/**
+	 * 员工职位ID
+	 */
+	private Long positionId;
+	/**
+	 * 员工职位名称
+	 */
+	private String positionName;
+	/**
+	 * 高管模式 1 是 0 不是
+	 */
+	private Integer superLevel;
+	/**
+	 * 隐藏手机号 1 是 0 否
+	 */
+	private Integer hideMobile;
+	/**
+	 * 有效状态(0=否,1=是)
+	 */
+	private String isValid;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCancelRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCancelRequest.java
new file mode 100644
index 0000000..9586188
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCancelRequest.java
@@ -0,0 +1,19 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+@Data
+public class TradeOrderCancelRequest {
+    /**
+     * 场景标识
+     */
+    private String scene;
+    /**
+     * 订单中心订单号
+     */
+    private String orderId;
+    /**
+     * 场景应用标识。默认52270015
+     */
+    private String mhltiCenterAppId;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java
new file mode 100644
index 0000000..2afc392
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java
@@ -0,0 +1,19 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:17
+ */
+@Data
+public class TradeOrderCreate {
+	/**
+	 * 订单信息
+	 */
+	private OrderInfo orderInfo;
+	/**
+	 * 支付接口调用信息
+	 */
+	private PayInfo payInfo;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java
new file mode 100644
index 0000000..1085a43
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java
@@ -0,0 +1,111 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:03
+ */
+@Data
+public class TradeOrderCreateData {
+	/**
+	 * 司机id
+	 */
+	private String treatShopId;
+	/**
+	 * 应用场景标识
+	 */
+	private String orderAppId;
+	/**
+	 * 场景标识
+	 */
+	private String scene;
+	/**
+	 * 租户ID。地区行政编码。黔南州传522700
+	 */
+	private String partnerId;
+	/**
+	 * 超时时间
+	 */
+	private String timeout;
+	/**
+	 * 结算信息json串。其中结算分账标识(profitSharing:0:不分账,1:分账)、是否推广单标识(isPromote:1、是、0、否)必传。例:{"profitSharing":"0",”isPromote”:”0”}
+	 */
+	private String field1;
+	/**
+	 * 订单总金额,单位元
+	 */
+	private BigDecimal charge;
+	/**
+	 * 订单渠道。小程序传GRJYCXWXXCX,贵人家园传GRJY
+	 */
+	private String channelSource;
+	/**
+	 * 行程单ID
+	 */
+	private String orderId;
+	/**
+	 * 业务侧订单号
+	 */
+	private String orderNo;
+	/**
+	 * 下单人ID
+	 */
+	private String customerId;
+	/**
+	 * 推广人id
+	 */
+	private String promoterId;
+	/**
+	 * 服务商商户ID(serviceType为3时必传)
+	 */
+	private String supplierShopId;
+	/**
+	 * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车,5、代驾
+	 */
+	private Integer serviceType;
+	/**
+	 * 商户号,由支付中心分配。测试环境5400004
+	 */
+	private String payPartnerId;
+	/**
+	 * 商户单标识。订单中心行程单号,每次请求请保持唯一性。
+	 */
+	private String partnerPayId;
+	/**
+	 * 币种。RMB(人民币);USD(美元)
+	 */
+	private String currency;
+	/**
+	 * 交易总金额,单位分。
+	 */
+	private String totalFee;
+	/**
+	 * 前台通知URL地址。
+	 */
+	private String retUrl;
+	/**
+	 * 用户IP
+	 */
+	private String clientIp;
+	/**
+	 * Y代表要登录,跳到标准收银台
+	 * N代表不需要登录,跳到无支付帐号收银台
+	 */
+	private String needLoginFlag;
+	/**
+	 * 支付单描述
+	 */
+	private String orderDesc;
+	/**
+	 * 接入模式:PC、H5、APP
+	 */
+	private String accessMode;
+	/**
+	 * 支付信息
+	 */
+	private List<GoodsInfoRequest> goodsInfo;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefund.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefund.java
new file mode 100644
index 0000000..8f8cc58
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefund.java
@@ -0,0 +1,15 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+@Data
+public class TradeOrderRefund {
+    /**
+     * 退款总金额
+     */
+    private String refundTotalFee;
+    /**
+     * 退款标识
+     */
+    private String refundId;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefundRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefundRequest.java
new file mode 100644
index 0000000..f171ce6
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderRefundRequest.java
@@ -0,0 +1,42 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TradeOrderRefundRequest {
+    /**
+     * 商户号,由支付中心分配。测试环境5400004,生产环境:5401007
+     */
+    private String payPartnerId;
+    /**
+     * 订单中心订单号
+     */
+    private String partnerPayId;
+    /**
+     * 支付工单标识
+     */
+    private String payId;
+    /**
+     * 退款总金额,单位为分
+     * 同一退款单多次发起退款请求时,退款金额必须一致
+     */
+    private String refundTotalFee;
+    /**
+     * 退款原因
+     */
+    private String remark;
+    /**
+     * 退款类型:
+     * RF	退款
+     * BR	部分退款(目前仅集团统一支付支持部分退款)
+     * CZ	冲正
+     */
+    private String refundType;
+    /**
+     * 支付退款单明细集合
+     */
+    private List<RefundInfoRequest> refundInfos;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java
new file mode 100644
index 0000000..c35c201
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java
@@ -0,0 +1,62 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:23
+ */
+@Data
+public class TradePayOff1Data {
+	/**
+	 * 商户号,由支付中心分配。测试环境5400004
+	 */
+	private String partnerId;
+	/**
+	 * 超时时间
+	 */
+	private String timeout;
+	/**
+	 * 场景标识。交通场景传”TRAFFIC”
+	 */
+	private String scene;
+	/**
+	 * 商户单标识。订单中心订单号,每次请求请保持唯一性。
+	 */
+	private String partnerPayId;
+	/**
+	 * 币种。RMB(人民币);USD(美元)
+	 */
+	private String currency;
+	/**
+	 * 交易总金额,单位分。
+	 */
+	private String totalFee;
+	/**
+	 * 前台通知URL地址。
+	 */
+	private String retUrl;
+	/**
+	 * 用户IP
+	 */
+	private String clientIp;
+	/**
+	 * Y代表要登录,跳到标准收银台
+	 * N代表不需要登录,跳到无支付帐号收银台
+	 */
+	private String needLoginFlag;
+	/**
+	 * 支付单描述
+	 */
+	private String orderDesc;
+	/**
+	 * 接入模式:PC、H5、APP
+	 */
+	private String accessMode;
+	/**
+	 * 商品描述信息。Json数组
+	 */
+	private List<GoodsInfoRequest> goodsInfo;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java
new file mode 100644
index 0000000..a09e932
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java
@@ -0,0 +1,66 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:23
+ */
+@Data
+public class TradePayOffData {
+	/**
+	 * 商户号,由支付中心分配。测试环境5400004
+	 */
+	private String partnerId;
+	/**
+	 * 超时时间
+	 */
+	private String timeout;
+	/**
+	 * 场景标识。交通场景传”TRAFFIC”
+	 */
+	private String scene;
+	/**
+	 * 商户单标识。订单中心订单号,每次请求请保持唯一性。
+	 */
+	private String partnerPayId;
+	/**
+	 * 币种。RMB(人民币);USD(美元)
+	 */
+	private String currency;
+	/**
+	 * 交易总金额,单位分。
+	 */
+	private String totalFee;
+	/**
+	 * 前台通知URL地址。
+	 */
+	private String retUrl;
+	/**
+	 * 用户IP
+	 */
+	private String clientIp;
+	/**
+	 * Y代表要登录,跳到标准收银台
+	 * N代表不需要登录,跳到无支付帐号收银台
+	 */
+	private String needLoginFlag;
+	/**
+	 * 支付单描述
+	 */
+	private String orderDesc;
+	/**
+	 * 接入模式:PC、H5、APP
+	 */
+	private String accessMode;
+	/**
+	 * 支付信息
+	 */
+	private List<PaymentInfoRequest> paymentInfos;
+	/**
+	 * 商品描述信息。Json数组
+	 */
+	private List<GoodsInfo> goodsInfo;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java
new file mode 100644
index 0000000..b2ce9bb
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java
@@ -0,0 +1,31 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 10:22
+ */
+@Data
+public class TradeRequest<T> {
+	/**
+	 * 场景编号.交易中心提供。测试环境:1948289607125864448
+	 */
+	private String sceneId;
+	/**
+	 * 应用编号。中台应用appKey
+	 */
+	private String appId;
+	/**
+	 * 场景版本。交易中心提供。测试环境1
+	 */
+	private Integer configVersion;
+	/**
+	 * 请求ID。每次调用唯一标识
+	 */
+	private String requestId;
+	/**
+	 * 业务数据
+	 */
+	private T data;
+}
diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java
new file mode 100644
index 0000000..27ffc26
--- /dev/null
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java
@@ -0,0 +1,64 @@
+package com.stylefeng.guns.modular.system.util.qianyuntong.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/7/24 16:48
+ */
+@Data
+public class TravelItinerary {
+	/**
+	 * 场景标识。交通场景传”TRAFFIC”
+	 */
+	private String scene;
+	/**
+	 * 租户ID。地区行政编码。黔南州传522700
+	 */
+	private String partnerId;
+	/**
+	 * 业务侧订单号
+	 */
+	private String orderNo;
+	/**
+	 * 乘客ID
+	 */
+	private String customerId;
+	/**
+	 * 司机ID
+	 */
+	private String driverId;
+	/**
+	 * 订单号
+	 */
+	private String orderId;
+	/**
+	 * 推广员ID
+	 */
+	private String promoterId;
+	/**
+	 * 服务商商户ID
+	 */
+	private String supplierShopId;
+	/**
+	 * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车
+	 */
+	private Integer serviceType;
+	/**
+	 * 订单状态。1、待支付,11、已完结(可结算)
+	 */
+	private Integer orderStatus;
+	/**
+	 * 行程单状态。2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,9=已完成,10=已取消,11=改派中
+	 */
+	private Integer status;
+	/**
+	 * 创建时间
+	 */
+	private String createTime;
+	/**
+	 * 更新时间
+	 */
+	private String updateTime;
+	
+}

--
Gitblit v1.7.1