履约系统退餐流程方案设计
商品SKU模型
在我们的系统中,产品的配置通常都是一个SKU一个菜品标签,这种通常情况下SKU数量和最终拆单后的制作单项数量比值为1:1,也就是一个SKU(一个菜品),生成一个制作单。但是还有一些特殊的产品配置是N个数量的菜品即N个SKU做为一个SPU售卖,这种情况sku和制作单比值为N:1,也就是N个SKU(N个菜品)对应生成一个制作单。
履约制作单拆分设计
订单接单后会对应每个订单拆分创建制作单,制作单拆单设计中是以sku为最小粒度拆分为一个制作单项,同一个sku点了N份就对应N个制作单项。
例如:温泉蛋的SPU配置为3个一个菜品标签。创建一个订单为 温泉蛋 * 5
拆单后,会生成2个制作单项
1. 温泉蛋 * 3
2.温泉蛋 * 2
基于这种拆单创建制作单的方式,每个制作单项中商品SKU数量就不一定都是一个了,而是最少一个,最多为SPU特殊配置中指定的SKU数量。所以在制作单项中有制作单创建时包含的商品SKU的总数量,还记录了当前可退的数量。
单一菜品退餐功能设计
退菜请求包含了退菜订单和要退的菜品所属的sku以及要退的菜品的数量,后台根据参数完成指定订单下制作单中的指定菜品的扣减。
- 将要退订单中现有的所有制作单按skuCode分组转换Map<skuCode,List<MakeOrderItem>>结构,key对应skuCode,value是当前订单中所有该skuCode对应的商品的制作单项集合。每个制作单项中至少有一个数量的商品
- 将退菜信息按skuCode分组转换为Map<skuCode,List<OrderReturnProductItem>>,每个skuCode的List<OrderReturnProductItem>集合的size即该skuCode退菜的数量。
- 遍历分组后的退菜集合Map<skuCode,List<OrderReturnProductItem>>取一个skuCode对应的要退菜的数量 needReturnNum(本次请求中当前菜品要退的数量)。
- 在步骤三的循环内,从步骤一中的map中取出对应的skuCode的制作单集合 makeOrderItemList(当前订单中该sku对应的可以退的制作单集合)。
- 遍历制作单makeOrderItemList集合,依次取每个制作单项的可退菜品数量canReturnNum值,对退菜数量needReturnNum做递减操作,即needReturnNum = needReturnNum - canReturnNum,当needReturnNum递减为0时就结束此步骤的遍历。至于这里为什么要取canReturnNum值上面已经分析过了,因为有的sku与菜品可能是1:N的,这种情况sku数量不等于可退菜品的数量。
- 继续执行步骤345进行下一个skuCode对应菜品数量的扣减。
还是拿上面的举例做一个示例
- 原始订单中两个制作单项经过skuCode分组后对应1中Map<skuCode,List<MakeOrderItem>>结构;
- 在遍历到第一个MakeOrderItem时当前MakeOrderItem中的数量扣减,由于腿一个菜品所以只需要扣减一个数量,这一个MakeOrderItem中数量足够扣减所以退菜扣减操作到此结束。
经过步骤345的退菜扣减操作,最终制作单变化如下图所示
履约系统退餐流程方案设计相关推荐
- 电商之下:服务类商品订单履约系统如何设计
http://www.woshipm.com/pd/2361524.html http://www.woshipm.com/pd/2361524.html https://zhuanlan.zhihu ...
- 速卖帮AI点餐流程 AI菜品识别结账
餐厅高峰期排长队?前厅运营效率低?餐厅用工成本高?如何解决餐厅高峰期就餐排队难题,提升前厅运营效率,被众多餐饮老板所关注.今天,你需要的解决方案来了! 速卖帮推出AI菜品识别系统,自助取餐.菜品识别. ...
- 形象的解释一下ERP系统的运作流程
ERP英文全称Enterprise Resource Planning ,中文翻译为企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台也就是E ...
- sap委外退料流程图_凤竹纺织FZMM-605委外加工物料退料流程V2.0.doc
您所在位置:网站首页 > 海量文档  > 行业资料 > 纺织服装 凤竹纺织FZMM-605委外加工物料退料流程V2.0 ...
- 成功到达对方服务器后系统退信,邮件系统使用常见问题
一.如何申请我校邮箱? 答:在办公自动化系统进行申请.具体的,在事务申请中,选择"电子邮箱申请",并填写相应内容后,按申请流程操作即可完成电子邮箱的申请. 二.如何访问我校的邮件系 ...
- 珍爱网退费流程?珍爱网怎么退费
珍爱网退费流程/珍爱网退费攻略: 珍爱网退费流程第一步:联系您的专属红娘老师,将您的退费诉求告诉红娘,红娘会为您完成立项,并积极推动退费进展; 珍爱网退费流程第二步:直接拨打珍爱网退费电话:400电话 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- Android系统的启动流程简要分析
这是我结合网上的资料以及自己分析android4.4的源码整理的笔记,对整个安卓系统的流程启动进行了梳理,很多细节并未展开,只是简要的进行了介绍. 一.Android系统的架构介绍 Android的整 ...
- 蓝牙配对码配置错误_安卓系统蓝牙配对流程分析
安卓系统蓝牙配对流程分析 配对流程基本上始于首次连接一个蓝牙设备的过程中,本端的搜索流程结束获取到该设备的BluetoothDevice信息,就可以开启配对流程. 配对,顾名思义就是将两个设备通过相关 ...
最新文章
- mysql中tinyint(1)与tinyint(2)的区别
- 表格检测开源网络推荐
- SHA256CryptoServiceProvider vs SHA256Managed
- 问题清空easyui required=true的提示信息所在位置不对。乱跑的解决办法
- 防止电脑自动休眠小妙招
- centos7操作SSH/SSHD服务(查看/启动/重启/自启)
- 快速排序算法c语言lomuto,快速排序(N.Lomuto版)
- [改善Java代码]不推荐使用binarySearch对列表进行检索
- 实现简单的web框架
- 电商自营藏猫腻 苏宁国美京东的套路谁最深?
- Qt实现桌面右下角弹窗
- 计算机学情问卷调查报告,学情调查报告及调查问卷(共9篇).docx
- 【Life】 Never Too Late, Just Do it Better!
- libselinux conflicts with fakesystemd-1-17.el7.centos.noarch
- macOS中安装zsh,并配置些重要插件
- 面向对象软件工程-学习笔记
- 分销系统|分销商城小程序开发方式有什么?
- 分布式锁:RedLock 你这锁也不包熟啊!
- java 断开tcp连接_处理TCP客户端断开连接
- Ecstore 导入队列执行