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); //请求路径 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; } 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 --- #交通部推送数据功能开关 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> EurekaQYTTravel/src/main/resources/application-dev.yml
New file @@ -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 EurekaQYTTravel/src/main/resources/application-prod.yml
New file @@ -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 EurekaQYTTravel/src/main/resources/application-test.yml
New file @@ -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 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@" EurekaQYTTravel/src/main/resources/logback.xml
New file @@ -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> 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); 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, "不能重复添加城市"); } 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 + "/"; } 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"; 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"); 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 --- 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 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> MessagePushTravel/src/main/java/com/sinata/push/util/URLUtil.java
File was deleted 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(); 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@' 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()); 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")) 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); //请求路径 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"); 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"); } } 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: 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/ filePath: /etraffic/server/qytPdf/ 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 --- #支付回调地址 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); // } //} UserQYTTravel/guns-admin/src/test/sql/test.sql
File was deleted 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> ZuulQYTTravel/src/main/resources/application-dev.yml
New file @@ -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 ZuulQYTTravel/src/main/resources/application-prod.yml
New file @@ -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 ZuulQYTTravel/src/main/resources/application-test.yml
New file @@ -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 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 active: "@spring.active@" ZuulQYTTravel/src/main/resources/logback.xml
New file @@ -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>