Skip to content

产品概述

项目定位

LuckyColor 是一套面向中后台场景的多租户 SaaS 管理平台。当前文档所对应的真实项目由四个部分组成:

项目位置作用
luckyColor-docshttps://github.com/Liu-code3/luckyColor-docs文档站,基于 VitePress
luckyColor-adminhttps://github.com/Liu-code3/luckyColor-admin管理后台前端,基于 Vue 3 + Vite + TypeScript
luckyColor-admin-servehttps://github.com/Liu-code3/luckyColor-admin-serveNestJS 后端服务,基于 NestJS + Prisma + MySQL + Redis
luckyColor-admin-springboot/Users/admin/code/luckyColor-admin-springbootSpring Boot 后端服务,基于 Spring Boot + MyBatis-Plus + MySQL + Redis

这套平台不是单一业务系统,而是一套可继续承载更多业务模块的“后台底座”。它已经实现了常见 SaaS 平台需要的账户、权限、菜单、租户、字典、配置、公告和工作台等能力。

除已确认的 Spring Boot 本机路径外,其他页面仍尽量避免写死个人电脑目录;如果你在本地联调,请把 <workspace> 理解成你自己的代码根目录。

当前项目的一个重要特点是:前端并不是只绑定某一套后端实现,而是已经支持在 NestJSSpring Boot 两套接口服务之间切换,用于接口契约对齐、迁移验证和多实现并行维护。

如果你当前最想快速厘清“租户、部门、角色、用户”之间的真实关系,可以直接继续阅读 核心关系说明

平台想解决的问题

  • 为多租户后台提供统一的登录、权限、租户隔离和系统管理能力。
  • 为前端提供动态菜单、按钮权限、工作台统计、字典与配置等通用基础数据。
  • 为交付和运维提供可快速拉起的开发环境、生产部署方案和故障排查路径。
  • 为后续扩展业务模块保留稳定的接口、数据库与权限框架。

核心功能地图

功能域使用者会看到什么前端落点后端落点
登录认证登录页、算术验证码、登录态恢复src/views/loginsrc/utils/auth*modules/iam/auth
权限与路由动态菜单、按钮显隐、页面访问控制src/store/modules/menu.tssrc/directives/permission.tsmodules/iam/permissionsmodules/iam/data-scopes
工作台首页统计、访问趋势、最近访问、公告src/views/indexsrc/api/dashboard.tsmodules/platform/dashboard
用户管理用户列表、导出、导入、重置密码、分配角色src/views/sys/user.vuemodules/system/users
角色管理角色、菜单授权、数据权限范围src/views/sys/rolemodules/system/roles
菜单管理菜单树、排序、启停、动态路由来源src/views/sys/menumodules/system/menus
部门管理部门树、负责人、成员归属src/views/sys/departmentmodules/system/departments
字典管理字典树、分页、统一枚举出口src/views/sys/dictmodules/system/dictionary
系统配置配置项管理与缓存刷新src/views/sys/configmodules/system/configs
通知公告公告维护与工作台展示src/views/sys/noticemodules/system/notices
租户管理租户列表、创建租户、默认资源初始化src/views/sys/tenantmodules/tenant/tenants
租户套餐套餐维护、能力开关、配额限制与租户绑定src/views/sys/tenantPackagemodules/tenant/tenant-packages
文件服务文件上传、图片访问上传组件与文件 APImodules/platform/file
平台附加能力健康检查、偏好设置、水印、国际化、代码生成API 层与工具页modules/platform/*

技术栈概览

前端

  • Vue 3
  • Vite 8
  • TypeScript
  • Pinia
  • Vue Router
  • Naive UI
  • UnoCSS
  • Axios
  • vxe-table
  • wangEditor
  • Playwright 冒烟测试

后端

NestJS 实现

  • NestJS 10
  • TypeScript
  • Prisma 5
  • MySQL 8.x
  • Redis 7.x
  • Swagger / OpenAPI
  • Jest 单元测试与 e2e 测试

Spring Boot 实现

  • Spring Boot 3.5
  • Java 17
  • Spring Security
  • MyBatis-Plus 3.5.x
  • MySQL 8.x
  • Redis 7.x
  • springdoc OpenAPI
  • JUnit 5 / Spring Boot Test

部署与交付

  • Nginx 反向代理
  • Docker Compose 示例编排
  • 前端静态资源部署
  • Node.js 进程、Java 进程或容器化运行后端服务

双后端怎么理解

可以把当前项目理解成“一个前端,对接两套后端实现”:

  • Spring Boot 更适合当前默认本地联调与 Java 技术栈交付场景。
  • NestJS 仍然保留,便于对照现有实现、验证接口契约和回看原始业务拆分方式。
  • 两套后端都尽量保持 /api 前缀、x-tenant-id 头、登录与权限快照语义一致。
  • 前端通过不同的 Vite mode 切换代理目标,而不是改业务代码后再手工替换接口。

如果你主要是第一次接手项目,建议先从 Spring Boot 说明开始;如果你要对照历史实现或理解早期模块设计,再补看 NestJS 说明。

运行入口

服务默认地址说明
前端开发服务http://127.0.0.1:9900Vite 本地开发服务
Spring Boot 接口http://127.0.0.1:3001/api前端 pnpm dev / pnpm dev:springboot 默认指向它
Spring Boot Swaggerhttp://127.0.0.1:3001/api/docs便于联调和接口核对
NestJS 接口http://127.0.0.1:3002/api前端 pnpm dev:nestjs 默认指向它
NestJS Swaggerhttp://127.0.0.1:3002/docs便于与 Spring Boot 对照接口契约
MySQL127.0.0.1:3306后端默认数据库
Redis127.0.0.1:6379字典缓存、验证码、辅助缓存等能力依赖

多租户模型怎么理解

LuckyColor 当前采用“共享数据库、共享表、逻辑隔离”的多租户模式:

  • 核心业务表大多带有 tenant_id
  • 用户、角色、部门等数据默认在租户范围内唯一。
  • 租户识别优先级为请求头 x-tenant-id、域名后缀、登录态 Token、默认租户配置。
  • 创建租户时,系统会自动初始化管理员、角色、部门、菜单授权和基础字典。

如果你想把这块关系看得更细,可以继续阅读 核心关系说明

这意味着平台既适合本地开发时通过 Header 指定租户,也适合未来演进为二级域名租户模式。

适用场景

  • SaaS 多租户管理后台
  • 企业内部运营后台
  • 需要 RBAC、菜单、租户、字典、日志能力的系统底座
  • 需要快速交付演示环境、测试环境或中小规模生产环境的项目

推荐的接手顺序

  1. 先看本页,搞清楚系统解决什么问题、有哪些模块。
  2. 再看“系统架构总览”,理解请求是如何从前端进入后端和数据库的。
  3. 然后阅读“前端说明”以及“Spring Boot 后端说明”或“NestJS 后端说明”,对照真实仓库看目录和代码。
  4. 如果准备顺着真实后端代码继续深入,再进入对应的“模块渐进式解读”。
  5. 联调时配合“接口规范”“权限安全”“数据库设计”一起看。
  6. 如果你要搞清楚登录恢复、联调模式与 Mock/真实接口切换,继续看 会话恢复与联调模式
  7. 准备部署或交付时重点查看“部署方案”章节。
  8. 如果你要继续补文档结构或做对标整理,再看 参考项目与文档改进思路
  9. 如果你要核对双后端环境变量,或确认前端权限值与后端校验点的对应关系,再看 双后端环境变量与默认值对照前后端权限码对照
  10. 如果你要实际推进这轮 smoke 修复和链路补文档,直接按 Smoke 修复与功能链条任务板 执行,并在每完成一个子任务后同步打勾。

后续维护建议

  • 新增业务模块时,同时补充前端页面、后端模块、数据库表和接口说明四处文档。
  • 修改默认端口、环境变量或部署方式时,优先更新“快速开始”和“部署方案”。
  • 如果 Spring Boot 与 NestJS 之间出现契约差异,优先同步更新“产品概述”“快速开始”“后端说明”和“接口规范”。
  • 如果后续继续把 NestJS 能力迁移到 Java,请同步阅读并更新 切换 Java 时的文档更新点

Built with VitePress for LuckyColor SaaS.