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