新增 txw-gateway 网关模块

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
liulujian 2026-04-03 13:44:50 +08:00
parent f96d815796
commit 97d6deb769
10 changed files with 400 additions and 0 deletions

0
txw-gateway/README.md Normal file
View File

58
txw-gateway/pom.xml Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.css.ggzc</groupId>
<artifactId>ggzc-framework-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>txw-gateway</artifactId>
<groupId>com.css.txw</groupId>
<version>1.0.0-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>txw-gateway</description>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.css.ggzc</groupId>
<artifactId>ggzc-framework-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.css.ggzc</groupId>
<artifactId>ggzc-framework-starter-gateway</artifactId>
</dependency>
<!-- RPC 远程调用相关 -->
<dependency>
<groupId>com.css.ggzc</groupId>
<artifactId>ggzc-framework-starter-rpc</artifactId>
</dependency>
</dependencies>
<build>
<!-- 设置构建的 jar 包名 -->
<finalName>springboot</finalName>
<plugins>
<!-- 打包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version> <!-- 如果 spring.boot.version 版本修改,则这里也要跟着修改 -->
<executions>
<execution>
<goals>
<goal>repackage</goal> <!-- 将引入的 jar 打入其中 -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

61
txw-gateway/settings.xml Normal file
View File

@ -0,0 +1,61 @@
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--<localRepository>[本地maven库目录]</localRepository>-->
<!-- omitted xml -->
<!-- 请妥善保管好您的配置,不要随意分享给他人 -->
<servers>
<server>
<id>codingcorp-qyd_repo-mvn_public</id>
<username>coding-user</username>
<password>coding-pwd</password>
</server>
</servers>
<!-- omitted xml -->
<profiles>
<profile>
<id>Repository Proxy</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<!--必须与 settings.xml 的 id 一致-->
<id>codingcorp-qyd_repo-mvn_public</id>
<name>mvn_public</name>
<url>http://codingcorp-maven.pkg.codingstd.xc01.cloud.sat.tax/repository/qyd_repo/mvn_public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>codingcorp-qyd_repo-mvn_public</id>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>http://codingcorp-maven.pkg.codingstd.xc01.cloud.sat.tax/repository/qyd_repo/mvn_public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<mirrors>
<mirror>
<id>codingcorp-qyd_repo-mvn_public</id>
<!-- 此配置避免了本仓库制品的拉取流量被切换到腾讯云镜像源,保证您在使用镜像加速的同时可以从本仓库拉取制品 -->
<mirrorOf>central</mirrorOf>
<name>mvn_public</name>
<url>http://codingcorp-maven.pkg.codingstd.xc01.cloud.sat.tax/repository/qyd_repo/mvn_public/</url>
</mirror>
</mirrors>
</settings>

View File

@ -0,0 +1,16 @@
package com.css.txw.gateway.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
/**
* 仅开发使用正式环境不使用写在此处的配置在生产环境不会生效
*/
@SpringBootApplication
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class DevAppStarter {
public static void main(String[] args) {
SpringApplication.run(DevAppStarter.class, args);
}
}

View File

@ -0,0 +1,19 @@
spring:
main:
allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
css:
application:
version: 1.0.0
base-package: com.css.ggzc.gateway
swagger:
title: ${spring.application.name}
description: 网关服务
version: ${css.application.version}
base-package: ${css.application.base-package}
tenant: # 多租户相关配置项
enable: true
gateway:
api:
checkAccessToken: http://sso-service/sso/oauth2/token/check
# checkAccessToken: http://gateway.qydckts.tax.cn/sso/oauth2/token/check

View File

@ -0,0 +1,22 @@
--- #################### 注册中心相关配置 ####################
spring:
cloud:
nacos:
server-addr: 10.23.10.91:8848
discovery:
namespace: qyd-txw # 命名空间。这里使用 dev 开发环境
--- #################### 配置中心相关配置 ####################
spring:
cloud:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: 10.23.10.91:8848 # Nacos 服务器地址
namespace: qyd-txw # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name
file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties

View File

@ -0,0 +1,27 @@
--- #################### 注册中心相关配置 ####################
spring:
cloud:
nacos:
server-addr: 10.23.10.91:8848
username: qyddev
password: 9!1%Sw#QydNacosDev
discovery:
namespace: 0ac06fee-c2c9-4ca0-9a26-4921d553adde # 命名空间。这里使用开发环境
metadata:
version: 1.0.0-SNAPSHOT # 服务实例的版本号,可用于灰度发布
--- #################### 配置中心相关配置 ####################
spring:
cloud:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: 10.23.10.91:8848 # Nacos 服务器地址
username: qyddev
password: 9!1%Sw#QydNacosDev
namespace: 0ac06fee-c2c9-4ca0-9a26-4921d553adde # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name
file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties

View File

@ -0,0 +1,107 @@
spring:
cloud:
gateway:
x-forwarded:
prefix-enabled: false # 避免 Swagger 重复带上额外的 /ckts-api/system 前缀
routes:
- id: qyd-ckts-dlfw
uri: grayLb://qyd-ckts-dlfw
predicates:
- Path=/dlfw/**
- id: qyd-ckts-jszx
uri: grayLb://qyd-ckts-jszx
predicates:
- Path=/jszx/**
- id: qyd-ckts-mhzc
uri: grayLb://qyd-ckts-mhzc
predicates:
- Path=/mhzc/**
- id: qyd-ckts-ptgl
uri: grayLb://qyd-ckts-ptgl
predicates:
- Path=/ptgl/**
- id: qyd-ckts-sbzx
uri: grayLb://qyd-ckts-sbzx
predicates:
- Path=/sbzx/**
- id: qyd-ckts-sjcj
uri: grayLb://qyd-ckts-sjcj
predicates:
- Path=/sjcj/**
- id: qyd-ckts-sjfx
uri: grayLb://qyd-ckts-sjfx
predicates:
- Path=/sjfx/**
- id: qyd-ckts-sjjx
uri: grayLb://qyd-ckts-sjjx
predicates:
- Path=/sjjx/**
- id: qyd-ckts-sso
uri: grayLb://qyd-ckts-sso
predicates:
- Path=/sso/**
# API配置
- id: qyd-ckts-sjcj-api
uri: grayLb://qyd-ckts-sjcj
predicates:
- Path=/api/sjcj/**
filters:
- ApiGatewayFilter
- RewritePath=/api/(?<segment>.*), /$\{segment}
knife4j:
# 聚合 Swagger 文档,参考 https://doc.xiaominfo.com/docs/action/springcloud-gateway 文档
enable: true # 2.2 是否开启 Swagger 文档的 Knife4j UI 界面
setting:
language: zh_cn
gateway:
enabled: true
routes:
- name: qyd-ckts-dlfw
service-name: qyd-ckts-dlfw
url: /dlfw/v3/api-docs
- name: qyd-ckts-jszx
service-name: qyd-ckts-jszx
url: /jszx/v3/api-docs
- name: qyd-ckts-mhzc
service-name: qyd-ckts-mhzc
url: /mhzc/v3/api-docs
- name: qyd-ckts-ptgl
service-name: qyd-ckts-ptgl
url: /ptgl/v3/api-docs
- name: qyd-ckts-sbzx
service-name: qyd-ckts-sbzx
url: /sbzx/v3/api-docs
- name: qyd-ckts-sjcj
service-name: qyd-ckts-sjcj
url: /sjcj/v3/api-docs
- name: qyd-ckts-sjfx
service-name: qyd-ckts-sjfx
url: /sjfx/v3/api-docs
- name: qyd-ckts-sjjx
service-name: qyd-ckts-sjjx
url: /sjjx/v3/api-docs
- name: qyd-ckts-sso
service-name: qyd-ckts-sso
url: /sso/v3/api-docs
css:
gateway:
whitelist:
urls:
- /sso/verify/get
- /sso/auth/login
- /sso/auth/logout
- /sso/auth/refresh-token
- /oauth2/token/create
- /oauth2/token/check
- /open/oauth2/token
- /sso/auth/sendMsg #新增短信验证码发送白名单 陈鑫洋 2024/10/16
- /sso/auth/loginBySMS #新增短信验证登陆白名单 陈鑫洋 2024/10/16
- /sso/admin/auth/login #新增后台登录白名单 陈鑫洋 2024/10/17
- /sso/admin/auth/logout #新增后台登出白名单 陈鑫洋 2024/10/17
- /sso/oauth2/token
- /sso/oauth2/check-token
- /sso/oauth2/remove-token
- /api/**

View File

@ -0,0 +1,14 @@
spring:
application:
name: txw-gateway
profiles:
active: local
server:
port: 9300
servlet:
context-path: /
# 日志文件配置。注意,如果 logging.file.name 不放在 bootstrap.yaml 配置文件,而是放在 application.yaml 中,会导致出现 LOG_FILE_IS_UNDEFINED 文件
logging:
file:
name: ${user.dir}/logs/${spring.application.name}.log # 日志文件名,全路径

View File

@ -0,0 +1,76 @@
<configuration>
<!-- 引用 Spring Boot 的 logback 基础配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<conversionRule conversionWord="hhid" converterClass="com.css.ggzc.framework.common.log.LogbackPatternConverter"/>
<!-- 变量 yudao.info.base-package基础业务包 -->
<springProperty scope="context" name="css.application.base-package" source="css.application.base-package"/>
<!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level级别从左显示 5 个字符宽度,%msg日志消息%n是换行符 -->
<property name="PATTERN_DEFAULT"
value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%thread] [%hhid:%X{TRACE_ID}] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!-- 控制台 Appender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
<encoder>
<pattern>${PATTERN_DEFAULT}</pattern>
</encoder>
</appender>
<!-- 文件 Appender -->
<!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${PATTERN_DEFAULT}</pattern>
</encoder>
<!-- 日志文件名 -->
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 滚动后的日志文件名 -->
<fileNamePattern>
${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}
</fileNamePattern>
<!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
<cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}
</cleanHistoryOnStart>
<!-- 日志文件,到达多少容量,进行滚动 -->
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
<!-- 日志文件的总大小0 表示不限制 -->
<totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
<!-- 日志文件的保留天数 -->
<maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
</rollingPolicy>
</appender>
<!-- 异步写入日志,提升性能 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
<queueSize>256</queueSize>
<appender-ref ref="FILE"/>
</appender>
<!-- SkyWalking GRPC 日志收集实现日志中心。注意SkyWalking 8.4.0 版本开始支持 -->
<!-- <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>${PATTERN_DEFAULT}</pattern>
</layout>
</encoder>
</appender>-->
<!-- 本地环境 -->
<springProfile name="local,jc,nacos,oracle">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<!-- 其它环境 -->
<springProfile name="test,stage,prod,default,env">
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ASYNC"/>
</root>
</springProfile>
</configuration>