# g2rain-cms(内容管理微服务)
g2rain-cms 是面向多租户 SaaS 的 内容管理(CMS) 后端微服务:提供站点、空间、栏目、页面、文章与分类、标签及文章—标签关系等能力的 REST API。持久化使用 MyBatis + MySQL,运行期通过 Nacos 做服务发现与动态配置,并集成 Redis 与平台侧 Starter(如 MyBatis 扩展、分页、Web 层统一行为等);默认启用 虚拟线程(spring.threads.virtual.enabled: true)。
能力会持续迭代,接口与表结构以仓库代码及 OpenAPI 为准。
源码仓库:github.com/g2rain/g2rain-cms (opens new window)
# 与平台能力的衔接
- 服务发现与配置:与平台其他 Spring Cloud 服务一致,依赖 Nacos;可将数据源、Redis 等敏感配置放在 Nacos 的
g2rain-cms.yml(与spring.config.import用法对齐)。 - 多租户:
g2rain.data.isolation.enabled与业务表中的租户/组织字段(如organ_id)配合,实现数据隔离。 - Web 层:
g2rain.web.*控制登录守卫、身份注入、统一 JSON 异常、Result Mixin 等与基座一致的行为。 - 前端配套:控制台中的 CMS 能力由子应用 g2rain-cms-app 承载,经网关访问本服务 API。
# 功能域概览
| 领域 | HTTP 前缀(示例) | 说明 |
|---|---|---|
| 站点 | /web_site | 站点维护 |
| 空间 | /space | 内容空间(类型见库表与代码) |
| 栏目 | /channel | 栏目树;列表 / 页面 / 外链等类型 |
| 页面 | /page | 页面内容 |
| 文章 | /article | 文章主数据 |
| 文章分类 | /article_category | 文章与分类关系 |
| 标签 | /tag | 标签 |
| 文章—标签 | /article_tag_relation | 关联关系 |
文档与调试:集成 springdoc-openapi;默认 Swagger UI 路径 /swagger-ui.html,springdoc.api-docs.path 常为 /v3/api-docs。
# 模块结构
g2rain-cms/
├── g2rain-cms-api/ # 对外契约:DTO、校验、OpenAPI 注解等
├── g2rain-cms-biz/ # Controller、Service、DAO、MyBatis XML
├── g2rain-cms-startup/ # 可执行应用入口
└── scripts/cms.sql # MySQL 建库建表示例
主类位于 startup 模块(如 com.g2rain.Application)。
# 环境要求与构建
- JDK 25、Maven 3.9+
- 运行期:MySQL、Redis、Nacos
- 工程依赖若干
com.g2rain内部构件与 Maven 仓库;本地需能解析对应坐标。
git clone https://github.com/g2rain/g2rain-cms.git
cd g2rain-cms
mvn clean package -DskipTests
运行可执行包或 mvn spring-boot:run(在 g2rain-cms-startup 模块):
- 默认 HTTP 端口见
g2rain-cms-startup/src/main/resources/application.yml(常见为 8080,可通过SERVER_PORT覆盖)。 spring.application.name一般为g2rain-cms,用于 Nacos 注册名。
# 数据库初始化
在 MySQL 中执行仓库内脚本(按环境修改库名与账号):
mysql -u root -p < scripts/cms.sql
脚本会创建 CMS 相关库表,与 Mapper 命名一致。
# 配置要点
| 变量 / 配置 | 说明 |
|---|---|
SERVER_PORT | HTTP 端口 |
SPRING_PROFILES_ACTIVE | Profile,如 dev |
NACOS_SERVER_ADDR | Nacos 地址 |
SPRING_CLOUD_NACOS_* | 命名空间、分组、鉴权等 |
g2rain.web.* | Web 层开关 |
g2rain.data.isolation.enabled | 多租户数据隔离 |
数据源与 Redis 等建议放在 Nacos 或环境变量中,勿将生产凭据写入仓库。
# 镜像(Jib)
g2rain-cms-startup 可配置 Jib 构建容器镜像(基础镜像与镜像名以仓库 pom 为准)。典型流程为对 startup 模块执行 package 后再执行 jib:dockerBuild(需本机或 CI 已登录镜像仓库)。
# 相关文档
- 开源范围 · 快速开始(子应用与环境变量通用约定)
- 前端子应用:g2rain-cms-app
- 一键部署栈:g2rain-deploy