Compare commits

13 Commits
test ... main

Author SHA1 Message Date
sh
4feffc1c48 修改竞争力分析-报错问题 2026-06-12 16:40:51 +08:00
sh
133be8a181 优化es查询(薪资、jobTitle) 2026-06-10 19:29:08 +08:00
sh
b479bf8566 修改配置文件 2026-06-10 13:00:37 +08:00
sh
e4ca1bc13b 修改数据库链接为本地 2026-06-10 12:58:33 +08:00
sh
032668eb3a 修改数据库链接为本地 2026-06-10 12:56:39 +08:00
sh
4d6e4f4309 启动文件添加金蝶配置路径1 2026-06-10 12:52:49 +08:00
sh
cc85fc9614 启动文件添加金蝶配置路径 2026-06-10 12:43:24 +08:00
sh
71725e7bf9 启动文件添加金蝶配置路径 2026-06-10 12:31:50 +08:00
sh
21c1048e57 启动文件添加金蝶配置路径 2026-06-10 12:29:31 +08:00
sh
4939461402 启动文件添加金蝶配置路径 2026-06-10 11:30:56 +08:00
sh
00340fc63b 正式环境配置文件 2026-06-10 10:23:07 +08:00
马宝龙
3d1996219e 调整配置 2026-06-09 10:31:54 +08:00
马宝龙
f2cd10c73a 调整配置 2026-06-05 19:01:01 +08:00
6 changed files with 444 additions and 74 deletions

View File

@@ -8,10 +8,10 @@ LOG_PATH=${DES_PATH}/logs
LOG_FILE=${LOG_PATH}/backend.log
BACK_LOG=${LOG_PATH}/back/backend-info.log
MODEL_NAME=${JAR_PATH}
PROFILE=dev
PROFILE=test
# JVM配置
JVM_MEMORY=" -Xms2048M -Xmx2048M -XX:MaxDirectMemorySize=2048M"
JVM_MEMORY=" -Xms2048M -Xmx2048M -XX:MaxDirectMemorySize=2048M -Dlicpath:/root/ks/license.xml"
# 远程调试
JVM_DEBUG=""
# JVM_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6011"

View File

@@ -16,7 +16,7 @@ ruoyi:
# 开发环境配置
server:
# 服务器的HTTP端口默认为8080
port: 9091
port: 9096
servlet:
# 应用的访问路径
context-path: /
@@ -225,10 +225,10 @@ ocr:
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
# socket: 39.102.146.78:11028
# path: /data/downloadmodel/certTest
socket: 10.98.80.223:8443
path: /data/downloadmodel/cert
#nginx节点健康检查
management:

View File

@@ -0,0 +1,336 @@
# 项目相关配置
ruoyi:
# 名称
name: RuoYi
# 版本
version: 3.8.8
# 版权年份
copyrightYear: 2024
# 文件路径 示例( Windows配置D:/ruoyi/uploadPathLinux配置 /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://127.0.0.1:5866/highgo?useUnicode=true&characterEncoding=utf8&currentSchema=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: 127.0.0.1
# 端口默认为6379
port: 5379
# 数据库索引
database: 5
# 密码
password: ZKR2024@@.com
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
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:
enable: true
banner: false
address: 127.0.0.1:9200
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

View File

@@ -1,31 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/home/lapuda/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<property name="log.path" value="./logs"/>
<property name="my.ip" value="${MY_IP:-127.0.0.1}"/>
<property name="console.log.pattern"
value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %msg%n"/>
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${console.log.pattern}</pattern>
<charset>utf-8</charset>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 控制台输出 -->
<appender name="file_console" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-console.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<fileNamePattern>${log.path}/sys-console.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大 15 -->
<maxHistory>14</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- 过滤的级别 -->
<level>DEBUG</level>
</filter>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 15天 -->
<maxHistory>15</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
@@ -33,10 +54,10 @@
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
@@ -50,44 +71,39 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- info异步输出 -->
<appender name="async_info" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="file_info"/>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.ruoyi" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<!-- error异步输出 -->
<appender name="async_error" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="file_error"/>
</appender>
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
<appender-ref ref="console"/>
<appender-ref ref="async_info"/>
<appender-ref ref="async_error"/>
<appender-ref ref="file_console"/>
</root>
<!--系统用户操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>

View File

@@ -493,7 +493,7 @@ public class ESJobSearchImpl implements IESJobSearchService
LambdaEsQueryWrapper<ESJobDocument> wrapper = new LambdaEsQueryWrapper<>();
if(!StringUtil.isEmptyOrNull(esJobSearch.getJobTitle())){
for (String keyWord:esJobSearch.getJobTitle().split(",")) {
wrapper.and(a -> a.match(ESJobDocument::getJobTitle, keyWord, 5.0f)
wrapper.or(a -> a.match(ESJobDocument::getJobTitle, keyWord, 5.0f)
);
}
@@ -509,10 +509,10 @@ public class ESJobSearchImpl implements IESJobSearchService
wrapper.and(x->x.in(ESJobDocument::getEducation,integers));
}
if(Objects.nonNull(esJobSearch.getMaxSalary())){
wrapper.and(x->x.le(ESJobDocument::getMaxSalary,esJobSearch.getMaxSalary()));
wrapper.and(x->x.le(ESJobDocument::getMinSalary,esJobSearch.getMaxSalary()));
}
if(Objects.nonNull(esJobSearch.getMinSalary())){
wrapper.and(x->x.ge(ESJobDocument::getMinSalary,esJobSearch.getMinSalary()));
wrapper.and(x->x.ge(ESJobDocument::getMaxSalary,esJobSearch.getMinSalary()));
}
if(!StringUtil.isEmptyOrNull(esJobSearch.getExperience())){
//Integer maxValue = StringUtil.findMaxValue(esJobSearch.getExperience());

View File

@@ -354,13 +354,31 @@ public class JobCollectionServiceImpl extends ServiceImpl<JobCollectionMapper,Jo
}
//判断薪资
Integer userMinSalary = parseSalary(user.getSalaryMin());
if (userMinSalary != null && userMinSalary <= job.getMaxSalary()) {
Long jobMinSalary = job.getMinSalary();
Long jobMaxSalary = job.getMaxSalary();
if (userMinSalary != null) {
if (jobMinSalary == null && jobMaxSalary == null) {
matchScore += 1.0;
} else if (!(jobMaxSalary != null && userMinSalary > jobMaxSalary)) {
if (jobMinSalary == null) {
matchScore += 1.0;
} else {
double salaryThreshold = jobMinSalary * 0.8;
if (userMinSalary >= jobMinSalary) {
matchScore += 1.0;
} else if (userMinSalary >= salaryThreshold) {
matchScore += 0.5;
}
}
}
}
/*if (userMinSalary != null && userMinSalary <= job.getMaxSalary()) {
if (userMinSalary >= job.getMinSalary()) {
matchScore += 1;
} else if (userMinSalary >= job.getMinSalary() * 0.8) {
matchScore += 0.5;
}
}
}*/
//判断区域
if (user.getArea() != null && job.getJobLocationAreaCode() != null) {
//if(user.getArea().contains(job.getJobLocation()) || job.getJobLocation().contains(user.getArea())){