infra:勉强启动成功,需要继续优化
parent
0745ad9254
commit
ea7ad4b1ca
|
@ -2,6 +2,7 @@
|
||||||
"local": {
|
"local": {
|
||||||
"baseUrl": "http://127.0.0.1:48080/admin-api",
|
"baseUrl": "http://127.0.0.1:48080/admin-api",
|
||||||
"systemBaseUrl": "http://127.0.0.1:48081/admin-api",
|
"systemBaseUrl": "http://127.0.0.1:48081/admin-api",
|
||||||
|
"infaBaseUrl": "http://127.0.0.1:48082/admin-api",
|
||||||
|
|
||||||
"token": "test1",
|
"token": "test1",
|
||||||
"adminTenentId": "1",
|
"adminTenentId": "1",
|
||||||
|
|
|
@ -33,7 +33,6 @@ import javax.annotation.Resource;
|
||||||
*/
|
*/
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@EnableConfigurationProperties(SecurityProperties.class)
|
@EnableConfigurationProperties(SecurityProperties.class)
|
||||||
@EnableFeignClients(clients = OAuth2TokenApi.class)
|
|
||||||
public class YudaoSecurityAutoConfiguration {
|
public class YudaoSecurityAutoConfiguration {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package cn.iocoder.yudao.framework.security.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi;
|
||||||
|
import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
|
||||||
|
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Security 使用到 Feign 的配置项
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
@EnableFeignClients(clients = {OAuth2TokenApi.class, // 主要是引入相关的 API 服务
|
||||||
|
PermissionApi.class})
|
||||||
|
public class YudaoSecurityFeignAutoConfiguration {
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||||
|
cn.iocoder.yudao.framework.security.config.YudaoSecurityFeignAutoConfiguration,\
|
||||||
cn.iocoder.yudao.framework.security.config.YudaoSecurityAutoConfiguration,\
|
cn.iocoder.yudao.framework.security.config.YudaoSecurityAutoConfiguration,\
|
||||||
cn.iocoder.yudao.framework.security.config.YudaoWebSecurityConfigurerAdapter
|
cn.iocoder.yudao.framework.security.config.YudaoWebSecurityConfigurerAdapter
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package cn.iocoder.yudao.module.infra.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API 相关的枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
public class ApiConstants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务名
|
||||||
|
*
|
||||||
|
* 注意,需要保证和 spring.application.name 保持一致
|
||||||
|
*/
|
||||||
|
public static final String NAME = "infra-server";
|
||||||
|
|
||||||
|
public static final String PREFIX = "/rpc-api/system";
|
||||||
|
|
||||||
|
public static final String VERSION = "1.0.0";
|
||||||
|
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
### 请求 /infra/file-config/create 接口 => 成功
|
### 请求 /infra/file-config/create 接口 => 成功
|
||||||
POST {{baseUrl}}/infra/file-config/create
|
POST {{infaBaseUrl}}/infra/file-config/create
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
### 请求 /infra/redis/get-monitor-info 接口 => 成功
|
### 请求 /infra/redis/get-monitor-info 接口 => 成功
|
||||||
GET {{baseUrl}}/infra/redis/get-monitor-info
|
GET {{infaBaseUrl}}/infra/redis/get-monitor-info
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
|
|
||||||
### 请求 /infra/redis/get-key-list 接口 => 成功
|
### 请求 /infra/redis/get-key-list 接口 => 成功
|
||||||
GET {{baseUrl}}/infra/redis/get-key-list
|
GET {{infaBaseUrl}}/infra/redis/get-key-list
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
package cn.iocoder.yudao.module.infra.framework;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService;
|
||||||
|
import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService;
|
||||||
|
import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateReqDTO;
|
||||||
|
import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateReqDTO;
|
||||||
|
import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
|
||||||
|
import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService;
|
||||||
|
import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class TmpConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public OperateLogFrameworkService operateLogFrameworkService() {
|
||||||
|
return new OperateLogFrameworkService() {
|
||||||
|
@Override
|
||||||
|
public Future<Boolean> createOperateLogAsync(OperateLogCreateReqDTO reqVO) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package cn.iocoder.yudao.module.infra.framework.rpc.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
|
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
@EnableFeignClients(clients = AdminUserApi.class)
|
||||||
|
public class RpcConfiguration {
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
/**
|
||||||
|
* 占位
|
||||||
|
*/
|
||||||
|
package cn.iocoder.yudao.module.infra.framework.rpc;
|
|
@ -1,6 +1,3 @@
|
||||||
server:
|
|
||||||
port: 48082
|
|
||||||
|
|
||||||
--- #################### 数据库相关配置 ####################
|
--- #################### 数据库相关配置 ####################
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
|
|
|
@ -1,220 +0,0 @@
|
||||||
spring:
|
|
||||||
# 数据源配置项
|
|
||||||
autoconfigure:
|
|
||||||
exclude:
|
|
||||||
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
|
|
||||||
datasource:
|
|
||||||
druid: # Druid 【监控】相关的全局配置
|
|
||||||
web-stat-filter:
|
|
||||||
enabled: true
|
|
||||||
stat-view-servlet:
|
|
||||||
enabled: true
|
|
||||||
allow: # 设置白名单,不填则允许所有访问
|
|
||||||
url-pattern: /druid/*
|
|
||||||
login-username: # 控制台管理用户名和密码
|
|
||||||
login-password:
|
|
||||||
filter:
|
|
||||||
stat:
|
|
||||||
enabled: true
|
|
||||||
log-slow-sql: true # 慢 SQL 记录
|
|
||||||
slow-sql-millis: 100
|
|
||||||
merge-sql: true
|
|
||||||
wall:
|
|
||||||
config:
|
|
||||||
multi-statement-allow: true
|
|
||||||
dynamic: # 多数据源配置
|
|
||||||
druid: # Druid 【连接池】相关的全局配置
|
|
||||||
initial-size: 5 # 初始连接数
|
|
||||||
min-idle: 10 # 最小连接池数量
|
|
||||||
max-active: 20 # 最大连接池数量
|
|
||||||
max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
|
|
||||||
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
|
|
||||||
min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
|
|
||||||
max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
|
|
||||||
validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
|
|
||||||
test-while-idle: true
|
|
||||||
test-on-borrow: false
|
|
||||||
test-on-return: false
|
|
||||||
primary: master
|
|
||||||
datasource:
|
|
||||||
master:
|
|
||||||
name: ruoyi-vue-pro
|
|
||||||
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
|
||||||
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
|
|
||||||
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
|
|
||||||
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
|
|
||||||
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
|
|
||||||
username: root
|
|
||||||
password: 123456
|
|
||||||
# username: sa
|
|
||||||
# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
|
|
||||||
slave: # 模拟从库,可根据自己需要修改
|
|
||||||
name: ruoyi-vue-pro
|
|
||||||
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
|
||||||
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
|
|
||||||
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
|
|
||||||
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
|
|
||||||
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
|
|
||||||
username: root
|
|
||||||
password: 123456
|
|
||||||
# username: sa
|
|
||||||
# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
|
|
||||||
|
|
||||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
|
||||||
redis:
|
|
||||||
host: 127.0.0.1 # 地址
|
|
||||||
port: 6379 # 端口
|
|
||||||
database: 0 # 数据库索引
|
|
||||||
# password: 123456 # 密码,建议生产环境开启
|
|
||||||
|
|
||||||
jasypt:
|
|
||||||
encryptor:
|
|
||||||
password: yuanma # 加解密的秘钥
|
|
||||||
|
|
||||||
--- #################### 定时任务相关配置 ####################
|
|
||||||
|
|
||||||
# Quartz 配置项,对应 QuartzProperties 配置类
|
|
||||||
spring:
|
|
||||||
quartz:
|
|
||||||
auto-startup: false # 本地开发环境,尽量不要开启 Job
|
|
||||||
scheduler-name: schedulerName # Scheduler 名字。默认为 schedulerName
|
|
||||||
job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。
|
|
||||||
wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true
|
|
||||||
properties: # 添加 Quartz Scheduler 附加属性,更多可以看 http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/configuration.html 文档
|
|
||||||
org:
|
|
||||||
quartz:
|
|
||||||
# Scheduler 相关配置
|
|
||||||
scheduler:
|
|
||||||
instanceName: schedulerName
|
|
||||||
instanceId: AUTO # 自动生成 instance ID
|
|
||||||
# JobStore 相关配置
|
|
||||||
jobStore:
|
|
||||||
# JobStore 实现类。可见博客:https://blog.csdn.net/weixin_42458219/article/details/122247162
|
|
||||||
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
|
|
||||||
isClustered: true # 是集群模式
|
|
||||||
clusterCheckinInterval: 15000 # 集群检查频率,单位:毫秒。默认为 15000,即 15 秒
|
|
||||||
misfireThreshold: 60000 # misfire 阀值,单位:毫秒。
|
|
||||||
# 线程池相关配置
|
|
||||||
threadPool:
|
|
||||||
threadCount: 25 # 线程池大小。默认为 10 。
|
|
||||||
threadPriority: 5 # 线程优先级
|
|
||||||
class: org.quartz.simpl.SimpleThreadPool # 线程池类型
|
|
||||||
jdbc: # 使用 JDBC 的 JobStore 的时候,JDBC 的配置
|
|
||||||
initialize-schema: NEVER # 是否自动使用 SQL 初始化 Quartz 表结构。这里设置成 never ,我们手动创建表结构。
|
|
||||||
|
|
||||||
--- #################### 配置中心相关配置 ####################
|
|
||||||
|
|
||||||
# Apollo 配置中心
|
|
||||||
apollo:
|
|
||||||
bootstrap:
|
|
||||||
enabled: true # 设置 Apollo 在启动阶段生效
|
|
||||||
eagerLoad:
|
|
||||||
enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
|
|
||||||
jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
|
|
||||||
dao: cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigDAOImpl
|
|
||||||
url: ${spring.datasource.dynamic.datasource.master.url}
|
|
||||||
username: ${spring.datasource.dynamic.datasource.master.username}
|
|
||||||
password: ${spring.datasource.dynamic.datasource.master.password}
|
|
||||||
|
|
||||||
--- #################### 服务保障相关配置 ####################
|
|
||||||
|
|
||||||
# Lock4j 配置项
|
|
||||||
lock4j:
|
|
||||||
acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
|
|
||||||
expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
|
|
||||||
|
|
||||||
# Resilience4j 配置项
|
|
||||||
resilience4j:
|
|
||||||
ratelimiter:
|
|
||||||
instances:
|
|
||||||
backendA:
|
|
||||||
limit-for-period: 1 # 每个周期内,允许的请求数。默认为 50
|
|
||||||
limit-refresh-period: 60s # 每个周期的时长,单位:微秒。默认为 500
|
|
||||||
timeout-duration: 1s # 被限流时,阻塞等待的时长,单位:微秒。默认为 5s
|
|
||||||
register-health-indicator: true # 是否注册到健康监测
|
|
||||||
|
|
||||||
--- #################### 监控相关配置 ####################
|
|
||||||
|
|
||||||
# Actuator 监控端点的配置项
|
|
||||||
management:
|
|
||||||
endpoints:
|
|
||||||
web:
|
|
||||||
base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
|
|
||||||
exposure:
|
|
||||||
include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
|
|
||||||
|
|
||||||
# Spring Boot Admin 配置项
|
|
||||||
spring:
|
|
||||||
boot:
|
|
||||||
admin:
|
|
||||||
# Spring Boot Admin Client 客户端的相关配置
|
|
||||||
client:
|
|
||||||
url: http://127.0.0.1:${server.port}/${spring.boot.admin.context-path} # 设置 Spring Boot Admin Server 地址
|
|
||||||
instance:
|
|
||||||
prefer-ip: true # 注册实例时,优先使用 IP
|
|
||||||
# Spring Boot Admin Server 服务端的相关配置
|
|
||||||
context-path: /admin # 配置 Spring
|
|
||||||
|
|
||||||
# 日志文件配置
|
|
||||||
logging:
|
|
||||||
file:
|
|
||||||
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
|
|
||||||
level:
|
|
||||||
# 配置自己写的 MyBatis Mapper 打印日志
|
|
||||||
cn.iocoder.yudao.module.bpm.dal.mysql: debug
|
|
||||||
cn.iocoder.yudao.module.infra.dal.mysql: debug
|
|
||||||
cn.iocoder.yudao.module.pay.dal.mysql: debug
|
|
||||||
cn.iocoder.yudao.module.system.dal.mysql: debug
|
|
||||||
cn.iocoder.yudao.module.tool.dal.mysql: debug
|
|
||||||
cn.iocoder.yudao.module.member.dal.mysql: debug
|
|
||||||
|
|
||||||
--- #################### 微信公众号相关配置 ####################
|
|
||||||
wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
|
|
||||||
mp:
|
|
||||||
# 公众号配置(必填)
|
|
||||||
app-id: wx041349c6f39b268b
|
|
||||||
secret: 5abee519483bc9f8cb37ce280e814bd0
|
|
||||||
# 存储配置,解决 AccessToken 的跨节点的共享
|
|
||||||
config-storage:
|
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
|
||||||
key-prefix: wx # Redis Key 的前缀 TODO 芋艿:解决下 Redis key 管理的配置
|
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
|
||||||
|
|
||||||
# 芋道配置项,设置当前项目所有自定义的配置
|
|
||||||
yudao:
|
|
||||||
captcha:
|
|
||||||
enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试
|
|
||||||
security:
|
|
||||||
token-header: Authorization
|
|
||||||
mock-enable: true
|
|
||||||
mock-secret: test
|
|
||||||
xss:
|
|
||||||
enable: false
|
|
||||||
exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
|
|
||||||
- ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
|
|
||||||
- ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
|
|
||||||
pay:
|
|
||||||
pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
|
|
||||||
pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
|
|
||||||
refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
|
|
||||||
demo: false # 关闭演示模式
|
|
||||||
|
|
||||||
justauth:
|
|
||||||
enabled: true
|
|
||||||
type:
|
|
||||||
DINGTALK: # 钉钉
|
|
||||||
client-id: dingvrnreaje3yqvzhxg
|
|
||||||
client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
|
|
||||||
ignore-check-redirect-uri: true
|
|
||||||
WECHAT_ENTERPRISE: # 企业微信
|
|
||||||
client-id: wwd411c69a39ad2e54
|
|
||||||
client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
|
|
||||||
agent-id: 1000004
|
|
||||||
ignore-check-redirect-uri: true
|
|
||||||
cache:
|
|
||||||
type: REDIS
|
|
||||||
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
|
|
||||||
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
|
|
||||||
|
|
|
@ -71,6 +71,8 @@ dubbo:
|
||||||
port: -1 # 协议端口,-1 表示自增端口,从 20880 开始
|
port: -1 # 协议端口,-1 表示自增端口,从 20880 开始
|
||||||
registry:
|
registry:
|
||||||
address: spring-cloud://localhost # 设置使用 Spring Cloud 注册中心
|
address: spring-cloud://localhost # 设置使用 Spring Cloud 注册中心
|
||||||
|
application:
|
||||||
|
id: infra-server # TODO 一定要写么?
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
|
|
@ -21,3 +21,226 @@ spring:
|
||||||
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
|
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
|
||||||
name: # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
|
name: # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
|
||||||
file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties
|
file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties
|
||||||
|
|
||||||
|
--- #################### 数据库相关配置 ####################
|
||||||
|
spring:
|
||||||
|
|
||||||
|
# 数据源配置项
|
||||||
|
autoconfigure:
|
||||||
|
exclude:
|
||||||
|
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
|
||||||
|
datasource:
|
||||||
|
druid: # Druid 【监控】相关的全局配置
|
||||||
|
web-stat-filter:
|
||||||
|
enabled: true
|
||||||
|
stat-view-servlet:
|
||||||
|
enabled: true
|
||||||
|
allow: # 设置白名单,不填则允许所有访问
|
||||||
|
url-pattern: /druid/*
|
||||||
|
login-username: # 控制台管理用户名和密码
|
||||||
|
login-password:
|
||||||
|
filter:
|
||||||
|
stat:
|
||||||
|
enabled: true
|
||||||
|
log-slow-sql: true # 慢 SQL 记录
|
||||||
|
slow-sql-millis: 100
|
||||||
|
merge-sql: true
|
||||||
|
wall:
|
||||||
|
config:
|
||||||
|
multi-statement-allow: true
|
||||||
|
dynamic: # 多数据源配置
|
||||||
|
druid: # Druid 【连接池】相关的全局配置
|
||||||
|
initial-size: 5 # 初始连接数
|
||||||
|
min-idle: 10 # 最小连接池数量
|
||||||
|
max-active: 20 # 最大连接池数量
|
||||||
|
max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
|
||||||
|
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
|
||||||
|
min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
|
||||||
|
max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
|
||||||
|
validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
|
||||||
|
test-while-idle: true
|
||||||
|
test-on-borrow: false
|
||||||
|
test-on-return: false
|
||||||
|
primary: master
|
||||||
|
datasource:
|
||||||
|
master:
|
||||||
|
name: ruoyi-vue-pro
|
||||||
|
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||||
|
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
|
||||||
|
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
|
||||||
|
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
|
||||||
|
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
|
||||||
|
username: root
|
||||||
|
password: 123456
|
||||||
|
# username: sa
|
||||||
|
# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
|
||||||
|
slave: # 模拟从库,可根据自己需要修改
|
||||||
|
name: ruoyi-vue-pro
|
||||||
|
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||||
|
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
|
||||||
|
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
|
||||||
|
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
|
||||||
|
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
|
||||||
|
username: root
|
||||||
|
password: 123456
|
||||||
|
# username: sa
|
||||||
|
# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
|
||||||
|
|
||||||
|
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||||
|
redis:
|
||||||
|
host: 127.0.0.1 # 地址
|
||||||
|
port: 6379 # 端口
|
||||||
|
database: 0 # 数据库索引
|
||||||
|
# password: 123456 # 密码,建议生产环境开启
|
||||||
|
|
||||||
|
jasypt:
|
||||||
|
encryptor:
|
||||||
|
password: yuanma # 加解密的秘钥
|
||||||
|
|
||||||
|
--- #################### 定时任务相关配置 ####################
|
||||||
|
|
||||||
|
# Quartz 配置项,对应 QuartzProperties 配置类
|
||||||
|
spring:
|
||||||
|
quartz:
|
||||||
|
auto-startup: false # 本地开发环境,尽量不要开启 Job
|
||||||
|
scheduler-name: schedulerName # Scheduler 名字。默认为 schedulerName
|
||||||
|
job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。
|
||||||
|
wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true
|
||||||
|
properties: # 添加 Quartz Scheduler 附加属性,更多可以看 http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/configuration.html 文档
|
||||||
|
org:
|
||||||
|
quartz:
|
||||||
|
# Scheduler 相关配置
|
||||||
|
scheduler:
|
||||||
|
instanceName: schedulerName
|
||||||
|
instanceId: AUTO # 自动生成 instance ID
|
||||||
|
# JobStore 相关配置
|
||||||
|
jobStore:
|
||||||
|
# JobStore 实现类。可见博客:https://blog.csdn.net/weixin_42458219/article/details/122247162
|
||||||
|
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
|
||||||
|
isClustered: true # 是集群模式
|
||||||
|
clusterCheckinInterval: 15000 # 集群检查频率,单位:毫秒。默认为 15000,即 15 秒
|
||||||
|
misfireThreshold: 60000 # misfire 阀值,单位:毫秒。
|
||||||
|
# 线程池相关配置
|
||||||
|
threadPool:
|
||||||
|
threadCount: 25 # 线程池大小。默认为 10 。
|
||||||
|
threadPriority: 5 # 线程优先级
|
||||||
|
class: org.quartz.simpl.SimpleThreadPool # 线程池类型
|
||||||
|
jdbc: # 使用 JDBC 的 JobStore 的时候,JDBC 的配置
|
||||||
|
initialize-schema: NEVER # 是否自动使用 SQL 初始化 Quartz 表结构。这里设置成 never ,我们手动创建表结构。
|
||||||
|
|
||||||
|
--- #################### 配置中心相关配置 ####################
|
||||||
|
|
||||||
|
# Apollo 配置中心
|
||||||
|
apollo:
|
||||||
|
bootstrap:
|
||||||
|
enabled: true # 设置 Apollo 在启动阶段生效
|
||||||
|
eagerLoad:
|
||||||
|
enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
|
||||||
|
jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
|
||||||
|
dao: cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigDAOImpl
|
||||||
|
url: ${spring.datasource.dynamic.datasource.master.url}
|
||||||
|
username: ${spring.datasource.dynamic.datasource.master.username}
|
||||||
|
password: ${spring.datasource.dynamic.datasource.master.password}
|
||||||
|
|
||||||
|
--- #################### 服务保障相关配置 ####################
|
||||||
|
|
||||||
|
# Lock4j 配置项
|
||||||
|
lock4j:
|
||||||
|
acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
|
||||||
|
expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
|
||||||
|
|
||||||
|
# Resilience4j 配置项
|
||||||
|
resilience4j:
|
||||||
|
ratelimiter:
|
||||||
|
instances:
|
||||||
|
backendA:
|
||||||
|
limit-for-period: 1 # 每个周期内,允许的请求数。默认为 50
|
||||||
|
limit-refresh-period: 60s # 每个周期的时长,单位:微秒。默认为 500
|
||||||
|
timeout-duration: 1s # 被限流时,阻塞等待的时长,单位:微秒。默认为 5s
|
||||||
|
register-health-indicator: true # 是否注册到健康监测
|
||||||
|
|
||||||
|
--- #################### 监控相关配置 ####################
|
||||||
|
|
||||||
|
# Actuator 监控端点的配置项
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
|
||||||
|
exposure:
|
||||||
|
include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
|
||||||
|
|
||||||
|
# Spring Boot Admin 配置项
|
||||||
|
spring:
|
||||||
|
boot:
|
||||||
|
admin:
|
||||||
|
# Spring Boot Admin Client 客户端的相关配置
|
||||||
|
client:
|
||||||
|
url: http://127.0.0.1:${server.port}/${spring.boot.admin.context-path} # 设置 Spring Boot Admin Server 地址
|
||||||
|
instance:
|
||||||
|
prefer-ip: true # 注册实例时,优先使用 IP
|
||||||
|
# Spring Boot Admin Server 服务端的相关配置
|
||||||
|
context-path: /admin # 配置 Spring
|
||||||
|
|
||||||
|
# 日志文件配置
|
||||||
|
logging:
|
||||||
|
file:
|
||||||
|
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
|
||||||
|
level:
|
||||||
|
# 配置自己写的 MyBatis Mapper 打印日志
|
||||||
|
cn.iocoder.yudao.module.bpm.dal.mysql: debug
|
||||||
|
cn.iocoder.yudao.module.infra.dal.mysql: debug
|
||||||
|
cn.iocoder.yudao.module.pay.dal.mysql: debug
|
||||||
|
cn.iocoder.yudao.module.system.dal.mysql: debug
|
||||||
|
cn.iocoder.yudao.module.tool.dal.mysql: debug
|
||||||
|
cn.iocoder.yudao.module.member.dal.mysql: debug
|
||||||
|
|
||||||
|
--- #################### 微信公众号相关配置 ####################
|
||||||
|
wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
|
||||||
|
mp:
|
||||||
|
# 公众号配置(必填)
|
||||||
|
app-id: wx041349c6f39b268b
|
||||||
|
secret: 5abee519483bc9f8cb37ce280e814bd0
|
||||||
|
# 存储配置,解决 AccessToken 的跨节点的共享
|
||||||
|
config-storage:
|
||||||
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
|
key-prefix: wx # Redis Key 的前缀 TODO 芋艿:解决下 Redis key 管理的配置
|
||||||
|
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
||||||
|
|
||||||
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
# 芋道配置项,设置当前项目所有自定义的配置
|
||||||
|
yudao:
|
||||||
|
captcha:
|
||||||
|
enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试
|
||||||
|
security:
|
||||||
|
token-header: Authorization
|
||||||
|
mock-enable: true
|
||||||
|
mock-secret: test
|
||||||
|
xss:
|
||||||
|
enable: false
|
||||||
|
exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
|
||||||
|
- ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
|
||||||
|
- ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
|
||||||
|
pay:
|
||||||
|
pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
|
||||||
|
pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
|
||||||
|
refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
|
||||||
|
demo: false # 关闭演示模式
|
||||||
|
|
||||||
|
justauth:
|
||||||
|
enabled: true
|
||||||
|
type:
|
||||||
|
DINGTALK: # 钉钉
|
||||||
|
client-id: dingvrnreaje3yqvzhxg
|
||||||
|
client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
|
||||||
|
ignore-check-redirect-uri: true
|
||||||
|
WECHAT_ENTERPRISE: # 企业微信
|
||||||
|
client-id: wwd411c69a39ad2e54
|
||||||
|
client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
|
||||||
|
agent-id: 1000004
|
||||||
|
ignore-check-redirect-uri: true
|
||||||
|
cache:
|
||||||
|
type: REDIS
|
||||||
|
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
|
||||||
|
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,3 @@ spring:
|
||||||
|
|
||||||
server:
|
server:
|
||||||
port: 48082
|
port: 48082
|
||||||
|
|
||||||
|
|
||||||
yudao:
|
|
||||||
security: # TODO 芋艿,发现一定要配置,需要找下原因
|
|
||||||
token-header: Authorization
|
|
||||||
mock-enable: true
|
|
||||||
mock-secret: test
|
|
||||||
|
|
|
@ -1,23 +1,28 @@
|
||||||
package cn.iocoder.yudao.module.system.api.permission;
|
package cn.iocoder.yudao.module.system.api.permission;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.enums.ApiConstants;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
||||||
* 权限 API 接口
|
@Api(tags = "RPC 服务 - 权限")
|
||||||
*
|
|
||||||
* @author 芋道源码
|
|
||||||
*/
|
|
||||||
public interface PermissionApi {
|
public interface PermissionApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/permission";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得拥有多个角色的用户编号集合
|
* 获得拥有多个角色的用户编号集合
|
||||||
*
|
*
|
||||||
* @param roleIds 角色编号集合
|
* @param roleIds 角色编号集合
|
||||||
* @return 用户编号集合
|
* @return 用户编号集合
|
||||||
*/
|
*/
|
||||||
|
@GetMapping(PREFIX + "/user-role-id-list-by-role-id")
|
||||||
Set<Long> getUserRoleIdListByRoleIds(Collection<Long> roleIds);
|
Set<Long> getUserRoleIdListByRoleIds(Collection<Long> roleIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,7 +32,9 @@ public interface PermissionApi {
|
||||||
* @param permissions 权限
|
* @param permissions 权限
|
||||||
* @return 是否
|
* @return 是否
|
||||||
*/
|
*/
|
||||||
boolean hasAnyPermissions(Long userId, String... permissions);
|
@GetMapping(PREFIX + "/has-any-permissions")
|
||||||
|
boolean hasAnyPermissions(@RequestParam("userId") Long userId,
|
||||||
|
@RequestParam("permissions") String... permissions);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否有角色,任一一个即可
|
* 判断是否有角色,任一一个即可
|
||||||
|
@ -36,7 +43,9 @@ public interface PermissionApi {
|
||||||
* @param roles 角色数组
|
* @param roles 角色数组
|
||||||
* @return 是否
|
* @return 是否
|
||||||
*/
|
*/
|
||||||
boolean hasAnyRoles(Long userId, String... roles);
|
@GetMapping(PREFIX + "/has-any-roles")
|
||||||
|
boolean hasAnyRoles(@RequestParam("userId") Long userId,
|
||||||
|
@RequestParam("roles") String... roles);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得登陆用户的部门数据权限
|
* 获得登陆用户的部门数据权限
|
||||||
|
@ -44,6 +53,7 @@ public interface PermissionApi {
|
||||||
* @param userId 用户编号
|
* @param userId 用户编号
|
||||||
* @return 部门数据权限
|
* @return 部门数据权限
|
||||||
*/
|
*/
|
||||||
|
@GetMapping(PREFIX + "/get-dept-data-permission")
|
||||||
DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
|
DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ public interface AdminUserApi {
|
||||||
* @param id 用户ID
|
* @param id 用户ID
|
||||||
* @return 用户对象信息
|
* @return 用户对象信息
|
||||||
*/
|
*/
|
||||||
@GetMapping("/get")
|
@GetMapping(PREFIX + "/get")
|
||||||
AdminUserRespDTO getUser(Long id);
|
AdminUserRespDTO getUser(Long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,7 +33,7 @@ public interface AdminUserApi {
|
||||||
* @param ids 用户 ID 们
|
* @param ids 用户 ID 们
|
||||||
* @return 用户对象信息
|
* @return 用户对象信息
|
||||||
*/
|
*/
|
||||||
@GetMapping("/list")
|
@GetMapping(PREFIX + "/list")
|
||||||
List<AdminUserRespDTO> getUsers(Collection<Long> ids);
|
List<AdminUserRespDTO> getUsers(Collection<Long> ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,7 +42,7 @@ public interface AdminUserApi {
|
||||||
* @param deptIds 部门数组
|
* @param deptIds 部门数组
|
||||||
* @return 用户数组
|
* @return 用户数组
|
||||||
*/
|
*/
|
||||||
@GetMapping("/list-by-dept-id")
|
@GetMapping(PREFIX + "/list-by-dept-id")
|
||||||
List<AdminUserRespDTO> getUsersByDeptIds(Collection<Long> deptIds);
|
List<AdminUserRespDTO> getUsersByDeptIds(Collection<Long> deptIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -51,7 +51,7 @@ public interface AdminUserApi {
|
||||||
* @param postIds 岗位数组
|
* @param postIds 岗位数组
|
||||||
* @return 用户数组
|
* @return 用户数组
|
||||||
*/
|
*/
|
||||||
@GetMapping("/list-by-post-id")
|
@GetMapping(PREFIX + "/list-by-post-id")
|
||||||
List<AdminUserRespDTO> getUsersByPostIds(Collection<Long> postIds);
|
List<AdminUserRespDTO> getUsersByPostIds(Collection<Long> postIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,7 +72,7 @@ public interface AdminUserApi {
|
||||||
*
|
*
|
||||||
* @param ids 用户编号数组
|
* @param ids 用户编号数组
|
||||||
*/
|
*/
|
||||||
@GetMapping("/valid")
|
@GetMapping(PREFIX + "/valid")
|
||||||
void validUsers(Set<Long> ids);
|
void validUsers(Set<Long> ids);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,18 +2,25 @@ package cn.iocoder.yudao.module.system.api.permission;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.module.system.enums.ApiConstants.VERSION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限 API 实现类
|
* 权限 API 实现类
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
@Service
|
@RestController // 提供 RESTful API 接口,给 Feign 调用
|
||||||
|
@DubboService(version = VERSION) // 提供 Dubbo RPC 接口,给 Dubbo Consumer 调用
|
||||||
|
@Validated
|
||||||
public class PermissionApiImpl implements PermissionApi {
|
public class PermissionApiImpl implements PermissionApi {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
|
|
@ -4,20 +4,26 @@ import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.convert.user.UserConvert;
|
import cn.iocoder.yudao.module.system.convert.user.UserConvert;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.module.system.enums.ApiConstants.VERSION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Admin 用户 API 实现类
|
* Admin 用户 API 实现类
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
@Service
|
@RestController // 提供 RESTful API 接口,给 Feign 调用
|
||||||
|
@DubboService(version = VERSION) // 提供 Dubbo RPC 接口,给 Dubbo Consumer 调用
|
||||||
|
@Validated
|
||||||
public class AdminUserApiImpl implements AdminUserApi {
|
public class AdminUserApiImpl implements AdminUserApi {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -29,6 +35,12 @@ public class AdminUserApiImpl implements AdminUserApi {
|
||||||
return UserConvert.INSTANCE.convert4(user);
|
return UserConvert.INSTANCE.convert4(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AdminUserRespDTO> getUsers(Collection<Long> ids) {
|
||||||
|
List<AdminUserDO> users = userService.getUsers(ids);
|
||||||
|
return UserConvert.INSTANCE.convertList4(users);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AdminUserRespDTO> getUsersByDeptIds(Collection<Long> deptIds) {
|
public List<AdminUserRespDTO> getUsersByDeptIds(Collection<Long> deptIds) {
|
||||||
List<AdminUserDO> users = userService.getUsersByDeptIds(deptIds);
|
List<AdminUserDO> users = userService.getUsersByDeptIds(deptIds);
|
||||||
|
@ -41,12 +53,6 @@ public class AdminUserApiImpl implements AdminUserApi {
|
||||||
return UserConvert.INSTANCE.convertList4(users);
|
return UserConvert.INSTANCE.convertList4(users);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<Long, AdminUserRespDTO> getUserMap(Collection<Long> ids) {
|
|
||||||
Map<Long, AdminUserDO> userMap = userService.getUserMap(ids);
|
|
||||||
return UserConvert.INSTANCE.convertMap4(userMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validUsers(Set<Long> ids) {
|
public void validUsers(Set<Long> ids) {
|
||||||
userService.validUsers(ids);
|
userService.validUsers(ids);
|
||||||
|
|
|
@ -53,6 +53,4 @@ public interface UserConvert {
|
||||||
|
|
||||||
List<AdminUserRespDTO> convertList4(List<AdminUserDO> users);
|
List<AdminUserRespDTO> convertList4(List<AdminUserDO> users);
|
||||||
|
|
||||||
Map<Long, AdminUserRespDTO> convertMap4(Map<Long, AdminUserDO> map);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue