🚀 UJCMS v12.1.0

项目功能开发与优化 · 完整修改汇总

2026-07-19 · 8个新建文件 · 14个修改文件 · 5张数据库表 · 10个API端点

按 ← → 方向键 或 点击底部按钮 切换页面

📋 功能模块一览

🏠 首页改版

B站风格布局,卡片推荐位 + 热门网格

💬 评论修复

CSRF Token 修复,Inline Toast 提示

🎁 积分商城

商品兑换、物流跟踪、签到系统

📏 积分规则

可配置规则引擎,签到/评论/发文积分

🌙 暗黑模式

全站暗色主题 + localStorage 持久化

📧 邮件通知

指定用户 / 全站群发邮件

🔍 搜索增强

频道筛选 chips 标签

📤 分享优化

Open Graph 元标签

🔔 通知升级

群发通知 + 类型标签扩展

🏷️ 标签筛选

频道页系统标签筛选栏

📊 数据统计

8
新建文件
14
修改文件
5
数据库表
10
API 端点

新建文件详情

文件类型说明
PointShopApiController.javaJava积分商城前端 API(15+端点)
PointGoodsBackendController.javaJava商品后台管理 CRUD
PointRuleBackendController.javaJava积分规则后台管理
point_shop.html / point_orders.html / point_log.htmlFreemarker3个积分商城前端页面
PointGoodsList.vue / PointRuleList.vueVue32个后台管理页面

🎁 积分商城系统

前端功能

  • 商品列表浏览
  • 积分兑换(含收货信息)
  • 每日签到领积分
  • 积分历史明细
  • 兑换订单 + 物流跟踪
  • 收货地址管理

数据库表

ujcms_point_goods ujcms_point_order ujcms_point_rule ujcms_point_record ujcms_user_address

后台管理

  • 商品 CRUD(名称/积分/库存/图片)
  • 订单管理(状态流转)
  • 物流信息录入(快递公司+单号)
  • 积分规则配置(动作/分值/限制)

积分获取方式

  • ✅ 每日签到
  • ✅ 发表评论
  • ✅ 发布文章
  • ✅ 浏览内容

🔔 通知 & 📧 邮件系统

系统通知

  • 指定用户发送通知
  • 群发全站通知(分页500用户)
  • 通知类型扩展:类型8「关注」+ 类型9「新文章」

API 端点

方法路径
POST/backend/ext/notification/system
POST/backend/ext/notification/system-all
POST/backend/ext/notification/email
POST/backend/ext/notification/email-all

邮件通知

  • 给选中用户发送邮件
  • 全站群发邮件(自动跳过无邮箱用户)
  • 复用 Config.Email.sendMail()
  • SMTP 未配置时友好错误提示

💡 使用前提

需在系统设置 → 邮件设置中配置 SMTP 服务器(Host/Port/账号/密码)

🎨 前端体验优化

🏠 首页布局

  • B站风格卡片推荐位(50%宽度)
  • 热门文章网格(按阅读量排序)
  • 首页容器宽度优化至 84%

🌙 暗黑模式

  • body.dark 全局暗色规则
  • 🌙 切换按钮(inc_header)
  • localStorage 记住用户偏好

🔍 搜索 & 📤 分享

  • 搜索结果页新增频道筛选 chips
  • 文章页新增 OG 元标签
  • 分享到社交媒体显示预览卡片

💬 评论修复

  • fetchCsrf() 包装器获取 Token
  • Inline Toast 操作反馈

🏷️ 频道页标签筛选

改动内容

  • 移除旧的「全部」+ 子栏目导航
  • 替换为系统标签筛选栏
  • 只显示后台定义的带描述标签
  • 标签悬停显示描述文字
  • URL 参数 ?tagId=xxx 筛选
  • 选中标签高亮(btn-primary)

涉及模板

channel.html channel_video.html

后端支撑

  • @TagList Freemarker 指令
  • 过滤条件:isReferred='true'
  • 描述过滤:tag.description??
  • 查询键:EQ_article@ArticleTag-tagId_Long

💡 管理方式

后台 → 内容 → 标签管理 → 创建带描述的标签,自动出现在频道页筛选栏

🛠 技术栈

☕ 后端框架

Spring Boot 3.5.10
Spring Security 6.5.7
MyBatis 3.5.19

🗄 数据库

MySQL 8.0.40
Liquibase 迁移
364 changesets

🎨 前端

Freemarker 模板
Vue 3 + Element Plus
pnpm + Vite 构建

📧 基础设施

Java 26.0.1
Spring Boot Mail
Snowflake ID 生成

项目启动命令

.\mvnw -pl ujcms-starter -am spring-boot:run -DskipTests

管理面板:http://localhost:8080/cp/

✅ 开发完成

UJCMS v12.1.0 全部功能已就绪
8
新建文件
14
修改文件
5
数据库表
10
API端点

🚀 部署包已准备就绪 · BT面板可一键部署

一键部署,急速上线!