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. RabbitMQ 匿名队列断开问题定位记录

    RabbitMQ 匿名队列断开问题定位分析 1    问题现象 平台中,服务的信息交互通过RabbitMQ进行.在实际的使用中,发现系统启动后,就会出现status 监控的mq connection断 ...

  2. 墙上你APP设计与实现

    墙上你APP,听名字你们就应该可以想到是一个类似于表白墙吧,其实在做这个项目的时候我就是看到我们学校有一个专门工程墙,但是你找它发布消息表白或者找寻自己在学校掉了的饭卡或者身份证的时候,需要等它们同意 ...

  3. SpringBoot+MyBatisPlus+ElementUI一步一步搭建前后端分离的项目(附代码下载)

    场景 一步一步教你在IEDA中快速搭建SpringBoot项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/87688277 ...

  4. IDEA提示找不到Mapper接口:Could not autowire.No beans of 'xxxMapper' type found

    前言 相信大多数互联网公司的持久层框架都是使用 Mybatis 框架,而大家在 Service 层引入自己编写的 Mapper 接口时应该会遇到下面的情况: 我们可以看到,上面的红色警告在提示我们,找 ...

  5. 去掉烦人的“!=null"(判空语句)

    文章首发于公众号 松花皮蛋的黑板报 作者就职于京东,在稳定性保障.敏捷开发.高级JAVA.微服务架构有深入的理解 为了避免空指针调用,我们经常会看到这样的语句 if (someobject != nu ...

  6. Redis分布式锁的实现原理

    原文链接:https://mp.weixin.qq.com/s/y_Uw3P2Ll7wvk_j5Fdlusw

  7. Scrapy的Spider类和CrawlSpider类

    Scrapy shell 用来调试Scrapy 项目代码的 命令行工具,启动的时候预定义了Scrapy的一些对象 设置 shell Scrapy 的shell是基于运行环境中的python 解释器sh ...

  8. githup常用备份

    https://github.com/ https://github.com/doumeki/ThrExcel https://github.com/xinxi1990/MyMonkey https: ...

  9. java-11-Stream优化并行流

      并行流    多线程    把一个内容分成多个数据块  不同线程分别处理每个数据块的流   串行流   单线程  一个线程处理所有数据   java8 对并行流优化  StreamAPI 通过pa ...

  10. vue 借用element-ui实现头像上传 axios发送请求

    <!-- 上传组件 --> <!-- 总结一下: action 写图片上传请求的路径 去路径哈 show-file-list就是当你上传时,是否会显示出上传的是哪一个图片,一般为fa ...