From b47bebd731400a36bd4bc5e2ad31877cc3bd2e87 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Mon, 13 Oct 2025 15:11:58 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=8A=A8=E6=80=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E6=96=B0=E5=A2=9E=E4=B8=8D=E9=87=8D=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=88=B7=E6=96=B0=E6=8E=A5=E5=8F=A3=202=E3=80=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BA=BF=E4=B8=8A104=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nu/modules/commonutils/SysUtilsApi.java | 24 + .../org/jeecg/config/shiro/ShiroConfig.java | 1 + .../modules/data/loader/DataSourceLoader.java | 87 +++- .../service/impl/ElderInfoServiceImpl.java | 6 - .../src/main/resources/application-uat104.yml | 411 ++++++++++++++++++ pom.xml | 31 +- 6 files changed, 530 insertions(+), 30 deletions(-) create mode 100644 nursing-unit-api/src/main/java/com/nu/modules/commonutils/SysUtilsApi.java create mode 100644 nursing-unit-system/nu-system-start/src/main/resources/application-uat104.yml diff --git a/nursing-unit-api/src/main/java/com/nu/modules/commonutils/SysUtilsApi.java b/nursing-unit-api/src/main/java/com/nu/modules/commonutils/SysUtilsApi.java new file mode 100644 index 0000000..f0fc903 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/commonutils/SysUtilsApi.java @@ -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 "数据源已刷新"; + } +} diff --git a/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index b8c9e84..2977644 100644 --- a/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -122,6 +122,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/api/ocr/**", "anon");//TODO 待删除 运维也删 阿里云证件识别 filterChainDefinitionMap.put("/api/baseInfo/**", "anon");//获取系统中信息 filterChainDefinitionMap.put("/sys/common/open/static/**", "anon");//获取本地文件资源 + filterChainDefinitionMap.put("/api/sysUtils/refreshDS", "anon");//刷新数据源 filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码 filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //监听扫码 diff --git a/nursing-unit-base-core/src/main/java/org/jeecg/modules/data/loader/DataSourceLoader.java b/nursing-unit-base-core/src/main/java/org/jeecg/modules/data/loader/DataSourceLoader.java index 9c86a43..3440f12 100644 --- a/nursing-unit-base-core/src/main/java/org/jeecg/modules/data/loader/DataSourceLoader.java +++ b/nursing-unit-base-core/src/main/java/org/jeecg/modules/data/loader/DataSourceLoader.java @@ -3,6 +3,7 @@ package org.jeecg.modules.data.loader; import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; import com.baomidou.dynamic.datasource.creator.DataSourceProperty; import com.baomidou.dynamic.datasource.creator.druid.DruidDataSourceCreator; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.data.util.SecurityUtil; import org.jeecg.modules.data.entity.DataSourceEntity; @@ -12,6 +13,9 @@ import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.sql.DataSource; import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; @Slf4j @Service @@ -27,11 +31,50 @@ public class DataSourceLoader { refreshDataSources(); } +// public void refreshDataSources() { +// DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; +// DataSource mainDataSource = ds.getDataSource("devops"); +// +// // 从主数据源读取配置 +// List 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() { DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; - DataSource mainDataSource = ds.getDataSource("devops"); - // 从主数据源读取配置 + // 1. 从固定的主数据源(如 devops)读取最新的动态数据源配置 + DataSource mainDataSource = ds.getDataSource("devops"); // 必须是静态配置的,不能被动态删除! + if (mainDataSource == null) { + log.error("无法获取主数据源 'devops',刷新动态数据源失败!"); + return; + } + List 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( @@ -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())); + } } diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/elderinfo/service/impl/ElderInfoServiceImpl.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/elderinfo/service/impl/ElderInfoServiceImpl.java index 75bf581..fa2ba10 100644 --- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/elderinfo/service/impl/ElderInfoServiceImpl.java +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/elderinfo/service/impl/ElderInfoServiceImpl.java @@ -2,13 +2,11 @@ package com.nu.modules.elderinfo.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.IdUtil; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nu.dto.ElderInfoMQDto; -import com.nu.dto.EmployeesApplyMQDto; import com.nu.entity.ElderInfoEntity; import com.nu.entity.ElderServerEntity; 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.service.IElderModifyInfoService; import com.nu.modules.nubaseinfo.api.INuBaseInfoApi; -import com.nu.modules.sysconfig.ISysConfigApi; import com.nu.utils.RabbitMQUtil; -import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; -import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.LoginUser; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.commons.util.IdUtils; import org.springframework.stereotype.Service; import java.lang.reflect.Field; diff --git a/nursing-unit-system/nu-system-start/src/main/resources/application-uat104.yml b/nursing-unit-system/nu-system-start/src/main/resources/application-uat104.yml new file mode 100644 index 0000000..1a68a6c --- /dev/null +++ b/nursing-unit-system/nu-system-start/src/main/resources/application-uat104.yml @@ -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 diff --git a/pom.xml b/pom.xml index 40fd19e..a58cda6 100644 --- a/pom.xml +++ b/pom.xml @@ -163,17 +163,17 @@ ${commonmark.version} - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - 2021.0.5.0 - + + + + + - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - 2021.0.5.0 - + + + + + org.springframework.boot @@ -506,5 +506,16 @@ uat103 + + uat104 + + + false + + + + uat104 + +