Skip to content

基于 Spring Boot 和 SQLite 的轻量级班级相册系统,支持照片上传、标签分类、评论与基础权限管理,并集成 AI 辅助审核和智能打标签。

License

Notifications You must be signed in to change notification settings

xingchentye/ClassAlbum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Class Album 班级相册系统

基于 Spring Boot 和 SQLite 的轻量级班级相册与相片管理系统,支持图片上传、标签分类、评论管理、基础权限控制,并集成 AI 能力辅助审核与打标签,适合部署在班级/小团队的内网或个人服务器上。


功能概览

  • 相册管理:创建、编辑、删除相册,按相册浏览照片。
  • 照片管理:上传图片/视频、生成缩略图、查看详情、批量操作。
  • 标签与分类:支持标签、标签分类管理,按标签检索内容。
  • 评论系统:对照片进行评论、查看评论列表。
  • 用户与权限:基础的用户登录、权限校验与拦截。
  • 系统配置:系统参数配置、黑名单、日志查看等。
  • AI 能力:
    • 智能内容审核与建议(基于 DeepSeek/Qwen 等接口)。
    • 自动标签/分类建议,辅助整理相册内容。
  • 运行监控:通过 Actuator 和 Micrometer 暴露基础运行指标。

具体接口见 controller 包:如 AlbumControllerPhotoControllerUserControllerAIController 等。


技术栈

  • 语言与运行环境
    • Java 21
    • Maven(构建工具)
  • 后端框架
    • Spring Boot 2.7.5
    • Spring Web、Spring JDBC、Spring AOP
    • Spring Cache + Caffeine 缓存
    • HikariCP 连接池
  • 数据库
    • SQLite(单文件数据库,文件位于 ./database/album.db
  • 日志与监控
    • Log4j2
    • Micrometer + Spring Boot Actuator
  • 前端
    • 原生 HTML/CSS/JavaScript
    • Vue.js
    • Element UI
    • ECharts

目录结构

项目核心结构如下(省略部分细节文件):

  • pom.xml:Maven 项目配置,依赖与打包配置。
  • src/main/java/com/classalbum/
    • ClassAlbumApplication.java:应用入口。
    • controller/:Web 接口层(相册、照片、用户、系统配置、AI 等)。
    • service/service/impl/:业务逻辑层。
    • dao/dao/impl/:数据访问层,基于 JDBC 操作 SQLite。
    • entity/:数据库实体定义。
    • dto/:前后端交互使用的数据传输对象。
    • config/:缓存、数据源、监控、Spring 配置等。
    • interceptor/:访问日志、权限校验、防爬虫、初始化拦截器。
    • aspect/:日志切面等 AOP 相关代码。
    • util/:文件、图片、视频处理、加密、AI 调用等工具类。
  • src/main/resources/
    • application.yml:应用配置(端口、上下文路径、数据源、缓存、日志等)。
    • log4j2.xml:日志输出配置。
    • spring-config.xmlMETA-INF/spring.factories:Spring 相关扩展配置。
  • src/main/webapp/
    • index.htmladmin.htmllogin.htmlsetup.html:主要前端页面。
    • css/:页面样式。
    • js/:前端脚本逻辑。
    • lib/:前端依赖(Vue、Element UI、ECharts 等)。
  • database/
    • album.db 及其 WAL 文件:SQLite 数据库文件(运行时生成/使用)。
  • logs/
    • 运行日志、错误日志文件。

通过 .gitignoretarget/logs/、数据库文件等不会被提交到 Git 仓库。


环境准备

  • JDK:Java 21(建议安装 OpenJDK 21 或更高兼容版本)
  • Maven:3.6+(确保已配置 MAVEN_HOMEmvn 命令可用)
  • 操作系统:Windows / macOS / Linux 均可

本地运行

在项目根目录执行以下命令:

# 1. 编译并打包(跳过测试可视需要调整)
mvn clean package

# 2. 运行打包好的 Spring Boot 可执行 JAR
java -jar target/class-album-system-1.0-SNAPSHOT.jar

应用启动后默认配置:

  • 监听端口:8081
  • 上下文路径:/class-album

因此可通过以下地址访问:

如需在开发模式下运行,也可以使用:

mvn spring-boot:run

配置说明

主要配置位于 application.yml

  • server.port:服务端口,默认 8081
  • server.servlet.context-path:上下文路径,默认 /class-album
  • spring.datasource.url:SQLite 数据库连接串,默认使用项目根目录下 ./database/album.db
  • spring.servlet.multipart.*:上传文件大小限制(默认单文件/总请求 1024MB)。
  • spring.cache:使用 Caffeine 的缓存策略。
  • management.*:Actuator 监控端点与指标配置。

如需修改数据库位置或端口,只需调整 application.yml 后重新启动服务。


AI 相关配置

项目中包含 AI 相关的工具类与接口,例如:

  • DeepSeekUtil
  • QwenVisionUtil
  • AIControllerAIService

这些类通常会调用外部大模型/视觉模型 API。使用前请:

  • 根据实际使用的模型服务,在对应工具类中配置 API Key、接口地址等。
  • 避免将真实密钥提交到 Git 仓库,可通过环境变量或外部配置注入。

贡献建议(Contributing)

  • 欢迎通过 Issue 提出功能建议或问题反馈。
  • 欢迎提交 Pull Request 修复 bug 或改进代码结构。
  • 在提交代码前建议本地执行:
    • mvn clean package 确保项目可以正常构建。
  • 提交前请确认:
    • 未提交本地数据库文件(database/*.db*)、日志(logs/)和其他编译产物(target/)。

许可证

本项目采用 BSD 3-Clause License 开源协议,详情见仓库中的 LICENSE 文件。

About

基于 Spring Boot 和 SQLite 的轻量级班级相册系统,支持照片上传、标签分类、评论与基础权限管理,并集成 AI 辅助审核和智能打标签。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published