参考文档

代码应用时注意:

计算最后一个满减时,我们四舍五入,肯定会大于或小于最终满减金额。因此最后一个商品满减金额的算法为:总满减金额 - 前面所有商品满减的金额 = 最后一个商品满减金额

例1

一个商品,买了4件,单件价格50元;用了优惠卷满199-100;要退2个,求各商品实际支付价格和退款价格;

     1、计算商品总价,是否满足使用优惠卷50*4=200;   //满足2、计算使用优惠卷后的实际应付金额200-100=100;3、优惠卷满减的金额,应该按照商品价格分摊到各个商品(1)、得到每实际支付1元分摊的优惠金额公式1:满减金额 / 订单参与满减的总金额 = 每实际支付1元分摊的优惠金额100 / 200 = 0.5;(2)、使用每1元分摊的优惠金额,计算出各个订单所分摊的优惠卷金额公式2:每实际支付1元分摊的优惠金额 * 单个订单的成交价 = 单个订单分摊的优惠卷金额0.5 * 50 = 25;公式3:单个订单分摊的优惠卷金额 * 购买数量 = 优惠卷满减金额25 * 4 = 100;公式4:商品价格 - 公式2求出的单个订单分摊的优惠卷金额 = 各商品实际支付金额50 - 25 = 25;计算完成,进行验证,验证都成功即计算成功。1、优惠满减金额与公式3求出的满减金额是否正确  // true2、公式3求出的满减金额 + 序号2里的实际应付金额是否等于商品总价 // true3、各商品实际支付金额 * 购买数量 是否等于 商品总价 - 使用优惠卷后的金额x = 25 * 4 = 100元; y = 200 - 100 = 100元;x === y; // true答:1、各商品实际支付价格25元:见公式4;2、退款价格50元:各商品实际支付金额 * 退款数量 = 退款价格25 * 2 = 50;

例2

多个商品,商品a买了5件,价格为10元一件。商品b买了1个,价格为25一件。商品c买了3个,价格为15元件;用了优惠卷买99-40;需要退款:商品a退3个,b跟c全退

    1、计算商品总价,是否满足使用优惠卷(10*5)+(25*1)+(15*3)=120;   //满足2、计算使用优惠卷后的实际应付金额120-40=80;3、优惠卷满减的金额,应该按照商品价格分摊到各个商品(1)、得到每实际支付1元分摊的优惠金额公式1:满减金额 / 订单参与满减的总金额 = 每实际支付1元分摊的优惠金额40 / 120 = 0.3333333333333333;(2)、使用每1元分摊的优惠金额,计算出各个订单所分摊的优惠卷金额公式2:每实际支付1元分摊的优惠金额 * 单个订单的成交价 = 单个订单分摊的优惠卷金额商品a:0.3333333333333333 * 10 = 3.333333333333333;商品b:0.3333333333333333 * 25 = 8.333333333333332;商品c:0.3333333333333333 * 15 = 5;公式3:单个订单分摊的优惠卷金额 * 购买数量 = 优惠卷满减金额商品a:3.333333333333333 * 5 = 16.666666666666664;商品b:8.333333333333332 * 1 = 8.333333333333332;商品c:5 * 3 = 15;多商品需要相加:16.666666666666664 + 8.333333333333332 + 15 = 40元公式4:商品价格 - 公式2求出的单个订单分摊的优惠卷金额 = 各商品实际支付金额商品a:10 - 3.333333333333333 = 6.666666666666667元;商品b:25 - 8.333333333333332 = 16.666666666666668元;商品c:15 - 5 = 10元;计算完成,进行验证,验证都成功即计算成功。1、优惠满减金额与公式3求出的满减金额是否正确  // true2、公式3求出的满减金额 + 序号2里的实际应付金额是否等于商品总价 // true3、各商品实际支付金额 * 购买数量 是否等于 商品总价 - 使用优惠卷后的金额x = (6.666666666666667*5) + (16.666666666666668*1) + (10*3) = 80元; y = 120 - 40 = 80元;x === y; // true答:退款价格66.66666666666667元:各商品实际支付金额 * 退款数量 = 退款价格(6.666666666666667*3) + (16.666666666666668*1) + (10*3) = 66.66666666666667元

例3

多个商品,商品a买了2件,价格为99.99元一件。商品b买了1个,价格为69.3一件。商品c买了1个,价格为169元件;用了优惠卷买300-50;需要退款:各退一个

    1、计算商品总价,是否满足使用优惠卷(99.99*2)+(69.3*1)+(169*1)=438.28;   //满足2、计算使用优惠卷后的实际应付金额438.28-50=388.28;3、优惠卷满减的金额,应该按照商品价格分摊到各个商品(1)、得到每实际支付1元分摊的优惠金额公式1:满减金额 / 订单参与满减的总金额 = 每实际支付1元分摊的优惠金额50 / 438.28 = 0.11408232180341335;(2)、使用每1元分摊的优惠金额,计算出各个订单所分摊的优惠卷金额公式2:每实际支付1元分摊的优惠金额 * 单个订单的成交价 = 单个订单分摊的优惠卷金额商品a:0.11408232180341335 * 99.99 = 11.407091357123301;商品b:0.11408232180341335 * 69.3 = 7.9059049009765445;商品c:0.11408232180341335 * 169 = 19.279912384776857;公式3:单个订单分摊的优惠卷金额 * 购买数量 = 优惠卷满减金额商品a:11.407091357123301 * 2 = 22.814182714246602;商品b:7.9059049009765445 * 1 = 7.9059049009765445;商品c:19.279912384776857 * 1 = 19.279912384776857;多商品需要相加:22.814182714246602 + 7.9059049009765445 + 19.279912384776857 = 50元公式4:商品价格 - 公式2求出的单个订单分摊的优惠卷金额 = 各商品实际支付金额商品a:99.99 - 11.407091357123301 = 88.58290864287669元;商品b:69.3 - 7.9059049009765445 = 61.39409509902345元;商品c:169 - 19.279912384776857 = 149.72008761522315元;计算完成,进行验证,验证都成功即计算成功。1、优惠满减金额与公式3求出的满减金额是否正确  // true2、公式3求出的满减金额 + 序号2里的实际应付金额是否等于商品总价 // true3、各商品实际支付金额 * 购买数量 是否等于 商品总价 - 使用优惠卷后的金额x = (88.58290864287669*2) + (61.39409509902345*1) + (149.72008761522315*1) = 388.28元; y = 438.28 - 52 = 388.28元;x === y; // true答:退款价格66.66666666666667元:各商品实际支付金额 * 退款数量 = 退款价格(88.58290864287669*1) + (61.39409509902345*1) + (149.72008761522315*1) = 299.6970913571233元                

例4(简单版)

一个商品,商品a5个,价格55;用了优惠卷买99-40;

    1、计算商品总价,是否满足使用优惠卷(55*5)=275;   //满足2、计算使用优惠卷后的实际应付金额275-40=235;3、优惠卷满减的金额,应该按照商品价格分摊到各个商品(1)、得到每实际支付1元分摊的优惠金额公式1:满减金额 / 订单参与满减的总金额 = 每实际支付1元分摊的优惠金额40 / 275 = 0.14545454545454545;(2)、使用每1元分摊的优惠金额,计算出各个订单所分摊的优惠卷金额公式2:每实际支付1元分摊的优惠金额 * 单个订单的成交价 = 单个订单分摊的优惠卷金额商品a:0.14545454545454545 * 55 = 8;公式3:单个订单分摊的优惠卷金额 * 购买数量 = 优惠卷满减金额商品a:8 * 5 = 40;公式4:商品价格 - 公式2求出的单个订单分摊的优惠卷金额 = 各商品实际支付金额商品a:55 - 8 = 47元;计算完成,进行验证,验证都成功即计算成功。1、优惠满减金额与公式3求出的满减金额是否正确  // true2、公式3求出的满减金额 + 序号2里的实际应付金额是否等于商品总价 // true3、各商品实际支付金额 * 购买数量 是否等于 商品总价 - 使用优惠卷后的金额47 * 5 === 275 - 40; // true

商城订单使用优惠卷价格计算逻辑,举例计算相关推荐

  1. 如何设计一个优惠卷系统

    如何设计一个优惠卷系统 场景 优惠券的种类 优惠券系统的核心流程 发券 领券 用券 需求拆解 商家侧 用户侧 编码 Service 服务 服务结构设计 优惠券系统设计技术难点 Storage存储 表单 ...

  2. 商城订单中心实现及用户关单实现思路

    商城订单中心实现及用户关单实现思路 一.订单服务 1.1.订单中心 1.2.订单构成 1.3.订单状态 1.4.订单流程 1.5.订单幂等性处理 1.6.订单业务流程 二.关单方式 2.1.Rabbi ...

  3. 谷粒商城--订单服务--高级篇笔记十一

    1.页面环境搭建 1.1 静态资源导入nginx 等待付款 --------->detail 订单页 --------->list 结算页 --------->confirm 收银页 ...

  4. 【Redis】实战篇:优惠卷秒杀 (库存超卖问题、一人一单问题)

    文章目录 3.1 全局唯一ID 3.2 -Redis实现全局唯一Id 3.3 添加优惠卷 3.4 实现秒杀下单 3.5 库存超卖问题分析 3.6 乐观锁解决超卖问题 3.7 优惠券秒杀-一人一单 3. ...

  5. 大多数人不知道淘宝天猫有内部优惠卷,能省钱的公众号,购物省钱妙招

    一.什么是内部券? 手淘中商家都会给出隐藏优惠券的,优惠券的额度折扣80%都有,买家平时不去查询该商品是否有优惠券.不会用优惠券抵扣,那就多花了不少钱 经常购物的人,就知道如果长期使用优惠券.可以省出 ...

  6. 昊海微信拼团php,最新微信昊海拼团系统独立版源码分享,微信团购关注送红包送优惠卷功能,附说明文档...

    本帖最后由 柯妮妮 于 2016-4-6 11:43 编辑" ?; G0 s% a/ I* T& i , ?% f% {) S; i7 @1 Z4 N 最新微信拼团系统独立版完整源码 ...

  7. Redis实现全局唯一id,实现优惠卷秒杀的下单功能

    Redis实现全局唯一id public class RedisIdWorker {private StringRedisTemplate stringRedisTemplate;public Red ...

  8. 黑马点评--优惠卷秒杀

    黑马点评–优惠卷秒杀 全局ID生成器: 是一种在分布式系统下用来生成全局唯一ID的工具,一般要满足下列特性: 为了增加ID的安全性,我们可以不直接使用Redis自增的数值,而是拼接一些其它信息: Re ...

  9. html简单组件(九):简洁的商城订单列表显示(带状态)

    html简单组件(九):简洁的商城订单列表显示(带状态) 效果图为: HTML代码 <div class="textDiv"><div class="h ...

最新文章

  1. 在虚幻引擎5中重塑火箭联盟——口袋联盟
  2. 在javascript中判断类型
  3. 鸢尾花分类_机器学习:鸢尾花数据集--贝叶斯分类
  4. MySQL—相关子查询
  5. 笔记-信息系统开发基础-信息系统规划方法-大型新信息系统特征/企业系统规划步骤...
  6. Win7图片查看器打印不了图片怎么办
  7. CMake使用详解二(多文件编译)
  8. 另5个你不知道的HTML5接口API
  9. 《程序设计技术》第六章例程
  10. 子类调用父类的构造函数几种情况
  11. 有趣的东西:Test () () () () () () () () () ();
  12. SQL语法提示工具SQL Prompt教程——控制代码建议框何时弹出
  13. Java 编码规范11(安全规约)
  14. 股票指标matlab函数,股票函数,通达信编程3000例
  15. linux 拷贝xlsx_linux 命令行将xlsx格式文件转换成CSV的5种方法
  16. grub通过img文件启动linux,通过grub4dos引导本地linux系统
  17. 计算机如何提高开机速度?
  18. 【转】提高MATLAB运行效率
  19. 你还不了解的OKRs-E是什么?
  20. python用图片浏览器打开图片

热门文章

  1. macos从10.12.6升级到10.15.7 svn无法使用
  2. 《微信小程序跳转页面安卓闪现两次》
  3. python关于通讯录模型_python写一个通讯录 - wtwexile - 博客园
  4. c++ 报错 exponent has no digits
  5. DX9光照效果-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(12)
  6. FindPic 找图
  7. Matlab的filtfilt函数解析与C++实现
  8. ArcMap实现CAD图的空间配准
  9. java地图完整项目-地图找房(基于百度地图-MongoDB)
  10. 字体下载大宝库:30款好看的免费英文字体