商品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以及要退的菜品的数量,后台根据参数完成指定订单下制作单中的指定菜品的扣减。

  1. 将要退订单中现有的所有制作单按skuCode分组转换Map<skuCode,List<MakeOrderItem>>结构,key对应skuCode,value是当前订单中所有该skuCode对应的商品的制作单项集合。每个制作单项中至少有一个数量的商品
  2. 将退菜信息按skuCode分组转换为Map<skuCode,List<OrderReturnProductItem>>,每个skuCode的List<OrderReturnProductItem>集合的size即该skuCode退菜的数量。
  3. 遍历分组后的退菜集合Map<skuCode,List<OrderReturnProductItem>>取一个skuCode对应的要退菜的数量 needReturnNum(本次请求中当前菜品要退的数量)。
  4. 在步骤三的循环内,从步骤一中的map中取出对应的skuCode的制作单集合 makeOrderItemList(当前订单中该sku对应的可以退的制作单集合)。
  5. 遍历制作单makeOrderItemList集合,依次取每个制作单项的可退菜品数量canReturnNum值,对退菜数量needReturnNum做递减操作,即needReturnNum = needReturnNum - canReturnNum,当needReturnNum递减为0时就结束此步骤的遍历。至于这里为什么要取canReturnNum值上面已经分析过了,因为有的sku与菜品可能是1:N的,这种情况sku数量不等于可退菜品的数量。
  6. 继续执行步骤345进行下一个skuCode对应菜品数量的扣减。

还是拿上面的举例做一个示例

  1. 原始订单中两个制作单项经过skuCode分组后对应1中Map<skuCode,List<MakeOrderItem>>结构;
  2. 在遍历到第一个MakeOrderItem时当前MakeOrderItem中的数量扣减,由于腿一个菜品所以只需要扣减一个数量,这一个MakeOrderItem中数量足够扣减所以退菜扣减操作到此结束。

经过步骤345的退菜扣减操作,最终制作单变化如下图所示

履约系统退餐流程方案设计相关推荐

  1. 电商之下:服务类商品订单履约系统如何设计

    http://www.woshipm.com/pd/2361524.html http://www.woshipm.com/pd/2361524.html https://zhuanlan.zhihu ...

  2. 速卖帮AI点餐流程 AI菜品识别结账

    餐厅高峰期排长队?前厅运营效率低?餐厅用工成本高?如何解决餐厅高峰期就餐排队难题,提升前厅运营效率,被众多餐饮老板所关注.今天,你需要的解决方案来了! 速卖帮推出AI菜品识别系统,自助取餐.菜品识别. ...

  3. 形象的解释一下ERP系统的运作流程

    ERP英文全称Enterprise Resource Planning ,中文翻译为企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台也就是E ...

  4. sap委外退料流程图_凤竹纺织FZMM-605委外加工物料退料流程V2.0.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp行业资料&nbsp>&nbsp纺织服装 凤竹纺织FZMM-605委外加工物料退料流程V2.0 ...

  5. 成功到达对方服务器后系统退信,邮件系统使用常见问题

    一.如何申请我校邮箱? 答:在办公自动化系统进行申请.具体的,在事务申请中,选择"电子邮箱申请",并填写相应内容后,按申请流程操作即可完成电子邮箱的申请. 二.如何访问我校的邮件系 ...

  6. 珍爱网退费流程?珍爱网怎么退费

    珍爱网退费流程/珍爱网退费攻略: 珍爱网退费流程第一步:联系您的专属红娘老师,将您的退费诉求告诉红娘,红娘会为您完成立项,并积极推动退费进展; 珍爱网退费流程第二步:直接拨打珍爱网退费电话:400电话 ...

  7. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. Android系统的启动流程简要分析

    这是我结合网上的资料以及自己分析android4.4的源码整理的笔记,对整个安卓系统的流程启动进行了梳理,很多细节并未展开,只是简要的进行了介绍. 一.Android系统的架构介绍 Android的整 ...

  9. 蓝牙配对码配置错误_安卓系统蓝牙配对流程分析

    安卓系统蓝牙配对流程分析 配对流程基本上始于首次连接一个蓝牙设备的过程中,本端的搜索流程结束获取到该设备的BluetoothDevice信息,就可以开启配对流程. 配对,顾名思义就是将两个设备通过相关 ...

最新文章

  1. mysql中tinyint(1)与tinyint(2)的区别
  2. 表格检测开源网络推荐
  3. SHA256CryptoServiceProvider vs SHA256Managed
  4. 问题清空easyui required=true的提示信息所在位置不对。乱跑的解决办法
  5. 防止电脑自动休眠小妙招
  6. centos7操作SSH/SSHD服务(查看/启动/重启/自启)
  7. 快速排序算法c语言lomuto,快速排序(N.Lomuto版)
  8. [改善Java代码]不推荐使用binarySearch对列表进行检索
  9. 实现简单的web框架
  10. 电商自营藏猫腻 苏宁国美京东的套路谁最深?
  11. Qt实现桌面右下角弹窗
  12. 计算机学情问卷调查报告,学情调查报告及调查问卷(共9篇).docx
  13. 【Life】 Never Too Late, Just Do it Better!
  14. libselinux conflicts with fakesystemd-1-17.el7.centos.noarch
  15. macOS中安装zsh,并配置些重要插件
  16. 面向对象软件工程-学习笔记
  17. 分销系统|分销商城小程序开发方式有什么?
  18. 分布式锁:RedLock 你这锁也不包熟啊!
  19. java 断开tcp连接_处理TCP客户端断开连接
  20. Ecstore 导入队列执行

热门文章

  1. GIS数据下载,全国省市县乡行政区划分
  2. 交作业吖 week two
  3. 【报告分享】2020职业教育行业白皮书-Mob研究院(附下载)
  4. 俄罗斯套娃素数c语言解法,求俄罗斯套娃素数(BFS)
  5. 免费有效站外推广方法(附录经典案例)
  6. pinterest images scrape(selenium实现)
  7. 深圳市龙华区关于规范产业用房租赁市场稳定租赁价格的实施细则(修订)
  8. Web安全:安全扫描工具
  9. 星域CDN荣获2016“最值得信赖CDN解决方案奖”
  10. iOS学习之iOS5.0以上 使用新浪微博开放平台OAuth