parent
31a03f9fca
commit
b47bebd731
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.nu.modules.commonutils;
|
||||||
|
|
||||||
|
import org.jeecg.modules.data.loader.DataSourceLoader;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统工具
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/sysUtils")
|
||||||
|
public class SysUtilsApi {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DataSourceLoader dataSourceLoader;
|
||||||
|
|
||||||
|
@PostMapping("/refreshDS")
|
||||||
|
public String refresh() {
|
||||||
|
dataSourceLoader.refreshDataSources();
|
||||||
|
return "数据源已刷新";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -122,6 +122,7 @@ public class ShiroConfig {
|
||||||
filterChainDefinitionMap.put("/api/ocr/**", "anon");//TODO 待删除 运维也删 阿里云证件识别
|
filterChainDefinitionMap.put("/api/ocr/**", "anon");//TODO 待删除 运维也删 阿里云证件识别
|
||||||
filterChainDefinitionMap.put("/api/baseInfo/**", "anon");//获取系统中信息
|
filterChainDefinitionMap.put("/api/baseInfo/**", "anon");//获取系统中信息
|
||||||
filterChainDefinitionMap.put("/sys/common/open/static/**", "anon");//获取本地文件资源
|
filterChainDefinitionMap.put("/sys/common/open/static/**", "anon");//获取本地文件资源
|
||||||
|
filterChainDefinitionMap.put("/api/sysUtils/refreshDS", "anon");//刷新数据源
|
||||||
|
|
||||||
filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码
|
filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码
|
||||||
filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //监听扫码
|
filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //监听扫码
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package org.jeecg.modules.data.loader;
|
||||||
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
||||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||||
import com.baomidou.dynamic.datasource.creator.druid.DruidDataSourceCreator;
|
import com.baomidou.dynamic.datasource.creator.druid.DruidDataSourceCreator;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.jeecg.modules.data.util.SecurityUtil;
|
import org.jeecg.modules.data.util.SecurityUtil;
|
||||||
import org.jeecg.modules.data.entity.DataSourceEntity;
|
import org.jeecg.modules.data.entity.DataSourceEntity;
|
||||||
|
|
@ -12,6 +13,9 @@ import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -27,11 +31,50 @@ public class DataSourceLoader {
|
||||||
refreshDataSources();
|
refreshDataSources();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public void refreshDataSources() {
|
||||||
|
// DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource;
|
||||||
|
// DataSource mainDataSource = ds.getDataSource("devops");
|
||||||
|
//
|
||||||
|
// // 从主数据源读取配置
|
||||||
|
// List<DataSourceEntity> configs = new JdbcTemplate(mainDataSource).query(
|
||||||
|
// "SELECT id, code, name, db_type, db_driver, db_url, db_name, db_username ,db_password ,sys_org_code FROM sys_data_source",
|
||||||
|
// (rs, rowNum) -> new DataSourceEntity(
|
||||||
|
// rs.getString("id"),
|
||||||
|
// rs.getString("code"),
|
||||||
|
// rs.getString("name"),
|
||||||
|
// rs.getString("db_type"),
|
||||||
|
// rs.getString("db_driver"),
|
||||||
|
// rs.getString("db_url"),
|
||||||
|
// rs.getString("db_name"),
|
||||||
|
// rs.getString("db_username"),
|
||||||
|
// rs.getString("db_password"),
|
||||||
|
// rs.getString("sys_org_code")
|
||||||
|
// )
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
// // 创建并添加数据源
|
||||||
|
// configs.forEach(config -> {
|
||||||
|
// DataSourceProperty dataSourceProperty = new DataSourceProperty();
|
||||||
|
// dataSourceProperty.setUrl(config.getDbUrl());
|
||||||
|
// dataSourceProperty.setUsername(config.getDbUsername());
|
||||||
|
// String dbPassword = SecurityUtil.jiemi(config.getDbPassword());
|
||||||
|
// dataSourceProperty.setPassword(dbPassword);
|
||||||
|
// dataSourceProperty.setDriverClassName(config.getDbDriver());
|
||||||
|
// DataSource dynamicDataSource = dataSourceCreator.createDataSource(dataSourceProperty);
|
||||||
|
// ds.addDataSource(config.getCode(), dynamicDataSource);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
public void refreshDataSources() {
|
public void refreshDataSources() {
|
||||||
DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource;
|
DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource;
|
||||||
DataSource mainDataSource = ds.getDataSource("devops");
|
|
||||||
|
|
||||||
// 从主数据源读取配置
|
// 1. 从固定的主数据源(如 devops)读取最新的动态数据源配置
|
||||||
|
DataSource mainDataSource = ds.getDataSource("devops"); // 必须是静态配置的,不能被动态删除!
|
||||||
|
if (mainDataSource == null) {
|
||||||
|
log.error("无法获取主数据源 'devops',刷新动态数据源失败!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<DataSourceEntity> configs = new JdbcTemplate(mainDataSource).query(
|
List<DataSourceEntity> configs = new JdbcTemplate(mainDataSource).query(
|
||||||
"SELECT id, code, name, db_type, db_driver, db_url, db_name, db_username ,db_password ,sys_org_code FROM sys_data_source",
|
"SELECT id, code, name, db_type, db_driver, db_url, db_name, db_username ,db_password ,sys_org_code FROM sys_data_source",
|
||||||
(rs, rowNum) -> new DataSourceEntity(
|
(rs, rowNum) -> new DataSourceEntity(
|
||||||
|
|
@ -48,17 +91,33 @@ public class DataSourceLoader {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// 创建并添加数据源
|
|
||||||
configs.forEach(config -> {
|
|
||||||
DataSourceProperty dataSourceProperty = new DataSourceProperty();
|
|
||||||
dataSourceProperty.setUrl(config.getDbUrl());
|
|
||||||
dataSourceProperty.setUsername(config.getDbUsername());
|
|
||||||
String dbPassword = SecurityUtil.jiemi(config.getDbPassword());
|
|
||||||
dataSourceProperty.setPassword(dbPassword);
|
|
||||||
dataSourceProperty.setDriverClassName(config.getDbDriver());
|
|
||||||
DataSource dynamicDataSource = dataSourceCreator.createDataSource(dataSourceProperty);
|
|
||||||
ds.addDataSource(config.getCode(), dynamicDataSource);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// 2. 新增或更新
|
||||||
|
for (DataSourceEntity config : configs) {
|
||||||
|
String code = config.getCode();
|
||||||
|
if (code == null || code.isEmpty()) {
|
||||||
|
log.warn("跳过无效数据源配置(code 为空): {}", config);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
DataSourceProperty prop = new DataSourceProperty();
|
||||||
|
prop.setUrl(config.getDbUrl());
|
||||||
|
prop.setUsername(config.getDbUsername());
|
||||||
|
prop.setPassword(SecurityUtil.jiemi(config.getDbPassword()));
|
||||||
|
prop.setDriverClassName(config.getDbDriver());
|
||||||
|
|
||||||
|
DataSource newDs = dataSourceCreator.createDataSource(prop);
|
||||||
|
ds.addDataSource(code, newDs); // 如果已存在,会先 close 旧的再替换(DynamicRoutingDataSource 内部逻辑)
|
||||||
|
log.info("已添加/更新动态数据源: {}", code);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("创建/更新数据源失败,code={}", code, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("动态数据源同步完成。当前动态数据源列表: {}",
|
||||||
|
ds.getDataSources().keySet().stream()
|
||||||
|
.filter(name -> !name.equals("master"))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,11 @@ package com.nu.modules.elderinfo.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.nu.dto.ElderInfoMQDto;
|
import com.nu.dto.ElderInfoMQDto;
|
||||||
import com.nu.dto.EmployeesApplyMQDto;
|
|
||||||
import com.nu.entity.ElderInfoEntity;
|
import com.nu.entity.ElderInfoEntity;
|
||||||
import com.nu.entity.ElderServerEntity;
|
import com.nu.entity.ElderServerEntity;
|
||||||
import com.nu.modules.elder.api.IElderInfoApi;
|
import com.nu.modules.elder.api.IElderInfoApi;
|
||||||
|
|
@ -18,15 +16,11 @@ import com.nu.modules.elderinfo.service.IElderInfoService;
|
||||||
import com.nu.modules.eldermofifyinfo.entity.ElderModifyInfo;
|
import com.nu.modules.eldermofifyinfo.entity.ElderModifyInfo;
|
||||||
import com.nu.modules.eldermofifyinfo.service.IElderModifyInfoService;
|
import com.nu.modules.eldermofifyinfo.service.IElderModifyInfoService;
|
||||||
import com.nu.modules.nubaseinfo.api.INuBaseInfoApi;
|
import com.nu.modules.nubaseinfo.api.INuBaseInfoApi;
|
||||||
import com.nu.modules.sysconfig.ISysConfigApi;
|
|
||||||
import com.nu.utils.RabbitMQUtil;
|
import com.nu.utils.RabbitMQUtil;
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
|
||||||
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cloud.commons.util.IdUtils;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,411 @@
|
||||||
|
server:
|
||||||
|
port: 8085
|
||||||
|
tomcat:
|
||||||
|
max-swallow-size: -1
|
||||||
|
error:
|
||||||
|
include-exception: true
|
||||||
|
include-stacktrace: ALWAYS
|
||||||
|
include-message: ALWAYS
|
||||||
|
servlet:
|
||||||
|
context-path: /biz104
|
||||||
|
compression:
|
||||||
|
enabled: true
|
||||||
|
min-response-size: 1024
|
||||||
|
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: metrics,jeecghttptrace
|
||||||
|
|
||||||
|
spring:
|
||||||
|
application:
|
||||||
|
name: nursing-unit-104
|
||||||
|
config:
|
||||||
|
import:
|
||||||
|
- optional:nacos:${spring.application.name}.yaml # 你的服务专属配置
|
||||||
|
- optional:nacos:common-db.yaml
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
discovery:
|
||||||
|
server-addr: nacos:8848 # 直接写死IP(或保留${config.server-addr})
|
||||||
|
namespace: public
|
||||||
|
group: DEFAULT_GROUP
|
||||||
|
config:
|
||||||
|
server-addr: nacos:8848
|
||||||
|
namespace: public
|
||||||
|
group: DEFAULT_GROUP
|
||||||
|
file-extension: yaml
|
||||||
|
# flyway配置
|
||||||
|
flyway:
|
||||||
|
# 是否启用flyway
|
||||||
|
enabled: false
|
||||||
|
# 编码格式,默认UTF-8
|
||||||
|
encoding: UTF-8
|
||||||
|
# 迁移sql脚本文件存放路径,官方默认db/migration
|
||||||
|
locations: classpath:flyway/sql/mysql
|
||||||
|
# 迁移sql脚本文件名称的前缀,默认V
|
||||||
|
sql-migration-prefix: V
|
||||||
|
# 迁移sql脚本文件名称的分隔符,默认2个下划线__
|
||||||
|
sql-migration-separator: __
|
||||||
|
# 避免带${}sql执行失败
|
||||||
|
placeholder-prefix: '#('
|
||||||
|
placeholder-suffix: )
|
||||||
|
# 迁移sql脚本文件名称的后缀
|
||||||
|
sql-migration-suffixes: .sql
|
||||||
|
# 迁移时是否进行校验,默认true
|
||||||
|
validate-on-migrate: true
|
||||||
|
# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
|
||||||
|
baseline-on-migrate: true
|
||||||
|
# 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库,非常重要!!!
|
||||||
|
clean-disabled: true
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
max-file-size: 100MB
|
||||||
|
max-request-size: 100MB
|
||||||
|
mail:
|
||||||
|
# 定时任务发送邮件
|
||||||
|
timeJobSend: false
|
||||||
|
host: smtp.163.com
|
||||||
|
username: jeecgos@163.com
|
||||||
|
password: ??
|
||||||
|
properties:
|
||||||
|
mail:
|
||||||
|
smtp:
|
||||||
|
auth: true
|
||||||
|
starttls:
|
||||||
|
enable: true
|
||||||
|
required: true
|
||||||
|
## quartz定时任务,采用数据库方式
|
||||||
|
quartz:
|
||||||
|
job-store-type: jdbc
|
||||||
|
initialize-schema: embedded
|
||||||
|
#定时任务启动开关,true-开 false-关
|
||||||
|
auto-startup: true
|
||||||
|
#延迟1秒启动定时任务
|
||||||
|
startup-delay: 1s
|
||||||
|
#启动时更新己存在的Job
|
||||||
|
overwrite-existing-jobs: true
|
||||||
|
properties:
|
||||||
|
org:
|
||||||
|
quartz:
|
||||||
|
scheduler:
|
||||||
|
instanceName: MyScheduler
|
||||||
|
instanceId: AUTO
|
||||||
|
jobStore:
|
||||||
|
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
|
||||||
|
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
|
||||||
|
tablePrefix: QRTZ_
|
||||||
|
isClustered: false
|
||||||
|
misfireThreshold: 12000
|
||||||
|
clusterCheckinInterval: 0 #心跳检查 之前是15000
|
||||||
|
acquireTriggersWithinLock: false # 减少锁竞争
|
||||||
|
threadPool:
|
||||||
|
class: org.quartz.simpl.SimpleThreadPool
|
||||||
|
threadCount: 10
|
||||||
|
threadPriority: 5
|
||||||
|
threadsInheritContextClassLoaderOfInitializingThread: true
|
||||||
|
#json 时间戳统一转换
|
||||||
|
jackson:
|
||||||
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
|
time-zone: GMT+8
|
||||||
|
jpa:
|
||||||
|
open-in-view: false
|
||||||
|
aop:
|
||||||
|
proxy-target-class: true
|
||||||
|
#配置freemarker
|
||||||
|
freemarker:
|
||||||
|
# 设置模板后缀名
|
||||||
|
suffix: .ftl
|
||||||
|
# 设置文档类型
|
||||||
|
content-type: text/html
|
||||||
|
# 设置页面编码格式
|
||||||
|
charset: UTF-8
|
||||||
|
# 设置页面缓存
|
||||||
|
cache: false
|
||||||
|
prefer-file-system-access: false
|
||||||
|
# 设置ftl文件路径
|
||||||
|
template-loader-path:
|
||||||
|
- classpath:/templates
|
||||||
|
template_update_delay: 0
|
||||||
|
# 设置静态文件路径,js,css等
|
||||||
|
mvc:
|
||||||
|
static-path-pattern: /**
|
||||||
|
#Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher
|
||||||
|
pathmatch:
|
||||||
|
matching-strategy: ant_path_matcher
|
||||||
|
resource:
|
||||||
|
static-locations: classpath:/static/,classpath:/public/
|
||||||
|
autoconfigure:
|
||||||
|
exclude:
|
||||||
|
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
|
||||||
|
- org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration
|
||||||
|
datasource:
|
||||||
|
druid:
|
||||||
|
stat-view-servlet:
|
||||||
|
enabled: true
|
||||||
|
loginUsername: admin
|
||||||
|
loginPassword: 123456
|
||||||
|
allow:
|
||||||
|
web-stat-filter:
|
||||||
|
enabled: true
|
||||||
|
dynamic:
|
||||||
|
druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
|
||||||
|
# 连接池的配置信息
|
||||||
|
# 初始化大小,最小,最大
|
||||||
|
initial-size: 5
|
||||||
|
min-idle: 5
|
||||||
|
maxActive: 1000
|
||||||
|
# 配置获取连接等待超时的时间
|
||||||
|
maxWait: 60000
|
||||||
|
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||||
|
timeBetweenEvictionRunsMillis: 60000
|
||||||
|
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||||
|
minEvictableIdleTimeMillis: 3600000
|
||||||
|
validationQuery: SELECT 1
|
||||||
|
testWhileIdle: true
|
||||||
|
testOnBorrow: false
|
||||||
|
testOnReturn: false
|
||||||
|
# 打开PSCache,并且指定每个连接上PSCache的大小
|
||||||
|
poolPreparedStatements: true
|
||||||
|
maxPoolPreparedStatementPerConnectionSize: 20
|
||||||
|
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
|
||||||
|
filters: stat,wall,slf4j
|
||||||
|
# 允许SELECT语句的WHERE子句是一个永真条件
|
||||||
|
wall:
|
||||||
|
selectWhereAlwayTrueCheck: false
|
||||||
|
# 打开mergeSql功能;慢SQL记录
|
||||||
|
stat:
|
||||||
|
merge-sql: true
|
||||||
|
slow-sql-millis: 5000
|
||||||
|
datasource:
|
||||||
|
master:
|
||||||
|
url: jdbc:mysql://mysql8-prod:3306/nursing_unit_004?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||||
|
username: root
|
||||||
|
password: AceijtC5kn7CWroE
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
# 多数据源配置-运维系统
|
||||||
|
devops:
|
||||||
|
url: jdbc:mysql://121.36.88.64:47236/nu_devops?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||||
|
username: fw8864sshdang
|
||||||
|
password: uGDBkM25I6nZCNM2
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
# 多数据源配置-运维系统
|
||||||
|
ope:
|
||||||
|
url: jdbc:mysql://121.36.88.64:47236/nursing_unit?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||||
|
username: fw8864sshdang
|
||||||
|
password: uGDBkM25I6nZCNM2
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
#redis 配置
|
||||||
|
redis:
|
||||||
|
database: 1
|
||||||
|
host: redis
|
||||||
|
port: 6379
|
||||||
|
password: uUgrUus4JAYuwxzo
|
||||||
|
rabbitmq:
|
||||||
|
host: 121.36.88.64
|
||||||
|
prot: 5672
|
||||||
|
username: hldy
|
||||||
|
password: SJ+lhRn6nZ43KeXE
|
||||||
|
virtual-host: hldy
|
||||||
|
#mybatis plus 设置
|
||||||
|
mybatis-plus:
|
||||||
|
mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml,classpath*:com/nu/**/xml/*Mapper.xml
|
||||||
|
global-config:
|
||||||
|
# 关闭MP3.0自带的banner
|
||||||
|
banner: false
|
||||||
|
db-config:
|
||||||
|
#主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
|
||||||
|
id-type: ASSIGN_ID
|
||||||
|
# 默认数据库表下划线命名
|
||||||
|
table-underline: true
|
||||||
|
configuration:
|
||||||
|
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
|
||||||
|
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||||
|
# 返回类型为Map,显示null对应的字段
|
||||||
|
call-setters-on-nulls: true
|
||||||
|
#jeecg专用配置
|
||||||
|
minidao:
|
||||||
|
base-package: org.jeecg.modules.jmreport.*,org.jeecg.modules.drag.*
|
||||||
|
jeecg:
|
||||||
|
# AI集成
|
||||||
|
ai-chat:
|
||||||
|
enabled: true
|
||||||
|
model: deepseek-chat
|
||||||
|
apiKey: ??
|
||||||
|
apiHost: https://api.deepseek.com
|
||||||
|
timeout: 60
|
||||||
|
# 平台上线安全配置
|
||||||
|
firewall:
|
||||||
|
# 数据源安全 (开启后,Online报表和图表的数据源为必填)
|
||||||
|
dataSourceSafe: false
|
||||||
|
# 低代码模式(dev:开发模式,prod:发布模式——关闭所有在线开发配置能力)
|
||||||
|
lowCodeMode: dev
|
||||||
|
# 签名密钥串(前后端要一致,正式发布请自行修改)
|
||||||
|
signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
|
||||||
|
#签名拦截接口
|
||||||
|
signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys,/sys/sendChangePwdSms,/sys/user/sendChangePhoneSms,/sys/sms,/desform/api/sendVerifyCode
|
||||||
|
# 本地:local、Minio:minio、阿里云:alioss
|
||||||
|
uploadType: local
|
||||||
|
# 前端访问地址
|
||||||
|
domainUrl:
|
||||||
|
pc: http://localhost:3100
|
||||||
|
app: http://localhost:8051
|
||||||
|
path:
|
||||||
|
#文件上传根目录 设置
|
||||||
|
upload: /opt/biz/upFiles104
|
||||||
|
#webapp文件路径
|
||||||
|
webapp: /opt/biz104/webapp
|
||||||
|
shiro:
|
||||||
|
excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/bigscreen/category/**,/bigscreen/visual/**,/bigscreen/map/**,/jmreport/bigscreen2/**
|
||||||
|
#阿里云oss存储和大鱼短信秘钥配置
|
||||||
|
oss:
|
||||||
|
accessKey: ??
|
||||||
|
secretKey: ??
|
||||||
|
endpoint: oss-cn-beijing.aliyuncs.com
|
||||||
|
bucketName: jeecgdev
|
||||||
|
# 短信模板
|
||||||
|
sms-template:
|
||||||
|
# 签名
|
||||||
|
signature:
|
||||||
|
# 模板code
|
||||||
|
templateCode:
|
||||||
|
# 登录短信、忘记密码模板编码
|
||||||
|
SMS_175435174:
|
||||||
|
# 修改密码短信模板编码
|
||||||
|
SMS_465391221:
|
||||||
|
# 注册账号短信模板编码
|
||||||
|
SMS_175430166:
|
||||||
|
# 在线预览文件服务器地址配置
|
||||||
|
file-view-domain: http://fileview.jeecg.com
|
||||||
|
# minio文件上传
|
||||||
|
minio:
|
||||||
|
minio_url: http://minio.jeecg.com
|
||||||
|
minio_name: ??
|
||||||
|
minio_pass: ??
|
||||||
|
bucketName: otatest
|
||||||
|
#大屏报表参数设置
|
||||||
|
jmreport:
|
||||||
|
#多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离) (v1.6.2+ 新增)
|
||||||
|
saasMode:
|
||||||
|
# 平台上线安全配置(v1.6.2+ 新增)
|
||||||
|
firewall:
|
||||||
|
# 数据源安全 (开启后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库)
|
||||||
|
dataSourceSafe: false
|
||||||
|
# 低代码开发模式(dev:开发模式,prod:发布模式—关闭在线报表设计功能,分配角色admin、lowdeveloper可以放开限制)
|
||||||
|
lowCodeMode: dev
|
||||||
|
#xxl-job配置
|
||||||
|
xxljob:
|
||||||
|
enabled: false
|
||||||
|
adminAddresses: http://127.0.0.1:9080/xxl-job-admin
|
||||||
|
appname: ${spring.application.name}
|
||||||
|
accessToken: ''
|
||||||
|
address: 127.0.0.1:30007
|
||||||
|
ip: 127.0.0.1
|
||||||
|
port: 30007
|
||||||
|
logPath: logs/jeecg/job/jobhandler/
|
||||||
|
logRetentionDays: 30
|
||||||
|
#分布式锁配置
|
||||||
|
redisson:
|
||||||
|
address: 127.0.0.1:6379
|
||||||
|
password:
|
||||||
|
type: STANDALONE
|
||||||
|
enabled: true
|
||||||
|
# 百度开放API配置
|
||||||
|
baidu-api:
|
||||||
|
app-id: ??
|
||||||
|
api-key: ??
|
||||||
|
secret-key: ??
|
||||||
|
# ElasticSearch 6设置
|
||||||
|
elasticsearch:
|
||||||
|
cluster-name: jeecg-ES
|
||||||
|
cluster-nodes: 127.0.0.1:9200
|
||||||
|
check-enabled: false
|
||||||
|
#cas单点登录
|
||||||
|
cas:
|
||||||
|
prefixUrl: http://cas.example.org:8443/cas
|
||||||
|
#Mybatis输出sql日志
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
org.flywaydb: debug
|
||||||
|
org.jeecg.modules.system.mapper: info
|
||||||
|
com.nu.modules.system.mapper: info
|
||||||
|
#swagger
|
||||||
|
knife4j:
|
||||||
|
#开启增强配置
|
||||||
|
enable: true
|
||||||
|
#开启生产环境屏蔽
|
||||||
|
production: false
|
||||||
|
basic:
|
||||||
|
enable: false
|
||||||
|
username: jeecg
|
||||||
|
password: jeecg1314
|
||||||
|
#第三方登录
|
||||||
|
justauth:
|
||||||
|
enabled: true
|
||||||
|
type:
|
||||||
|
GITHUB:
|
||||||
|
client-id: ??
|
||||||
|
client-secret: ??
|
||||||
|
redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callback
|
||||||
|
WECHAT_ENTERPRISE:
|
||||||
|
client-id: ??
|
||||||
|
client-secret: ??
|
||||||
|
redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback
|
||||||
|
agent-id: ??
|
||||||
|
DINGTALK:
|
||||||
|
client-id: ??
|
||||||
|
client-secret: ??
|
||||||
|
redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback
|
||||||
|
WECHAT_OPEN:
|
||||||
|
client-id: ??
|
||||||
|
client-secret: ??
|
||||||
|
redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback
|
||||||
|
cache:
|
||||||
|
type: default
|
||||||
|
prefix: 'demo::'
|
||||||
|
timeout: 1h
|
||||||
|
#tplink登录信息
|
||||||
|
tplink:
|
||||||
|
tums:
|
||||||
|
url: https://121.36.88.64:8888
|
||||||
|
username: admin
|
||||||
|
password: Bl20230518
|
||||||
|
ftp:
|
||||||
|
ip: 1.92.152.160
|
||||||
|
port: 21
|
||||||
|
username: administrator
|
||||||
|
password: Root@123..
|
||||||
|
uploadpath: /
|
||||||
|
|
||||||
|
#zmy
|
||||||
|
aliyun:
|
||||||
|
ocr:
|
||||||
|
accessKeyId: LTAI5tMoCTt4sb9VQrcnZFsb
|
||||||
|
accessKeySecret: pQBMT6TlUWgRfvvDnOu0IKVYXCfKee
|
||||||
|
#文件传输秘钥
|
||||||
|
downloadkey: hP2K9Z!WLuj"M#8,
|
||||||
|
|
||||||
|
# 微信支付
|
||||||
|
wxpay:
|
||||||
|
# APIv3密钥
|
||||||
|
api-v3-key: asdfiuzwe3534565478WETDSAFRWEq1E
|
||||||
|
# APPID
|
||||||
|
appid: wx53bc8a44e780d26a
|
||||||
|
# appsecret
|
||||||
|
appsecret: 7dfcbf80cb4ff379454a3d6b1f8bd61f
|
||||||
|
# 商户ID
|
||||||
|
mch-id: 1717618860
|
||||||
|
# 商户API证书序列号
|
||||||
|
mch-serial-no: 3E51C9D24F64CE50E9273E544561D29684AB21C7
|
||||||
|
# 接收结果通知地址
|
||||||
|
notify-domain: https://www.focusnu.com/nursingunit104/weiXinPay/callback
|
||||||
|
# 商户私钥文件路径
|
||||||
|
private-key-path: /opt/biz/apiclient_key.pem
|
||||||
|
|
||||||
|
nu:
|
||||||
|
org:
|
||||||
|
#试验机构信息
|
||||||
|
master:
|
||||||
|
code: 101
|
||||||
31
pom.xml
31
pom.xml
|
|
@ -163,17 +163,17 @@
|
||||||
<version>${commonmark.version}</version>
|
<version>${commonmark.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- Nacos 服务发现 -->
|
<!-- Nacos 服务发现 -->
|
||||||
<dependency>
|
<!-- <dependency>-->
|
||||||
<groupId>com.alibaba.cloud</groupId>
|
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
||||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
|
||||||
<version>2021.0.5.0</version>
|
<!-- <version>2021.0.5.0</version>-->
|
||||||
</dependency>
|
<!-- </dependency>-->
|
||||||
<!-- Nacos 配置中心-->
|
<!-- Nacos 配置中心-->
|
||||||
<dependency>
|
<!-- <dependency>-->
|
||||||
<groupId>com.alibaba.cloud</groupId>
|
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
||||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
|
||||||
<version>2021.0.5.0</version>
|
<!-- <version>2021.0.5.0</version>-->
|
||||||
</dependency>
|
<!-- </dependency>-->
|
||||||
<!-- RabbitMQ-->
|
<!-- RabbitMQ-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|
@ -506,5 +506,16 @@
|
||||||
<profile.name>uat103</profile.name>
|
<profile.name>uat103</profile.name>
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>uat104</id>
|
||||||
|
<activation>
|
||||||
|
<!--默认激活配置-->
|
||||||
|
<activeByDefault>false</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<!--当前环境-->
|
||||||
|
<profile.name>uat104</profile.name>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue