From 7342170db7dc39326698d39b74e1858502fd574a Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 13 八月 2025 15:57:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushURL.java                                   |    4 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java                   |    2 
 UserQYTTravel/guns-admin/src/main/resources/application-dev.yml                                                                    |    1 
 ZuulQYTTravel/pom.xml                                                                                                              |   27 +
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java                                      |    7 
 ZuulQYTTravel/src/main/resources/application.yml                                                                                   |   41 -
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java                                          |    2 
 ZuulQYTTravel/src/main/resources/application-prod.yml                                                                              |   41 +
 MessagePushTravel/src/main/resources/application.yml                                                                               |   20 
 EurekaQYTTravel/src/main/resources/application.yml                                                                                 |   26 -
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java              |    7 
 EurekaQYTTravel/src/main/resources/application-dev.yml                                                                             |   26 +
 MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java                                               |   14 
 ZuulQYTTravel/src/main/resources/logback.xml                                                                                       |  222 ++++++++++
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java                         |   16 
 UserQYTTravel/guns-admin/src/main/resources/application-produce.yml                                                                |   61 +-
 DriverQYTTravel/guns-admin/src/main/resources/application-prod.yml                                                                 |   24 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java                            |   52 ++
 ManagementQYTTravel/guns-admin/src/main/resources/application-prod.yml                                                             |   24 
 UserQYTTravel/guns-admin/src/main/resources/application-test.yml                                                                   |    4 
 UserQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java                                                 |  120 -----
 ZuulQYTTravel/src/main/resources/application-dev.yml                                                                               |   41 +
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianConfig.java                     |   14 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java             |    6 
 ManagementQYTTravel/guns-admin/src/main/resources/application-dev.yml                                                              |    2 
 /dev/null                                                                                                                          |   35 -
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java |    4 
 MessagePushTravel/pom.xml                                                                                                          |   26 +
 ZuulQYTTravel/src/main/resources/application-test.yml                                                                              |   41 +
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java                           |   16 
 EurekaQYTTravel/src/main/resources/application-prod.yml                                                                            |   26 +
 EurekaQYTTravel/src/main/resources/logback.xml                                                                                     |  222 ++++++++++
 EurekaQYTTravel/pom.xml                                                                                                            |   27 +
 EurekaQYTTravel/src/main/resources/application-test.yml                                                                            |   26 +
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java                                         |    4 
 35 files changed, 883 insertions(+), 348 deletions(-)

diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
index 03ca6f1..8545db7 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
@@ -183,7 +183,7 @@
 	 * @return
 	 */
 	public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) {
-		tradePayOff1Data.setPartnerId("5400004");
+		tradePayOff1Data.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
 		tradePayOff1Data.setTimeout("72H");
 		tradePayOff1Data.setScene("TRAFFIC");
 		tradePayOff1Data.setCurrency("RMB");
@@ -200,7 +200,7 @@
 		
 		
 		TradeRequest request = new TradeRequest<TradePayOff1Data>();
-		request.setSceneId("1911676727023968256");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954795404533583872" : "1911676727023968256");
 		request.setAppId(qianYunTongConfig.getAppkey());
 		request.setConfigVersion(1);
 		request.setRequestId(UUIDUtil.getRandomCode());
@@ -391,7 +391,7 @@
 		tradeOrderCreateData.setTimeout("72H");
 		tradeOrderCreateData.setOrderAppId("52270015");
 		tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
-		tradeOrderCreateData.setPayPartnerId("5400004");
+		tradeOrderCreateData.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
 		tradeOrderCreateData.setCurrency("RMB");
 		tradeOrderCreateData.setNeedLoginFlag("N");
 		tradeOrderCreateData.setAccessMode("APP");
@@ -405,7 +405,7 @@
 		
 		
 		TradeRequest request = new TradeRequest<TradeOrderCreateData>();
-		request.setSceneId("1945688132719169536");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954793280550756352" : "1945688132719169536");
 		request.setAppId(qianYunTongConfig.getAppkey());
 		request.setConfigVersion(1);
 		request.setRequestId(UUIDUtil.getRandomCode());
@@ -457,7 +457,7 @@
 		createOrderRequest.setChannelSource("GRJYCXWXXCX");
 		
 		TradeRequest request = new TradeRequest<CreateOrderRequest>();
-		request.setSceneId("1948289607125864448");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954792737421942784" : "1948289607125864448");
 		request.setAppId(qianYunTongConfig.getAppkey());
 		request.setConfigVersion(1);
 		request.setRequestId(UUIDUtil.getRandomCode());
@@ -503,7 +503,7 @@
 	 * @return
 	 */
 	public static PayInfo tradePayOff(TradePayOffData tradePayOffData) {
-		tradePayOffData.setPartnerId("5400005");
+		tradePayOffData.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401008" : "5400005");
 		tradePayOffData.setTimeout("72H");
 		tradePayOffData.setScene("TRAFFIC");
 		tradePayOffData.setCurrency("RMB");
@@ -539,9 +539,9 @@
 		
 		
 		TradeRequest request = new TradeRequest<TradePayOffData>();
-		request.setSceneId("1774717104844095488");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954794605782913024" : "1774717104844095488");
 		request.setAppId(qianYunTongConfig.getAppkey());
-		request.setConfigVersion(2);
+		request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 2);
 		request.setRequestId(UUIDUtil.getRandomCode());
 		request.setData(tradePayOffData);
 		//请求路径
diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianConfig.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianConfig.java
index 63c1232..6122d5c 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianConfig.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianConfig.java
@@ -74,13 +74,13 @@
 		}
 		if("prod".equals(activeProfile)){
 			this.url = "https://gateway.zqpay.com";
-			this.appid = "";
-			this.merchNo = "";
-			this.encrpNo = "";
-			this.signNo = "";
-			this.cer = "";
-			this.sm2 = "";
-			this.password = "";
+			this.appid = "3e06da1751ec1626b30f7703a088f298";
+			this.merchNo = "B00000402";
+			this.encrpNo = "1342935640";
+			this.signNo = "1471742568";
+			this.cer = "/etraffic/server/1342935640.cer";
+			this.sm2 = "/etraffic/server/1342935640.sm2";
+			this.password = "31028Mky";
 		}
 		return this;
 	}
diff --git a/DriverQYTTravel/guns-admin/src/main/resources/application-prod.yml b/DriverQYTTravel/guns-admin/src/main/resources/application-prod.yml
index 38a93e3..20f894e 100644
--- a/DriverQYTTravel/guns-admin/src/main/resources/application-prod.yml
+++ b/DriverQYTTravel/guns-admin/src/main/resources/application-prod.yml
@@ -29,13 +29,13 @@
                 max-request-size: 100MB
                 max-file-size: 100MB
     redis:
-        host: 172.21.35.151
-        port: 6512
-        password: SC_cache@20#25
+        host: 10.31.1.219
+        port: 6410
+        password: Qnz_jt@20#25
         database: 0
         timeout: 1000
         cluster:
-            nodes: 172.21.35.151:6512,172.21.35.152:6512,172.21.35.153:6512,172.21.35.151:6513,172.21.35.152:6513,172.21.35.153:6513
+            nodes: 10.31.1.219:6410,10.31.1.30:6410,10.31.1.97:6411
 
 mybatis-plus:
     typeAliasesPackage: com.stylefeng.guns.modular
@@ -58,9 +58,9 @@
 
 spring:
     datasource:
-        url: jdbc:mysql://172.21.35.140:8066/traffic_scdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
-        username: traffic_scusr
-        password: QYT_sc@20#25
+        url: jdbc:mysql://10.31.9.146:8066/qnjt_ridingdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
+        username: qnjt_ridingusr
+        password: qnjtriding@Prom2025
         db-name: traffic_scdb #用来搜集数据库的所有表
         filters: wall,mergeStat
 
@@ -68,7 +68,11 @@
 spring:
     data:
         mongodb:
-            uri: mongodb://qyt_jtcx:qyt_jtcx2025@172.21.35.195:27017,172.21.35.196:27017/traveling_track
+            host: 10.31.204.66
+            port: 27009
+            username: qnjt_ridingmgdb
+            password: qnjtriding@Prom2025
+            database: qnjt_ridingmgdb
 
 ---
 
@@ -105,13 +109,13 @@
     masterSecret-dispatch: 111 #用于服务器端 API 调用时与 AppKey 配合使用达到鉴权的目的
 
 qyt:
-    socket_uri:
+    socket_uri: http://10.31.182.13:6000
 
 ---
 
 #支付回调地址
 #正式环境
-callbackPath: https://traffic.qytzt.cn/driver
+callbackPath: https://traffic.qytzt.cn/chuxing/driver
 
 ---
 #交通部推送数据功能开关
diff --git a/EurekaQYTTravel/pom.xml b/EurekaQYTTravel/pom.xml
index eff12f1..804300e 100644
--- a/EurekaQYTTravel/pom.xml
+++ b/EurekaQYTTravel/pom.xml
@@ -69,7 +69,7 @@
             </dependency>
         </dependencies>
     </dependencyManagement>
-
+    
     <build>
         <plugins>
             <plugin>
@@ -78,5 +78,28 @@
             </plugin>
         </plugins>
     </build>
-
+    
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <spring.active>dev</spring.active>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <spring.active>test</spring.active>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <spring.active>prod</spring.active>
+            </properties>
+        </profile>
+    </profiles>
 </project>
diff --git a/EurekaQYTTravel/src/main/resources/application-dev.yml b/EurekaQYTTravel/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..ea95200
--- /dev/null
+++ b/EurekaQYTTravel/src/main/resources/application-dev.yml
@@ -0,0 +1,26 @@
+server:
+  port: 8000  #服务端口号
+
+spring:
+  profiles:
+    active: dev
+  application:
+    name: eureka-center #服务名称
+  security:
+    basic:
+      enable: true #开启基于HTTP basic的认证
+    user: #配置用户的账号信息
+      name: sinata
+      password: sinata
+
+eureka:
+  instance:
+    hostname: 127.0.0.1 #注册中心地址
+  client:
+    service-url: #客户端调用地址
+      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
+    register-with-eureka: false #是否将自己注册到Eureka服务中,因为该应用本身就是注册中心,不需要再注册自己(集群的时候为true)
+    fetch-registry: false #是否从Eureka中获取注册信息,因为自己为注册中心,不会在该应用中的检索服务信息
+  server:
+    enable-self-preservation: false #禁用自我保护模式,服务不可用时及时从注册中心剔除
+    eviction-interval-timer-in-ms: 4000
diff --git a/EurekaQYTTravel/src/main/resources/application-prod.yml b/EurekaQYTTravel/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..d6e8f7d
--- /dev/null
+++ b/EurekaQYTTravel/src/main/resources/application-prod.yml
@@ -0,0 +1,26 @@
+server:
+  port: 8000  #服务端口号
+
+spring:
+  profiles:
+    active: prod
+  application:
+    name: eureka-center #服务名称
+  security:
+    basic:
+      enable: true #开启基于HTTP basic的认证
+    user: #配置用户的账号信息
+      name: sinata
+      password: sinata
+
+eureka:
+  instance:
+    hostname: 127.0.0.1 #注册中心地址
+  client:
+    service-url: #客户端调用地址
+      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
+    register-with-eureka: false #是否将自己注册到Eureka服务中,因为该应用本身就是注册中心,不需要再注册自己(集群的时候为true)
+    fetch-registry: false #是否从Eureka中获取注册信息,因为自己为注册中心,不会在该应用中的检索服务信息
+  server:
+    enable-self-preservation: false #禁用自我保护模式,服务不可用时及时从注册中心剔除
+    eviction-interval-timer-in-ms: 4000
diff --git a/EurekaQYTTravel/src/main/resources/application-test.yml b/EurekaQYTTravel/src/main/resources/application-test.yml
new file mode 100644
index 0000000..1dabfac
--- /dev/null
+++ b/EurekaQYTTravel/src/main/resources/application-test.yml
@@ -0,0 +1,26 @@
+server:
+  port: 8000  #服务端口号
+
+spring:
+  profiles:
+    active: test
+  application:
+    name: eureka-center #服务名称
+  security:
+    basic:
+      enable: true #开启基于HTTP basic的认证
+    user: #配置用户的账号信息
+      name: sinata
+      password: sinata
+
+eureka:
+  instance:
+    hostname: 127.0.0.1 #注册中心地址
+  client:
+    service-url: #客户端调用地址
+      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
+    register-with-eureka: false #是否将自己注册到Eureka服务中,因为该应用本身就是注册中心,不需要再注册自己(集群的时候为true)
+    fetch-registry: false #是否从Eureka中获取注册信息,因为自己为注册中心,不会在该应用中的检索服务信息
+  server:
+    enable-self-preservation: false #禁用自我保护模式,服务不可用时及时从注册中心剔除
+    eviction-interval-timer-in-ms: 4000
diff --git a/EurekaQYTTravel/src/main/resources/application.yml b/EurekaQYTTravel/src/main/resources/application.yml
index 657f3db..65a512b 100644
--- a/EurekaQYTTravel/src/main/resources/application.yml
+++ b/EurekaQYTTravel/src/main/resources/application.yml
@@ -1,27 +1,3 @@
-server:
-  port: 8000  #服务端口号
-
 spring:
   profiles:
-    active: dev
-#    active: prod
-  application:
-    name: eureka-center #服务名称
-  security:
-    basic:
-      enable: true #开启基于HTTP basic的认证
-    user: #配置用户的账号信息
-      name: sinata
-      password: sinata
-
-eureka:
-  instance:
-    hostname: 192.168.110.85 #注册中心地址
-  client:
-    service-url: #客户端调用地址
-      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
-    register-with-eureka: false #是否将自己注册到Eureka服务中,因为该应用本身就是注册中心,不需要再注册自己(集群的时候为true)
-    fetch-registry: false #是否从Eureka中获取注册信息,因为自己为注册中心,不会在该应用中的检索服务信息
-  server:
-    enable-self-preservation: false #禁用自我保护模式,服务不可用时及时从注册中心剔除
-    eviction-interval-timer-in-ms: 4000
+    active: "@spring.active@"
\ No newline at end of file
diff --git a/EurekaQYTTravel/src/main/resources/logback.xml b/EurekaQYTTravel/src/main/resources/logback.xml
new file mode 100644
index 0000000..c249f34
--- /dev/null
+++ b/EurekaQYTTravel/src/main/resources/logback.xml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+	<contextName>logback</contextName>
+	
+	<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
+	<property name="log.path" value="/etraffic/server/logs/eureka"/>
+	
+	<!--0. 日志格式和颜色渲染 -->
+	<!-- 彩色日志依赖的渲染类 -->
+	<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+	<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+	<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+	<!-- 彩色日志格式 -->
+	<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+	
+	<!--1. 输出到控制台-->
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+			<level>debug</level>
+		</filter>
+		<encoder>
+			<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+			<!-- 设置字符集 -->
+			<charset>UTF-8</charset>
+		</encoder>
+	</appender>
+	
+	<!--2. 输出到文档-->
+	<!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
+	<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/debug.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- 日志归档 -->
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录debug级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>debug</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.2 level为 INFO 日志,时间滚动输出  -->
+	<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/info.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- 每天日志归档路径以及格式 -->
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录info级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>info</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.3 level为 WARN 日志,时间滚动输出  -->
+	<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/warn.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录warn级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>warn</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
+	<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/error.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录ERROR级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>ERROR</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件  -->
+	<appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/all.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>DEBUG</level>
+			<onMatch>DENY</onMatch>
+			<onMismatch>ACCEPT</onMismatch>
+		</filter>
+	</appender>
+	
+	<!--
+		<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+		以及指定<appender>。<logger>仅有一个name属性,
+		一个可选的level和一个可选的addtivity属性。
+		name:用来指定受此logger约束的某一个包或者具体的某一个类。
+		level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+			  还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。
+			  如果未设置此属性,那么当前logger将会继承上级的级别。
+		addtivity:是否向上级logger传递打印信息。默认是true。
+		<logger name="org.springframework.web" level="info"/>
+		<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+	-->
+	
+	<!--
+		root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+		level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+		不能设置为INHERITED或者同义词NULL。默认是DEBUG
+		可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+	-->
+	
+	<!-- 4  最终的策略:
+				 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)-->
+	<springProfile name="dev">
+		<root level="info">
+			<appender-ref ref="CONSOLE" />
+			<appender-ref ref="DEBUG_FILE" />
+			<appender-ref ref="INFO_FILE" />
+			<appender-ref ref="WARN_FILE" />
+			<appender-ref ref="ERROR_FILE" />
+			<appender-ref ref="ALL_FILE" />
+		</root>
+		<logger name="com.stylefeng.guns.modular.system.dao" level="debug"/>
+	</springProfile>
+	
+	<springProfile name="test">
+		<root level="info">
+			<appender-ref ref="CONSOLE" />
+			<appender-ref ref="DEBUG_FILE" />
+			<appender-ref ref="INFO_FILE" />
+			<appender-ref ref="WARN_FILE" />
+			<appender-ref ref="ERROR_FILE" />
+			<appender-ref ref="ALL_FILE" />
+		</root>
+	</springProfile>
+	
+	<springProfile name="prod">
+		<root level="info">
+			<!-- 生产环境最好不配置console写文件 -->
+			<appender-ref ref="DEBUG_FILE" />
+			<appender-ref ref="INFO_FILE" />
+			<appender-ref ref="WARN_FILE" />
+			<appender-ref ref="ERROR_FILE" />
+			<appender-ref ref="ALL_FILE" />
+		</root>
+	</springProfile>
+
+</configuration>
\ No newline at end of file
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java
index 6223b17..dad0ac5 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java
@@ -206,7 +206,7 @@
             registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.loginUrl", "https://testsso1.teamshub.com/login");
             registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.validateUrl", "https://testsso1.teamshub.com/serviceValidate");
             registrationBean.addInitParameter("com.oncon.md.loginUrl", "https://testsso1.teamshub.com/sso-session/login");
-            registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.serverName", "http://192.168.110.111:8010");
+            registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.serverName", "http://127.0.0.1:8010");
         }
         if("test".equals(activeProfile)){
             registrationBean.setFilter(onconMDCasFilter);
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java
index 53eebf1..df10e22 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java
@@ -305,10 +305,10 @@
         }
         if(null == one){
             one = systemPriceCityService.selectOne(new EntityWrapper<SystemPriceCity>().eq("areaCode", systemPriceCity.getAreaCode())
-                    .eq("cityCode", systemPriceCity.getCityCode()).ne("flag", 3));
+                    .eq("cityCode", systemPriceCity.getCityCode()).isNull("provinceCode").ne("flag", 3));
             if(null == one){
                 one = systemPriceCityService.selectOne(new EntityWrapper<SystemPriceCity>().eq("areaCode", systemPriceCity.getAreaCode())
-                        .ne("flag", 3));
+                        .isNull("cityCode").isNull("provinceCode").ne("flag", 3));
                 if(null != one){
                     return new ErrorTip(500, "不能重复添加城市");
                 }
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
index f8616ef..3799d2c 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -1,6 +1,5 @@
 package com.stylefeng.guns.modular.system.controller.system;
 
-import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -96,11 +95,11 @@
 		String onconParam = edu.yale.its.tp.cas.client.Util.getOnconParam(session);
 		onconParam = new String(Base64.decodeBase64(onconParam), "UTF-8");
 		LoginUser loginUser = JSON.parseObject(onconParam, LoginUser.class);
-
+		log.info("session解析结果:" + JSON.toJSONString(loginUser));
 		//获取菜单列表
 		User user = userMapper.getByAccount(loginUser.getImUser());
 		if (null == user) {
-			logOut(request);
+			log.info("用户不存在");
 			return null;
 		}
 		ShiroUser shiroUser = shiro.shiroUser(user);
@@ -132,8 +131,6 @@
 	 */
 	@RequestMapping(value = "/logout", method = RequestMethod.GET)
 	public String logOut(HttpServletRequest request) {
-		request.getSession().invalidate();
-		HttpUtil.get("https://passport.teamshub.com/logout?logouturl=https%3A%2F%2Fsso.teamshub.com%2Flogout%3Flogoutat%3Dhttps%253A%252F%252Ftraffic.qytzt.cn%253A443%252F");
 		return REDIRECT + "/";
 	}
 	
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushURL.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushURL.java
index c075e83..1c7b67c 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushURL.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushURL.java
@@ -1,7 +1,9 @@
 package com.stylefeng.guns.modular.system.util;
 
 public class PushURL {
-    public static String zull_user_url = "https://test-qncx.sitechcloud.com";
+//    public static String zull_user_url = "http://192.168.110.85";
+//    public static String zull_user_url = "https://test-qncx.sitechcloud.com/chuxing";
+    public static String zull_user_url = "https://traffic.qytzt.cn/chuxing";
     public static String order_push_url = zull_user_url + "/driver/base/order/pushOrderState";
     public static String driver_auth_url = zull_user_url + "/driver/base/driver/sendsms";
     public static String withdraw_auth_url = zull_user_url + "/driver/base/withdrawal/withdrawalAudit";
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
index 727e0b4..2645210 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
@@ -161,7 +161,7 @@
 	public QianYunTongConfig getQianYunTongConfig() {
 		if("dev".equals(activeProfile)){
 			this.appkey = "10001104";
-			this.privateKeyPath = "C:\\Users\\Admin\\Desktop\\qyt\\private_key_test.pem";
+			this.privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem";
 			this.userName = "xiaofei";
 			this.status = "1";
 			this.setApiUrl("https://test-zhongtai.stqcloud.com:10070");
@@ -187,13 +187,13 @@
 		}
 		if("prod".equals(activeProfile)){
 			this.setAppkey("10001104");
-			this.setPrivateKeyPath("/root/server/app/key/private_key.pem");
+			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://119.4.112.68:27741/v1");
+			this.setEndPoint("http://10.30.52.45:27741/v1");
 			this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e");
 			this.setAccessKey("TYMFTFD5SIIT15DCCUD7");
 			this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z");
diff --git a/ManagementQYTTravel/guns-admin/src/main/resources/application-dev.yml b/ManagementQYTTravel/guns-admin/src/main/resources/application-dev.yml
index 602c7bb..cc216bc 100644
--- a/ManagementQYTTravel/guns-admin/src/main/resources/application-dev.yml
+++ b/ManagementQYTTravel/guns-admin/src/main/resources/application-dev.yml
@@ -56,7 +56,7 @@
 spring:
   data:
     mongodb:
-      uri: mongodb://127.0.0.1:27017/traveling_track
+      uri: mongodb://192.168.110.80:27017/traveling_track
 
 
 ---
diff --git a/ManagementQYTTravel/guns-admin/src/main/resources/application-prod.yml b/ManagementQYTTravel/guns-admin/src/main/resources/application-prod.yml
index e2ab01f..6738ab9 100644
--- a/ManagementQYTTravel/guns-admin/src/main/resources/application-prod.yml
+++ b/ManagementQYTTravel/guns-admin/src/main/resources/application-prod.yml
@@ -29,13 +29,13 @@
       max-request-size: 500MB
       max-file-size: 500MB
   redis:
-    host: 172.21.35.151
-    port: 6512
-    password: SC_cache@20#25
+    host: 10.31.1.219
+    port: 6410
+    password: Qnz_jt@20#25
     database: 0
     timeout: 1000
     cluster:
-      nodes: 172.21.35.151:6512,172.21.35.152:6512,172.21.35.153:6512,172.21.35.151:6513,172.21.35.152:6513,172.21.35.153:6513
+      nodes: 10.31.1.219:6410,10.31.1.30:6410,10.31.1.97:6410
 
 mybatis-plus:
   type-aliases-package: com.stylefeng.guns.modular
@@ -49,9 +49,9 @@
 ---
 spring:
   datasource:
-    url: jdbc:mysql://172.21.35.140:8066/traffic_scdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
-    username: traffic_scusr
-    password: QYT_sc@20#25
+    url: jdbc:mysql://10.31.9.146:8066/qnjt_ridingdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
+    username: qnjt_ridingusr
+    password: qnjtriding@Prom2025
     db-name: traffic_scdb #用来搜集数据库的所有表
     filters: wall,mergeStat
 
@@ -60,7 +60,11 @@
 spring:
   data:
     mongodb:
-      uri: mongodb://qyt_jtcx:qyt_jtcx2025@172.21.35.195:27017,172.21.35.196:27017/traveling_track
+      host: 10.31.204.66
+      port: 27009
+      username: qnjt_ridingmgdb
+      password: qnjtriding@Prom2025
+      database: qnjt_ridingmgdb
 
 
 ---
@@ -81,13 +85,11 @@
   alipayPublicKey: 1111 #应用公钥
   alipay_public_key: 1111 #支付宝公钥
 
-
-
 ---
 
 #支付回调地址
 #正式环境
-callbackPath: https://traffic.qytzt.cn
+callbackPath: https://traffic.qytzt.cn/chuxing
 
 #交通部推送数据功能开关
 pushMinistryOfTransport: false
diff --git a/MessagePushTravel/pom.xml b/MessagePushTravel/pom.xml
index 3829bb4..5579ade 100644
--- a/MessagePushTravel/pom.xml
+++ b/MessagePushTravel/pom.xml
@@ -91,5 +91,29 @@
             </plugin>
         </plugins>
     </build>
-
+    
+    
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <spring.active>dev</spring.active>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <spring.active>test</spring.active>
+            </properties>
+        </profile>
+        <profile>
+            <id>produce</id>
+            <properties>
+                <spring.active>produce</spring.active>
+            </properties>
+        </profile>
+    </profiles>
 </project>
diff --git a/MessagePushTravel/src/main/java/com/sinata/push/util/URLUtil.java b/MessagePushTravel/src/main/java/com/sinata/push/util/URLUtil.java
deleted file mode 100644
index e4f305e..0000000
--- a/MessagePushTravel/src/main/java/com/sinata/push/util/URLUtil.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.sinata.push.util;
-
-/**
- * @author zhibing.pu
- * @Date 2025/6/22 0:33
- */
-public interface URLUtil {
-	/**
-	 * 业务网关接口地址
-	 */
-	String zuul = "http://192.168.110.85:5000";
-	/**
-	 * 业务网关接口地址
-	 */
-	String aj_zuul = "http://192.168.110.106:3002";
-}
diff --git a/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java b/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java
index 97bc8f0..a4bbdfb 100644
--- a/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java
+++ b/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java
@@ -5,6 +5,7 @@
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.sinata.push.config.QYTConfig;
 import com.sinata.push.util.*;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
@@ -33,18 +34,25 @@
 	public static Hashtable<String, Hashtable<ChannelHandlerContext, String>> map = new Hashtable<String, Hashtable<ChannelHandlerContext,String>>();
 
 	public static Hashtable<String,String> table;
+	
+	public static QYTConfig qytConfig;
 
 	private RedisUtil redisUtil = SpringUtil.getObject(RedisUtil.class);
 
 
 	
 	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
-
+	
 
 	static{
 		if(table == null){
 			table = new Hashtable<>();
 		}
+	}
+	
+	
+	public static void setQytConfig(QYTConfig qytConfig) {
+		NettyServerController.qytConfig = qytConfig;
 	}
 	
 	public static boolean isdebug = false;
@@ -201,7 +209,7 @@
 								params.put("lat", String.valueOf(lat));
 								params.put("directionAngle", String.valueOf(computeAzimuth));
 								params.put("altitude", String.valueOf(altitude));
-								HttpRequest post = HttpUtil.createPost(URLUtil.zuul + "/driver-server/base/savePosition");
+								HttpRequest post = HttpUtil.createPost(qytConfig.getChuxingUrl() + "/driver-server/base/savePosition");
 								post.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE);
 								post.form(params);
 								HttpResponse execute = post.execute();
@@ -228,7 +236,7 @@
 							params.put("lat", String.valueOf(lat));
 							params.put("directionAngle", String.valueOf(computeAzimuth));
 							params.put("altitude", String.valueOf(altitude));
-							HttpRequest post = HttpUtil.createPost(URLUtil.aj_zuul + "/driver-server/base/driver/addDriverPosition");
+							HttpRequest post = HttpUtil.createPost(qytConfig.getDaijiaurl() + "/driver-server/base/driver/addDriverPosition");
 							post.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE);
 							post.form(params);
 							HttpResponse execute = post.execute();
diff --git a/MessagePushTravel/src/main/resources/application.yml b/MessagePushTravel/src/main/resources/application.yml
index 2f604d7..83e5f23 100644
--- a/MessagePushTravel/src/main/resources/application.yml
+++ b/MessagePushTravel/src/main/resources/application.yml
@@ -2,23 +2,5 @@
   port: 6000
 spring:
   profiles:
-    active: dev
-#    active: prod
-  application:
-    name: message #服务名称
-  servlet:
-    multipart:
-      max-request-size: 100MB
-      max-file-size: 100MB
-  redis:
-    host: 192.168.110.80
-    port: 6379
-    password: 123456
-#    host: 10.88.154.24
-#    port: 7560
-#    password: Idcs_B_2025rd141
-    database: 0
-    timeout: 1000
-#    cluster:
-#      nodes: 10.88.154.24:7560,10.88.154.34:7560,10.88.154.59:7560,10.88.154.98:7560,10.88.154.100:7560,10.88.154.109:7560
+    active: '@spring.active@'
 
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
index b153bdb..ce8f56f 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -2394,8 +2394,8 @@
             List<TripOrderVo> tripOrderVos = processTripOrderVos(orderList);
             String filePath = tripSheetGenerator.generatePdf(tripOrderVos);
             File attachment = new File(filePath);
-            String displayFileName = "贵人家园行程单.pdf";
-            emailUtil.sendEmailWithAttachment(tripSheet.getRecipientEmail(), "行程单", "请查收您的行程单", attachment,displayFileName);
+            String displayFileName = "贵人家园出行-行程单.pdf";
+            emailUtil.sendEmailWithAttachment(tripSheet.getRecipientEmail(), "贵人家园出行-行程单", "贵人家园出行-行程单", attachment,displayFileName);
             attachment.delete(); // 发送成功后删除临时文件
             Map<String, Object> result = new HashMap<>();
             result.put("orderNum", orderList.size());
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
index 9733c66..53a2295 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -11,6 +11,7 @@
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
 import com.stylefeng.guns.modular.system.util.WeChatUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil;
 import com.stylefeng.guns.modular.system.warpper.LoginWarpper;
 import com.stylefeng.guns.modular.system.warpper.UserInfoWarpper;
 import com.stylefeng.guns.modular.system.warpper.VerifiedWarpper;
@@ -393,6 +394,12 @@
             if(null == uid){
                 return ResultUtil.tokenErr();
             }
+            UserInfo userInfo = userInfoService.selectById(uid);
+            if(ToolUtil.isEmpty(userInfo.getOnconUUID())){
+                String onconUUIDByMobile = UserUtil.getOnconUUIDByMobile("15828353127");
+                userInfo.setOnconUUID(onconUUIDByMobile);
+                userInfoService.updateById(userInfo);
+            }
             Map<String, Object> map = userInfoService.queryUserInfo(uid);
             UserWithdrawal userWithdrawal1 = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
                     .eq("phone", map.get("phone"))
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
index 32ce768..46b87d9 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
@@ -184,7 +184,7 @@
 	 * @return
 	 */
 	public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) {
-		tradePayOff1Data.setPartnerId("5400004");
+		tradePayOff1Data.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
 		tradePayOff1Data.setTimeout("72H");
 		tradePayOff1Data.setScene("TRAFFIC");
 		tradePayOff1Data.setCurrency("RMB");
@@ -201,7 +201,7 @@
 		
 		
 		TradeRequest request = new TradeRequest<TradePayOff1Data>();
-		request.setSceneId("1911676727023968256");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954795404533583872" : "1911676727023968256");
 		request.setAppId(qianYunTongConfig.getAppkey());
 		request.setConfigVersion(1);
 		request.setRequestId(UUIDUtil.getRandomCode());
@@ -392,7 +392,7 @@
 		tradeOrderCreateData.setTimeout("72H");
 		tradeOrderCreateData.setOrderAppId("52270015");
 		tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
-		tradeOrderCreateData.setPayPartnerId("5400004");
+		tradeOrderCreateData.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
 		tradeOrderCreateData.setCurrency("RMB");
 		tradeOrderCreateData.setNeedLoginFlag("N");
 		tradeOrderCreateData.setAccessMode("APP");
@@ -406,7 +406,7 @@
 		
 		
 		TradeRequest request = new TradeRequest<TradeOrderCreateData>();
-		request.setSceneId("1945688132719169536");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954793280550756352" : "1945688132719169536");
 		request.setAppId(qianYunTongConfig.getAppkey());
 		request.setConfigVersion(1);
 		request.setRequestId(UUIDUtil.getRandomCode());
@@ -458,7 +458,7 @@
 		createOrderRequest.setChannelSource("GRJYCXWXXCX");
 		
 		TradeRequest request = new TradeRequest<CreateOrderRequest>();
-		request.setSceneId("1948289607125864448");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954792737421942784" : "1948289607125864448");
 		request.setAppId(qianYunTongConfig.getAppkey());
 		request.setConfigVersion(1);
 		request.setRequestId(UUIDUtil.getRandomCode());
@@ -504,7 +504,7 @@
 	 * @return
 	 */
 	public static PayInfo tradePayOff(TradePayOffData tradePayOffData) {
-		tradePayOffData.setPartnerId("5400005");
+		tradePayOffData.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401008" : "5400005");
 		tradePayOffData.setTimeout("72H");
 		tradePayOffData.setScene("TRAFFIC");
 		tradePayOffData.setCurrency("RMB");
@@ -540,9 +540,9 @@
 		
 		
 		TradeRequest request = new TradeRequest<TradePayOffData>();
-		request.setSceneId("1774717104844095488");
+		request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954794605782913024" : "1774717104844095488");
 		request.setAppId(qianYunTongConfig.getAppkey());
-		request.setConfigVersion(2);
+		request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 2);
 		request.setRequestId(UUIDUtil.getRandomCode());
 		request.setData(tradePayOffData);
 		//请求路径
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
index 9e33b27..3920cf6 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
@@ -186,7 +186,7 @@
 		}
 		if("prod".equals(activeProfile)){
 			this.setAppkey("10001104");
-			this.setPrivateKeyPath("/root/server/app/key/private_key.pem");
+			this.setPrivateKeyPath("/etraffic/server/private_key.pem");
 			this.setUserName("xiwang");
 			this.setStatus("1");
 			this.setApiUrl("http://jjzhongtai.stqcloud.com:10010");
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java
index 7323ba7..f686686 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java
@@ -25,10 +25,7 @@
 	private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();
 	
 	
-	public static void main(String[] args) {
-//		List<QYTUserInfo> userInfoByPhone = getUserInfoByPhone("15828353127");
-//		System.out.println(userInfoByPhone);
-	}
+	
 	
 	
 	/**
@@ -321,4 +318,51 @@
 		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/UserQYTTravel/guns-admin/src/main/resources/application-dev.yml b/UserQYTTravel/guns-admin/src/main/resources/application-dev.yml
index 57afa96..6bd3b64 100644
--- a/UserQYTTravel/guns-admin/src/main/resources/application-dev.yml
+++ b/UserQYTTravel/guns-admin/src/main/resources/application-dev.yml
@@ -15,7 +15,6 @@
     name: user-server
   profiles:
     active: dev
-  #    active: prod
   mvc:
     static-path-pattern: /static/**
     view:
diff --git a/UserQYTTravel/guns-admin/src/main/resources/application-produce.yml b/UserQYTTravel/guns-admin/src/main/resources/application-produce.yml
index a40add3..ac29254 100644
--- a/UserQYTTravel/guns-admin/src/main/resources/application-produce.yml
+++ b/UserQYTTravel/guns-admin/src/main/resources/application-produce.yml
@@ -14,8 +14,7 @@
   application:
     name: user-server
   profiles:
-    active: dev
-  #    active: prod
+    active: prod
   mvc:
     static-path-pattern: /static/**
     view:
@@ -30,18 +29,13 @@
       max-request-size: 100MB
       max-file-size: 100MB
   redis:
-    host: 192.168.110.80
-    port: 6379
-    password: 123456
+    host: 10.31.1.219
+    port: 6410
+    password: Qnz_jt@20#25
     database: 0
-  #  redis:
-  #    host: 172.21.35.151
-  #    port: 6512
-  #    password: SC_cache@20#25
-  #    database: 0
-  #    timeout: 1000
-  #    cluster:
-  #      nodes: 172.21.35.151:6512,172.21.35.152:6512,172.21.35.153:6512,172.21.35.151:6513,172.21.35.152:6513,172.21.35.153:6513
+    timeout: 1000
+    cluster:
+      nodes: 10.31.1.219:6410,10.31.1.30:6410,10.31.1.97:6411
 
 mybatis-plus:
   typeAliasesPackage: com.stylefeng.guns.modular
@@ -53,7 +47,7 @@
 eureka:
   client:
     service-url: #注册中心地址
-      defaultZone: http://sinata:sinata@192.168.110.85:8000/eureka #启用身份验证的方式连接
+      defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接
     register-with-eureka: true #在注册中心进行注册
     fetch-registry: true #从Eureka中获取注册信息。
 
@@ -66,29 +60,22 @@
 
 spring:
   datasource:
-    url: jdbc:mysql://192.168.110.80:3306/qyttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
-    username: root
-    password: 123456
-    db-name: qyttravel #用来搜集数据库的所有表
+    url: jdbc:mysql://10.31.9.146:8066/qnjt_ridingdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
+    username: qnjt_ridingusr
+    password: qnjtriding@Prom2025
+    db-name: traffic_scdb #用来搜集数据库的所有表
     filters: wall,mergeStat
-
-
-  #spring:
-  #  datasource:
-  #    url: jdbc:mysql://172.21.35.140:8066/traffic_scdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
-  #    username: traffic_scusr
-  #    password: QYT_sc@20#25
-  #    db-name: traffic_scdb #用来搜集数据库的所有表
-  #    filters: wall,mergeStat
 
 
 ---
 spring:
   data:
     mongodb:
-      uri: mongodb://192.168.110.80:27017/traveling_track
-  #      uri: mongodb://qyt_jtcx:qyt_jtcx2025@172.21.35.195:27017,172.21.35.196:27017/traveling_track
-
+      host: 10.31.204.66
+      port: 27009
+      username: qnjt_ridingmgdb
+      password: qnjtriding@Prom2025
+      database: qnjt_ridingmgdb
 
 ---
 
@@ -117,12 +104,12 @@
   appKey: 111 #
 
 qyt:
-  socket_uri: http://192.168.110.85:6000
+  socket_uri: http://10.31.182.13:6000
 ---
 
 #支付回调地址
 #正式环境
-callbackPath: https://traffic.qytzt.cn/user
+callbackPath: https://traffic.qytzt.cn/chuxing/user
 
 
 ---
@@ -133,10 +120,10 @@
 #邮件配置
 spring:
   mail:
-    host: smtp.qq.com
-    port: 465
-    username: 1721849008@qq.com
-    password: nhnbmjfdywilcbdj  # 这里是授权码,不是邮箱登录密码
+    host: smtp.163.com
+    port: 993
+    username: QYTJT001@163.com
+    password: GPaYdKdsQphDGRJd  # 这里是授权码,不是邮箱登录密码
     properties:
       mail:
         smtp:
@@ -146,4 +133,4 @@
 # pdf生成位置
 trip:
   sheet:
-    filePath: D:/qytPdf/
\ No newline at end of file
+    filePath: /etraffic/server/qytPdf/
\ No newline at end of file
diff --git a/UserQYTTravel/guns-admin/src/main/resources/application-test.yml b/UserQYTTravel/guns-admin/src/main/resources/application-test.yml
index cbedb51..45937b6 100644
--- a/UserQYTTravel/guns-admin/src/main/resources/application-test.yml
+++ b/UserQYTTravel/guns-admin/src/main/resources/application-test.yml
@@ -72,7 +72,7 @@
 spring:
   data:
     mongodb:
-      host: 10.88.204.206,10.88.204.207,10.88.204.208
+      host: 10.88.204.206
       port: 27009
       username: qn_riding_adm
       password: QN_riding@Prom2025
@@ -106,7 +106,7 @@
   appKey: 111 #
 
 qyt:
-  socket_uri: http://192.168.110.85:6000
+  socket_uri: http://10.88.188.199:6000
 ---
 
 #支付回调地址
diff --git a/UserQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java b/UserQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java
index 8fdc73c..dba4169 100644
--- a/UserQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java
+++ b/UserQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java
@@ -10,6 +10,7 @@
 //import com.stylefeng.guns.modular.system.service.IDriverService;
 //import com.stylefeng.guns.modular.system.service.IUserInfoService;
 //import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+//import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil;
 //import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
 //import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService;
 //import lombok.extern.slf4j.Slf4j;
@@ -52,122 +53,7 @@
 //
 //	@Test
 //	public void test(){
-//		OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(228);
-//		Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
-//		Company company = companyService.selectById(driver.getCompanyId());
-//		UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
-//		if(null == orderPrivateCar.getIsCreated()){
-//			//先调中台创建订单
-//			CreateOrderRequest createOrderRequest = new CreateOrderRequest();
-//			createOrderRequest.setTreatShopId(driver.getEmpId().toString());
-//			createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"" + (orderPrivateCar.getPromotion() == 2 ? 1 : 0) + "\"}");
-//			createOrderRequest.setCharge(new BigDecimal(orderPrivateCar.getOrderMoney()));
-//			createOrderRequest.setOrderNo("PR" + orderPrivateCar.getId());
-//			createOrderRequest.setOrderId(orderPrivateCar.getTravelId());
-//			createOrderRequest.setCustomerId(userInfo.getOnconUUID());
-//			OrderInfo orderInfo = OrderUtil.tradeOrderCreate(createOrderRequest);
-//			orderPrivateCar.setIsCreated(1);
-//			orderPrivateCar.setTravelId(orderInfo.getOrderId());
-//			orderPrivateCarService.updateById(orderPrivateCar);
-//		}
-//		//使用备付金进行支付订单
-//		TradePayOffData tradePayOffData = new TradePayOffData();
-//		tradePayOffData.setPartnerPayId(orderPrivateCar.getTravelId());
-//		tradePayOffData.setTotalFee(Double.valueOf(orderPrivateCar.getOrderMoney() * 100).intValue() + "");
-//		tradePayOffData.setOrderDesc("完成订单");
-//		PayInfo payInfo = OrderUtil.tradePayOff(tradePayOffData);
-//		String retCode = payInfo.getRetCode();
-//		if (!"000000".equals(retCode)) {
-//			log.error("备付金支付失败:{}", payInfo.getRetMsg());
-//			return;
-//		}
-//		PayInfoData data = payInfo.getData();
-//		String status = data.getStatus();
-//		if ("3".equals(status)) {
-//			log.error("备付金支付失败:{}", payInfo.getRetMsg());
-//			return;
-//		}
-//		if("0".equals(status)){
-//			//查询支付信息
-//			GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest();
-//			getPaymentInfoDataRequest.setPartnerPayId(orderPrivateCar.getTravelId());
-//			GetPaymentInfo getPaymentInfo = OrderUtil.paymentInfo(getPaymentInfoDataRequest);
-//			status = getPaymentInfo.getStatus();
-//		}
-//		PayInfoData payInfoData = payInfo.getData();
-//		PaymentInfo paymentInfo = payInfoData.getPaymentInfos().get(0);
-//		if(!"0".equals(status)){
-//			//支付成功,通知三方
-//			PaymentOrderRequest paymentOrderRequest = new PaymentOrderRequest();
-//			paymentOrderRequest.setPayItemId(paymentInfo.getPayItemId());
-//			paymentOrderRequest.setPaymentInfo(JSON.toJSONString(payInfoData.getPaymentInfos()));
-//			paymentOrderRequest.setOrderId(orderPrivateCar.getTravelId());
-//			paymentOrderRequest.setCharge(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()));
-//			paymentOrderRequest.setPayTime(data.getPayTime());
-//			paymentOrderRequest.setPaymentSerialNumber(payInfoData.getPayId());
-//			OrderInfo orderInfo1 = OrderUtil.paymentOrder(paymentOrderRequest);
-//
-//			//中台修改订单状态
-//			ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
-//			request1.setOrderId(orderPrivateCar.getTravelId());
-//			request1.setStatus(9);
-//			if (null != orderPrivateCar.getDriverId()) {
-//				request1.setDriverId(driver.getEmpId().toString());
-//				request1.setSupplierShopId(company.getEnterCode());
-//			}
-//			if (2 == orderPrivateCar.getPromotion()) {
-//				Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
-//				request1.setPromoterId(driver2.getEmpId().toString());
-//			}
-//			OrderUtil.modifyTravelItinerary(request1);
-//
-//			String payId = payInfo.getData().getPayId();
-//			//copy原始订单后生成追缴单
-//			OrderPrivateCar orderPrivateCar1 = new OrderPrivateCar();
-//			BeanUtils.copyProperties(orderPrivateCar, orderPrivateCar1);
-//			orderPrivateCar1.setId(null);
-//			orderPrivateCar1.setRecoveryOrder(1);
-//
-//			//修改原始订单为支付状态
-//			orderPrivateCar.setState(8);
-//			orderPrivateCar.setPayType(5);
-//			orderPrivateCar.setPayMoney(orderPrivateCar.getOrderMoney());
-//			orderPrivateCarService.updateById(orderPrivateCar);
-//			//保存追缴单
-//			orderPrivateCarService.insert(orderPrivateCar1);
-//			//添加三方支付记录
-//			try {
-//				paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderPrivateCar.getId(), 1, 3, orderPrivateCar.getOrderMoney(), payId, 2);
-//			} catch (Exception e) {
-//				throw new RuntimeException(e);
-//			}
-//
-//
-//			Driver driver1 = driverService.selectById(orderPrivateCar1.getDriverId());
-//			UserInfo userInfo1 = userInfoService.selectById(orderPrivateCar1.getUserId());
-//			Company company1 = companyService.selectById(driver1.getCompanyId());
-//			//调三方订单中心创建行程单
-//			CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
-//			request.setOrderNo("PR" + orderPrivateCar1.getId());
-//			request.setCustomerId(userInfo1.getOnconUUID());
-//			request.setDriverId(driver1.getEmpId().toString());
-//			request.setSupplierShopId(company1.getEnterCode());
-//			request.setServiceType(2);
-//			String travelItinerary = OrderUtil.createTravelItinerary(request);
-//			orderPrivateCar1.setTravelId(travelItinerary);
-//			orderPrivateCar1.setIsCreated(0);
-//			orderPrivateCarService.updateById(orderPrivateCar1);
-//			//修改订单状态为待支付
-//			ModifyTravelItineraryRequest modifyTravelItineraryRequest = new ModifyTravelItineraryRequest();
-//			modifyTravelItineraryRequest.setOrderId(orderPrivateCar1.getTravelId());
-//			modifyTravelItineraryRequest.setStatus(orderPrivateCar1.getState());
-//			modifyTravelItineraryRequest.setDriverId(driver1.getEmpId().toString());
-//			modifyTravelItineraryRequest.setSupplierShopId(company1.getEnterCode());
-//			if (2 == orderPrivateCar1.getPromotion()) {
-//				Driver driver2 = driverService.selectById(orderPrivateCar1.getPromotionDriverId());
-//				modifyTravelItineraryRequest.setPromoterId(driver2.getEmpId().toString());
-//			}
-//			OrderUtil.modifyTravelItinerary(modifyTravelItineraryRequest);
-//		}
+//		String onconUUIDByMobile = UserUtil.getOnconUUIDByMobile("15828353127");
+//		System.err.println(onconUUIDByMobile);
 //	}
 //}
diff --git a/UserQYTTravel/guns-admin/src/test/sql/test.sql b/UserQYTTravel/guns-admin/src/test/sql/test.sql
deleted file mode 100644
index 04b15ca..0000000
--- a/UserQYTTravel/guns-admin/src/test/sql/test.sql
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- Navicat Premium Data Transfer
-
- Source Server         : localhost
- Source Server Type    : MySQL
- Source Server Version : 50719
- Source Host           : localhost:3306
- Source Schema         : guns
-
- Target Server Type    : MySQL
- Target Server Version : 50719
- File Encoding         : 65001
-
- Date: 10/07/2018 14:09:19
-*/
-
-DROP DATABASE IF EXISTS guns_test;
-CREATE DATABASE IF NOT EXISTS guns_test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-
-use guns_test;
-
-SET NAMES utf8mb4;
-SET FOREIGN_KEY_CHECKS = 0;
-
--- ----------------------------
--- Table structure for test
--- ----------------------------
-DROP TABLE IF EXISTS `test`;
-CREATE TABLE `test` (
-  `aaa` int(11) NOT NULL AUTO_INCREMENT,
-  `bbb` varchar(255) DEFAULT NULL,
-  PRIMARY KEY (`aaa`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
-
-SET FOREIGN_KEY_CHECKS = 1;
diff --git a/ZuulQYTTravel/pom.xml b/ZuulQYTTravel/pom.xml
index ebe398a..f827ab2 100644
--- a/ZuulQYTTravel/pom.xml
+++ b/ZuulQYTTravel/pom.xml
@@ -66,7 +66,7 @@
             </dependency>
         </dependencies>
     </dependencyManagement>
-
+    
     <build>
         <plugins>
             <plugin>
@@ -75,5 +75,28 @@
             </plugin>
         </plugins>
     </build>
-
+    
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <spring.active>dev</spring.active>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <spring.active>test</spring.active>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <spring.active>prod</spring.active>
+            </properties>
+        </profile>
+    </profiles>
 </project>
diff --git a/ZuulQYTTravel/src/main/resources/application-dev.yml b/ZuulQYTTravel/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..7724a40
--- /dev/null
+++ b/ZuulQYTTravel/src/main/resources/application-dev.yml
@@ -0,0 +1,41 @@
+server:
+    port: 5000
+
+spring:
+    profiles:
+        active: dev
+    application:
+        name: zuul-gateway #服务名称
+
+eureka:
+    client:
+        service-url: #注册中心地址
+            defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接
+        register-with-eureka: true #在注册中心进行注册
+        fetch-registry: true #从Eureka中获取注册信息。
+
+zuul:
+    #  prefix: /api #添加URL前缀
+    sensitive-headers: #将默认过滤掉的敏感数据清除,不进行过滤("Cookie", "Set-Cookie", "Authorization")
+    routes:
+        user-server: #接口调用路由服务,名字任意取。(用户端服务)
+            path: /user/** #配置请求URL的请求规则
+            url: http://127.0.0.1:8006 #真正的微服务地址,path匹配的请求都转发到这里
+            serviceid: user-server #指定Eureka注册中心的服务id
+        driver-server: #路由司机相关请求
+            path: /driver/** #配置请求URL的请求规则
+            url: http://127.0.0.1:8007 #真正的微服务地址,path匹配的请求都转发到这里
+            serviceid: driver-server #指定Eureka注册中心的服务id
+        dispatch-server: #路由调度相关请求
+            path: /dispatch/** #配置请求URL的请求规则
+            url: http://127.0.0.1:8008 #真正的微服务地址,path匹配的请求都转发到这里
+            serviceid: dispatch-server #指定Eureka注册中心的服务id
+    #  配置zuul超时时间
+    host:
+        connect-timeout-millis: 150000
+        socket-timeout-millis: 15000
+
+# 配置ribbon超时时间
+ribbon:
+    ReadTimeout: 10000
+    ConnectTimeout: 10000
\ No newline at end of file
diff --git a/ZuulQYTTravel/src/main/resources/application-prod.yml b/ZuulQYTTravel/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..47c9c85
--- /dev/null
+++ b/ZuulQYTTravel/src/main/resources/application-prod.yml
@@ -0,0 +1,41 @@
+server:
+  port: 5000
+
+spring:
+  profiles:
+    active: prod
+  application:
+    name: zuul-gateway #服务名称
+
+eureka:
+  client:
+    service-url: #注册中心地址
+      defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接
+    register-with-eureka: true #在注册中心进行注册
+    fetch-registry: true #从Eureka中获取注册信息。
+
+zuul:
+#  prefix: /api #添加URL前缀
+  sensitive-headers: #将默认过滤掉的敏感数据清除,不进行过滤("Cookie", "Set-Cookie", "Authorization")
+  routes:
+    user-server: #接口调用路由服务,名字任意取。(用户端服务)
+      path: /user/** #配置请求URL的请求规则
+      url: http://127.0.0.1:8006 #真正的微服务地址,path匹配的请求都转发到这里
+      serviceid: user-server #指定Eureka注册中心的服务id
+    driver-server: #路由司机相关请求
+      path: /driver/** #配置请求URL的请求规则
+      url: http://127.0.0.1:8007 #真正的微服务地址,path匹配的请求都转发到这里
+      serviceid: driver-server #指定Eureka注册中心的服务id
+    dispatch-server: #路由调度相关请求
+      path: /dispatch/** #配置请求URL的请求规则
+      url: http://127.0.0.1:8008 #真正的微服务地址,path匹配的请求都转发到这里
+      serviceid: dispatch-server #指定Eureka注册中心的服务id
+  #  配置zuul超时时间
+  host:
+    connect-timeout-millis: 150000
+    socket-timeout-millis: 15000
+
+# 配置ribbon超时时间
+ribbon:
+  ReadTimeout: 10000
+  ConnectTimeout: 10000
\ No newline at end of file
diff --git a/ZuulQYTTravel/src/main/resources/application-test.yml b/ZuulQYTTravel/src/main/resources/application-test.yml
new file mode 100644
index 0000000..1de1ba3
--- /dev/null
+++ b/ZuulQYTTravel/src/main/resources/application-test.yml
@@ -0,0 +1,41 @@
+server:
+    port: 5000
+
+spring:
+    profiles:
+        active: test
+    application:
+        name: zuul-gateway #服务名称
+
+eureka:
+    client:
+        service-url: #注册中心地址
+            defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接
+        register-with-eureka: true #在注册中心进行注册
+        fetch-registry: true #从Eureka中获取注册信息。
+
+zuul:
+    #  prefix: /api #添加URL前缀
+    sensitive-headers: #将默认过滤掉的敏感数据清除,不进行过滤("Cookie", "Set-Cookie", "Authorization")
+    routes:
+        user-server: #接口调用路由服务,名字任意取。(用户端服务)
+            path: /user/** #配置请求URL的请求规则
+            url: http://127.0.0.1:8006 #真正的微服务地址,path匹配的请求都转发到这里
+            serviceid: user-server #指定Eureka注册中心的服务id
+        driver-server: #路由司机相关请求
+            path: /driver/** #配置请求URL的请求规则
+            url: http://127.0.0.1:8007 #真正的微服务地址,path匹配的请求都转发到这里
+            serviceid: driver-server #指定Eureka注册中心的服务id
+        dispatch-server: #路由调度相关请求
+            path: /dispatch/** #配置请求URL的请求规则
+            url: http://127.0.0.1:8008 #真正的微服务地址,path匹配的请求都转发到这里
+            serviceid: dispatch-server #指定Eureka注册中心的服务id
+    #  配置zuul超时时间
+    host:
+        connect-timeout-millis: 150000
+        socket-timeout-millis: 15000
+
+# 配置ribbon超时时间
+ribbon:
+    ReadTimeout: 10000
+    ConnectTimeout: 10000
\ No newline at end of file
diff --git a/ZuulQYTTravel/src/main/resources/application.yml b/ZuulQYTTravel/src/main/resources/application.yml
index 90b2a92..65a512b 100644
--- a/ZuulQYTTravel/src/main/resources/application.yml
+++ b/ZuulQYTTravel/src/main/resources/application.yml
@@ -1,42 +1,3 @@
-server:
-  port: 5000
-
 spring:
   profiles:
-    active: dev
-  #    active: prod
-  application:
-    name: zuul-gateway #服务名称
-
-eureka:
-  client:
-    service-url: #注册中心地址
-      defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接
-    register-with-eureka: true #在注册中心进行注册
-    fetch-registry: true #从Eureka中获取注册信息。
-
-zuul:
-#  prefix: /api #添加URL前缀
-  sensitive-headers: #将默认过滤掉的敏感数据清除,不进行过滤("Cookie", "Set-Cookie", "Authorization")
-  routes:
-    user-server: #接口调用路由服务,名字任意取。(用户端服务)
-      path: /user/** #配置请求URL的请求规则
-      url: http://127.0.0.1:8006 #真正的微服务地址,path匹配的请求都转发到这里
-      serviceid: user-server #指定Eureka注册中心的服务id
-    driver-server: #路由司机相关请求
-      path: /driver/** #配置请求URL的请求规则
-      url: http://127.0.0.1:8007 #真正的微服务地址,path匹配的请求都转发到这里
-      serviceid: driver-server #指定Eureka注册中心的服务id
-    dispatch-server: #路由调度相关请求
-      path: /dispatch/** #配置请求URL的请求规则
-      url: http://127.0.0.1:8008 #真正的微服务地址,path匹配的请求都转发到这里
-      serviceid: dispatch-server #指定Eureka注册中心的服务id
-  #  配置zuul超时时间
-  host:
-    connect-timeout-millis: 150000
-    socket-timeout-millis: 15000
-
-# 配置ribbon超时时间
-ribbon:
-  ReadTimeout: 10000
-  ConnectTimeout: 10000
\ No newline at end of file
+    active: "@spring.active@"
\ No newline at end of file
diff --git a/ZuulQYTTravel/src/main/resources/logback.xml b/ZuulQYTTravel/src/main/resources/logback.xml
new file mode 100644
index 0000000..64d3a40
--- /dev/null
+++ b/ZuulQYTTravel/src/main/resources/logback.xml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+	<contextName>logback</contextName>
+	
+	<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
+	<property name="log.path" value="/etraffic/server/logs/zuul"/>
+	
+	<!--0. 日志格式和颜色渲染 -->
+	<!-- 彩色日志依赖的渲染类 -->
+	<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+	<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+	<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+	<!-- 彩色日志格式 -->
+	<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+	
+	<!--1. 输出到控制台-->
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+			<level>debug</level>
+		</filter>
+		<encoder>
+			<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+			<!-- 设置字符集 -->
+			<charset>UTF-8</charset>
+		</encoder>
+	</appender>
+	
+	<!--2. 输出到文档-->
+	<!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
+	<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/debug.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- 日志归档 -->
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录debug级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>debug</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.2 level为 INFO 日志,时间滚动输出  -->
+	<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/info.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- 每天日志归档路径以及格式 -->
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录info级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>info</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.3 level为 WARN 日志,时间滚动输出  -->
+	<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/warn.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录warn级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>warn</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
+	<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/error.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档只记录ERROR级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>ERROR</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+	
+	<!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件  -->
+	<appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文档的路径及文档名 -->
+		<file>${log.path}/all.log</file>
+		<!--日志文档输出格式-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!--日志文档保留天数-->
+			<maxHistory>15</maxHistory>
+		</rollingPolicy>
+		<!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>DEBUG</level>
+			<onMatch>DENY</onMatch>
+			<onMismatch>ACCEPT</onMismatch>
+		</filter>
+	</appender>
+	
+	<!--
+		<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+		以及指定<appender>。<logger>仅有一个name属性,
+		一个可选的level和一个可选的addtivity属性。
+		name:用来指定受此logger约束的某一个包或者具体的某一个类。
+		level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+			  还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。
+			  如果未设置此属性,那么当前logger将会继承上级的级别。
+		addtivity:是否向上级logger传递打印信息。默认是true。
+		<logger name="org.springframework.web" level="info"/>
+		<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+	-->
+	
+	<!--
+		root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+		level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+		不能设置为INHERITED或者同义词NULL。默认是DEBUG
+		可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+	-->
+	
+	<!-- 4  最终的策略:
+				 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)-->
+	<springProfile name="dev">
+		<root level="info">
+			<appender-ref ref="CONSOLE" />
+			<appender-ref ref="DEBUG_FILE" />
+			<appender-ref ref="INFO_FILE" />
+			<appender-ref ref="WARN_FILE" />
+			<appender-ref ref="ERROR_FILE" />
+			<appender-ref ref="ALL_FILE" />
+		</root>
+		<logger name="com.stylefeng.guns.modular.system.dao" level="debug"/>
+	</springProfile>
+	
+	<springProfile name="test">
+		<root level="info">
+			<appender-ref ref="CONSOLE" />
+			<appender-ref ref="DEBUG_FILE" />
+			<appender-ref ref="INFO_FILE" />
+			<appender-ref ref="WARN_FILE" />
+			<appender-ref ref="ERROR_FILE" />
+			<appender-ref ref="ALL_FILE" />
+		</root>
+	</springProfile>
+	
+	<springProfile name="prod">
+		<root level="info">
+			<!-- 生产环境最好不配置console写文件 -->
+			<appender-ref ref="DEBUG_FILE" />
+			<appender-ref ref="INFO_FILE" />
+			<appender-ref ref="WARN_FILE" />
+			<appender-ref ref="ERROR_FILE" />
+			<appender-ref ref="ALL_FILE" />
+		</root>
+	</springProfile>
+
+</configuration>
\ No newline at end of file

--
Gitblit v1.7.1