Files
cmautobuy/docs/task/205-蝦皮商品软删除和恢复.md
T

2.6 KiB

205 Admin:实现蝦皮商品软删除、恢复和批量选择修复

  • 类型:缺陷 / 需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 后续版本
  • 状态:已完成,待用户验收
  • 日期:2026-08-13
  • Gitea 工单:#205

背景与目标

蝦皮页面已有删除按钮但后端固定返回 501,而且删除表单收不到属于采集表单的勾选值。 目标是实现管理员可恢复的软删除,保留 SKU、PDD 关联和历史,并修正批量表单归属。

最终方案

MySQL v17 增加删除时间、删除管理员、索引和用户外键。默认业务查询排除软删除商品; 管理员可切换到“已删除”范围恢复。删除前按商品检查进行中的采集和采购任务,命中时 整批拒绝。删除、恢复和批量采集共用一个标准表单,通过按钮 formaction 选择接口, 确认文案明确数量、可恢复和保留内容。SYB 同步与商品目录导入不会清除删除标记。

改了哪些

  • admin/repository/shopee.go:默认过滤、任务拦截、软删除和恢复写入。
  • admin/service/shopee_delete.go:管理员权限、批量去重和事务边界。
  • admin/handler/web/shopee.go、web.go:管理员路由和提示。
  • admin/templates/shopee/list.html、static/js/app.js:已删除筛选、恢复、共享表单和状态保持。
  • admin/repository/mysql_db.go:增加 MySQL v17 迁移与自检。
  • admin/service/shopee_delete_test.go、admin/main_test.go:软删除和界面契约测试。
  • docs/admin/:更新权限、交互和数据模型基线。

验收结果

验收标准 结果
只有管理员显示并可调用删除、恢复 通过
删除后默认列表和业务入口不可见,SKU/PDD 关联保留 通过
有进行中任务时整批拒绝 通过
已删除列表可恢复且不重建数据 通过
勾选值能提交到采集、删除和恢复接口 通过
v17 可首次创建、重放和从旧版升级 代码与迁移测试已补,待独立 MySQL 8.4 库实跑

测试

  • 执行的命令:$env:GOTOOLCHAIN="go1.23.0"; go vet ./...; go build ./...; go test ./... -count=1
  • 结果:通过;模板、路由、服务和仓储回归均通过,MySQL 测试按隔离库门禁跳过。
  • 没验证到的部分:真实 MySQL 8.4 v16→v17 DDL、外键和索引实跑,以及浏览器人工 点击验收。现有 buy 账号无 autobuy_test 权限,未对生产库执行测试迁移。

相关提交

  • ad1ccc2 完善 SYB 蝦皮主数据与软删除