# cms_2026 **Repository Path**: chd/cms_2026 ## Basic Information - **Project Name**: cms_2026 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-14 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QTCMS 基于 Spring Boot 4、MyBatis-Plus、Sa-Token、Thymeleaf 的内容管理系统,使用 Maven 构建。 ## 技术栈 - JDK 21;Spring Boot 4.0.8。 - MyBatis-Plus 3.5.17,使用 Spring Boot 4 starter 和 39 个实体 Mapper。 - Sa-Token 1.46.0,使用 Spring Boot 4 starter。 - Thymeleaf 处理后台、会员中心和插件页面;现有栏目内容与邮件继续使用 Velocity。 - MySQL;自动化集成测试使用独立的 H2 内存数据库。 ## 依赖说明 - POI 5.5.1(xlsx 解析为 SAX 流式)、jsoup 1.23.2、commons-lang3(替代 commons-lang 2.6)、 Thumbnailator(替代已停更的 java-image-scaling)、MIME 探测内置于 elfinder 配置(替代已停更的 mime-util)。 - commons-email 2.x 的 GA 尚未发布到 Maven Central(仅里程碑版),邮件暂用 commons-email 1.6.0,待 GA 后迁移。 - 后台 jQuery 已升级到 3.7.1(`web/res/script/jquery-3.7.1.min.js`,修复 CVE-2020-11022/11023), jquery-migrate 已移除,模板中 `.size()` 等已废弃 API 改为 `.length`。 layui 统一为 `res/layui`(2.8.17),旧 `res/script/layui`(2.5.6)副本已删除; 前台 Velocity 模板引用已同步更新。zTree 已升级 3.5.24。 cron 定时页已去除 EasyUI(GPL)依赖,改用自带的轻量 tabs/数字输入实现; 富文本编辑器已由 UEditor 替换为 wangEditor v5(`web/res/script/wangeditor/`), 上传仍走 `/editor/controller`,旧 UEditor 静态资源已删除。后台图表库已升级并本地化为 ECharts 5.6.0 (`web/res/script/echarts/`),不再依赖公共 CDN。已删除 IE8/9 的 html5shiv/respond.js 公共 CDN polyfill。 - 前台站点模板(`web/WEB-INF/templates`,Velocity)仍使用 `res/sites/js` 下的 jQuery 1.x/swiper 等历史资产, 升级需要真实站点数据的浏览器回归;elFinder 客户端、jquery-cron 等成套旧组件的 整体替换属独立改造项目。 ## 目录 ```text src/main/java/com/cms/ 启动类、控制器、业务逻辑、配置和数据访问 src/main/java/org/elfinder/ Jakarta Servlet 文件管理器 src/main/resources/ application.yml、Thymeleaf 模板、国际化资源 src/test/java/ 集成测试 web/res/ 前端资源,构建时复制到 classpath:/static/res/ web/WEB-INF/templates/ 现有 Velocity 内容与邮件模板,同时打包到 JAR web/upload_files/ 运行时上传目录,不打包到 JAR legacy/ 原 Eclipse/Nutz/Shiro/JSP 工程,仅供迁移对照 ``` `legacy/` 不参与 Maven 编译、资源复制或部署。不要再部署原 `web.xml` 或把旧 JAR 加入 classpath。 ## 本地启动 安装 JDK 21 和 Maven 3.9+,连接包含现有 CMS 表结构与基础数据的开发数据库。程序不会自动导入 `doc/SQL/` 的历史 SQL 快照。 PowerShell 示例: ```powershell $env:CMS_DB_URL = 'jdbc:mysql://localhost:3306/cms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai' $env:CMS_DB_USERNAME = 'cms' $env:CMS_DB_PASSWORD = '<本地数据库密码>' $env:CMS_WEB_ROOT = (Join-Path (Get-Location) 'web') mvn spring-boot:run ``` 后台登录:`http://localhost:8080/qtcms_2023/sys`。会员登录:`http://localhost:8080/qtcms_2023/login`。 沿用数据库中的账号、角色及权限,不生成默认管理员。首页依赖已有栏目和模板数据。 ## 构建与验证 ```powershell mvn clean verify node tools/check_rendered_scripts.cjs node tools/check_rendered_assets.cjs mvn fmt:check .\tools\smoke_jar.ps1 java -jar target/qtcms_2026-4.0.0-SNAPSHOT.jar ``` `verify` 执行集成测试并生成可执行 JAR。测试使用 H2,不连接配置中的 MySQL;模板渲染结果输出到 `target/rendered-templates/` 。JavaScript 检查只解析这些渲染结果,不执行页面脚本;资源检查会验证渲染后的本地脚本、样式和图片引用。`smoke_jar.ps1` 临时启动 JAR、检查登录页/静态资源/编辑器配置,然后停止自己创建的进程,不连接数据库。`mvn fmt:format` 格式化 Java 代码。 在 IntelliJ IDEA/Eclipse 中按 Maven 项目导入 `pom.xml`,运行 `com.cms.CmsApplication`。 ## 配置 - `CMS_EDITOR_REMOTE_HOSTS`:允许抓取图片的 HTTPS 域名,逗号分隔;默认不允许远程抓取。 - `CMS_CONTEXT_PATH`:默认 `/qtcms_2023`;`PORT`:默认 `8080`。 - `CMS_COOKIE_SECURE`:HTTPS 部署时设为 `true`,登录 Cookie 将带 Secure 属性;默认 `false`。 - `CMS_WEB_ROOT`:默认 `./web`,部署时应设为持久化目录。上传与在线编辑的内容模板写入这里。 - `CMS_MAIL_HOST/PORT/USERNAME/PASSWORD/FROM/FROM_NAME/IMAGE_URL/SUBJECT`:邮件配置。 - `CMS_EMAIL_SCHEDULER_ENABLED`:默认 `false`;配置邮件并核对已有任务后启用。 - `CMS_SSO_ENABLED`:默认 `false`;另需配置 `CMS_SSO_TICKET_URL/USER_URL/LOGOUT_URL/LOGOUT_CALLBACK/SECRET`。 - `CMS_INITIALIZE_SYSTEM_PARAMETERS`:默认 `true`,启动时读取系统参数和国家缓存。无数据库的启动检查可设为 `false` ,但业务功能仍需要数据库。 详细迁移说明、兼容边界与待联调项目见 `doc/MIGRATION.md`。 ## 后台界面 后台登录页和工作区已更新为统一样式,支持窄屏导航、可横向滚动的表格和自适应弹窗。样式维护说明、设计令牌和界面截图见 [doc/UI.md](doc/UI.md) ;组件示例见 `doc/ui/cms-design-system.html`。