Compare commits
12 Commits
50558fdbc6
...
test
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8bb3c7762e | ||
|
|
c671b3aa1b | ||
|
|
c84844ea5b | ||
| c0816c0a3b | |||
| 1bcbaa54e0 | |||
| d8c6a32e74 | |||
| d1eadf7f5d | |||
| 8237cb774f | |||
| 7e00356b7f | |||
| e5a73e66f9 | |||
| 110f514480 | |||
| 6260b5347b |
47
README.md
Normal file
47
README.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
|
||||||
|
## 启动设置
|
||||||
|
### 金蝶Apusic应用服务器
|
||||||
|
#### 排除tomcat(已完成)
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
#### 引入金蝶Apusic应用服务器(已完成)
|
||||||
|
```xml
|
||||||
|
<!-- 金蝶Apusic应用服务器 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.apusic</groupId>
|
||||||
|
<artifactId>aams-spring-boot-starter-all</artifactId>
|
||||||
|
<version>2.4.0</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${project.basedir}/libs/aams-spring-boot-starter-all-2.4.0.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
#### 设置VM参数(授权认证)
|
||||||
|
**找到Run->Edit Configuretion->Spring Boot中的项目启动类,在右边的VM options中输入 -
|
||||||
|
Duser.dir=xxxxxxxx , xxxxxxxx 表示 license.xml 文件所在的目录;例如:D:xxx\rsks-boot\ruoyi-framework 其中D:\xxx为项目所在目录**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 奇安信国密安全密码应用中间件
|
||||||
|
#### 引入奇安信国密安全密码应用中间件(已完成)
|
||||||
|
```xml
|
||||||
|
<!-- 奇安信国密安全密码应用中间件 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.quickssl</groupId>
|
||||||
|
<artifactId>quickapi-client-java</artifactId>
|
||||||
|
<version>1.5.11-SNAPSHOT</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${project.basedir}/libs/quickapi-client-java-1.5.11-SNAPSHOT.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
@@ -125,6 +125,7 @@
|
|||||||
<version>2.5.15</version>
|
<version>2.5.15</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
|
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
|
||||||
|
<includeSystemScope>true</includeSystemScope>
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
|
|||||||
@@ -1,16 +1,78 @@
|
|||||||
# 数据源配置
|
|
||||||
|
# 项目相关配置
|
||||||
|
ruoyi:
|
||||||
|
# 名称
|
||||||
|
name: RuoYi
|
||||||
|
# 版本
|
||||||
|
version: 3.8.8
|
||||||
|
# 版权年份
|
||||||
|
copyrightYear: 2024
|
||||||
|
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
|
||||||
|
profile: D:/ruoyi/uploadPath
|
||||||
|
# 获取ip地址开关
|
||||||
|
addressEnabled: false
|
||||||
|
# 验证码类型 math 数字计算 char 字符验证
|
||||||
|
captchaType: math
|
||||||
|
|
||||||
|
# 开发环境配置
|
||||||
|
server:
|
||||||
|
# 服务器的HTTP端口,默认为8080
|
||||||
|
port: 9091
|
||||||
|
servlet:
|
||||||
|
# 应用的访问路径
|
||||||
|
context-path: /
|
||||||
|
tomcat:
|
||||||
|
# tomcat的URI编码
|
||||||
|
uri-encoding: UTF-8
|
||||||
|
# 连接数满后的排队数,默认为100
|
||||||
|
accept-count: 1000
|
||||||
|
threads:
|
||||||
|
# tomcat最大线程数,默认为200
|
||||||
|
max: 800
|
||||||
|
# Tomcat启动初始化的线程数,默认值10
|
||||||
|
min-spare: 100
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
com.ruoyi: debug
|
||||||
|
org.springframework: warn
|
||||||
|
|
||||||
|
# 用户配置
|
||||||
|
user:
|
||||||
|
password:
|
||||||
|
# 密码最大错误次数
|
||||||
|
maxRetryCount: 5
|
||||||
|
# 密码锁定时间(默认10分钟)
|
||||||
|
lockTime: 10
|
||||||
|
|
||||||
|
# Spring配置
|
||||||
spring:
|
spring:
|
||||||
|
# 资源信息
|
||||||
|
messages:
|
||||||
|
# 国际化资源文件路径
|
||||||
|
basename: i18n/messages
|
||||||
|
# 文件上传
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
# 单个文件大小
|
||||||
|
max-file-size: 10MB
|
||||||
|
# 设置总上传的文件大小
|
||||||
|
max-request-size: 20MB
|
||||||
|
# 服务模块
|
||||||
|
devtools:
|
||||||
|
restart:
|
||||||
|
# 热部署开关
|
||||||
|
enabled: true
|
||||||
datasource:
|
datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.highgo.jdbc.Driver
|
driverClassName: com.highgo.jdbc.Driver
|
||||||
druid:
|
druid:
|
||||||
# 主库数据源
|
# 主库数据源
|
||||||
master:
|
master:
|
||||||
url: jdbc:highgo://127.0.0.1:5866/highgo?useUnicode=true&characterEncoding=utf8¤tSchema=ks_db4&stringtype=unspecified
|
url: jdbc:highgo://124.243.245.42:5866/highgo?useUnicode=true&characterEncoding=utf8¤tSchema=ks_db4&stringtype=unspecified
|
||||||
#username: syssso
|
|
||||||
username: sysdba
|
username: sysdba
|
||||||
password: ZKR2024@comzkr
|
password: ZKR2024@comzkr
|
||||||
|
|
||||||
# 从库数据源
|
# 从库数据源
|
||||||
slave:
|
slave:
|
||||||
# 从数据源开关/默认关闭
|
# 从数据源开关/默认关闭
|
||||||
@@ -63,7 +125,7 @@ spring:
|
|||||||
multi-statement-allow: true
|
multi-statement-allow: true
|
||||||
redis:
|
redis:
|
||||||
# 地址
|
# 地址
|
||||||
host: 127.0.0.1
|
host: 124.243.245.42
|
||||||
# 端口,默认为6379
|
# 端口,默认为6379
|
||||||
port: 5379
|
port: 5379
|
||||||
# 数据库索引
|
# 数据库索引
|
||||||
@@ -82,15 +144,193 @@ spring:
|
|||||||
max-active: 8
|
max-active: 8
|
||||||
# #连接池最大阻塞等待时间(使用负值表示没有限制)
|
# #连接池最大阻塞等待时间(使用负值表示没有限制)
|
||||||
max-wait: -1ms
|
max-wait: -1ms
|
||||||
|
# redis 配置
|
||||||
|
# token配置
|
||||||
|
token:
|
||||||
|
# 令牌自定义标识
|
||||||
|
header: Authorization
|
||||||
|
# 令牌密钥
|
||||||
|
secret: Abc123!@#Def456$%^Ghi789&*()Jkl0+-=MnoPqrStuVwxYz987$%^654@#$321!@#ZyxWvu
|
||||||
|
# 令牌有效期(默认30分钟)
|
||||||
|
expireTime: 30
|
||||||
|
|
||||||
|
## MyBatis配置
|
||||||
|
#mybatis:
|
||||||
|
# # 搜索指定包别名
|
||||||
|
# typeAliasesPackage: com.ruoyi.**.domain
|
||||||
|
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||||
|
# mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||||
|
# # 加载全局的配置文件
|
||||||
|
# configLocation: classpath:mybatis/mybatis-config.xml
|
||||||
|
|
||||||
|
# PageHelper分页插件
|
||||||
|
pagehelper:
|
||||||
|
helperDialect: oracle
|
||||||
|
supportMethodsArguments: true
|
||||||
|
params: count=countSql
|
||||||
|
|
||||||
|
# Swagger配置
|
||||||
|
swagger:
|
||||||
|
# 是否开启swagger
|
||||||
|
enabled: true
|
||||||
|
# 请求前缀
|
||||||
|
pathMapping:
|
||||||
|
|
||||||
|
# 防止XSS攻击
|
||||||
|
xss:
|
||||||
|
# 过滤开关
|
||||||
|
enabled: true
|
||||||
|
# 排除链接(多个用逗号分隔)
|
||||||
|
excludes: /system/notice
|
||||||
|
# 匹配链接
|
||||||
|
urlPatterns: /system/*,/monitor/*,/tool/*
|
||||||
|
|
||||||
|
|
||||||
|
createSqlSessionFactory:
|
||||||
|
# 选择MyBatis配置方式,mybatis / mybatis-plus
|
||||||
|
use: mybatis-plus
|
||||||
|
|
||||||
|
# MyBatis配置
|
||||||
|
mybatis:
|
||||||
|
# 搜索指定包别名
|
||||||
|
typeAliasesPackage: com.ruoyi.**.domain
|
||||||
|
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||||
|
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||||
|
# 加载全局的配置文件
|
||||||
|
configLocation: classpath:mybatis/mybatis-config.xml
|
||||||
|
|
||||||
|
# MyBatis Plus配置
|
||||||
|
mybatis-plus:
|
||||||
|
# 搜索指定包别名
|
||||||
|
typeAliasesPackage: com.ruoyi.**.domain
|
||||||
|
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||||
|
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||||
|
# 加载全局的配置文件
|
||||||
|
configLocation: classpath:mybatis/mybatis-config.xml
|
||||||
|
global-config:
|
||||||
|
db-config:
|
||||||
|
# 标识逻辑删除的数据库字段名称
|
||||||
|
logic-delete-field: delFlag
|
||||||
|
# 表示已逻辑删除的值(默认也是如此)
|
||||||
|
logic-delete-value: 2
|
||||||
|
# 表示未逻辑删除的值(默认也是如此)
|
||||||
|
logic-not-delete-value: 0
|
||||||
|
|
||||||
|
file:
|
||||||
|
upload-dir: /data/file
|
||||||
|
|
||||||
|
ocr:
|
||||||
|
ocr_url: http://127.0.0.1:9001/ocr
|
||||||
|
ocr_mutipart: https://qd.zhaopinzao8dian.com/ocr-api/ocr
|
||||||
|
# ocr_mutipart: http://10.98.80.141:9000/ocr
|
||||||
|
ocr_llm_url: http://39.98.44.136:6016/inner-ai/aicoapi/gateway/v2/chatbot/api_run/1763386387_d4c07131-a047-4c0d-9623-7e3c3a45bd7e
|
||||||
|
ocr_llm_apiKey: NfzPnFRtogHlYCAh2hHIB7ra5EsrSQEM
|
||||||
|
|
||||||
|
cipher-security:
|
||||||
|
socket: 39.102.146.78:11028
|
||||||
|
path: /data/downloadmodel/certTest
|
||||||
|
# socket: 10.98.80.223:8443
|
||||||
|
# path: /data/downloadmodel/cert
|
||||||
|
|
||||||
|
#nginx节点健康检查
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health
|
||||||
|
|
||||||
|
#微信小程序
|
||||||
|
wx:
|
||||||
|
appid: wx4aa34488b965a331
|
||||||
|
secret: 558780ecc2750f87e556b0e5496773c9
|
||||||
|
|
||||||
|
|
||||||
# easy-es
|
# easy-es
|
||||||
easy-es:
|
easy-es:
|
||||||
enable: true
|
enable: true
|
||||||
banner: false
|
banner: false
|
||||||
address: 127.0.0.1:9200
|
address: 124.243.245.42:9200
|
||||||
global-config:
|
global-config:
|
||||||
process-index-mode: manual
|
process-index-mode: manual
|
||||||
db-config:
|
db-config:
|
||||||
refresh-policy: immediate
|
refresh-policy: immediate
|
||||||
username: elastic
|
username: elastic
|
||||||
password: zkr2024@@.com
|
password: zkr2024@@.com
|
||||||
|
|
||||||
|
#短信服务
|
||||||
|
sms:
|
||||||
|
#API密钥账号
|
||||||
|
# secretName: kszhjyrcjt
|
||||||
|
secretName: kszhjypthydx
|
||||||
|
#API密钥
|
||||||
|
# secretKey: Dwhc9c0IiHecvC5D
|
||||||
|
secretKey: asj1gze3BhG3QtaI
|
||||||
|
#短信模板ID
|
||||||
|
# templateId: 37446
|
||||||
|
templateId: 49566
|
||||||
|
|
||||||
|
#统一门户认证
|
||||||
|
oauth:
|
||||||
|
#客户端的ID
|
||||||
|
appid: 251112100000000015
|
||||||
|
#授权码
|
||||||
|
clientsecretkey: 2a44cb8d21dcf4b0777881ca11ea0d83ebea94bbe1ab1f405508db0873cdcc99
|
||||||
|
#内网
|
||||||
|
usptnw:
|
||||||
|
#获取访问令牌
|
||||||
|
nwGatewayGetTokenUrl: http://10.98.80.146/uspt/serviceAPI/getToken
|
||||||
|
#获取用户信息
|
||||||
|
nwGatewayGetUserInfoUrl: http://10.98.80.146/uspt/serviceAPI/getUserInfo
|
||||||
|
#外网
|
||||||
|
usptww:
|
||||||
|
#门户注册
|
||||||
|
wwRegisterPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/doWebRegister
|
||||||
|
#门户登录
|
||||||
|
wwTokenPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/doWebLogon
|
||||||
|
#查询用户信息
|
||||||
|
wwQueryWebUserInfo: http://10.98.80.50/uspt/webWhiteListServiceAPI/queryWebUserInfo
|
||||||
|
#查询个人信息
|
||||||
|
wwQueryWebPersonalInfoPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/queryWebPersonalInfo
|
||||||
|
#查询单位信息
|
||||||
|
wwQueryWebEnterpriseInfoPostUrl: http://10.98.80.50/uspt//webWhiteListServiceAPI/queryWebEnterpriseInfo
|
||||||
|
#用户新增接口
|
||||||
|
tyAddUserUrl: http://10.98.80.146/qxgl_backend/security/add_user
|
||||||
|
#获取当前用户有权系统列表
|
||||||
|
tyQueryUserSysListUrl: http://10.98.80.146/qxgl_backend/security/get_effective_app_list
|
||||||
|
#获取当前用户有权角色列表
|
||||||
|
tyQueryUserRoleListUrl: http://10.98.80.146/qxgl_backend/security/get_role_by_userid
|
||||||
|
#获取角色功能权限信息
|
||||||
|
tyQueryRoleInfoUrl: http://10.98.80.146/qxgl_backend/security/get_path_by_role
|
||||||
|
#获取用户详细信息
|
||||||
|
tyQueryUserInfo: http://10.98.80.146/qxgl_backend/security/get_user_by_userid
|
||||||
|
#获取机构详细信息
|
||||||
|
tyQueryUnitInfo: http://10.98.80.146/qxgl_backend/security/get_organization_by_organizationid
|
||||||
|
connect-timeout: 10
|
||||||
|
read-timeout: 30
|
||||||
|
write-timeout: 30
|
||||||
|
|
||||||
|
#浪潮
|
||||||
|
lc:
|
||||||
|
#获取人员标签
|
||||||
|
personTag: http://10.98.80.146/prod-api/dispatch/public/person/tag
|
||||||
|
|
||||||
|
#ai
|
||||||
|
chat:
|
||||||
|
baseUrl: http://192.168.133.200:8080
|
||||||
|
chatUrl: /v1/chat/completions
|
||||||
|
chatDetailUrl: /core/chat/getPaginationRecords
|
||||||
|
chatHistoryUrl: /core/chat/getHistories
|
||||||
|
updateNameUrl: /core/chat/updateHistory
|
||||||
|
stickChatUrl: /core/chat/updateHistory
|
||||||
|
delChatUrl: /core/chat/delHistory
|
||||||
|
delAllChatUrl: /core/chat/clearHistories
|
||||||
|
guestUrl: /v1/chat/completions
|
||||||
|
praiseUrl: /core/chat/feedback/updateUserFeedback
|
||||||
|
appId: 67cd49095e947ae0ca7fadd8
|
||||||
|
apiKey: fastgpt-qMl63276wPZvKAxEkW77bur0sSJpmuC6Ngg9lzyEjufLhsBAurjT55j
|
||||||
|
model: qd-job-turbo
|
||||||
|
|
||||||
|
audioText:
|
||||||
|
asr: http://192.168.133.200:8000/asr/file
|
||||||
|
#tts: http://192.168.133.200:19527/synthesize
|
||||||
|
tts: http://10.98.76.104:19528/synthesize
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
# 数据源配置
|
|
||||||
spring:
|
|
||||||
datasource:
|
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
|
||||||
driverClassName: com.highgo.jdbc.Driver
|
|
||||||
druid:
|
|
||||||
# 主库数据源
|
|
||||||
master:
|
|
||||||
url: jdbc:highgo://124.243.245.42:5866/highgo?useUnicode=true&characterEncoding=utf8¤tSchema=ks_db4&stringtype=unspecified
|
|
||||||
username: sysdba
|
|
||||||
password: ZKR2024@comzkr
|
|
||||||
# 从库数据源
|
|
||||||
slave:
|
|
||||||
# 从数据源开关/默认关闭
|
|
||||||
enabled: false
|
|
||||||
url:
|
|
||||||
username:
|
|
||||||
password:
|
|
||||||
# 初始连接数
|
|
||||||
initialSize: 10
|
|
||||||
# 最小连接池数量
|
|
||||||
minIdle: 30
|
|
||||||
# 最大连接池数量
|
|
||||||
maxActive: 50
|
|
||||||
# 配置获取连接等待超时的时间
|
|
||||||
maxWait: 60000
|
|
||||||
# 配置连接超时时间
|
|
||||||
connectTimeout: 30000
|
|
||||||
# 配置网络超时时间
|
|
||||||
socketTimeout: 60000
|
|
||||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
|
||||||
timeBetweenEvictionRunsMillis: 60000
|
|
||||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
|
||||||
minEvictableIdleTimeMillis: 300000
|
|
||||||
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
|
||||||
maxEvictableIdleTimeMillis: 900000
|
|
||||||
# 配置检测连接是否有效
|
|
||||||
validationQuery: SELECT version()
|
|
||||||
testWhileIdle: true
|
|
||||||
testOnBorrow: false
|
|
||||||
testOnReturn: false
|
|
||||||
webStatFilter:
|
|
||||||
enabled: true
|
|
||||||
statViewServlet:
|
|
||||||
enabled: true
|
|
||||||
# 设置白名单,不填则允许所有访问
|
|
||||||
allow:
|
|
||||||
url-pattern: /druid/*
|
|
||||||
# 控制台管理用户名和密码
|
|
||||||
login-username: ruoyi
|
|
||||||
login-password: 123456
|
|
||||||
filter:
|
|
||||||
stat:
|
|
||||||
enabled: true
|
|
||||||
# 慢SQL记录
|
|
||||||
log-slow-sql: true
|
|
||||||
slow-sql-millis: 1000
|
|
||||||
merge-sql: true
|
|
||||||
wall:
|
|
||||||
config:
|
|
||||||
multi-statement-allow: true
|
|
||||||
redis:
|
|
||||||
# 地址
|
|
||||||
host: 124.243.245.42
|
|
||||||
# 端口,默认为6379
|
|
||||||
port: 5379
|
|
||||||
# 数据库索引
|
|
||||||
database: 5
|
|
||||||
# 密码
|
|
||||||
password: ZKR2024@@.com
|
|
||||||
# 连接超时时间
|
|
||||||
timeout: 10s
|
|
||||||
lettuce:
|
|
||||||
pool:
|
|
||||||
# 连接池中的最小空闲连接
|
|
||||||
min-idle: 0
|
|
||||||
# 连接池中的最大空闲连接
|
|
||||||
max-idle: 8
|
|
||||||
# 连接池的最大数据库连接数
|
|
||||||
max-active: 8
|
|
||||||
# #连接池最大阻塞等待时间(使用负值表示没有限制)
|
|
||||||
max-wait: -1ms
|
|
||||||
# easy-es
|
|
||||||
easy-es:
|
|
||||||
enable: true
|
|
||||||
banner: false
|
|
||||||
address: 124.243.245.42:9200
|
|
||||||
global-config:
|
|
||||||
process-index-mode: manual
|
|
||||||
db-config:
|
|
||||||
refresh-policy: immediate
|
|
||||||
username: elastic
|
|
||||||
password: zkr2024@@.com
|
|
||||||
333
ruoyi-admin/src/main/resources/application-prod.yml
Normal file
333
ruoyi-admin/src/main/resources/application-prod.yml
Normal file
@@ -0,0 +1,333 @@
|
|||||||
|
# 项目相关配置
|
||||||
|
ruoyi:
|
||||||
|
# 名称
|
||||||
|
name: RuoYi
|
||||||
|
# 版本
|
||||||
|
version: 3.8.8
|
||||||
|
# 版权年份
|
||||||
|
copyrightYear: 2024
|
||||||
|
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
|
||||||
|
profile: D:/ruoyi/uploadPath
|
||||||
|
# 获取ip地址开关
|
||||||
|
addressEnabled: false
|
||||||
|
# 验证码类型 math 数字计算 char 字符验证
|
||||||
|
captchaType: math
|
||||||
|
|
||||||
|
# 开发环境配置
|
||||||
|
server:
|
||||||
|
# 服务器的HTTP端口,默认为8080
|
||||||
|
port: 9091
|
||||||
|
servlet:
|
||||||
|
# 应用的访问路径
|
||||||
|
context-path: /
|
||||||
|
tomcat:
|
||||||
|
# tomcat的URI编码
|
||||||
|
uri-encoding: UTF-8
|
||||||
|
# 连接数满后的排队数,默认为100
|
||||||
|
accept-count: 1000
|
||||||
|
threads:
|
||||||
|
# tomcat最大线程数,默认为200
|
||||||
|
max: 800
|
||||||
|
# Tomcat启动初始化的线程数,默认值10
|
||||||
|
min-spare: 100
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
com.ruoyi: debug
|
||||||
|
org.springframework: warn
|
||||||
|
|
||||||
|
# 用户配置
|
||||||
|
user:
|
||||||
|
password:
|
||||||
|
# 密码最大错误次数
|
||||||
|
maxRetryCount: 5
|
||||||
|
# 密码锁定时间(默认10分钟)
|
||||||
|
lockTime: 10
|
||||||
|
|
||||||
|
# Spring配置
|
||||||
|
spring:
|
||||||
|
# 资源信息
|
||||||
|
messages:
|
||||||
|
# 国际化资源文件路径
|
||||||
|
basename: i18n/messages
|
||||||
|
# 文件上传
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
# 单个文件大小
|
||||||
|
max-file-size: 10MB
|
||||||
|
# 设置总上传的文件大小
|
||||||
|
max-request-size: 20MB
|
||||||
|
# 服务模块
|
||||||
|
devtools:
|
||||||
|
restart:
|
||||||
|
# 热部署开关
|
||||||
|
enabled: true
|
||||||
|
datasource:
|
||||||
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
driverClassName: com.highgo.jdbc.Driver
|
||||||
|
druid:
|
||||||
|
# 主库数据源
|
||||||
|
master:
|
||||||
|
url: jdbc:highgo://10.98.80.230:5866/highgo?useUnicode=true&characterEncoding=utf8¤tSchema=ks_db4&stringtype=unspecified
|
||||||
|
username: sysdba
|
||||||
|
password: ZKR2026@comzkr
|
||||||
|
# 从库数据源
|
||||||
|
slave:
|
||||||
|
# 从数据源开关/默认关闭
|
||||||
|
enabled: false
|
||||||
|
url:
|
||||||
|
username:
|
||||||
|
password:
|
||||||
|
# 初始连接数
|
||||||
|
initialSize: 10
|
||||||
|
# 最小连接池数量
|
||||||
|
minIdle: 30
|
||||||
|
# 最大连接池数量
|
||||||
|
maxActive: 50
|
||||||
|
# 配置获取连接等待超时的时间
|
||||||
|
maxWait: 60000
|
||||||
|
# 配置连接超时时间
|
||||||
|
connectTimeout: 30000
|
||||||
|
# 配置网络超时时间
|
||||||
|
socketTimeout: 60000
|
||||||
|
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||||
|
timeBetweenEvictionRunsMillis: 60000
|
||||||
|
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||||
|
minEvictableIdleTimeMillis: 300000
|
||||||
|
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
||||||
|
maxEvictableIdleTimeMillis: 900000
|
||||||
|
# 配置检测连接是否有效
|
||||||
|
validationQuery: SELECT version()
|
||||||
|
testWhileIdle: true
|
||||||
|
testOnBorrow: false
|
||||||
|
testOnReturn: false
|
||||||
|
webStatFilter:
|
||||||
|
enabled: true
|
||||||
|
statViewServlet:
|
||||||
|
enabled: true
|
||||||
|
# 设置白名单,不填则允许所有访问
|
||||||
|
allow:
|
||||||
|
url-pattern: /druid/*
|
||||||
|
# 控制台管理用户名和密码
|
||||||
|
login-username: ruoyi
|
||||||
|
login-password: 123456
|
||||||
|
filter:
|
||||||
|
stat:
|
||||||
|
enabled: true
|
||||||
|
# 慢SQL记录
|
||||||
|
log-slow-sql: true
|
||||||
|
slow-sql-millis: 1000
|
||||||
|
merge-sql: true
|
||||||
|
wall:
|
||||||
|
config:
|
||||||
|
multi-statement-allow: true
|
||||||
|
redis:
|
||||||
|
# 地址
|
||||||
|
host: 10.98.80.37
|
||||||
|
# 端口,默认为6379
|
||||||
|
port: 16379
|
||||||
|
# 数据库索引
|
||||||
|
database: 5
|
||||||
|
# 密码
|
||||||
|
password: ZKR2024@@.com
|
||||||
|
# 连接超时时间
|
||||||
|
timeout: 10s
|
||||||
|
lettuce:
|
||||||
|
pool:
|
||||||
|
# 连接池中的最小空闲连接
|
||||||
|
min-idle: 0
|
||||||
|
# 连接池中的最大空闲连接
|
||||||
|
max-idle: 8
|
||||||
|
# 连接池的最大数据库连接数
|
||||||
|
max-active: 8
|
||||||
|
# #连接池最大阻塞等待时间(使用负值表示没有限制)
|
||||||
|
max-wait: -1ms
|
||||||
|
# token配置
|
||||||
|
token:
|
||||||
|
# 令牌自定义标识
|
||||||
|
header: Authorization
|
||||||
|
# 令牌密钥
|
||||||
|
secret: Abc123!@#Def456$%^Ghi789&*()Jkl0+-=MnoPqrStuVwxYz987$%^654@#$321!@#ZyxWvu
|
||||||
|
# 令牌有效期(默认30分钟)
|
||||||
|
expireTime: 30
|
||||||
|
|
||||||
|
## MyBatis配置
|
||||||
|
#mybatis:
|
||||||
|
# # 搜索指定包别名
|
||||||
|
# typeAliasesPackage: com.ruoyi.**.domain
|
||||||
|
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||||
|
# mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||||
|
# # 加载全局的配置文件
|
||||||
|
# configLocation: classpath:mybatis/mybatis-config.xml
|
||||||
|
|
||||||
|
# PageHelper分页插件
|
||||||
|
pagehelper:
|
||||||
|
helperDialect: oracle
|
||||||
|
supportMethodsArguments: true
|
||||||
|
params: count=countSql
|
||||||
|
|
||||||
|
# Swagger配置
|
||||||
|
swagger:
|
||||||
|
# 是否开启swagger
|
||||||
|
enabled: true
|
||||||
|
# 请求前缀
|
||||||
|
pathMapping:
|
||||||
|
|
||||||
|
# 防止XSS攻击
|
||||||
|
xss:
|
||||||
|
# 过滤开关
|
||||||
|
enabled: true
|
||||||
|
# 排除链接(多个用逗号分隔)
|
||||||
|
excludes: /system/notice
|
||||||
|
# 匹配链接
|
||||||
|
urlPatterns: /system/*,/monitor/*,/tool/*
|
||||||
|
|
||||||
|
|
||||||
|
createSqlSessionFactory:
|
||||||
|
# 选择MyBatis配置方式,mybatis / mybatis-plus
|
||||||
|
use: mybatis-plus
|
||||||
|
|
||||||
|
# MyBatis配置
|
||||||
|
mybatis:
|
||||||
|
# 搜索指定包别名
|
||||||
|
typeAliasesPackage: com.ruoyi.**.domain
|
||||||
|
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||||
|
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||||
|
# 加载全局的配置文件
|
||||||
|
configLocation: classpath:mybatis/mybatis-config.xml
|
||||||
|
|
||||||
|
# MyBatis Plus配置
|
||||||
|
mybatis-plus:
|
||||||
|
# 搜索指定包别名
|
||||||
|
typeAliasesPackage: com.ruoyi.**.domain
|
||||||
|
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||||
|
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||||
|
# 加载全局的配置文件
|
||||||
|
configLocation: classpath:mybatis/mybatis-config.xml
|
||||||
|
global-config:
|
||||||
|
db-config:
|
||||||
|
# 标识逻辑删除的数据库字段名称
|
||||||
|
logic-delete-field: delFlag
|
||||||
|
# 表示已逻辑删除的值(默认也是如此)
|
||||||
|
logic-delete-value: 2
|
||||||
|
# 表示未逻辑删除的值(默认也是如此)
|
||||||
|
logic-not-delete-value: 0
|
||||||
|
|
||||||
|
file:
|
||||||
|
upload-dir: /data/file
|
||||||
|
|
||||||
|
ocr:
|
||||||
|
ocr_url: http://127.0.0.1:9001/ocr
|
||||||
|
ocr_mutipart: https://qd.zhaopinzao8dian.com/ocr-api/ocr
|
||||||
|
# ocr_mutipart: http://10.98.80.141:9000/ocr
|
||||||
|
ocr_llm_url: http://39.98.44.136:6016/inner-ai/aicoapi/gateway/v2/chatbot/api_run/1763386387_d4c07131-a047-4c0d-9623-7e3c3a45bd7e
|
||||||
|
ocr_llm_apiKey: NfzPnFRtogHlYCAh2hHIB7ra5EsrSQEM
|
||||||
|
|
||||||
|
cipher-security:
|
||||||
|
socket: 39.102.146.78:11028
|
||||||
|
path: /data/downloadmodel/certTest
|
||||||
|
# socket: 10.98.80.223:8443
|
||||||
|
# path: /data/downloadmodel/cert
|
||||||
|
|
||||||
|
#nginx节点健康检查
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health
|
||||||
|
|
||||||
|
#微信小程序
|
||||||
|
wx:
|
||||||
|
appid: wx4aa34488b965a331
|
||||||
|
secret: 558780ecc2750f87e556b0e5496773c9
|
||||||
|
|
||||||
|
# easy-es
|
||||||
|
easy-es:
|
||||||
|
enable: true
|
||||||
|
banner: false
|
||||||
|
address: 10.98.80.37:19200
|
||||||
|
global-config:
|
||||||
|
process-index-mode: manual
|
||||||
|
db-config:
|
||||||
|
refresh-policy: immediate
|
||||||
|
username: elastic
|
||||||
|
password: zkr2024@@.com
|
||||||
|
|
||||||
|
#短信服务
|
||||||
|
sms:
|
||||||
|
#API密钥账号
|
||||||
|
# secretName: kszhjyrcjt
|
||||||
|
secretName: kszhjypthydx
|
||||||
|
#API密钥
|
||||||
|
# secretKey: Dwhc9c0IiHecvC5D
|
||||||
|
secretKey: asj1gze3BhG3QtaI
|
||||||
|
#短信模板ID
|
||||||
|
# templateId: 37446
|
||||||
|
templateId: 49566
|
||||||
|
|
||||||
|
#统一门户认证
|
||||||
|
oauth:
|
||||||
|
#客户端的ID
|
||||||
|
appid: 251112100000000015
|
||||||
|
#授权码
|
||||||
|
clientsecretkey: 2a44cb8d21dcf4b0777881ca11ea0d83ebea94bbe1ab1f405508db0873cdcc99
|
||||||
|
#内网
|
||||||
|
usptnw:
|
||||||
|
#获取访问令牌
|
||||||
|
nwGatewayGetTokenUrl: http://10.98.80.146/uspt/serviceAPI/getToken
|
||||||
|
#获取用户信息
|
||||||
|
nwGatewayGetUserInfoUrl: http://10.98.80.146/uspt/serviceAPI/getUserInfo
|
||||||
|
#外网
|
||||||
|
usptww:
|
||||||
|
#门户注册
|
||||||
|
wwRegisterPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/doWebRegister
|
||||||
|
#门户登录
|
||||||
|
wwTokenPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/doWebLogon
|
||||||
|
#查询用户信息
|
||||||
|
wwQueryWebUserInfo: http://10.98.80.50/uspt/webWhiteListServiceAPI/queryWebUserInfo
|
||||||
|
#查询个人信息
|
||||||
|
wwQueryWebPersonalInfoPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/queryWebPersonalInfo
|
||||||
|
#查询单位信息
|
||||||
|
wwQueryWebEnterpriseInfoPostUrl: http://10.98.80.50/uspt//webWhiteListServiceAPI/queryWebEnterpriseInfo
|
||||||
|
#用户新增接口
|
||||||
|
tyAddUserUrl: http://10.98.80.146/qxgl_backend/security/add_user
|
||||||
|
#获取当前用户有权系统列表
|
||||||
|
tyQueryUserSysListUrl: http://10.98.80.146/qxgl_backend/security/get_effective_app_list
|
||||||
|
#获取当前用户有权角色列表
|
||||||
|
tyQueryUserRoleListUrl: http://10.98.80.146/qxgl_backend/security/get_role_by_userid
|
||||||
|
#获取角色功能权限信息
|
||||||
|
tyQueryRoleInfoUrl: http://10.98.80.146/qxgl_backend/security/get_path_by_role
|
||||||
|
#获取用户详细信息
|
||||||
|
tyQueryUserInfo: http://10.98.80.146/qxgl_backend/security/get_user_by_userid
|
||||||
|
#获取机构详细信息
|
||||||
|
tyQueryUnitInfo: http://10.98.80.146/qxgl_backend/security/get_organization_by_organizationid
|
||||||
|
connect-timeout: 10
|
||||||
|
read-timeout: 30
|
||||||
|
write-timeout: 30
|
||||||
|
|
||||||
|
#浪潮
|
||||||
|
lc:
|
||||||
|
#获取人员标签
|
||||||
|
personTag: http://10.98.80.146/prod-api/dispatch/public/person/tag
|
||||||
|
|
||||||
|
#ai
|
||||||
|
chat:
|
||||||
|
baseUrl: http://192.168.133.200:8080
|
||||||
|
chatUrl: /v1/chat/completions
|
||||||
|
chatDetailUrl: /core/chat/getPaginationRecords
|
||||||
|
chatHistoryUrl: /core/chat/getHistories
|
||||||
|
updateNameUrl: /core/chat/updateHistory
|
||||||
|
stickChatUrl: /core/chat/updateHistory
|
||||||
|
delChatUrl: /core/chat/delHistory
|
||||||
|
delAllChatUrl: /core/chat/clearHistories
|
||||||
|
guestUrl: /v1/chat/completions
|
||||||
|
praiseUrl: /core/chat/feedback/updateUserFeedback
|
||||||
|
appId: 67cd49095e947ae0ca7fadd8
|
||||||
|
apiKey: fastgpt-qMl63276wPZvKAxEkW77bur0sSJpmuC6Ngg9lzyEjufLhsBAurjT55j
|
||||||
|
model: qd-job-turbo
|
||||||
|
|
||||||
|
audioText:
|
||||||
|
asr: http://192.168.133.200:8000/asr/file
|
||||||
|
#tts: http://192.168.133.200:19527/synthesize
|
||||||
|
tts: http://10.98.76.104:19528/synthesize
|
||||||
@@ -1,244 +1,3 @@
|
|||||||
# 项目相关配置
|
|
||||||
ruoyi:
|
|
||||||
# 名称
|
|
||||||
name: RuoYi
|
|
||||||
# 版本
|
|
||||||
version: 3.8.8
|
|
||||||
# 版权年份
|
|
||||||
copyrightYear: 2024
|
|
||||||
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
|
|
||||||
profile: D:/ruoyi/uploadPath
|
|
||||||
# 获取ip地址开关
|
|
||||||
addressEnabled: false
|
|
||||||
# 验证码类型 math 数字计算 char 字符验证
|
|
||||||
captchaType: math
|
|
||||||
|
|
||||||
# 开发环境配置
|
|
||||||
server:
|
|
||||||
# 服务器的HTTP端口,默认为8080
|
|
||||||
port: 9091
|
|
||||||
servlet:
|
|
||||||
# 应用的访问路径
|
|
||||||
context-path: /
|
|
||||||
tomcat:
|
|
||||||
# tomcat的URI编码
|
|
||||||
uri-encoding: UTF-8
|
|
||||||
# 连接数满后的排队数,默认为100
|
|
||||||
accept-count: 1000
|
|
||||||
threads:
|
|
||||||
# tomcat最大线程数,默认为200
|
|
||||||
max: 800
|
|
||||||
# Tomcat启动初始化的线程数,默认值10
|
|
||||||
min-spare: 100
|
|
||||||
|
|
||||||
# 日志配置
|
|
||||||
logging:
|
|
||||||
level:
|
|
||||||
com.ruoyi: debug
|
|
||||||
org.springframework: warn
|
|
||||||
|
|
||||||
# 用户配置
|
|
||||||
user:
|
|
||||||
password:
|
|
||||||
# 密码最大错误次数
|
|
||||||
maxRetryCount: 5
|
|
||||||
# 密码锁定时间(默认10分钟)
|
|
||||||
lockTime: 10
|
|
||||||
|
|
||||||
# Spring配置
|
|
||||||
spring:
|
spring:
|
||||||
# 资源信息
|
|
||||||
messages:
|
|
||||||
# 国际化资源文件路径
|
|
||||||
basename: i18n/messages
|
|
||||||
profiles:
|
profiles:
|
||||||
active: local
|
active: dev
|
||||||
# 文件上传
|
|
||||||
servlet:
|
|
||||||
multipart:
|
|
||||||
# 单个文件大小
|
|
||||||
max-file-size: 10MB
|
|
||||||
# 设置总上传的文件大小
|
|
||||||
max-request-size: 20MB
|
|
||||||
# 服务模块
|
|
||||||
devtools:
|
|
||||||
restart:
|
|
||||||
# 热部署开关
|
|
||||||
enabled: true
|
|
||||||
# redis 配置
|
|
||||||
# token配置
|
|
||||||
token:
|
|
||||||
# 令牌自定义标识
|
|
||||||
header: Authorization
|
|
||||||
# 令牌密钥
|
|
||||||
secret: Abc123!@#Def456$%^Ghi789&*()Jkl0+-=MnoPqrStuVwxYz987$%^654@#$321!@#ZyxWvu
|
|
||||||
# 令牌有效期(默认30分钟)
|
|
||||||
expireTime: 30
|
|
||||||
|
|
||||||
## MyBatis配置
|
|
||||||
#mybatis:
|
|
||||||
# # 搜索指定包别名
|
|
||||||
# typeAliasesPackage: com.ruoyi.**.domain
|
|
||||||
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
|
|
||||||
# mapperLocations: classpath*:mapper/**/*Mapper.xml
|
|
||||||
# # 加载全局的配置文件
|
|
||||||
# configLocation: classpath:mybatis/mybatis-config.xml
|
|
||||||
|
|
||||||
# PageHelper分页插件
|
|
||||||
pagehelper:
|
|
||||||
helperDialect: oracle
|
|
||||||
supportMethodsArguments: true
|
|
||||||
params: count=countSql
|
|
||||||
|
|
||||||
# Swagger配置
|
|
||||||
swagger:
|
|
||||||
# 是否开启swagger
|
|
||||||
enabled: true
|
|
||||||
# 请求前缀
|
|
||||||
pathMapping:
|
|
||||||
|
|
||||||
# 防止XSS攻击
|
|
||||||
xss:
|
|
||||||
# 过滤开关
|
|
||||||
enabled: true
|
|
||||||
# 排除链接(多个用逗号分隔)
|
|
||||||
excludes: /system/notice
|
|
||||||
# 匹配链接
|
|
||||||
urlPatterns: /system/*,/monitor/*,/tool/*
|
|
||||||
|
|
||||||
|
|
||||||
createSqlSessionFactory:
|
|
||||||
# 选择MyBatis配置方式,mybatis / mybatis-plus
|
|
||||||
use: mybatis-plus
|
|
||||||
|
|
||||||
# MyBatis配置
|
|
||||||
mybatis:
|
|
||||||
# 搜索指定包别名
|
|
||||||
typeAliasesPackage: com.ruoyi.**.domain
|
|
||||||
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
|
||||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
|
||||||
# 加载全局的配置文件
|
|
||||||
configLocation: classpath:mybatis/mybatis-config.xml
|
|
||||||
|
|
||||||
# MyBatis Plus配置
|
|
||||||
mybatis-plus:
|
|
||||||
# 搜索指定包别名
|
|
||||||
typeAliasesPackage: com.ruoyi.**.domain
|
|
||||||
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
|
||||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
|
||||||
# 加载全局的配置文件
|
|
||||||
configLocation: classpath:mybatis/mybatis-config.xml
|
|
||||||
global-config:
|
|
||||||
db-config:
|
|
||||||
# 标识逻辑删除的数据库字段名称
|
|
||||||
logic-delete-field: delFlag
|
|
||||||
# 表示已逻辑删除的值(默认也是如此)
|
|
||||||
logic-delete-value: 2
|
|
||||||
# 表示未逻辑删除的值(默认也是如此)
|
|
||||||
logic-not-delete-value: 0
|
|
||||||
|
|
||||||
file:
|
|
||||||
upload-dir: /data/file
|
|
||||||
|
|
||||||
ocr:
|
|
||||||
ocr_url: http://127.0.0.1:9001/ocr
|
|
||||||
ocr_mutipart: https://qd.zhaopinzao8dian.com/ocr-api/ocr
|
|
||||||
# ocr_mutipart: http://10.98.80.141:9000/ocr
|
|
||||||
ocr_llm_url: http://39.98.44.136:6016/inner-ai/aicoapi/gateway/v2/chatbot/api_run/1763386387_d4c07131-a047-4c0d-9623-7e3c3a45bd7e
|
|
||||||
ocr_llm_apiKey: NfzPnFRtogHlYCAh2hHIB7ra5EsrSQEM
|
|
||||||
|
|
||||||
cipher-security:
|
|
||||||
socket: 39.102.146.78:11028
|
|
||||||
path: /data/downloadmodel/certTest
|
|
||||||
# socket: 10.98.80.223:8443
|
|
||||||
# path: /data/downloadmodel/cert
|
|
||||||
|
|
||||||
#nginx节点健康检查
|
|
||||||
management:
|
|
||||||
endpoints:
|
|
||||||
web:
|
|
||||||
exposure:
|
|
||||||
include: health
|
|
||||||
|
|
||||||
#微信小程序
|
|
||||||
wx:
|
|
||||||
appid: wx4aa34488b965a331
|
|
||||||
secret: 558780ecc2750f87e556b0e5496773c9
|
|
||||||
|
|
||||||
#短信服务
|
|
||||||
sms:
|
|
||||||
#API密钥账号
|
|
||||||
# secretName: kszhjyrcjt
|
|
||||||
secretName: kszhjypthydx
|
|
||||||
#API密钥
|
|
||||||
# secretKey: Dwhc9c0IiHecvC5D
|
|
||||||
secretKey: asj1gze3BhG3QtaI
|
|
||||||
#短信模板ID
|
|
||||||
# templateId: 37446
|
|
||||||
templateId: 49566
|
|
||||||
|
|
||||||
#统一门户认证
|
|
||||||
oauth:
|
|
||||||
#客户端的ID
|
|
||||||
appid: 251112100000000015
|
|
||||||
#授权码
|
|
||||||
clientsecretkey: 2a44cb8d21dcf4b0777881ca11ea0d83ebea94bbe1ab1f405508db0873cdcc99
|
|
||||||
#内网
|
|
||||||
usptnw:
|
|
||||||
#获取访问令牌
|
|
||||||
nwGatewayGetTokenUrl: http://10.98.80.146/uspt/serviceAPI/getToken
|
|
||||||
#获取用户信息
|
|
||||||
nwGatewayGetUserInfoUrl: http://10.98.80.146/uspt/serviceAPI/getUserInfo
|
|
||||||
#外网
|
|
||||||
usptww:
|
|
||||||
#门户注册
|
|
||||||
wwRegisterPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/doWebRegister
|
|
||||||
#门户登录
|
|
||||||
wwTokenPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/doWebLogon
|
|
||||||
#查询用户信息
|
|
||||||
wwQueryWebUserInfo: http://10.98.80.50/uspt/webWhiteListServiceAPI/queryWebUserInfo
|
|
||||||
#查询个人信息
|
|
||||||
wwQueryWebPersonalInfoPostUrl: http://10.98.80.50/uspt/webWhiteListServiceAPI/queryWebPersonalInfo
|
|
||||||
#查询单位信息
|
|
||||||
wwQueryWebEnterpriseInfoPostUrl: http://10.98.80.50/uspt//webWhiteListServiceAPI/queryWebEnterpriseInfo
|
|
||||||
#用户新增接口
|
|
||||||
tyAddUserUrl: http://10.98.80.146/qxgl_backend/security/add_user
|
|
||||||
#获取当前用户有权系统列表
|
|
||||||
tyQueryUserSysListUrl: http://10.98.80.146/qxgl_backend/security/get_effective_app_list
|
|
||||||
#获取当前用户有权角色列表
|
|
||||||
tyQueryUserRoleListUrl: http://10.98.80.146/qxgl_backend/security/get_role_by_userid
|
|
||||||
#获取角色功能权限信息
|
|
||||||
tyQueryRoleInfoUrl: http://10.98.80.146/qxgl_backend/security/get_path_by_role
|
|
||||||
#获取用户详细信息
|
|
||||||
tyQueryUserInfo: http://10.98.80.146/qxgl_backend/security/get_user_by_userid
|
|
||||||
#获取机构详细信息
|
|
||||||
tyQueryUnitInfo: http://10.98.80.146/qxgl_backend/security/get_organization_by_organizationid
|
|
||||||
connect-timeout: 10
|
|
||||||
read-timeout: 30
|
|
||||||
write-timeout: 30
|
|
||||||
|
|
||||||
#浪潮
|
|
||||||
lc:
|
|
||||||
#获取人员标签
|
|
||||||
personTag: http://10.98.80.146/prod-api/dispatch/public/person/tag
|
|
||||||
|
|
||||||
#ai
|
|
||||||
chat:
|
|
||||||
baseUrl: http://192.168.133.200:8080
|
|
||||||
chatUrl: /v1/chat/completions
|
|
||||||
chatDetailUrl: /core/chat/getPaginationRecords
|
|
||||||
chatHistoryUrl: /core/chat/getHistories
|
|
||||||
updateNameUrl: /core/chat/updateHistory
|
|
||||||
stickChatUrl: /core/chat/updateHistory
|
|
||||||
delChatUrl: /core/chat/delHistory
|
|
||||||
delAllChatUrl: /core/chat/clearHistories
|
|
||||||
guestUrl: /v1/chat/completions
|
|
||||||
praiseUrl: /core/chat/feedback/updateUserFeedback
|
|
||||||
appId: 67cd49095e947ae0ca7fadd8
|
|
||||||
apiKey: fastgpt-qMl63276wPZvKAxEkW77bur0sSJpmuC6Ngg9lzyEjufLhsBAurjT55j
|
|
||||||
model: qd-job-turbo
|
|
||||||
|
|
||||||
audioText:
|
|
||||||
asr: http://192.168.133.200:8000/asr/file
|
|
||||||
#tts: http://192.168.133.200:19527/synthesize
|
|
||||||
tts: http://10.98.76.104:19528/synthesize
|
|
||||||
@@ -71,20 +71,6 @@
|
|||||||
<artifactId>easyexcel</artifactId>
|
<artifactId>easyexcel</artifactId>
|
||||||
<version>4.0.3</version>
|
<version>4.0.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.elasticsearch.client</groupId>
|
|
||||||
<artifactId>elasticsearch-rest-high-level-client</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.elasticsearch</groupId>
|
|
||||||
<artifactId>elasticsearch</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.elasticsearch.client</groupId>
|
<groupId>org.elasticsearch.client</groupId>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 岗位Controller
|
* 岗位Controller
|
||||||
@@ -172,18 +173,20 @@ public class AppJobController extends BaseController
|
|||||||
@GetMapping(value = "/{encryptJobId}")
|
@GetMapping(value = "/{encryptJobId}")
|
||||||
public AjaxResult getInfo(@PathVariable("encryptJobId") String encryptJobId, HttpServletRequest request)
|
public AjaxResult getInfo(@PathVariable("encryptJobId") String encryptJobId, HttpServletRequest request)
|
||||||
{
|
{
|
||||||
|
Long jobId;
|
||||||
if(StringUtils.isBlank(encryptJobId)){
|
if(StringUtils.isBlank(encryptJobId)){
|
||||||
return error("岗位id为空!");
|
return error("岗位id为空!");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Long jobId=Long.parseLong(SM4Utils.decryptEcb(SM4Constants.SM4_KET, encryptJobId));
|
String decryptStr=SM4Utils.decryptEcb(SM4Constants.SM4_KET, encryptJobId);
|
||||||
//Job job = jobService.selectJobByJobIdApp(jobId);
|
jobId=Long.parseLong(decryptStr);
|
||||||
Job job = jobService.selectHttpJobByJobIdApp(jobId,request);
|
|
||||||
return success(job);
|
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return error("参数不正确!");
|
return error("参数不正确!");
|
||||||
}
|
}
|
||||||
|
return Optional.ofNullable(jobService.selectHttpJobByJobIdApp(jobId, request))
|
||||||
|
.map(this::success)
|
||||||
|
.orElse(error("无效的岗位!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -327,6 +330,7 @@ public class AppJobController extends BaseController
|
|||||||
|
|
||||||
return toAjax(jobApplyService.applyJobCencal(apply));
|
return toAjax(jobApplyService.applyJobCencal(apply));
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
return error("取消投递失败,请稍后重试");
|
return error("取消投递失败,请稍后重试");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -159,21 +159,27 @@ public class SensitiveWordDataController extends BaseController {
|
|||||||
response.setHeader("Pragma", "public");
|
response.setHeader("Pragma", "public");
|
||||||
response.setHeader("Cache-Control", "max-age=0");
|
response.setHeader("Cache-Control", "max-age=0");
|
||||||
InputStream in = null;
|
InputStream in = null;
|
||||||
|
OutputStream ou =null;
|
||||||
try {
|
try {
|
||||||
in = new FileInputStream(url);
|
in = new FileInputStream(url);
|
||||||
} catch (FileNotFoundException e1) {
|
ou = response.getOutputStream();
|
||||||
resMsg = "文件未找到";
|
|
||||||
e1.printStackTrace();
|
|
||||||
response.getWriter().write(resMsg + ":" + name);
|
|
||||||
}
|
|
||||||
OutputStream ou = response.getOutputStream();
|
|
||||||
byte[] buffer = new byte[1024];
|
byte[] buffer = new byte[1024];
|
||||||
int i = -1;
|
int i = -1;
|
||||||
while ((i = in.read(buffer)) != -1) {
|
while ((i = in.read(buffer)) != -1) {
|
||||||
ou.write(buffer, 0, i);
|
ou.write(buffer, 0, i);
|
||||||
}
|
}
|
||||||
ou.flush();
|
ou.flush();
|
||||||
|
} catch (FileNotFoundException e1) {
|
||||||
|
resMsg = "文件未找到";
|
||||||
|
e1.printStackTrace();
|
||||||
|
response.getWriter().write(resMsg + ":" + name);
|
||||||
|
}finally {
|
||||||
|
if (ou != null) {
|
||||||
ou.close();
|
ou.close();
|
||||||
|
}
|
||||||
|
if (in != null) {
|
||||||
in.close();
|
in.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ public class ESJobDocument
|
|||||||
private Long jobId;
|
private Long jobId;
|
||||||
|
|
||||||
@ApiModelProperty("公告标题")
|
@ApiModelProperty("公告标题")
|
||||||
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
|
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_MAX_WORD, searchAnalyzer = Analyzer.IK_SMART)
|
||||||
private String jobTitle;
|
private String jobTitle;
|
||||||
|
|
||||||
@ApiModelProperty("内容")
|
@ApiModelProperty("内容")
|
||||||
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
|
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_MAX_WORD, searchAnalyzer = Analyzer.IK_SMART)
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
@ApiModelProperty("最小薪资(元)")
|
@ApiModelProperty("最小薪资(元)")
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper,AppUser> imple
|
|||||||
Integer pendCount=jobApplyMapper.selectPendCount(apply);
|
Integer pendCount=jobApplyMapper.selectPendCount(apply);
|
||||||
appUser.setPendCount(pendCount == null ? 0 : pendCount);
|
appUser.setPendCount(pendCount == null ? 0 : pendCount);
|
||||||
}
|
}
|
||||||
}else if("1".equals(appUser.getIsCompanyUser())){
|
}else if(StringUtil.COMPANY_TYPES.contains(appUser.getIsCompanyUser())){
|
||||||
//验证身份证完整性
|
//验证身份证完整性
|
||||||
QuickValidUtils.idCardValid(appUser);
|
QuickValidUtils.idCardValid(appUser);
|
||||||
//工作经历
|
//工作经历
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
|
|||||||
import org.dromara.easyes.core.conditions.update.LambdaEsUpdateWrapper;
|
import org.dromara.easyes.core.conditions.update.LambdaEsUpdateWrapper;
|
||||||
import org.elasticsearch.common.geo.GeoPoint;
|
import org.elasticsearch.common.geo.GeoPoint;
|
||||||
import org.elasticsearch.common.unit.DistanceUnit;
|
import org.elasticsearch.common.unit.DistanceUnit;
|
||||||
|
import org.elasticsearch.search.sort.SortBuilders;
|
||||||
|
import org.elasticsearch.search.sort.SortOrder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -181,7 +183,7 @@ public class ESJobSearchImpl implements IESJobSearchService
|
|||||||
esJobDocument.setEncryptJobId(encryptJobId);
|
esJobDocument.setEncryptJobId(encryptJobId);
|
||||||
CompanyVo vo=job.getCompanyVo();
|
CompanyVo vo=job.getCompanyVo();
|
||||||
esJobDocument.setCompanyVoJson(JSON.toJSONString(vo));
|
esJobDocument.setCompanyVoJson(JSON.toJSONString(vo));
|
||||||
esJobDocument.setAppJobUrl("https://www.xjksly.cn/app#/packageA/pages/post/post?jobId="+ Base64.getEncoder().encodeToString(String.valueOf(job.getJobId()).getBytes()));
|
esJobDocument.setAppJobUrl("https://www.xjksly.cn/app#/packageA/pages/post/post?jobId="+ SM4Utils.encryptEcb(SM4Constants.SM4_KET,String.valueOf(job.getJobId())));
|
||||||
if(!StringUtil.isEmptyOrNull(job.getScale())){
|
if(!StringUtil.isEmptyOrNull(job.getScale())){
|
||||||
esJobDocument.setScale(Integer.valueOf(job.getScale()));
|
esJobDocument.setScale(Integer.valueOf(job.getScale()));
|
||||||
}else {
|
}else {
|
||||||
@@ -574,19 +576,29 @@ public class ESJobSearchImpl implements IESJobSearchService
|
|||||||
if(Objects.nonNull(esJobSearch.getIsPublish())){
|
if(Objects.nonNull(esJobSearch.getIsPublish())){
|
||||||
wrapper.and(x->x.eq(ESJobDocument::getIsPublish,esJobSearch.getIsPublish()));
|
wrapper.and(x->x.eq(ESJobDocument::getIsPublish,esJobSearch.getIsPublish()));
|
||||||
}
|
}
|
||||||
|
// 全局固定:权重优先(必须写在最前面)
|
||||||
|
wrapper.trackScores();
|
||||||
|
wrapper.sortByScore(SortOrder.DESC);
|
||||||
|
//0:推荐 1:最热 2:最新发布 3:最大薪资
|
||||||
if(Objects.nonNull(esJobSearch.getOrder())){
|
if(Objects.nonNull(esJobSearch.getOrder())){
|
||||||
if(esJobSearch.getOrder()==1){
|
switch (esJobSearch.getOrder()) {
|
||||||
|
case 0: // 推荐:权重 → 最新发布
|
||||||
|
wrapper.sort(SortBuilders.fieldSort("postingDate").order(SortOrder.DESC).missing("_last"));
|
||||||
|
break;
|
||||||
|
case 1: // 最热:权重 → 热度
|
||||||
wrapper.orderByDesc(ESJobDocument::getIsHot);
|
wrapper.orderByDesc(ESJobDocument::getIsHot);
|
||||||
}
|
wrapper.orderByDesc(ESJobDocument::getApplyNum);
|
||||||
if(esJobSearch.getOrder()==2){
|
wrapper.orderByDesc(ESJobDocument::getView);
|
||||||
wrapper.orderByDesc(ESJobDocument::getPostingDate);
|
break;
|
||||||
}
|
case 2: // 最新发布:权重 → 最新发布
|
||||||
if(esJobSearch.getOrder()==3){
|
wrapper.sort(SortBuilders.fieldSort("postingDate").order(SortOrder.DESC).missing("_last"));
|
||||||
|
break;
|
||||||
|
case 3: // 最大薪资:权重 → 最高薪资
|
||||||
wrapper.orderByDesc(ESJobDocument::getMaxSalary);
|
wrapper.orderByDesc(ESJobDocument::getMaxSalary);
|
||||||
|
break;
|
||||||
|
default: // 默认:权重 → 最新发布
|
||||||
|
wrapper.sort(SortBuilders.fieldSort("postingDate").order(SortOrder.DESC).missing("_last"));
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
//默认按照发布时间倒叙
|
|
||||||
wrapper.orderByDesc(ESJobDocument::getPostingDate);
|
|
||||||
}
|
}
|
||||||
//企业用户排除es去除jobIds
|
//企业用户排除es去除jobIds
|
||||||
boolean isCompanyUser = StringUtil.IS_COMPANY_USER.equals(esJobSearch.getUserType());
|
boolean isCompanyUser = StringUtil.IS_COMPANY_USER.equals(esJobSearch.getUserType());
|
||||||
@@ -694,18 +706,29 @@ public class ESJobSearchImpl implements IESJobSearchService
|
|||||||
if(Objects.nonNull(jobQuery.getIsPublish())){
|
if(Objects.nonNull(jobQuery.getIsPublish())){
|
||||||
wrapper.and(x->x.eq(ESJobDocument::getIsPublish,jobQuery.getIsPublish()));
|
wrapper.and(x->x.eq(ESJobDocument::getIsPublish,jobQuery.getIsPublish()));
|
||||||
}
|
}
|
||||||
|
// 全局固定:权重优先(必须写在最前面)
|
||||||
|
wrapper.trackScores();
|
||||||
|
wrapper.sortByScore(SortOrder.DESC);
|
||||||
|
//0:推荐 1:最热 2:最新发布 3:最大薪资
|
||||||
if(Objects.nonNull(jobQuery.getOrder())){
|
if(Objects.nonNull(jobQuery.getOrder())){
|
||||||
if (jobQuery.getOrder()==2){
|
switch (jobQuery.getOrder()) {
|
||||||
wrapper.orderByDesc(ESJobDocument::getPostingDate);
|
case 0: // 推荐:权重 → 最新发布
|
||||||
}
|
wrapper.sort(SortBuilders.fieldSort("postingDate").order(SortOrder.DESC).missing("_last"));
|
||||||
if (jobQuery.getOrder()==1){
|
break;
|
||||||
|
case 1: // 最热:权重 → 热度
|
||||||
wrapper.orderByDesc(ESJobDocument::getIsHot);
|
wrapper.orderByDesc(ESJobDocument::getIsHot);
|
||||||
wrapper.orderByDesc(ESJobDocument::getApplyNum);
|
wrapper.orderByDesc(ESJobDocument::getApplyNum);
|
||||||
wrapper.orderByDesc(ESJobDocument::getView);
|
wrapper.orderByDesc(ESJobDocument::getView);
|
||||||
|
break;
|
||||||
|
case 2: // 最新发布:权重 → 最新发布
|
||||||
|
wrapper.sort(SortBuilders.fieldSort("postingDate").order(SortOrder.DESC).missing("_last"));
|
||||||
|
break;
|
||||||
|
case 3: // 最大薪资:权重 → 最高薪资
|
||||||
|
wrapper.orderByDesc(ESJobDocument::getMaxSalary);
|
||||||
|
break;
|
||||||
|
default: // 默认:权重 → 最新发布
|
||||||
|
wrapper.sort(SortBuilders.fieldSort("postingDate").order(SortOrder.DESC).missing("_last"));
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
//默认按照发布时间倒叙
|
|
||||||
wrapper.orderByDesc(ESJobDocument::getPostingDate);
|
|
||||||
}
|
}
|
||||||
EsPageInfo<ESJobDocument> esJobDocumentEsPageInfo = esJobDocumentMapper.pageQuery(wrapper, pageNum, pageSize);
|
EsPageInfo<ESJobDocument> esJobDocumentEsPageInfo = esJobDocumentMapper.pageQuery(wrapper, pageNum, pageSize);
|
||||||
return esJobDocumentEsPageInfo;
|
return esJobDocumentEsPageInfo;
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ public class JobApplyServiceImpl extends ServiceImpl<JobApplyMapper,JobApply> im
|
|||||||
|
|
||||||
public JobApply getApplyInfo(JobApply jobApply){
|
public JobApply getApplyInfo(JobApply jobApply){
|
||||||
return jobApplyMapper.selectOne(Wrappers.<JobApply>lambdaQuery()
|
return jobApplyMapper.selectOne(Wrappers.<JobApply>lambdaQuery()
|
||||||
.eq(JobApply::getDelFlag, 0)
|
.eq(JobApply::getDelFlag, "0")
|
||||||
.eq(JobApply::getJobId, jobApply.getJobId())
|
.eq(JobApply::getJobId, jobApply.getJobId())
|
||||||
.eq(JobApply::getUserId, jobApply.getUserId())
|
.eq(JobApply::getUserId, jobApply.getUserId())
|
||||||
.last("LIMIT 1"));
|
.last("LIMIT 1"));
|
||||||
|
|||||||
@@ -617,11 +617,12 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
|||||||
@Override
|
@Override
|
||||||
public Job selectHttpJobByJobIdApp(Long jobId,HttpServletRequest request) {
|
public Job selectHttpJobByJobIdApp(Long jobId,HttpServletRequest request) {
|
||||||
Job job = jobMapper.selectById(jobId);
|
Job job = jobMapper.selectById(jobId);
|
||||||
//查询公司信息
|
if(job==null){
|
||||||
if(Objects.nonNull(job.getCompanyId())){
|
return null;
|
||||||
Company company = companyMapper.selectById(job.getCompanyId());
|
|
||||||
job.setCompany(company);
|
|
||||||
}
|
}
|
||||||
|
//查询公司信息
|
||||||
|
Optional.ofNullable(job.getCompanyId()).map(companyMapper::selectById).ifPresent(job::setCompany);
|
||||||
|
|
||||||
if(SiteSecurityUtils.isLogin()){
|
if(SiteSecurityUtils.isLogin()){
|
||||||
//查询申请信息
|
//查询申请信息
|
||||||
Long applyCount = jobApplyMapper.selectCount(Wrappers.<JobApply>lambdaQuery().eq(JobApply::getJobId, jobId).eq(JobApply::getUserId, SiteSecurityUtils.getUserId()));
|
Long applyCount = jobApplyMapper.selectCount(Wrappers.<JobApply>lambdaQuery().eq(JobApply::getJobId, jobId).eq(JobApply::getUserId, SiteSecurityUtils.getUserId()));
|
||||||
|
|||||||
@@ -112,6 +112,9 @@ public class StringUtil {
|
|||||||
//批量条数
|
//批量条数
|
||||||
public static final int BATCH_SIZE = 1000;
|
public static final int BATCH_SIZE = 1000;
|
||||||
|
|
||||||
|
//求职者、网格员
|
||||||
|
public static final List<String> COMPANY_TYPES = Arrays.asList("1", "2");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
Map<String, String> tempMap = new HashMap<>();
|
Map<String, String> tempMap = new HashMap<>();
|
||||||
tempMap.put("中专及以上", "1");
|
tempMap.put("中专及以上", "1");
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
@@ -20,6 +21,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
|
import java.security.Security;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
import java.util.Formatter;
|
import java.util.Formatter;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -41,6 +43,13 @@ public class WechatUtil {
|
|||||||
@Value("${wx.secret}")
|
@Value("${wx.secret}")
|
||||||
private String secret;
|
private String secret;
|
||||||
|
|
||||||
|
// 全局注册一次 BC Provider,避免每次解密都重复注册
|
||||||
|
static {
|
||||||
|
if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
|
||||||
|
Security.addProvider(new BouncyCastleProvider());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public AppWechatEntity sign(String url) {
|
public AppWechatEntity sign(String url) {
|
||||||
Map<String, String> ret = new HashMap();
|
Map<String, String> ret = new HashMap();
|
||||||
String nonceStr = create_nonce_str();
|
String nonceStr = create_nonce_str();
|
||||||
@@ -291,8 +300,8 @@ public class WechatUtil {
|
|||||||
throw new RuntimeException("iv长度错误,应为16字节");
|
throw new RuntimeException("iv长度错误,应为16字节");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 初始化 AES-128-CBC 解密器(使用PKCS5Padding替换PKCS7Padding,两者在AES中效果一致)
|
// 2. 初始化 AES-128-CBC 解密器
|
||||||
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");
|
||||||
SecretKeySpec keySpec = new SecretKeySpec(sessionKeyBytes, "AES");
|
SecretKeySpec keySpec = new SecretKeySpec(sessionKeyBytes, "AES");
|
||||||
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
|
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
|
||||||
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
|
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
|
||||||
@@ -302,9 +311,19 @@ public class WechatUtil {
|
|||||||
String decryptedStr = new String(decryptedBytes, StandardCharsets.UTF_8);
|
String decryptedStr = new String(decryptedBytes, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
// 4. 解析为 JSON 并返回(包含手机号等信息)
|
// 4. 解析为 JSON 并返回(包含手机号等信息)
|
||||||
return JSONObject.parseObject(decryptedStr);
|
JSONObject jsonObject=JSONObject.parseObject(decryptedStr);
|
||||||
|
// 5.验证 watermark 中的 appid 是否匹配,防止伪造数据攻击
|
||||||
|
JSONObject watermark = jsonObject.getJSONObject("watermark");
|
||||||
|
if (watermark == null || !appid.equals(watermark.getString("appid"))) {
|
||||||
|
throw new SecurityException("解密数据校验失败:appid不匹配,数据可能已被篡改!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
} catch (IllegalArgumentException | SecurityException e) {
|
||||||
|
throw new RuntimeException(e.getMessage(), e);
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
throw new RuntimeException("解密用户手机号失败:" + e.getMessage(), e);
|
System.err.println("微信手机号解密底层异常: " + e.getMessage());
|
||||||
|
throw new RuntimeException("用户手机号解密失败,请检查登录态是否过期或参数是否正确");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
ruoyi-common/libs/quickapi-client-java-1.5.11-SNAPSHOT.jar
Normal file
BIN
ruoyi-common/libs/quickapi-client-java-1.5.11-SNAPSHOT.jar
Normal file
Binary file not shown.
@@ -120,15 +120,16 @@
|
|||||||
<artifactId>UserAgentUtils</artifactId>
|
<artifactId>UserAgentUtils</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--奇安信密码机-->
|
<!-- 奇安信国密安全密码应用中间件 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.quickssl</groupId>
|
<groupId>org.quickssl</groupId>
|
||||||
<artifactId>quickapi-client-java</artifactId>
|
<artifactId>quickapi-client-java</artifactId>
|
||||||
<version>1.5.11-SNAPSHOT</version>
|
<version>1.5.11-SNAPSHOT</version>
|
||||||
<classifier>shaded</classifier>
|
<scope>system</scope>
|
||||||
<scope>compile</scope>
|
<systemPath>${project.basedir}/libs/quickapi-client-java-1.5.11-SNAPSHOT.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bouncycastle</groupId>
|
<groupId>org.bouncycastle</groupId>
|
||||||
<artifactId>bcprov-jdk15on</artifactId>
|
<artifactId>bcprov-jdk15on</artifactId>
|
||||||
|
|||||||
BIN
ruoyi-framework/libs/aams-spring-boot-starter-all-2.4.0.jar
Normal file
BIN
ruoyi-framework/libs/aams-spring-boot-starter-all-2.4.0.jar
Normal file
Binary file not shown.
1
ruoyi-framework/license.xml
Normal file
1
ruoyi-framework/license.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"license":"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","productId":"1662965666333905920","secretKey":"SK-YYFWQ","licenseEncodeType":"RAW","sign":"BTzbsxsDqFLOlR80N1rbQIu8VV/hVzCSgxIPFtw8pFjov1eBffl87Lg/n4MD3NS/cqnDyl9azAR1rPcFmyMXsWomFD/zI2ZJRv3z21Hxw5WXa+uSgllFqxAeGcjVVvuu7gb4kziujTA1npu48oM6OzFBWCRvLJSyKtXDcSeCmuM="}
|
||||||
@@ -21,6 +21,29 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.elasticsearch.client</groupId>
|
||||||
|
<artifactId>elasticsearch-rest-high-level-client</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.elasticsearch</groupId>
|
||||||
|
<artifactId>elasticsearch</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 金蝶Apusic应用服务器 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.apusic</groupId>
|
||||||
|
<artifactId>aams-spring-boot-starter-all</artifactId>
|
||||||
|
<version>2.4.0</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${project.basedir}/libs/aams-spring-boot-starter-all-2.4.0.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- SpringBoot 拦截器 -->
|
<!-- SpringBoot 拦截器 -->
|
||||||
|
|||||||
@@ -519,6 +519,7 @@ public class SysLoginService
|
|||||||
if (openidSpecialUser != null) {
|
if (openidSpecialUser != null) {
|
||||||
System.out.printf("小程序登录-匹配到OpenID网格员:openid=%s, phone=%s%n",
|
System.out.printf("小程序登录-匹配到OpenID网格员:openid=%s, phone=%s%n",
|
||||||
openidSpecialUser.getOpenid(), openidSpecialUser.getPhone());
|
openidSpecialUser.getOpenid(), openidSpecialUser.getPhone());
|
||||||
|
openidSpecialUser.setOpenid(dto.getOpenid());
|
||||||
return handleSpecialUserLogin(openidSpecialUser);
|
return handleSpecialUserLogin(openidSpecialUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,6 +528,7 @@ public class SysLoginService
|
|||||||
if (phoneSpecialUser != null) {
|
if (phoneSpecialUser != null) {
|
||||||
System.out.printf("小程序登录-匹配到手机号网格员:phone=%s, openid=%s%n",
|
System.out.printf("小程序登录-匹配到手机号网格员:phone=%s, openid=%s%n",
|
||||||
phoneSpecialUser.getPhone(), phoneSpecialUser.getOpenid());
|
phoneSpecialUser.getPhone(), phoneSpecialUser.getOpenid());
|
||||||
|
phoneSpecialUser.setOpenid(dto.getOpenid());
|
||||||
return handleSpecialUserLogin(phoneSpecialUser);
|
return handleSpecialUserLogin(phoneSpecialUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user