746970179
2018-05-23 16:26:36 +08:00
之前做过类似的.
解决思路是: 为每个渠道计算价格
解决方案:
为渠道建表, 将首重, 首重费, 续重单位, 续重费用, 重量限制等当作字段, 保存起来
然后写一个方法, 方法的工作内容是: 传入渠道数据, 和商品重量, 计算出金额
这个公式的难点是, 不同的渠道, 不是所有的都是统一的公式, 有的可能没有首重费用, 有的可能有折扣等等
实际情况中, 不太可能用一个公式保存
所以根据实际情况, 抽象出几个公式即可
我之前做的时候, 总共用了三个公式:
1.线性增长(类似买菜, 精确到克) a+kx (a 是固定费用, k 是每 kg 多少钱, x 是重量)
2.均匀阶梯增长(通话计费, 每 1 分钟固定 1 毛钱这样, 不足一分钟照 1 分钟算)
3.不均匀阶梯(不规律的计费, 可能 1kg 的包裹 10 元, 2kg 的包裹 11 元, 3kg 的包裹 20 元这样, 无规律)
其中 1 和 2, 可以用同一个公式或者分开, 因为 1 就是单位重量为 1g 的均匀阶梯增长
3 的话, 看起来麻烦, 其实最简单, 一个字段, 用 json 存起来就行, 到时候按表查价格即可
整理好后, 就能用方法, 为一个商品计算每个物流方式的准确价格了
但实际情况比这还会复杂很多:
1. 各种折扣: 首重折扣, 续重折扣, 总价折扣, 地区折扣等
2. 地区价格: 发往每个地区的价格可能都有变化, 这是一个坑, 整理起来比较费时费力
3. 商品的多仓库发货, 拆包发货. 这个也很麻烦和复杂. 不过主要看业务需求
4. 维护问题.
5. 性能相对来说不是大问题.
最后效果的话, 如果结合实际业务需求做出来, 便宜 5~10%问题不大