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

41 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**问题理解**
- 需要在发货统计中体现“采购价格”,用于与销售价格/订单金额做对比与分析。
- 当前 `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/DAO`cmd/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` 计算)
- 保持“盈亏”列为后端返回值显示(颜色提示不变)。
**验收标准**
- 新建/编辑支持录入采购单价,并正确写入与返回。
- 列表能展示采购单价、采购总额和销售对比(毛利),并与现有盈亏并行显示。
- 不影响既有筛选、分页与来源类型逻辑。
**后续可选**
- 若采购价格数据来源稳定(如采购单据),可支持远程选择或自动回填;当前先手动录入以快速上线。
请确认以上方案,通过后我将进行数据库字段添加、代码生成与前后端联调实现。