bindbox-game/.trae/documents/增加采购价格与对比(ops_shipping_stats)方案.md
邹方成 6ee627139c
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 40s
feat: 新增支付测试小程序与微信支付集成
feat(pay): 添加支付API基础结构
feat(miniapp): 创建支付测试小程序页面与配置
feat(wechatpay): 配置微信支付参数与证书
fix(guild): 修复成员列表查询条件
docs: 更新代码规范文档与需求文档
style: 统一前后端枚举显示与注释格式
refactor(admin): 重构用户奖励发放接口参数处理
test(title): 添加称号效果参数验证测试
2025-11-17 00:42:08 +08:00

2.5 KiB
Raw Blame History

问题理解

  • 需要在发货统计中体现“采购价格”,用于与销售价格/订单金额做对比与分析。
  • 当前 ops_shipping_stats 仅存储销售单价 product_price_cents,无采购单价。

数据库变更

  • ops_shipping_stats 表新增字段:
    • purchase_price_cents BIGINT NOT NULL DEFAULT 0 COMMENT '采购单价(分)'
  • SQLMySQL
    • ALTER TABLE ops_shipping_stats ADD COLUMN purchase_price_cents BIGINT NOT NULL DEFAULT 0 COMMENT '采购单价(分)';
  • 生成代码:执行 gormgen 以更新 Model/DAOcmd/gormgen/main.go,保持原有 DSN 与 -tables 参数)。

后端改造

  • 控制器 internal/api/admin/shipping_stats_admin.go
    • 创建请求体 CreateShippingStatRequest 增加 purchase_price_cents(可选)。
    • 更新请求体 UpdateShippingStatRequest 增加 purchase_price_cents(可选)。
    • 保存/更新时写入 purchase_price_cents
    • 盈亏策略:保持现有“盈亏=销售单价×发货数量 订单实付金额”;
      • 额外提供两个对比维度(不入库,仅响应扩展字段,便于前端展示):
        • purchase_total_cents = purchase_price_cents * shipped_qty
        • gross_profit_cents = (product_price_cents - purchase_price_cents) * shipped_qty
      • 若你希望持久化以上值,也可扩展表结构,但默认前端计算即可。
  • 列表与详情响应:保持原结构,新增返回 purchase_price_cents(其余对比指标前端计算)。

前端改造

  • 创建/编辑表单(已两列布局):
    • 左列补充“采购单价(分)”输入框默认可为空为空按0处理
    • 列表新增列:
      • 采购单价(分→元格式化)
      • 采购总额(分→元,前端用 purchase_price_cents * shipped_qty 计算)
      • 毛利(分→元,前端用 (product_price_cents - purchase_price_cents) * shipped_qty 计算)
    • 保持“盈亏”列为后端返回值显示(颜色提示不变)。

验收标准

  • 新建/编辑支持录入采购单价,并正确写入与返回。
  • 列表能展示采购单价、采购总额和销售对比(毛利),并与现有盈亏并行显示。
  • 不影响既有筛选、分页与来源类型逻辑。

后续可选

  • 若采购价格数据来源稳定(如采购单据),可支持远程选择或自动回填;当前先手动录入以快速上线。

请确认以上方案,通过后我将进行数据库字段添加、代码生成与前后端联调实现。