Skip to content

更新日志

本项目遵循 Keep a Changelog 格式,版本号遵循 语义化版本

[Unreleased]

[1.4.0] - 2026-04-05

Added

  • 新增 CacheableRepository Trait,Repository 层声明式缓存抽象
  • 新增 Redis 队列异步处理(操作日志、消息通知)
  • 新增 log:archive 命令,定期清理过期管理员日志
  • 新增前端 useDebounceRequest Hook,搜索请求防抖
  • 新增前端 GET 请求去重机制

Changed

  • 缓存驱动由 file 切换为 Redis
  • 字典数据增加 7200s Redis 缓存
  • 菜单树增加 3600s Redis 缓存
  • SystemConfigRepository / Permission 缓存迁移到标签化管理
  • 操作日志由同步写 DB 改为异步队列
  • 消息通知由同步 API 调用改为异步队列
  • 余额/积分日志改用 eager loading,消除 enrichListWithNames 额外查询
  • AdminRepository.getDetailWithPermissions 改用 eager loading 消除 N+1
  • 前端删除 Auth Guard 冗余 menuApi.getAdminRoutes() fallback 请求

Fixed

  • 修复 admin_login_logs 缺少 (admin_id, login_time) 复合索引

[1.3.0] - 2026-04-01

Added

  • API 文档支持后台管理 API / 前端应用 API 切换,C 端 11 个控制器添加 OpenAPI 注解
  • UniApp 注册页新增手机短信验证码(与 PC 端注册流程统一)

Changed

  • UniApp 微信快捷登录按钮改为圆形绿色微信图标
  • UniApp 引入 iconify 图标系统(@iconify-json/ri + presetIcons)
  • 重构 Controller/Service/Repository 分层,消除架构违规(Controller 不再直接调用 Model,Service 不再绕过 Repository)
  • Menu/Permission Model 查询逻辑迁移至 Repository 层
  • AdminLogMiddleware 改用 Repository 记录操作日志
  • 统一 Repository 调用风格($this->getModel()::$this->model->
  • RequestCodeEnum 更新为与后端一致的 HTTP 状态码(200/400/401/403/500)
  • 超级管理员权限标识前后端对齐(后端注入 '*' 通配符)
  • 事务 catch 类型统一为 \Throwable(RoleService、AdminService、DictionaryService)
  • MessageLog Model 改为继承 core\base\Model
  • ConfigInfo TypeScript 类型定义与实际 API 响应字段对齐
  • app.store.getConfig() 返回值统一为 config 数据对象

Fixed

  • 修复开放平台配置保存成功但刷新后值为空(system_configs 缺少 wechat_open 组初始数据)
  • 修复 batchUpdateConfigs() 对不存在的配置键静默跳过,改为抛出异常提示具体键名
  • 修复异常类在 PHP 8.4 下隐式 nullable 参数弃用警告(BusinessException、ApiException、PermissionException)
  • 修复 server/public/static/fonts 未纳入 git 版本控制
  • 补充英文语言包缺失的 config_group_wechat_open 翻译
  • 修复 Upload 组件响应码检查(code == 1code == 200),错误消息字段(msgmessage
  • 修复上传路由重复定义(移除 common.php 中多余的 upload 路由组)
  • 修复超级管理员 v-hasPerm 指令不生效(后端未向前端发送 '*' 权限标识)
  • 修复 21 个 Model 缺少 $append 声明导致访问器字段不出现在 API 响应
  • 修复日志 Model 缺少 $updateTime = false(AdminLoginLog、AdminOperationLog)
  • 修复静默吞掉异常的 catch 块(FileService、CodeGeneratorService、UploadController),改为 Log::warning
  • 修复 api-doc 页面硬编码 localStorage key 获取 token
  • 修复 workbench 页面 v-for + v-if 同元素(Vue 3 不允许)
  • 修复 Vite 开发模式新页面首次访问触发依赖重优化整页刷新(改用动态解析组件样式路径)
  • 修复 Dashboard stats 接口报 "Undefined array key 'login_result'"(AdminLoginLog 访问器加 isset 防御)
  • 修复多个 Model 访问器在字段缺省时抛出 "Undefined array key" 警告(Admin、Role、Menu、Dictionary、DictionaryItem、Permission、BalanceLog、PointsLog)

Removed

  • 移除重复的消息模块视图(views/message/,保留 views/system/message/
  • 移除未使用的路由 guard 文件(router/guards/init.ts
  • 移除死代码:getWorkbench()getGlobalConfigs()ThemePicker/demo.vue
  • 注册 3 个孤立事件到 event.phpannouncement.createdarticle.createduser.notification.created

[1.2.1] - 2026-03-28

Added

  • 新增系统版本配置文件 server/config/version.php
  • 新增数据库升级目录 server/database/updates/ 及通用升级指南
  • 新增 v1.2.1 数据库升级脚本(权限系统修复)

Changed

  • CLAUDE.md 新增发版数据规范章节

Fixed

  • 修正菜单权限命名不一致(type=2 菜单添加 .list 后缀)
  • 补充缺失的 type=3 按钮菜单权限
  • 为超级管理员角色分配新增按钮权限

Removed

  • 移除 server/public/install/data/fix_permissions.sql(内容已合并至 init.sql 和 updates/v1.2.1)

[1.2.0] - 2026-03-24

Added

  • 仪表盘新增「最近活动」和「活跃用户排行」数据端点(/adminapi/dashboard/recent-activities/adminapi/dashboard/active-ranking
  • DashboardRepository 新增用户统计、排行榜、最近活动查询方法
  • DashboardService 新增用户注册/活跃统计、最近活动聚合、活跃排行逻辑

Changed

  • 仪表盘前端整体重设计:渐变玻璃态风格(gradient glassmorphism)
  • KPI 卡片调整为冷色系渐变配色(左亮右暗)
  • 移除系统信息卡片,快捷导航扩展为 4×2 网格布局
  • 简化仪表盘整体布局,放大关键数字排版
  • 移除仪表盘区域背景色覆盖
  • 更新仪表盘相关 TypeScript 类型定义与 API 函数
  • 更新仪表盘 i18n 多语言翻译

Fixed

  • 修复仪表盘中 appStore 属性名引用错误

[1.1.0] - 2026-03-23

Added

  • 微信支付多端适配:小程序 JSAPI、公众号 JSAPI、H5 MWEB、APP、PC Native 五种支付方式自动路由
  • 客户端平台识别:X-Client-Type 请求头(miniapp/wechat_h5/h5/app/pc),后端白名单校验
  • 多 AppID 支付配置:按平台自动选择小程序/公众号/开放平台/移动应用 AppID
  • JSAPI/APP 支付参数二次签名:buildJsapiParams()buildAppParams() 方法
  • 微信平台证书自动下载与缓存(无需手动配置 cert_path)
  • 小程序微信快捷登录 + 手机号绑定(wechatQuickLoginwechatBindPhone 接口)
  • H5 公众号 OAuth 静默授权获取 oa_openid(wechat-oauth.ts
  • H5 微信浏览器 WeixinJSBridge 调起支付
  • PC 端充值二维码展示 + 轮询支付状态(qrcode 库)
  • 用户表新增 oa_openid 字段,支付订单表新增 client_type 字段
  • 注册成功后自动登录(token + userInfo 同步写入 store)
  • notify_url 支持相对路径,运行时自动补全域名

Changed

  • PaymentManager::getWechatConfig() 改为 public,新增多端 appid 配置加载
  • WechatPayDriver::create() 支持动态 appid 参数
  • WechatPayDriver::query() 使用 URI 模板避免订单号大写被 normalize 转义
  • PaymentService::createOrder() 存储 client_type 到订单记录
  • UserController::recharge() 根据客户端类型自动路由支付方式
  • PaymentController::query() 不再强制要求 channel 参数,自动从订单记录获取
  • WechatController::oauthCallback() 支持 SPA 重定向模式和 JSON 模式
  • OfficialAccountService::getUserByCode() 返回 unionid 字段

Fixed

  • 修复微信支付未启用时返回 500 错误(改为友好提示)
  • 修复微信支付 V3 SDK certs 参数为空导致初始化失败
  • 修复微信 WXSS 编译错误(UnoCSS presetUno → presetWeapp)
  • 修复发现页 tabs 四周边距不合理及多余 scroll-view
  • 修复 H5 微信 OAuth 死循环(前端直接处理 code 参数)
  • 修复 el-tree-select value 属性 TS 类型错误(改用 node-key
  • 修复 el-tag type 属性 TS 联合类型不匹配
  • 修复微信支付查询订单号大写被转为 kebab-case(W → -w)
  • 修复 ORDER_NOT_EXIST 轮询报错暴露给用户(静默返回 pending)

[1.0.0] - 2026-03-20

Added

Admin 后台管理

  • 基于 Vue 3 + TypeScript + Element Plus + Vite + Pinia 的管理后台
  • 动态路由系统,通过后端菜单数据自动生成
  • 用户管理、角色权限、菜单管理
  • 文章管理(分类、标签、封面、富文本编辑)
  • 公告管理、反馈管理、协议管理
  • 系统配置(站点设置、上传配置、支付配置等)
  • 余额记录、积分记录管理
  • 控制台仪表盘(统计卡片、登录趋势图表)
  • 操作日志、登录日志
  • 代码生成器(自动生成 CRUD 全栈代码)

Server 后端服务

  • 基于 ThinkPHP 8 + PHP 8.0+ 的 RESTful API 服务
  • 分层架构:Controller → Service → Repository → Model + Listener + Job
  • 自动依赖注入(DI)
  • JWT 认证与 RBAC 权限控制
  • 支付系统(微信支付、支付宝)
  • 余额/积分体系
  • 消息通知系统(站内信、短信)
  • 事件驱动的副作用处理(Listener 机制)
  • 文件上传(本地、阿里云 OSS、腾讯云 COS、七牛云)
  • 安装向导(含演示数据与动态 URL 替换)
  • 开放平台(OAuth 第三方登录)

PC 前台网站

  • 基于 Nuxt 3 (SPA) + Naive UI + UnoCSS 的前台网站
  • 文章列表与详情(分类筛选、标签、阅读量)
  • 用户中心(个人资料、密码修改、余额充值、积分明细)
  • 登录注册(密码、短信、微信扫码)
  • 全局错误页面(404/500)

UniApp 移动端

  • 基于 uni-app + Vue 3 + wot-design-uni 的移动端应用
  • 首页(轮播图、公告栏、功能入口、最新文章)
  • 发现页(文章分类筛选、下拉刷新、上拉加载)
  • 消息中心
  • 个人中心(资料编辑、余额、积分)
  • 文章详情(富文本渲染、标签展示)
  • 反馈、公告、协议页面

基于 MIT 许可发布