Files
cmautobuy/docs/task/197-删除已停用同步店铺.md
2026-08-13 08:48:30 +08:00

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=1
    • go test ./service ./... -count=1
    • git diff --check
  • 结果:全部通过,功能提交为 761058e。
  • 没验证到的部分:未启动浏览器人工点击确认/取消;未用真实网页登录采购员 请求删除路由;未部署生产。该任务没有数据库结构变更,不需要新增迁移演练。

相关提交

  • 761058e 删除已停用的同步店铺