Aitori BI V2
Aitori 后台管理服务,基于 Spring Boot 3.5.5 + Java 21 构建,提供用户管理、AI 订单、相册、风格模版、积分体系、订阅配置等业务的后端 API,并通过 Redis Pub/Sub 监听工作流任务回调,实现异步结果处理。
技术栈
| 类别 |
技术 |
| 语言 / 框架 |
Java 21 / Spring Boot 3.5.5 |
| ORM |
MyBatis-Plus 3.5.12 |
| 认证 |
Sa-Token 1.44.0 |
| 数据库 |
MySQL |
| 缓存 / 消息 |
Redis(Lettuce 连接池 + Pub/Sub) |
| API 文档 |
Knife4j 4.5.0 + SpringDoc OpenAPI 2.8.9 |
| HTTP 客户端 |
Forest 1.8.0 |
| 分布式锁 |
ShedLock 7.3.0 |
| 对象存储 |
Google Cloud Storage |
| 视频处理 |
FFmpeg(运行时依赖) |
| 监控 |
Micrometer + Prometheus |
| 并发模型 |
Java 21 虚拟线程 |
项目结构
com.aitori
├── annotation/ # 自定义注解(日志、响应包装控制)
├── aop/log/ # AOP 操作日志切面
├── client/ # 外部 HTTP 客户端接口
├── config/ # 配置类(Redis、MyBatis-Plus、Knife4j、虚拟线程等)
├── constants/ # 常量定义
├── controller/ # REST API 控制器
├── dto/ # 统一响应包装 R<T>
├── entity/ # 实体、VO、Request 对象
├── exception/ # 全局异常处理
├── listener/ # Redis 消息监听器
├── mapper/ # MyBatis-Plus Mapper 接口与 XML
├── service/ # 业务逻辑接口与实现
└── utils/ # 工具类(Google Storage、JWT、视频缩略图)
API 模块
| 模块 |
路径前缀 |
说明 |
| 登录 |
/v2/admin/login |
验证码、登录认证 |
| Dashboard |
/v2/dashboard |
数据总览、趋势、任务概览 |
| 用户管理 |
/v2/user |
用户列表、状态管理 |
| 用户反馈 |
/v2/user/feedback |
反馈列表 |
| 用户消息 |
/v2/user/message |
消息列表 |
| 用户问卷 |
/v2/user/survey |
问卷列表 |
| 邀请记录 |
/v2/user/invite |
邀请记录 |
| 兑换记录 |
/v2/user/redemption/record |
兑换记录 |
| 积分流水 |
/v2/user/points/record |
积分流水查询 |
| 积分订单 |
/v2/user/points/order |
积分订单 |
| 订阅订单 |
/v2/user/subscribe/order |
订阅订单 |
| 订单 V2 |
/v2/ai/order/v2 |
AI 订单管理 |
| 相册 |
/v2/ai/album |
相册管理 |
| 订阅配置 |
/v2/ai/subscribe |
订阅套餐 CRUD |
| 模块管理 |
/v2/module |
模块 CRUD + 排序 |
| 标签管理 |
/v2/tag |
标签 CRUD |
| 风格管理 |
/v2/style |
风格模版 CRUD |
| 积分来源配置 |
/v2/points/config |
积分来源 CRUD |
| 积分产品 |
/v2/points/product |
积分产品 CRUD |
| 兑换码 |
/v2/redemption/code |
兑换码 CRUD + 批量生成 |
| 订阅广告 |
/v2/subscribe/action |
订阅广告 CRUD |
| 问卷 |
/v2/survey |
问卷列表 |
| 文件上传 |
/google/upload/img |
上传至 Google Cloud Storage |
环境变量
| 变量名 |
必填 |
默认值 |
说明 |
ACTIVE_ENV |
否 |
dev |
Spring Profile |
MYSQL_HOST |
否 |
127.0.0.1 |
MySQL 地址 |
MYSQL_PROT |
否 |
3306 |
MySQL 端口 |
MYSQL_DATABASE |
否 |
aitori |
数据库名 |
MYSQL_USERNAME |
否 |
root |
数据库用户 |
MYSQL_PASSWORD |
是 |
- |
数据库密码 |
REDIS_HOST |
否 |
127.0.0.1 |
Redis 地址 |
REDIS_PORT |
否 |
6379 |
Redis 端口 |
REDIS_PASSWORD |
是 |
- |
Redis 密码 |
KNIFE4J_PASSWORD |
否 |
Goodsense1 |
API 文档访问密码 |
本地开发
前置依赖
- JDK 21+
- Maven 3.9+
- MySQL 8.x
- Redis 7.x
- FFmpeg(用于视频缩略图生成)
启动
# 编译打包
mvn clean package -DskipTests
# 运行
java -jar target/aitori-bi-v2-1.2.1.jar
服务启动后:
- 应用端口:
8080
- 管理端口:
8090(Actuator / Prometheus)
- API 文档:
http://localhost:8080/doc.html
Docker 部署
# 构建镜像
docker build -t aitori-bi-v2 .
# 运行容器
docker run -d \
-p 8080:8080 \
-p 8090:8090 \
-e MYSQL_HOST=your-mysql-host \
-e MYSQL_PASSWORD=your-password \
-e REDIS_HOST=your-redis-host \
-e REDIS_PASSWORD=your-redis-password \
aitori-bi-v2
API 文档
详细接口文档位于 doc/ 目录下,按模块拆分:
LOGIN_API.md - 登录认证
USER_API.md - 用户管理
AI_ORDER_V2_API.md - AI 订单 V2
AI_ALBUM_API.md - 相册管理
STYLE_API.md - 风格管理
MODULE_API.md - 模块管理
TAG_API.md - 标签管理
- 更多文档请参阅
doc/ 目录