Yudao 框架增强能力

核心定位

一句话说清楚:在 Yudao 原生能力之上,RuoYiPlus 对框架基础设施进行了 8 大维度的企业级增强,让框架具备「开箱即用」的生产级能力。

解决什么问题

痛点Yudao 原生RuoYiPlus 增强后
数据权限不够细仅部门级过滤用户/角色/岗位/部门四层 + 字段级
敏感信息泄露风险无脱敏机制注解式自动脱敏
操作日志不完整基础日志智能变更追踪 + 风险评分 + 区块链存证
API 缺乏保护基础路由请求签名 + 限流 + 熔断
分布式能力弱分布式事务 + 锁 + 幂等
缓存策略单一Redis 单层Caffeine + Redis 多级缓存
数据库扩展难单库读写分离 + 分库分表 + 数据归档
监控能力弱SkyWalking 全链路追踪 + 自定义指标

适合什么样的用户

mindmap root((适合用户)) 软件厂商 需要授权管理 需要商业化基础设施 企业 IT 团队 需要安全合规 需要多租户隔离 系统集成商 需要快速交付 需要模块化组装 SaaS 运营商 需要多租户架构 需要计费体系

1. 数据权限引擎

1.1 四层权限模型

graph LR subgraph "权限来源" F["用户权限
优先级最高"] G["角色权限"] H["岗位权限"] I["部门权限
优先级最低"] F ~~~ G ~~~ H ~~~ I end subgraph "权限决策引擎" A["用户请求"] --> B["权限解析"] B --> C["权限合并"] C --> D["数据过滤"] D --> E["等级过滤"] end subgraph "权限过滤" J["SQL 过滤"] --> K["返回结果"] end 权限来源 --> 权限决策引擎 权限决策引擎 --> 权限过滤 style B fill:#FFA500,color:#fff,font-weight:bold

1.2 能力对比

能力项原生支持增强后
部门级数据过滤
角色级数据过滤
自定义 SQL 过滤
字段级权限控制
动态数据权限规则
客户等级过滤

1.3 使用方式

// 基于角色的数据权限:销售经理看团队数据,区域总监看本区域数据
@DataPermission(roles = {"sales_manager", "region_director"})
public class CustomerServiceImpl { }

// 基于部门的层级权限
@DataPermission(deptIds = "#{currentUser.deptId}")
public class ReportService { }

// 自定义数据范围
@DataPermission(scope = "custom", sqlFilter = "region_id = #{currentUser.regionId}")
public class RegionService { }

// 字段隐藏
@DataPermission(fields = {"salary", "bankCard"}, operation = DataPermission.Operation.HIDE)
public class EmployeeService { }

// 字段只读
@DataPermission(fields = {"createTime", "creator"}, operation = DataPermission.Operation.READONLY)
public class OrderService { }

2. 敏感字段脱敏

2.1 脱敏架构

graph LR A["数据查询"] --> B["脱敏规则匹配"] B --> C["字段类型识别"] C --> D["脱敏算法应用"] D --> E["返回脱敏结果"]

2.2 支持的脱敏类型

脱敏类型示例说明
手机号138****1234中间4位脱敏
邮箱a***@163.com用户名脱敏
身份证310***********1234出生日期+后4位脱敏
银行卡**** **** **** 1234仅保留后4位
姓名张*姓氏外脱敏
地址上海市徐汇区****详细地址脱敏
密码******完全脱敏

2.3 使用方式

// 注解式脱敏
public class Customer {
    @SensitiveField(type = SensitiveType.PHONE)
    private String phone;

    @SensitiveField(type = SensitiveType.EMAIL)
    private String email;

    @SensitiveField(type = SensitiveType.ID_CARD)
    private String idCard;
}

// 查询时自动脱敏
@SensitiveQuery(fields = {"phone", "email"})
public List<Customer> getCustomerList(CustomerQuery query) { }

3. 操作日志中心

3.1 日志体系

graph TB subgraph "日志采集" A["操作行为"] B["登录事件"] C["API 调用"] end subgraph "日志处理" D["日志解析"] E["变更对比"] F["风险评分"] end subgraph "日志存储" G["热数据存储"] H["冷数据归档"] I["区块链存证"] end A --> D B --> D C --> D D --> E E --> F F --> G F --> H F --> I

3.2 智能变更追踪

// 自动对比修改前后差异,仅记录变更字段
@OperateLog(title = "客户管理", businessType = BusinessType.UPDATE)
public void updateCustomer(Customer customer) { }

3.3 敏感操作告警

aegis:
  audit:
    alert-rules:
      - event: "数据导出"
        threshold: 10  # 10分钟内超过10次
        action: "notify_admin"
      - event: "批量删除"
        action: "require_approval"

4. API 网关增强

4.1 网关架构

graph LR A["客户端请求"] --> B["API 网关"] B --> C["请求签名验证"] C --> D["流量控制"] D --> E["熔断降级"] E --> F["请求缓存"] F --> G["协议转换"] G --> H["后端服务"]

4.2 增强特性

能力项说明
请求签名API 请求签名验证,防篡改
流量控制多维度限流策略
熔断降级服务熔断保护
请求缓存API 响应缓存
协议转换SOAP → REST 转换

5. 服务治理能力

5.1 分布式事务

基于 Seata 的分布式事务解决方案:

graph TB A["业务请求"] --> B["事务发起方"] B --> C["Seata TC"] C --> D["分支事务1"] C --> E["分支事务2"] C --> F["分支事务3"] D --> G["全局提交/回滚"] E --> G F --> G

5.2 分布式锁与幂等

// Redis + Redisson 分布式锁
@DistributedLock(key = "order:lock:", waitTime = 30, leaseTime = 60)
public void processOrder(Order order) { }

// 幂等控制
@Idempotent(key = "order:create:{userId}:{productId}", expireTime = 60)
public Order createOrder(CreateOrderRequest request) { }

6. 缓存增强

6.1 多级缓存架构

graph LR A["应用请求"] --> B["L1 Caffeine"] B --> C["L2 Redis"] C --> D["数据库"] D --> C C --> B B --> A

6.2 注解式缓存

@Cacheable(name = "user:list:", expire = 300)
public List<User> getUserList() { }

@CacheEvict(name = "user:list:")
public void updateUser(User user) { }

@CachePut(name = "user:{id}")
public User getUser(Long id) { }

7. 数据库增强

graph LR A["写请求"] --> B["主库"] C["读请求"] --> D["从库"] B --> E["数据同步"] E --> D
能力说明
读写分离自动路由读写请求,dynamic-datasource
分库分表ShardingSphere 分片策略
数据归档自动冷热数据分离,定时归档

8. 监控增强

graph TB A["客户端"] --> B["网关"] B --> C["服务1"] C --> D["服务2"] D --> E["服务3"] E --> F["数据库"] G["SkyWalking"] -.-> B G -.-> C G -.-> D G -.-> E
  • 全链路追踪:集成 SkyWalking 分布式追踪
  • 自定义指标@CustomMonitor 注解自动记录
  • 告警规则:支持多级阈值告警

技术架构总览

graph TB subgraph "RuoYiPlus 框架增强层" P1["数据权限引擎
四层权限+字段级"] P2["敏感字段脱敏
注解式自动脱敏"] P3["操作日志中心
变更追踪+区块链存证"] P4["API 网关
签名+限流+熔断"] P5["服务治理
分布式事务+锁+幂等"] P6["多级缓存
Caffeine+Redis"] P7["数据库增强
读写分离+分库分表"] P8["全链路监控
SkyWalking+自定义指标"] end subgraph "Yudao Framework Core" CORE["Spring Boot 3 + MyBatis-Plus + Redis"] end P1 --> CORE P2 --> CORE P3 --> CORE P4 --> CORE P5 --> CORE P6 --> CORE P7 --> CORE P8 --> CORE
docs