maku-boot架构设计与模块划分
maku-boot 是一个基于 Spring Boot 的低代码开发平台,采用模块化、组件化设计,提供高效、灵活且易于扩展的开发体验。其核心模块包括系统管理、业务模块、框架模块、API 模块和服务模块,支持多技术栈和多种设计模式,如分层架构、策略模式和事件驱动。
maku-boot的整体架构设计
maku-boot 是一个基于 Spring Boot 的低代码开发平台,其整体架构设计采用了模块化、组件化的思想,旨在提供高效、灵活且易于扩展的开发体验。以下将从核心模块、技术栈、设计模式等方面展开详细分析。
核心模块划分
maku-boot 的核心模块主要包括以下几个部分:
-
系统管理模块 (
maku-boot-system)
负责系统的基础功能,如用户管理、角色管理、权限控制、日志管理等。该模块是整个平台的核心支撑。 -
业务模块 (
maku-boot-module)
包含多个子模块,如代码生成器 (maku-module-generator)、物联网 (maku-module-iot)、会员管理 (maku-module-member) 等。每个子模块独立开发,按需引入。 -
框架模块 (
maku-framework)
提供通用工具类、基础组件和扩展功能,如 MyBatis-Plus 扩展、操作日志记录、安全框架等。 -
API 模块 (
maku-boot-api)
定义统一的接口规范,为前后端分离提供支持。 -
服务模块 (
maku-server)
包含应用启动类 (ServerApplication.java) 和 Swagger 配置 (SwaggerConfig.java),是项目的入口模块。
技术栈
maku-boot 采用了以下主流技术栈:
-
后端
- Spring Boot 3.4
- Spring Security 6.4
- MyBatis-Plus
- Redis
- MQTT/TCP(物联网模块)
-
前端
- Vue 3
- Element Plus
-
数据库支持
- MySQL
- PostgreSQL
- 达梦数据库(国产化支持)
-
其他
- 国密加密
- 多租户支持
- 信创适配
设计模式与架构思想
-
模块化设计
通过 Maven 多模块管理,将功能拆分为独立的模块,便于维护和扩展。例如,物联网模块 (maku-module-iot) 可以独立部署或集成到主系统中。 -
分层架构
采用经典的分层架构(Controller-Service-DAO),确保代码结构清晰。以下是一个典型的分层示例:// Controller 层 @RestController public class SysUserController { @Autowired private SysUserService userService; } // Service 层 @Service public class SysUserServiceImpl implements SysUserService { @Autowired private SysUserDao userDao; } // DAO 层 @Mapper public interface SysUserDao extends BaseMapper<SysUserEntity> {} -
策略模式
在消息通知、存储服务等场景中,通过策略模式实现灵活的扩展。例如,消息通知支持多种服务商:public interface NotificationStrategy { void send(String mobile, String code); } @Service("serviceA") public class ServiceANotificationStrategy implements NotificationStrategy { @Override public void send(String mobile, String code) { // 服务A消息通知逻辑 } } -
事件驱动
通过 Spring 事件机制实现异步处理,如登录日志记录:@EventListener public void onSuccess(AuthenticationSuccessEvent event) { // 记录登录成功日志 }
数据流与交互
以下是系统中的一个典型数据流示例(以用户登录为例):
sequenceDiagram
participant Frontend
participant Backend
participant Database
Frontend->>Backend: 提交登录请求
Backend->>Database: 查询用户信息
Database-->>Backend: 返回用户数据
Backend->>Backend: 验证密码
Backend-->>Frontend: 返回登录结果
存储服务设计
maku-boot 支持多种存储服务(如云存储、本地存储等),通过抽象接口 StorageService 实现统一调用:
public interface StorageService {
String upload(byte[] data, String path);
String upload(InputStream inputStream, String path);
}
@Service
public class CloudStorageService implements StorageService {
@Override
public String upload(byte[] data, String path) {
// 云存储上传逻辑
}
}
安全性设计
- 认证与授权
基于 Spring Security 实现 RBAC 权限控制,支持多因素认证(如验证码)。 - 国密加密
对敏感数据(如密码)采用国密算法加密。 - 日志审计
记录关键操作日志,便于追溯。
扩展性
maku-boot 通过以下方式确保扩展性:
- 插件化设计:业务模块可动态加载或卸载。
- 多租户支持:支持字段隔离和数据源隔离。
- 低代码开发:通过在线表单设计和代码生成器快速开发业务功能。
maku-boot-system模块详解
maku-boot-system模块是maku-boot项目的核心模块之一,主要负责系统管理功能,包括用户管理、角色管理、权限控制、存储服务、消息通知服务等。以下是对该模块的详细解析。
模块功能概述
maku-boot-system模块提供了以下核心功能:
- 用户管理:支持用户增删改查、密码修改、头像上传等功能。
- 角色管理:支持角色分配、数据权限控制。
- 权限控制:基于Spring Security实现细粒度的权限控制。
- 存储服务:支持多种云存储服务和本地存储。
- 消息与邮件服务:集成多种消息和邮件服务。
- 缓存管理:提供系统参数、邮件配置等缓存功能。
核心组件分析
1. 存储服务
存储服务是maku-boot-system模块的重要功能之一,支持多种云存储和本地存储。以下是存储服务的核心类:
classDiagram
class StorageService {
+upload(byte[] data, String path): String
+upload(InputStream inputStream, String path): String
}
class CloudStorageService
class LocalStorageService
StorageService <|-- CloudStorageService
StorageService <|-- LocalStorageService
2. 用户管理
用户管理功能由SysUserServiceImpl类实现,支持用户的基本操作和扩展功能:
@Service
public class SysUserServiceImpl implements SysUserService {
@Override
public void save(SysUserVO vo) {
// 保存用户逻辑
}
@Override
public void update(SysUserVO vo) {
// 更新用户逻辑
}
}
3. 权限控制
权限控制基于Spring Security实现,核心类包括SecurityConfig和AuthenticationEvents:
@Configuration
public class SecurityConfig {
@Bean
public AuthenticationManager authenticationManager() {
// 认证管理器配置
}
}
@Component
public class AuthenticationEvents {
@EventListener
public void onSuccess(AuthenticationSuccessEvent event) {
// 认证成功事件处理
}
}
模块依赖
maku-boot-system模块依赖以下核心库:
- Spring Boot:提供基础框架支持。
- MyBatis-Plus:简化数据库操作。
- 云存储SDK:支持云存储服务。
- JustAuth:支持第三方登录。
<dependencies>
<dependency>
<groupId>net.maku</groupId>
<artifactId>maku-framework</artifactId>
</dependency>
<dependency>
<groupId>com.cloud.storage</groupId>
<artifactId>cloud-sdk</artifactId>
</dependency>
<dependency>
<groupId>me.zhyd.oauth</groupId>
<artifactId>JustAuth</artifactId>
</dependency>
</dependencies>
总结
maku-boot-system模块通过清晰的模块划分和丰富的功能支持,为maku-boot项目提供了强大的系统管理能力。无论是存储服务、用户管理还是权限控制,该模块都体现了高内聚、低耦合的设计思想。
maku-boot-module模块详解
maku-boot-module 是 maku-boot 低代码开发平台的核心模块之一,采用模块化设计,支持按需引入,确保系统功能的灵活性和可扩展性。每个子模块专注于特定的业务或技术领域,开发者可以根据需求选择性地引入模块,避免系统臃肿。以下是对各子模块的详细解析:
1. maku-module-websocket
该模块实现了基于 WebSocket 的实时通信功能,适用于需要实时数据推送的场景,如在线聊天、通知推送等。
核心功能
- 消息发送:支持单用户、多用户及会话级别的消息推送。
- 会话管理:维护 WebSocket 会话的生命周期,确保连接的稳定性和可靠性。
- 用户鉴权:通过
UserHandshakeInterceptor实现用户身份的验证。
关键类
public class WebSocketMessageSender {
public void send(Long userId, JsonDataMessage<?> message);
public void send(List<Long> userIdList, JsonDataMessage<?> message);
public void send(WebSocketSession session, JsonDataMessage<?> message);
}
public class WebSocketSessionManager {
public void addSession(WebSocketSession session);
public void removeSession(WebSocketSession session);
}
流程图
sequenceDiagram
participant Client
participant Server
Client->>Server: WebSocket 连接请求
Server->>Client: 连接确认
Client->>Server: 发送消息
Server->>Client: 推送消息
2. maku-module-member
该模块提供会员管理功能,包括会员信息的增删改查、权限分配等。
核心功能
- 会员管理:支持会员信息的 CRUD 操作。
- 权限控制:通过
MemberUserService实现会员权限的动态配置。
关键类
public class MemberUserServiceImpl {
public void save(MemberUserVO vo);
public void update(MemberUserVO vo);
public void delete(List<Long> idList);
}
表格示例
| 方法名 | 功能描述 |
|---|---|
save |
新增会员信息 |
update |
更新会员信息 |
delete |
批量删除会员 |
3. maku-module-quartz
该模块基于 Quartz 实现了任务调度功能,支持定时任务的动态配置和管理。
核心功能
- 任务调度:支持任务的创建、暂停、恢复和删除。
- 日志记录:记录任务执行日志,便于问题排查。
关键类
public class ScheduleJobServiceImpl {
public void save(ScheduleJobVO vo);
public void update(ScheduleJobVO vo);
public void delete(List<Long> idList);
public void run(ScheduleJobVO vo);
}
状态图
stateDiagram
[*] --> Idle
Idle --> Running: 任务启动
Running --> Paused: 任务暂停
Paused --> Running: 任务恢复
Running --> [*]: 任务完成
4. maku-module-monitor
该模块提供系统监控功能,包括服务器状态、缓存管理等。
核心功能
- 服务器监控:实时监控 CPU、内存、磁盘等资源使用情况。
- 缓存管理:支持缓存的查看和清理。
关键类
public class Server {
public static String convertFileSize(long size);
}
public class CacheController {
public void clearCache();
}
饼图示例
pie
title 服务器资源占用
"CPU" : 45
"内存" : 30
"磁盘" : 25
5. maku-module-generator
该模块为代码生成器,支持快速生成单表、树表、多表等业务代码。
核心功能
- 代码生成:根据数据库表结构生成对应的实体类、Service、Controller 等代码。
- 模板配置:支持自定义代码模板。
关键类
public class CodeGenerator {
public void generate(TableInfo tableInfo);
}
示例代码
// 生成单表代码
CodeGenerator generator = new CodeGenerator();
generator.generate(tableInfo);
6. maku-module-iot
该模块为物联网设备管理模块,支持设备的连接、命令下发和数据上报。
核心功能
- 设备管理:支持设备的增删改查。
- 命令下发:通过 MQTT 或 TCP 协议向设备发送指令。
关键类
public class MQTTService {
public String asyncSendCommand(IotDeviceEntity device, DeviceCommandEnum command, String payload);
public DeviceCommandResponseDTO syncSendCommand(IotDeviceEntity device, DeviceCommandEnum command, String payload);
}
时序图
sequenceDiagram
participant Server
participant Device
Server->>Device: 下发命令
Device->>Server: 返回响应
通过以上模块的灵活组合,maku-boot-module 能够满足多样化的业务需求,同时保持系统的高效和可维护性。
maku-framework框架层解析
maku-framework 是 maku-boot 项目的核心框架层,为整个平台提供了基础功能支持,包括缓存管理、安全认证、日志记录、数据操作等。以下是对其核心模块的详细解析。
核心模块与功能
1. 缓存管理
maku-framework 提供了基于 Redis 的缓存管理功能,支持多种数据结构的操作,包括字符串、哈希、列表等。以下是核心类及其功能:
RedisCache:封装了 Redis 的基本操作,如设置、获取、删除键值对,以及哈希和列表的操作。RedisKeys:定义了 Redis 键的生成规则,如验证码、访问令牌等。
// 示例:使用 RedisCache 设置缓存
redisCache.set("user:1", userDetail, 3600); // 缓存用户信息,过期时间为 1 小时
2. 安全认证
安全认证模块基于 Spring Security 扩展,支持多种认证方式(如账号密码、验证码、第三方登录等)。以下是关键组件:
TokenStoreCache:管理用户令牌的存储与验证。SecurityUser:提供当前用户信息的静态访问方法。TokenUtils:生成和解析访问令牌。
sequenceDiagram
participant Client
participant SecurityFilter
participant TokenStoreCache
Client->>SecurityFilter: 请求携带 Token
SecurityFilter->>TokenStoreCache: 验证 Token
TokenStoreCache-->>SecurityFilter: 返回用户信息
SecurityFilter-->>Client: 认证通过
3. 日志记录
操作日志模块通过 AOP 实现,记录用户的操作行为。以下是核心类:
OperateLogAspect:切面类,拦截带有@OperateLog注解的方法。OperateLogService:异步保存日志到数据库。
// 示例:记录操作日志
@OperateLog(module = "用户管理", type = OperateTypeEnum.INSERT)
public void addUser(User user) {
// 业务逻辑
}
4. 数据操作
基于 MyBatis-Plus 的数据操作模块提供了通用的 CRUD 功能和数据权限控制。以下是关键组件:
MybatisPlusConfig:配置 MyBatis-Plus 的拦截器和元数据处理器。DataScopeInnerInterceptor:实现数据权限控制,动态拼接 SQL。
classDiagram
class BaseEntity {
+Long id
+Date createTime
+Date updateTime
}
class BaseDao {
+insert(T entity)
+updateById(T entity)
}
BaseEntity <|-- User
BaseDao <|-- UserDao
5. 工具类
maku-framework 提供了丰富的工具类,简化开发工作:
ExcelUtils:支持 Excel 的导入导出。IpUtils:获取客户端 IP 和地理位置。JsonUtils:JSON 数据的序列化与反序列化。
// 示例:导出 Excel
List<User> userList = userService.list();
ExcelUtils.excelExport(User.class, "用户列表.xlsx", "用户数据", userList);
总结
maku-framework 通过模块化设计,为 maku-boot 提供了强大的基础支持。其核心功能包括缓存管理、安全认证、日志记录和数据操作,均通过高度封装的类和方法实现,开发者可以快速集成并扩展这些功能。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00