1. 项目概述与核心价值
这个资源分享系统本质上是一个基于现代Java技术栈的内容管理平台。我花了三个月时间从零搭建完整体系,核心目标是解决团队内部文档、代码片段、工具包等数字资产的集中管理与高效流转问题。在传统工作模式中,我们经常遇到同事之间用U盘拷来拷去、微信群里文件过期、SVN目录混乱等痛点。通过SpringBoot的快速开发特性,配合合理的架构设计,最终实现的系统支持:
- 多级分类资源树
- 版本控制
- 全文检索
- 权限颗粒度控制到按钮级别
实测部署后,技术部的资料查找时间平均缩短了67%,新人 onboarding 效率提升明显。特别在跨部门协作时,法务和财务部门反馈合同模板的获取再也不用反复发邮件确认版本了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计解析
2.1 整体技术选型
采用经典的三层架构,但针对资源分享场景做了特殊优化:
code复制前端:Vue3 + Element Plus (兼容IE11的polyfill方案)
网关:Nginx + Spring Cloud Gateway
业务层:SpringBoot 2.7 + Spring Security
存储层:MySQL 8.0 + Elasticsearch 7.17 + MinIO
选型时重点考虑了以下因素:
- 文档预览兼容性:Office文件转PDF使用LibreOffice无头模式,相比OpenOffice内存占用降低40%
- 大文件上传:前端采用分片上传,后端用MinIO的multipart upload API,实测支持8GB以上CAD文件传输
- 权限模型:采用RBAC与ABAC混合模式,部门经理自动获得下属员工资源的审计权限
2.2 核心表结构设计
资源表(resource)的关键字段设计值得展开说明:
sql复制CREATE TABLE `resource` (
`id` bigint NOT NULL COMMENT '雪花算法ID',
`current_version_id` bigint DEFAULT NULL COMMENT '当前生效版本',
`category_path` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '分类路径(如/IT/开发规范)',
`content_type` enum('FILE','URL','TEXT') NOT NULL,
`encrypt_level` tinyint DEFAULT '0' COMMENT '0-不加密 1-链接加密 2-内容加密',
`delete_flag` tinyint NOT NULL DEFAULT '0' COMMENT '逻辑删除标记',
`created_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
特别注意:
- category_path使用bin collation实现大小写敏感路径
- encrypt_level为后续扩展预留了空间
- 所有删除操作都走逻辑删除流程,配合定时任务实现回收站自动清理
3. 核心功能实现细节
3.1 版本控制机制
资源每次更新都会在resource_version表生成新记录,采用COW(Copy-On-Write)策略:
- 用户编辑资源时,前端先获取当前版本快照
- 提交修改时,系统会:
- 在MinIO存储新版本文件(相同hash值则复用)
- 生成新的version记录
- 通过事务更新resource表的current_version_id
java复制@Transactional
public ResourceVersion createNewVersion(Long
