Java生鲜电商平台-订单架构实战

生鲜电商中订单中心是一个电商后台系统的枢纽,在这订单这一环节上需要读取多个模块的数据和信息进行加工处理,并流向下一环节;因此订单模块对一电商系统来说,重要性不言而喻。

同时,订单是一个公司生存甚至盈利的核心,而电商系统中的订单系统则是支撑订单处理的载体,因此订单系统的设计则十分重要。

 
 

一、订单架构

要了解订单系统,首先我们要从订单系统的信息架构上去认识订单系统,从而对订单系统建立整体认知;

 
 

二、订单状态

定义:为适应组织分工的需求和提升效率,系统将整个交易业务流程拆分成若干个可控的环节。

1. 订单正向状态

待付款:用户提交订单后,尚未付款,等待用户支付,由于待付款订单会锁定库存,所以会设置超时自动取消功能。

待发货:用户付款之后等待商家发货。

待收货:商家以发货,等待用户收货。

已完成:用户确认收货后,订单交易完成。

已取消:付款之前取消订单。超时未付款或用户取消订单都会产生这种订单状态。

售后中:用户在付款后发货前申请退款,或商家发货后用户申请退,换货。

2. 订单售后状态

待审核:用户提交退换货申请后,等待审核的状态,在用户已付款待发货的状态下,订单尚未推送至仓库或在仓库拦截发货成功,系统可直接审核通过。当审核不通过时,回转至正常流程中。

待退货入库:退货申请审核通过之后,等待用户退货入库。

待退款:退货入库成功后,等待退款给用户。

待换货入库:换货申请审核通过,等待用户换货入库。

换货出库中: 换货入库之后,生成换货出库单,订单出库。

售后成功:当退货,退款成功之后,流转至售后成功状态,退货,退款的售后成功在主流程下属于交易关闭。

3. 订单下单流程图

 
 

1.在订单过程中进行安全校验,主要是为了检测用户是否在黑名单上,用户购买行为是否正常等,当检测到不正常时终止下单;

2.从商品中心获取商品信息(SKU,规格,价格等)

3.从营销中心获取商品,订单促销信息(优惠券,促销活动),判断是否满足优惠条件,计算出优惠金额。

4.在会员中心获取会员权益,例如平台抵扣积分,优惠券折扣条件等。

5.在调度中心检验销售层库存,按照调度规则锁定区域库存。

6.根据拆单规则(商家,仓库,订单类型等)将订单拆分成若干个子订单,根据运费模板计算运费,根据商品金额,运费,优惠金额计算应付金额(实付款)。

三、优惠分摊

定义:是指在实际销售中将订单的优惠去分摊到每一件SKU中去结算。

订单实付金额=商品金额(SKU金额总计)+运费-总优惠金额

总优惠金额=促销活动优惠金额+优惠券优惠金额+虚拟币抵扣金额

按照商品比例分摊。

案例:

订单中有甲乙两店的商品A、B、C、D、E 包邮。商品A,D参加跨店满200减40的活动(活动1),商品B,C参加满100减10的活动(活动2)另外用户还使用了100元现金券。

订单优惠金额=40+10+100=150元.

依据优惠分摊原则:则各项的优惠金额为:

 
 

四、订单拆分

定义:为了方便订单的发货与结算,系统依据一定的规则(物流、仓库等因素)将用户订单拆分成若干个发货单。

 
 

不同店铺:在电商平台类架构下,由于商品归属权不同,涉及财务结算和物流发货的问题,需要根据店铺归属问题对订单进行拆单。例如淘宝,天猫的商品在下单时会将订单根据不同店铺进行拆分成若干个子订单。

不同仓库:若同一订单分散在不同仓库,则应按照仓库归属进行拆分订单。当一件商品在多个仓库有货时,应根据物流的区域的时效选择仓库进行拆单。

不同品类:由于商品的属性不同一样会产生拆单需求,例如易碎品需要特殊包装,超大物品(钢琴,座椅)需要单独包装。有些商品不能放在一起,同样需要拆单。

物流因素:不同物流公司对单个包裹的重量或体积都有特殊要求,需要根据SKU的毛重和体积来计算包裹的总重量和体积,超出物流公司限制的也需要拆单。

商品价值:根据商品价值需要拆单的主要涉及海淘和跨境的商品;国家对每笔跨境订单有单次限额,对年度跨境商品订单总金额也有限制,当单次购买金额超过限制金额时,也需要对订单进行拆单。

 

Java生鲜电商平台-订单架构实战的更多相关文章

  1. Java生鲜电商平台-缓存架构实战

    Java生鲜电商平台-缓存架构实战 说明:在Java生鲜电商中,缓存起到了非常重要的作用,目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个k ...

  2. Java生鲜电商平台-促销架构以及秒杀解决方案实战

    Java生鲜电商平台-促销架构以及秒杀解决方案实战 背景:随着这几年的电商的大热,我们经常看到一些商家为了促销和快速收益,纷纷推出了秒杀活动.不管是日常的超市里面的促销,明星演唱会门票售卖,还是春节订 ...

  3. Java生鲜电商平台-订单中心服务架构与异常订单逻辑

    Java生鲜电商平台-订单中心服务架构与异常订单逻辑 订单架构实战中阐述了订单系统的重要性,并从订单系统的信息架构和流程上对订单系统有了总体认知,同时还穿插着一些常见的订单业务规则和逻辑.上文写到订单 ...

  4. Java生鲜电商平台-订单模块状态机架构设计

    Java生鲜电商平台-订单模块状态机架构设计 说明:在Java生鲜电商平台中订单的状态流转业务        我们知道 一个订单会有很多种状态:临时单.已下单.待支付.待收货.待评价.已完成,退货中等 ...

  5. Java生鲜电商平台-订单配送模块的架构与设计

    Java生鲜电商平台-订单配送模块的架构与设计 生鲜电商系统最终的目的还是用户下单支付购买, 所以订单管理系统是电商系统中最为复杂的系统,其作为中枢决定着整个商城的运转, 本文将对于生鲜类电商平台的订 ...

  6. Java开源生鲜电商平台-订单抽成模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-订单抽成模块的设计与架构(源码可下载) 说明:订单抽成指的是向卖家收取相应的信息服务费.(目前市场上有两种抽成方式,一种是按照总额的抽成比率,另外一种是按照订单明细的抽成比率 ...

  7. Java生鲜电商平台-App系统架构开发与设计

    Java生鲜电商平台-App系统架构开发与设计 说明:阅读此文,你可以学习到以下的技术分享 1.Java生鲜电商平台-App架构设计经验谈:接口的设计2.Java生鲜电商平台-App架构设计经验谈:技 ...

  8. Java生鲜电商平台-深入订单拆单架构与实战

    Java生鲜电商平台-深入订单拆单架构与实战 Java生鲜电商中在做拆单的需求,细思极恐,思考越深入,就会发现里面涉及的东西越来越多,要想做好订单拆单的功能,还是相当有难度, 因此总结了一下拆单功能细 ...

  9. Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战

    Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战 说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?以下是我的实战中的设计与经验分析. 目录 1. 微服务简介2. 当前现状3. ...

随机推荐

  1. python进程基础点整理

    操作系统 串行: 一个程序完完整整的执行完再执行下一个 并发: 看起来像是同时运行,其实就是程序间的切换频率比较快,看不出来 并行:真正的同时运行 多道技术 空间复用:共用一个内存条,多个进程相互隔离 ...

  2. Spring Boot Redis 解析

    redis使用示例 本示例主要内容 使用lettuce操作redis redis字符串存储(RedisStringController.java) redis对象存储(RedisObjectContr ...

  3. Python小练习:StringIO和BytesIO读写操作的小思考

    from io import StringIO; f = StringIO(); f.write('Hello World'); s = f.readline(); print s; 上面这种方法&q ...

  4. thinkphp 5.x No input file specified 解决

    原规则: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond ...

  5. kmeans均值聚类算法实现

    这个算法中文名为k均值聚类算法,首先我们在二维的特殊条件下讨论其实现的过程,方便大家理解. 第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给 ...

  6. QT无窗口状态下对键盘事件的监听

    Question:最近在搞linux下的一个客户端项目,需要接收键盘事件,但是又不能有界面,这种情况怎么处理呢? int main(int argc, char *argv[]) { QApplica ...

  7. QT总结

    作为一个QT(C++/linux/windows)开发工程师,把自己在工作中遇到的一些QT问题持续总结给大家,一起分享: 一.隐藏鼠标:QApplication::setOverrideCursor( ...

  8. filebench - File system and storage benchmark - 模拟生成各种各样的应用的负载 - A Model Based File System Workload Generator

    兼容posix 接口的文件系统中我们不仅要测试 posix 接口是否兼容.随机读,随机写,顺序读,顺序写等读写模式下的性能.我们还要测试在不同工作负载条件下的文件系统的性能的情况:Filebench ...

  9. macOS 10.15 开启 HiDPI

    普通的显示,接上 MacBook 发现原生的分辨率设置在 2K 显示器上字体很小,换成 1080P 分辨率显示效果又特别模糊.下面介绍MacBook强行开启 HiDPI. 什么是 HiDPI 它使用横 ...

  10. 201871010116-祁英红《面向对象程序设计(java)》第十四周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https:/ ...