# znxs-iccl_s **Repository Path**: znxs159357/znxs-iccl_s ## Basic Information - **Project Name**: znxs-iccl_s - **Description**: 智能协同云图库系统(后端) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-12 - **Last Updated**: 2026-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: 项目 ## README # 智能协同云图库系统(ZNICCL) > ZNICCL(Intelligent Collaborative Cloud Library) - 一个集成了权限管理、图片优化、协同操作、智能搜索等功能的现代化云图库系统 ## 📋 项目概述 智能协同云图库系统是一个功能丰富的云图库管理平台,支持B端管理和C端用户使用。系统提供了完整的图片管理、团队协作、权限控制、智能搜索等功能,采用现代化的技术架构设计,具有良好的扩展性和性能表现。 ### 🎯 核心特性 - **多用户协作**:支持多用户实时协同编辑图片 - **精细权限控制**:基于RBAC模型的精细化权限管理 - **智能搜索**:以图搜图、颜色搜索、标签搜索等多种搜索方式 - **AI增强**:集成阿里云大模型,提供AI扩图等智能功能 - **高性能设计**:多级缓存、异步处理、WebSocket实时通信 - **完整文件管理**:支持文件上传、处理、存储、检索全流程 ## 🏗️ 系统架构 ### 技术栈选型 #### 后端技术栈 - **框架**:Spring Boot 2.7.6 + Java 11 - **ORM**:MyBatis Plus 3.5.10.1 - **数据库**:MySQL 8.0.33 - **权限认证**:Sa-Token 1.39.0 - **对象存储**:腾讯云COS - **缓存**:Redis + Caffeine本地缓存 - **WebSocket**:Spring WebSocket + Disruptor高性能队列 - **AI集成**:阿里云大模型API - **工具库**:Hutool、Jsoup等 - **API文档**:Knife4j (Swagger增强) #### 前端技术栈 - **框架**:React + TypeScript - **UI组件**:Ant Design 5.x - **状态管理**:React Context API - **路由**:React Router - **HTTP客户端**:Axios - **代码规范**:ESLint + Prettier ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 前端展示层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ 用户界面 │ │ 管理后台 │ │ 实时协作界面 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ API网关层 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 统一认证 & 权限校验 │ │ │ └─────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ 业务逻辑层 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ │ │ │用户服务 │ │空间服务 │ │图片服务 │ │ 协同编辑服务 │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ 数据访问层 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ │ │ │用户Mapper│ │空间Mapper│ │图片Mapper│ │ 缓存管理 │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ │ │ │ MySQL │ │ Redis │ │ 腾讯云COS│ │ 本地文件系统 │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 📊 功能模块详细说明 ### 1. 用户管理模块 #### 功能特性 - **用户注册登录**:支持账号密码注册、登录、注销 - **权限分级**:普通用户、管理员角色管理 - **用户信息管理**:头像、昵称、简介等个人信息维护 - **会话管理**:基于Sa-Token的会话控制 #### 核心接口 - `POST /user/register` - 用户注册 - `POST /user/login` - 用户登录 - `GET /user/get/login` - 获取当前登录用户 - `GET /user/logout` - 用户注销 - `POST /user/update` - 更新用户信息(管理员) ### 2. 空间管理模块 #### 功能特性 - **空间类型**:私有空间(个人)、团队空间(协作) - **空间等级**:普通版、专业版、旗舰版三级权限体系 - **空间配额**:图片数量限制、存储空间限制 - **空间成员管理**:基于RBAC模型的权限控制 #### 权限角色体系 | 角色 | 权限键 | 权限说明 | |------|--------|----------| | 浏览者 | `picture:view` | 查看图片 | | 编辑者 | `picture:view,picture:upload,picture:edit,picture:delete` | 查看、上传、编辑、删除图片 | | 管理员 | `picture:view,picture:upload,picture:edit,picture:delete` + 成员管理 | 所有图片操作权限 + 成员管理 | #### 核心接口 - `POST /space/add` - 创建空间 - `POST /space/delete` - 删除空间 - `POST /space/update` - 更新空间信息 - `GET /space/get/vo` - 获取空间详情 - `POST /space/list/page/vo` - 分页获取空间列表 ### 3. 图片管理模块 #### 功能特性 - **图片上传**:支持文件上传、URL上传、批量上传 - **图片处理**:自动生成缩略图、格式转换、图片信息提取 - **图片编辑**:标签分类、基本信息修改 - **图片审核**:管理员审核机制,支持审核状态管理 - **重复检测**:基于MD5哈希码的重复图片检测 #### 图片元数据管理 - 图片基本信息:名称、大小、格式、尺寸、比例 - 图片属性:主色调、哈希码、分类标签 - 审核信息:审核状态、审核人、审核时间 - 空间归属:所属空间、创建用户 #### 核心接口 - `POST /picture/upload` - 上传图片(文件) - `GET /picture/upload/url` - 通过URL上传图片 - `POST /picture/delete` - 删除图片 - `POST /picture/edit` - 编辑图片 - `POST /picture/list/page/vo` - 分页获取图片列表 - `POST /picture/review` - 管理员审核图片 ### 4. 协同编辑功能 #### 功能特性 - **实时协作**:基于WebSocket的多用户实时编辑 - **编辑状态管理**:独占编辑、编辑冲突解决 - **操作同步**:编辑操作实时同步到所有在线用户 - **高性能处理**:Disruptor无锁队列处理消息 #### 编辑操作类型 - **进入编辑**:获取图片编辑权限 - **编辑动作**:各种图片编辑操作 - **退出编辑**:释放编辑权限 - **状态通知**:实时同步编辑状态 #### 技术实现 - **WebSocket连接**:建立持久化连接 - **Disruptor队列**:高性能消息处理 - **会话管理**:用户会话状态维护 - **广播机制**:消息实时广播 ### 5. 智能搜索功能 #### 搜索方式 - **以图搜图**:基于图片内容的相似性搜索 - **颜色搜索**:根据图片主色调进行搜索 - **标签搜索**:基于分类和标签的文本搜索 - **组合搜索**:多种搜索条件的组合查询 #### 技术实现 - **图片特征提取**:颜色直方图、纹理特征 - **相似度计算**:欧氏距离、余弦相似度 - **搜索优化**:索引构建、缓存加速 #### 核心接口 - `POST /picture/search/picture` - 以图搜图 - `POST /picture/search/color` - 颜色搜索 - `GET /picture/tag_category` - 获取标签分类 ### 6. AI增强功能 #### 功能特性 - **AI扩图**:基于阿里云大模型的图片扩展功能 - **智能标签**:自动识别图片内容并生成标签 - **图片优化**:智能图片处理和优化建议 #### 核心接口 - `POST /picture/out_painting/create_task` - 创建AI扩图任务 - `GET /picture/out_painting/get_task` - 查询AI扩图任务 ### 7. 缓存优化系统 #### 缓存架构 - **多级缓存**:Redis分布式缓存 + Caffeine本地缓存 - **缓存策略**:双重缓存机制,防止缓存击穿、穿透、雪崩 - **自动刷新**:高频访问数据自动加入缓存 - **手动刷新**:管理员手动刷新缓存接口 #### 缓存应用场景 - **图片列表缓存**:高频访问的图片列表数据 - **用户信息缓存**:登录用户信息缓存 - **空间信息缓存**:空间详情和权限信息 - **搜索结果缓存**:搜索查询结果缓存 ## 🗃️ 数据库设计 ### 核心数据表结构 #### 1. 用户表(user) ```sql CREATE TABLE user ( id BIGINT PRIMARY KEY COMMENT '用户ID', user_account VARCHAR(255) NOT NULL COMMENT '用户账号', user_password VARCHAR(255) NOT NULL COMMENT '密码', user_name VARCHAR(255) COMMENT '用户昵称', user_avatar VARCHAR(500) COMMENT '用户头像', user_profile TEXT COMMENT '用户简介', user_role VARCHAR(50) COMMENT '用户角色', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间', is_delete TINYINT DEFAULT 0 COMMENT '逻辑删除' ); ``` #### 2. 空间表(space) ```sql CREATE TABLE space ( id BIGINT PRIMARY KEY COMMENT '空间ID', space_name VARCHAR(255) NOT NULL COMMENT '空间名称', space_level INT COMMENT '空间级别', max_size BIGINT COMMENT '最大存储空间', max_count BIGINT COMMENT '最大图片数量', total_size BIGINT COMMENT '当前总大小', total_count BIGINT COMMENT '当前图片数量', user_id BIGINT COMMENT '创建用户ID', space_type INT COMMENT '空间类型', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间', is_delete TINYINT DEFAULT 0 COMMENT '逻辑删除' ); ``` #### 3. 图片表(picture) ```sql CREATE TABLE picture ( id BIGINT PRIMARY KEY COMMENT '图片ID', url VARCHAR(500) NOT NULL COMMENT '图片URL', thumbnail_url VARCHAR(500) COMMENT '缩略图URL', name VARCHAR(255) COMMENT '图片名称', introduction TEXT COMMENT '简介', category VARCHAR(100) COMMENT '分类', tags JSON COMMENT '标签', pic_size BIGINT COMMENT '图片大小', pic_width INT COMMENT '图片宽度', pic_height INT COMMENT '图片高度', pic_scale DOUBLE COMMENT '宽高比例', pic_format VARCHAR(50) COMMENT '图片格式', user_id BIGINT COMMENT '创建用户ID', space_id BIGINT COMMENT '所属空间ID', review_status INT COMMENT '审核状态', review_message TEXT COMMENT '审核信息', pic_color VARCHAR(50) COMMENT '主色调', pic_hash_code VARCHAR(255) COMMENT '哈希码', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间', is_delete TINYINT DEFAULT 0 COMMENT '逻辑删除' ); ``` #### 4. 空间用户关联表(space_user) ```sql CREATE TABLE space_user ( id BIGINT PRIMARY KEY COMMENT '关联ID', space_id BIGINT NOT NULL COMMENT '空间ID', user_id BIGINT NOT NULL COMMENT '用户ID', space_role VARCHAR(50) COMMENT '空间角色', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间' ); ``` ## 🚀 快速开始 ### 环境要求 - **Java**:11或更高版本 - **MySQL**:8.0或更高版本 - **Redis**:5.0或更高版本 - **Maven**:3.6或更高版本 - **Node.js**:16或更高版本(前端) ### 后端部署 1. **克隆项目** ```bash git clone <项目地址> cd znxs-iccl_s ``` 2. **数据库配置** ```sql -- 创建数据库 CREATE DATABASE znxs_iccl CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 执行初始化SQL source sql/create_user.sql ``` 3. **配置文件修改** 编辑 `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/znxs_iccl username: your_username password: your_password redis: host: localhost port: 6379 password: your_redis_password # 腾讯云COS配置 cos: secret-id: your_secret_id secret-key: your_secret_key region: ap-beijing bucket: your_bucket_name ``` 4. **启动应用** ```bash mvn clean install mvn spring-boot:run ``` 5. **访问API文档** 访问 `http://localhost:8010/api/doc.html` 查看API文档 ### 前端部署 1. **安装依赖** ```bash cd ZNICCL_b npm install ``` 2. **配置环境** 编辑配置文件,设置后端API地址 3. **启动开发服务器** ```bash npm run dev ``` 4. **构建生产版本** ```bash npm run build ``` ## 🔧 配置说明 ### 主要配置文件 #### application.yml ```yaml server: port: 8010 servlet: context-path: /api spring: application: name: znxs-iccl datasource: url: jdbc:mysql://localhost:3306/znxs_iccl driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 123456 redis: host: localhost port: 6379 password: database: 0 timeout: 3000ms lettuce: pool: max-active: 8 max-wait: -1ms max-idle: 8 min-idle: 0 # MyBatis Plus配置 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl map-underscore-to-camel-case: false global-config: db-config: logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0 # Knife4j配置 knife4j: enable: true openapi: title: 智能协同云图库 version: v1.0 ``` #### 权限配置文件(spaceUserAuthConfig.json) ```json { "roles": [ { "key": "viewer", "name": "浏览者", "permissions": ["picture:view"] }, { "key": "editor", "name": "编辑者", "permissions": ["picture:view", "picture:upload", "picture:edit", "picture:delete"] }, { "key": "admin", "name": "管理员", "permissions": ["picture:view", "picture:upload", "picture:edit", "picture:delete", "member:manage"] } ] } ``` ## 📈 性能优化 ### 缓存策略优化 - **本地缓存**:使用Caffeine实现高频数据缓存 - **分布式缓存**:Redis缓存共享数据 - **缓存穿透**:布隆过滤器防止缓存穿透 - **缓存雪崩**:随机过期时间避免雪崩 - **缓存击穿**:互斥锁防止热点数据击穿 ### 数据库优化 - **索引优化**:为查询字段建立合适索引 - **分页查询**:MyBatis Plus分页插件 - **连接池**:Druid连接池配置 - **SQL优化**:避免N+1查询问题 ### 异步处理 - **文件上传**:异步处理大文件上传 - **图片处理**:异步生成缩略图 - **消息队列**:Disruptor处理WebSocket消息 ## 🔒 安全特性 ### 认证授权 - **JWT令牌**:基于Sa-Token的认证机制 - **权限控制**:注解式权限校验 - **会话管理**:分布式会话存储 ### 数据安全 - **密码加密**:BCrypt密码加密存储 - **SQL防注入**:MyBatis参数化查询 - **XSS防护**:输入数据过滤 - **CSRF防护**:令牌验证机制 ### 文件安全 - **文件校验**:文件类型和大小验证 - **病毒扫描**:集成病毒扫描服务 - **访问控制**:对象存储权限控制 ## 🧪 测试策略 ### 单元测试 - **Service层测试**:业务逻辑单元测试 - **Controller测试**:API接口测试 - **工具类测试**:工具方法测试 ### 集成测试 - **数据库测试**:数据访问层集成测试 - **缓存测试**:Redis缓存集成测试 - **文件上传测试**:COS集成测试 ### 性能测试 - **压力测试**:并发用户压力测试 - **负载测试**:系统负载能力测试 - **稳定性测试**:长时间运行稳定性测试 ## 📚 开发规范 ### 代码规范 - **命名规范**:遵循Java命名约定 - **注释规范**:必要的代码注释 - **包结构**:清晰的分层包结构 - **异常处理**:统一的异常处理机制 ### API设计规范 - **RESTful风格**:遵循RESTful设计原则 - **统一响应**:标准化的响应格式 - **错误处理**:统一的错误码体系 - **文档维护**:API文档实时更新 ### 数据库设计规范 - **命名规范**:表名、字段名规范 - **索引设计**:合理的索引策略 - **范式设计**:适当的数据库范式 - **性能考虑**:查询性能优化 ## 🤝 贡献指南 ### 开发流程 1. Fork项目仓库 2. 创建功能分支 3. 提交代码变更 4. 创建Pull Request 5. 代码审查合并 ### 提交规范 - **feat**:新功能 - **fix**:修复bug - **docs**:文档更新 - **style**:代码格式调整 - **refactor**:代码重构 - **test**:测试相关 - **chore**:构建过程或辅助工具变动 ## 📞 技术支持 ### 问题反馈 - **GitHub Issues**:提交问题和建议 - **邮件支持**:联系开发团队 - **文档查询**:查阅项目文档 ### 社区交流 - **技术讨论**:技术问题交流 - **功能建议**:新功能需求讨论 - **使用帮助**:使用问题解答 ## 📄 许可证 本项目采用 Apache License 2.0 开源协议,详情请查看 LICENSE 文件。 ## 🙏 致谢 感谢所有为项目做出贡献的开发者,特别感谢以下开源项目: - Spring Boot - MyBatis Plus - Vue.js - Ant Design Vue - 腾讯云COS - 阿里云大模型 --- **智能协同云图库系统** - 让图片管理更智能、更高效!