2.8 KiB
2.8 KiB
197 Admin:允许删除已停用的顺运宝同步店铺
- 类型:需求
- 父级大工单:#14
- 所属 MVP / 版本:#15 / 顺运宝同步店铺准入
- 状态:已完成
- 日期:2026-08-13
- Gitea 工单:#197
背景与目标
#196 支持店铺新增、停用和重新启用,但错误名称会永久留在管理列表。本任务允许 管理员永久删除已停用配置,同时确保启用店铺及历史业务数据不会被误删。
最终方案
- 仅在已停用店铺行显示危险样式的“删除”按钮。
- 删除使用管理员路由、POST、CSRF,并复用现有
data-confirm-submit二次确认; 文案包含店铺名称,明确历史货运单和同步记录不会删除。 - Repository 使用
shop_id=? AND enabled=0参数化条件删除。即使提交后店铺被并发 重新启用,删除也不会命中。 - 服务端对空编号、店铺不存在和仍启用返回可操作错误,不能依赖页面隐藏按钮。
- 删除只影响
syb_allowed_shops配置行;同名店铺之后可以重新新增。 - 未修改数据库结构、同步规则、历史货运单、同步记录或 Client 接口。
改了哪些
admin/repository/syb.go:增加停用状态条件删除。admin/service/syb_allowed_shop.go:增加管理员删除业务校验。admin/handler/web/web.go、syb_shop.go:增加管理员 POST 删除路由及反馈。admin/templates/syb/shops.html:停用项删除按钮和带名称的二次确认。admin/service/syb_allowed_shop_test.go、admin/main_test.go:服务端门禁、历史数据、 重建同名店铺、模板和路由回归。docs/admin/03-data-model.md、05-ui-specification.md:更新数据和交互约束。
验收结果
| 验收标准 | 结果 |
|---|---|
| 启用店铺不显示删除入口,伪造请求也拒绝 | 通过 |
| 停用店铺显示删除按钮并二次确认店铺名称 | 通过 |
| 删除路由仅管理员可用并受 CSRF 保护 | 通过 |
| 删除后不再显示且可重新新增同名店铺 | 通过 |
| 历史货运单和同步记录保持不变 | 通过 |
| 并发重新启用不会被条件删除 | 通过(SQL 条件和自动化测试) |
| 固定 Go 1.23.0 build、vet、test | 通过 |
测试
- 执行的命令:
$env:GOTOOLCHAIN="go1.23.0"; go vet ./...; go build ./...; go test ./... -count=1go test ./service ./... -count=1git diff --check
- 结果:全部通过,功能提交为
761058e。 - 没验证到的部分:未启动浏览器人工点击确认/取消;未用真实网页登录采购员 请求删除路由;未部署生产。该任务没有数据库结构变更,不需要新增迁移演练。
相关提交
761058e删除已停用的同步店铺