zhangwenjian
c66cb5c6a8
fix: correct the commented-out queue.redis sample in settings.yml
...
The sample had producer/consumer nested keys (streamMaxLength,
approximateMaxLength, visibilityTimeout, bufferSize, concurrency,
blockingTimeout, reclaimInterval) that don't exist on config.RedisQueue —
checked against sdk/config/queue.go, which only reads addr, password, and the
embedded RedisOptions fields, plus group, key_prefix and max_attempts. Filling
in the old sample as written would compile and start fine, since it's YAML
under a key the struct doesn't declare, and every one of those settings would
be silently ignored.
Replaced with the fields the struct actually has. Still commented out —
redis stays opt-in, this only fixes what filling it in would produce.
2026-08-20 10:54:53 +08:00
wenjianzhang
b16ec0af77
Merge pull request #860 from go-admin-team/chore/upgrade-core
...
chore🔧 : upgrade go-admin-core and route the queue through configuration
2026-08-18 22:48:00 +08:00
zhangwenjian
82ea8539eb
chore 🔧 : upgrade go-admin-core and route the queue through configuration
...
The pinned core dated from April, before sdk stopped being a separate module,
so the build resolved sdk packages from the old module and core packages from
the new one. Dropping the separate requirement is what makes the two agree
again.
Most of the diff is renames that came with that: the tenant accessors gained a
ByTenant suffix, GetDb now returns one database and GetAllDb the map, and
casbin moved to v3.
The change that matters is four call sites moving from GetMemoryQueue to
GetQueuePrefix. GetMemoryQueue returns a queue fixed at construction, so the
login log, the operate log and the api check ran in process no matter what the
settings file selected — a second instance saw none of it. GetQueuePrefix
returns whatever the configuration built, which is the point of being able to
configure a queue at all.
Verified against core at main: build and vet clean. The two file_store failures
are unchanged from before this branch; they need cloud credentials.
2026-08-18 22:14:08 +08:00
wenjianzhang
d17d5c1206
Merge pull request #859 from go-admin-team/docs/clarify-demo-sites
...
docs📝 : 标注 antd 演示站对应 go-admin-pro
2026-08-16 19:31:25 +08:00
zhangwenjian
041d22d0d2
docs 📝 : 标注 antd 演示站对应 go-admin-pro
...
README 中两个演示地址并排列出、格式与账号密码完全相同,看不出 antd 站对应
的是另一个产品。用户在该站遇到问题时会认为是本仓库的缺陷(见 #857:登录
返回的错误码在本仓库中并不存在)。
仅在链接文字中补充产品名,不改变呈现方式。
2026-08-16 12:04:26 +08:00
wenjianzhang
5864058a81
Merge pull request #858 from go-admin-team/chore/bump-version-2.4.0
...
chore🔧 : 版本号升至 2.4.0
v2.4.0
2026-08-16 11:17:51 +08:00
zhangwenjian
45035a16e4
chore 🔧 : 版本号升至 2.4.0
2026-08-16 11:14:28 +08:00
wenjianzhang
f4d0108d49
Merge pull request #855 from go-admin-team/fix/remove-refresh-token-endpoint
...
fix🐛 : 移除 refresh_token 接口,修复 token 可无限续期问题
2026-08-16 11:08:41 +08:00
zhangwenjian
b81611ba72
chore 🔧 : 清理 refresh_token 的残留权限数据
...
接口移除后,库中仍留有三类记录:sys_api 的接口登记、sys_menu_api_rule 的
菜单绑定、casbin_rule 的策略。留着会让「接口管理」列出一个不存在的端点,
角色配置里也仍可勾选。
- 新装:从 db.sql 与 db-sqlserver.sql 的种子数据中删除该接口
- 已有部署:新增迁移清理,按 path 匹配而非固定 id,因为执行过
`server -a` 重新注册接口的库中 id 会与官方种子数据不同
2026-08-14 21:42:59 +08:00
zhangwenjian
bb34108831
fix 🐛 : 移除 refresh_token 接口,修复 token 可无限续期问题
...
close #820
GET /api/v1/refresh_token 用业务 token 即可换取新 token,而续期上限
MaxRefresh 依据的 orig_iat 在每次续期时被一并重置,上限永远无法到达 ——
token 一旦泄露即等同于永久访问权,且无任何吊销手段。
该路由此前还位于 CasbinExclude 中,不受 Casbin 约束,任何角色的已登录用户
都可调用。
官方前端从未使用它:store 中虽有 refreshToken action,但全仓库无一处
dispatch,属死代码。移除不影响正常登录与鉴权流程。
破坏性变更:自行调用该端点实现续期的使用者需改为重新登录。正确的无感续期
应在 go-admin-core 中区分 access token 与 refresh token 后重新实现,不应
沿用此路由。
2026-08-14 21:42:52 +08:00
wenjianzhang
b7fd92f39b
Merge pull request #854 from go-admin-team/docs/agents-and-demo-module
...
feat✨ : 新增 app/demo 参照模块与 AGENTS.md 规范文档
2026-08-14 21:37:57 +08:00
zhangwenjian
63b800a3ba
docs 📝 : 补充 sqlite3 构建标签与迁移目录说明
...
driver 配置为 sqlite3 时不带 -tags sqlite3 会在 nil 函数上 panic,
报错不提及构建标签,容易误判为环境损坏;同时说明 version/ 与
version-local/ 的区别,后者已被 gitignore,提交到本仓库的迁移必须放 version/。
2026-08-14 21:17:37 +08:00
zhangwenjian
ed9450a2d5
feat ✨ : 补充 demo 模块的菜单与权限种子数据
...
一个业务模块要在界面上可用,需要四类数据协同:
sys_api 后端路由登记,Casbin 据此判定
sys_menu 侧边栏菜单,含目录 M、菜单 C、按钮 F 三级
sys_menu_api_rule 菜单与接口的关联,角色保存时据此生成策略
casbin_rule 实际生效的权限策略
菜单的 menu_name 与前端组件 name 保持一致(DemoProduct),按钮的
permission 与前端 v-permisaction 标识一致(demo:product:add 等)。
策略写入 casbin_rule 而非 sys_casbin_rule:后者对应的 models.CasbinRule
是历史遗留,其 7 列 size:512 唯一索引在 MySQL 下会超出索引长度限制,实际
生效的是 adapter 创建的 casbin_rule 表。
所有写入均为存在则更新、不存在则插入,迁移可安全地在已有数据的库上执行。
实测:在含 67 条菜单、121 条接口的库上执行后各表数据正确;清除版本记录重
跑一次,各表行数不变,确认幂等。
2026-08-14 16:57:55 +08:00
zhangwenjian
1d551a10ab
docs 📝 : 新增 AGENTS.md 与架构说明
...
AGENTS.md 是给 AI 编码工具与新贡献者的约定,只记录「不遵守就会出错」的
规则,技术栈版本与命令交由 go.mod 和 Makefile 表达,避免文档与代码脱节。
标准写法指向 app/demo/——那是可编译、有测试的参照物,文档与它冲突时以它
为准。
docs/architecture.md 承载不易从代码直接读出的语义:DataScope 五档的过滤
方式、定时任务的 JobExec 接口、多数据源约束、迁移目录的分工。
内容整理自此前未纳入版本控制的 CLAUDE.md,撰写时逐条对照代码核实,修正
了其中两处失效描述(构建工具已非 Vue CLI;JobExec 的方法是 Exec(interface{})
而非 Run(string))。CLAUDE.md 现改为指向 AGENTS.md 的软链,两者不再各自
漂移。
2026-08-14 16:49:48 +08:00
zhangwenjian
4d7c9e5a12
feat ✨ : 补充 demo 模块的建表迁移
...
放在 version/ 而非 version-local/:后者已被 .gitignore 忽略,是留给使用
者存放自身迁移脚本的位置,示例迁移需随框架一起分发。文件注释中说明了这
一区分。
2026-08-14 16:46:53 +08:00
zhangwenjian
d1f5fe5681
feat ✨ : 新增 app/demo 标准 CRUD 参照模块
...
作为编码约定的可执行参照物:文档会滞后,而这个模块过时会导致构建或测试
失败,因此以它为准。
目录骨架与自动注册文件由项目自带的脚手架生成:
go run main.go app -n demo
它同时产出 cmd/api/demo.go,其中的 init() 将路由追加进 AppRouters,
无需在任何中心文件手工登记。
模块本身演示了单表 CRUD 的推荐写法——直接使用 common/actions 提供的五个
通用 Action,因此只有 model、dto、router 三个业务文件,没有 apis 与
service。手写 Handler 的场景仅在业务超出单表 CRUD 时才需要。
DTO 中详情/删除入参内嵌 dto.ObjectById 以复用其 Bind 与 GetId,不重复
实现 uri 绑定与批量 ids 合并逻辑。
补充 8 项测试锁定通用 Action 的接口约束,其中最关键的是 Generate() 必须
返回副本——Action 在并发请求间复用实例,就地返回会串数据。反向验证:将
Generate 改为就地返回,测试立即失败。
2026-08-14 16:46:09 +08:00
zhangwenjian
e8c2e0a966
chore 🔧 : 修正 .DS_Store 忽略规则
...
原规则 `*/.DS_Store` 只匹配子目录一层,仓库根目录下的 .DS_Store 不在其
中。改为 `.DS_Store`,匹配任意层级。
2026-08-14 16:45:55 +08:00
wenjianzhang
cef0a19a9c
Merge pull request #853 from go-admin-team/fix/community-pr-batch
...
fix🐛 : 处理社区 PR 中仍然成立的四项修复
2026-08-14 15:46:43 +08:00
zhangwenjian
c0e81363dc
docs 📝 : 修正 Makefile 注释错别字
...
「实际决对路径」→「实际绝对路径」。
问题由 PR #847 指出。
2026-08-14 15:35:55 +08:00
zhangwenjian
df2e4a2b48
fix 🐛 : 修正欢迎页 iframe 高度塌陷
...
页面通过 JS 计算并设置 iframe 高度,但 html 与 body 未声明高度,
百分比高度失去参照,iframe 在部分场景下塌陷为 0。
补充 html,body{height:100%} 与 iframe 的 height:100%,并为原先缺失的
overflow-y 声明补上分号。
问题由 PR #829 指出。
2026-08-14 15:35:55 +08:00
zhangwenjian
9088ebc2e1
refactor 🎨 : 修正文件名拼写 int_router.go → init_router.go
...
该文件内容为 init() 函数中的路由注册,原文件名少了一个字母。
问题由 PR #787 指出。
2026-08-14 15:35:55 +08:00
zhangwenjian
9f2dec3036
fix 🐛 : 修正 GeneralDelDto.GetIds 重复追加 Id
...
该方法先在开头追加了 Id,随后 else 分支中又追加一次:仅传 Id 时返回
[5 5],删除接口会对同一条记录执行两次 DELETE。
if g.Id != 0 { ids = append(ids, g.Id) }
if len(g.Ids) > 0 { ... } else {
if g.Id > 0 { ids = append(ids, g.Id) } // 重复
}
去掉冗余分支,同时将首个判断由 != 0 收紧为 > 0,与 Ids 中逐个元素的
过滤条件保持一致(负数 Id 无意义)。
补充单元测试,覆盖仅 Id、仅 Ids、二者并存、含非正数、全空回退等场景。
问题由 PR #848 指出。
2026-08-14 15:35:55 +08:00
wenjianzhang
ea049f9b06
Merge pull request #852 from go-admin-team/fix/ci-deploy-guard
...
fix🐛 : 限制部署步骤仅在 master 收到 push 时执行
2026-08-12 15:41:26 +08:00
zhangwenjian
1f1349a685
docs 📝 : 更新在线体验地址
...
Element UI vue2 演示站已升级为 Element Plus + Vue 3,域名同步更换为
vue.go-admin.pro。
Arco Design vue3 演示站(vue3.go-admin.dev)已下线,移除对应条目。
2026-08-12 12:27:41 +08:00
zhangwenjian
dcef2df38e
fix 🐛 : 限制部署步骤仅在 master 收到 push 时执行
...
本工作流同时由 push 与 pull_request 触发,而推送镜像与重启服务两步没有
任何事件限制。其后果是:任何指向 master 的 PR 一经创建,就会把 PR 分支
构建出的镜像推送到镜像仓库,并 docker rm -f 掉线上容器、用该镜像重新启
动 API 服务——发生在代码被审查和合并之前。
同仓库分支发起的 PR 可以取到 secrets,因此该路径实际可达;历史运行记录
中已多次出现由 pull_request 事件触发的成功部署。
为两步加上 event_name 与 ref 双重判断。额外判断 ref 是考虑到日后若有人
向 on.push.branches 追加分支,部署不会随之扩散。
Tidy 与 Build 不受影响,PR 仍会执行编译校验。
2026-08-12 12:27:33 +08:00
zhangwenjian
92834d6e39
publish 🚀 : 版本号更新至 2.3.0
v2.3.0
2026-08-12 00:22:31 +08:00
zhangwenjian
f06540883b
fix 🐛 : 修复 Docker 镜像发布的 tag 条件失效问题
...
if 表达式中不应使用 ${{ }} 包裹:startsWith(${{github.ref}}, 'refs/tags/')
会先将 github.ref 替换为裸字符串再参与表达式求值,导致条件判断失效,
使得每次 push 到 master 都会构建并推送镜像至 ghcr.io,而非仅在打 tag 时发布。
同时 on.push 缺少 tags 配置,打 tag 实际不会触发该工作流。
修正后:push 分支仅执行 Go 构建,打 tag 才发布镜像。
2026-08-11 11:09:39 +08:00
zhangwenjian
3c9ce5b6b0
chore 🔧 : 升级 x/image 修复 TIFF 解码漏洞
2026-08-10 22:17:28 +08:00
zhangwenjian
ff8a59550a
fix 🐛 : 修复镜像同步因浅克隆被拒绝的问题
2026-08-10 21:21:01 +08:00
zhangwenjian
7cddef33a2
git 🙈 : 将 go.sum 纳入版本控制
2026-08-10 20:51:00 +08:00
zhangwenjian
7013c2fa4a
chore 🔧 : 移除依赖已封禁 action 的 issue 自动化流程
2026-08-10 20:51:00 +08:00
zhangwenjian
65bacacb38
docs 📝 : 更新 README 环境要求版本说明
2026-08-10 20:45:39 +08:00
zhangwenjian
45587028c3
config 🔧 : CI 升级 Go 版本并更新 Actions 至最新
2026-08-10 20:45:39 +08:00
zhangwenjian
887c9cca4b
chore 🔧 : 升级 Go 至 1.26.5 并同步升级依赖
2026-08-10 20:45:36 +08:00
wenjianzhang
a6ddb113fc
Update LICENSE.md
2026-08-08 13:55:08 +08:00
wenjianzhang
b83eef8670
Fix image source in README.md
...
Updated image source in README.md for go-admin.
2026-05-22 11:20:39 +08:00
zhangwenjian
43dcd61c51
config 🔧 : update go-version to 1.24 in build workflow
...
go.mod requires go 1.24, go mod tidy fails when runner uses 1.18.
2026-05-15 17:52:12 +08:00
zhangwenjian
1bd64d4562
config 🔧 : pin all GitHub Actions to full-length commit SHAs
...
Replace version tags (@v1/@v2/@v3/@master) with pinned commit SHAs
across all workflow files to satisfy go-admin-team organization
security policy requiring immutable action references.
2026-05-15 17:48:41 +08:00
zhangwenjian
44e81bc72f
git 🙈 : 补充忽略本地开发配置文件
...
- 新增忽略 config/settings.local.dev.yml
2026-05-15 17:37:42 +08:00
zhangwenjian
3312f8b7b9
chore 🔧 : 升级依赖 mergo 模块路径
...
- 替换 github.com/imdario/mergo 为上游迁移后的 dario.cat/mergo v1.0.1
2026-05-15 17:37:42 +08:00
zhangwenjian
d6a2272f9d
git 🙈 : 完善 .gitignore 忽略规则
...
- 新增忽略编译产物 go-admin-server
- 新增忽略本地工具配置目录
2026-05-15 17:37:42 +08:00
wenjianzhang
a5cc0a9e29
Add read and write timeout to HTTP server
2025-09-10 09:39:54 +08:00
wenjianzhang
3f995735e9
Merge pull request #834 from hosea3000/edit-no-confirm
...
点击编辑的时候不需要弹框确认,交互不太友好
2025-05-20 11:41:02 +08:00
wenjianzhang
b65b74dee5
Merge pull request #832 from hosea3000/fix-number-input
...
fix🐛 : 修复自动生成代码时选择字段类型为int64, 前端提交还是string 导致报错的问题
2025-05-20 11:40:21 +08:00
Hosea
98cf3ad95a
fix 🐛 : 点击编辑的时候不需要弹框确认,交互不友好
2025-05-20 10:57:36 +08:00
Hosea
8649d8d791
fix 🐛 : 修复自动生成代码时选择字段类型为int64, 前端提交还是string 导致报错的问题
2025-05-13 15:48:45 +08:00
wenjianzhang
817e34c6aa
refactor 🎨 : 重构文件上传逻辑,拆分处理函数以提高可读性和维护性
2025-04-13 22:20:06 +08:00
wenjianzhang
952cd92648
refactor 🎨 : 清理 sys_server_monitor.go 文件,移除未使用的导入并格式化代码
2025-04-13 22:17:17 +08:00
wenjianzhang
6b1e961a7f
refactor 🎨 : 重构系统监控代码,拆分功能为多个函数以提高可读性和维护性
2025-04-13 22:15:10 +08:00
wenjianzhang
762eba5af7
refactor 🎨 : 重构 Setup 函数,拆分为多个子函数以提高可读性和维护性
2025-04-13 22:04:12 +08:00