说明:订单抽成指的是向卖家收取相应的信息服务费.(目前市场上有两种抽成方式,一种是按照总额的抽成比率,另外一种是按照订单明细的抽成比率)

由于生鲜电商的垂直领域的特殊性质,总额抽成不切合实际,所以按照订单的明细抽成。

1. 订单抽成,是按照一个区的维度,以及菜品的二级分类类抽点的。

举例说明:比如武汉光谷区,佛祖岭区,虽然都是属于东湖高新,但是光谷区的物价以及消费水平肯定是高于佛祖岭区的,因此它是按照一个区的维度来分的。

但是有些卖家挣的钱多,有的卖家挣的钱少,虽然同属于一个菜市场,但是挣钱少的跟挣钱多的一样抽成,他们也不乐意,因此又按照卖家的ID进行抽查。

最终根据业务的形态以及我们的市场调查结果,采用以商户为基准,按照菜品的二级分类来抽成的一种盈利模式。

2. 数据库系统架构设计如下:

卖家抽点配置信息表:

CREATE TABLE `order_percentage_config` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键,自动增加ID',`region_id` bigint(20) NOT NULL COMMENT '区域id',`seller_id` bigint(20) DEFAULT NULL COMMENT '卖家id',`category_id` bigint(20) DEFAULT NULL COMMENT '商品二级分类的ID',`percentage` decimal(12,2) DEFAULT NULL COMMENT '平台抽点率 ',`status` tinyint(1) DEFAULT NULL COMMENT '状态: 0禁用 ,1启用',`create_time` datetime DEFAULT NULL COMMENT '创建时间 ',`update_time` datetime DEFAULT NULL COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=144 DEFAULT CHARSET=utf8 COMMENT='订单抽点配置信息表';

说明:按照卖家的所属二级分类进行抽点,不同的抽点率也是不一样的。

2. 卖家抽点明细表。(系统需要精确的记录,那个菜品进行了抽点,抽点多少,原来的多少钱,抽点后多少钱,需要明明白白的,让卖家清清楚楚的有一笔账)

CREATE TABLE `order_percentage` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自动增加ID',`order_item_id` bigint(20) DEFAULT NULL COMMENT '订单item的ID',`order_number` varchar(64) DEFAULT NULL COMMENT '所属订单号',`seller_id` bigint(20) DEFAULT NULL COMMENT '卖家id',`order_total_amount` decimal(12,2) DEFAULT NULL COMMENT '订单金额',`order_percentage` decimal(12,2) DEFAULT NULL COMMENT '抽点比率',`order_percentage_amount` decimal(12,2) DEFAULT NULL COMMENT '抽点金额',`order_reality_money` decimal(12,2) DEFAULT NULL COMMENT '订单最终金额即用户最终收到的金额',`create_time` datetime DEFAULT NULL COMMENT '所属时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=47226 DEFAULT CHARSET=utf8 COMMENT='抽点信息总表';

补充说明:1. 由于的是对某一个明细进行抽点。所以需要卖家ID,订单明细ID以及抽点比率等,最终算出抽点金额。

3. 何时进行抽点呢、

回答:每天早上6点30进行昨天的抽点,形成自己的账单。

相关的核心代码如下:采用spring task做定时器

  /*** 计算订单抽成 每天早上6:30点执行*/@Scheduled(cron = "0 30 6 * * ?")protected void makeOrderPercentage() {try {logger.info("TasksQuartz.makeOrderPercentage.start");// 计算订单抽成,并生成抽成数据orderPercentageService.batchSaveOrderPercentage();logger.info("TasksQuartz.makeOrderPercentage.end");} catch (Exception ex) {logger.error("TasksQuartz.makeOrderPercentage.exception", ex);}}

业务核心代码:

@Service
public class OrderPercentageserviceImpl implements OrderPercentageService {private static final Logger logger = LoggerFactory.getLogger(OrderPercentageserviceImpl.class);@Autowiredprivate OrderItemDao orderItemDao;@Autowiredprivate OrderPercentageConfigDao orderPercentageConfigDao;@Autowiredprivate OrderPercentageDao orderPercentageDao;/*** 批量新增数据*/@Overridepublic void batchSaveOrderPercentage() {// 1.获取昨天12:00到今天早上6:00的所有的订单明细Map<String, Object> dateMap = DateUtil.getTradeTime(0);List<OrderItem> orderItems = orderItemDao.getOrderItemsByDate(dateMap);List<OrderPercentage> list = new ArrayList<OrderPercentage>();if (CollectionUtils.isEmpty(orderItems)) {return;}for (OrderItem item : orderItems) {try {Long formatId = item.getFormatId();Long sellerId = item.getSellerId();OrderPercentageConfig config = orderPercentageConfigDao.getOrderPercentageConfig(formatId, sellerId);if (config == null) {logger.error("batchSaveOrderPercentage.config.isEmpty:" + "formatId:" + formatId + " sellerId:"+ sellerId);continue;}OrderPercentage orderPercentage = new OrderPercentage();// 订单总额BigDecimal orderTotalAmount = item.getGoodsAmount();// 抽点比率BigDecimal percentage = config.getPercentage();// 抽点金额BigDecimal orderPercentageAmount = orderTotalAmount.multiply(percentage).multiply(new BigDecimal("0.01")).setScale(3, BigDecimal.ROUND_UP);// 卖家最终所得BigDecimal orderRealityMoney = orderTotalAmount.subtract(orderPercentageAmount).setScale(3,BigDecimal.ROUND_UP);orderPercentage.setCreateTime(new Date());orderPercentage.setOrderItemId(item.getId());orderPercentage.setOrderNumber(item.getOrderNumber());orderPercentage.setOrderTotalAmount(orderTotalAmount);orderPercentage.setOrderPercentage(percentage);orderPercentage.setOrderPercentageAmount(orderPercentageAmount);orderPercentage.setOrderRealityMoney(orderRealityMoney);orderPercentage.setSellerId(sellerId);list.add(orderPercentage);} catch (Exception ex) {logger.error("batchSaveOrderPercentage.exception", ex);}}try {orderPercentageDao.batchSaveOrderPercentage(list);} catch (Exception ex) {logger.error("batchSaveOrderPercentage", ex);}}}

相关后台运营截图如下;

电商平台-订单抽成模块的设计与架构相关推荐

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

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

  2. java产品分类和管理_Java生鲜电商平台-商品无限极目录的设计与架构

    Java生鲜电商平台-商品无限极目录的设计与架构 说明:任何一个商品都应该是先属于某一个目录,然后在目录中添加商品,目录理论上最多支持三级,因为级别太多,不容易管理.但是设计中需要设计无限制的级别. ...

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

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

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

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

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

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

  6. 电商平台订单获取API接口文档

    电商平台原始订单推送(不包含订单敏感信息) 描述 用于点三OMS向外部ERP推送电商平台原始订单信息,原始订单状态变化.地址变更.备注修改.旗帜变化.退款变化等都会触发推送. 电商平台订单获取API接 ...

  7. 电商平台-订单表的设计

    场景分析说明: 买家(餐馆)用户,通过APP进行选菜,放入购物车,然后下单,最终支付的流程,我们称为下单过程. 买家可以在张三家买茄子,李四家买萝卜,王五家买白菜,赵六家买猪肉等 那么买家就应该有个订 ...

  8. 6、生鲜电商平台-订单表的设计

    场景分析说明: 买家(餐馆)用户,通过APP进行选菜,放入购物车,然后下单,最终支付的流程,我们称为下单过程. 买家可以在张三家买茄子,李四家买萝卜,王五家买白菜,赵六家买猪肉等 那么买家就应该有个订 ...

  9. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

最新文章

  1. 《基于压缩传感的匹配追踪重建算法研究》读书笔记
  2. 金融领域下的数据挖掘算法应用:逻辑回归模型
  3. 命犯编程!因为名字特殊,她被苹果封了 6 个月
  4. Android应用开发 led 驱动层 hal硬件抽象层 应用层 详细教程记录(含源码)
  5. 根据后台日志文件查找错误_linux中find命令根据文件类型来查找
  6. opencv3 与opencv2不同之处
  7. Java *1.13(代数:求解2 × 2线性方程组)可以使用Cramer法则解下面的2 x 2线性方程组,假定ad-bc不为0:
  8. sim800a指令_SIM800A模块进行HTTP的GET和POST操作
  9. 数据分析师15-面试全流程
  10. linux查看磁盘naa,linux查看计算机硬件信息
  11. 微型计算机显示器的两种引线,第八章章节微型计算机接口技术8-2led显示器接口.ppt...
  12. Linux -- 项目服务部署学习
  13. spring常用注解剖析
  14. 微信开发-NATAPP的使用
  15. 重磅榜单!互联网金融Top100总估值超1.1万亿,27家独角兽上榜!
  16. React实战精讲(React_TS/API)
  17. cocos creator 制作作砸金蛋
  18. IDC机房维护的三个方面
  19. 浅谈win7升级win10 技术预览版9962
  20. CCF-CSP 202112-2 序列查询新解

热门文章

  1. 扫描版pdf电子书修改背景色
  2. 关于移动硬盘故障:使用驱动器G:中的光盘之前需要将其格式化或者无法访问磁盘G:参数错误的解决办法
  3. 单片机C语言制作ESR表,超级ESR表 - 〓仪表工具专区〓 - 矿石收音机论坛 - Powered by Discuz!...
  4. 【语义分割】类别不平衡损失函数合集
  5. apa引用要在文中吗_引用还是抄袭?80%的大学生都搞不懂的学术写作!
  6. pcx游程编码、解码超详细讲解(附带java源码)
  7. NAND Flash SSD 是如何生产出来的?
  8. 系统卡顿有服务器硬件的原因,服务器出现卡顿,一般是这个3个原因!
  9. vim 错误提示解决:The ycmd server SHUT DOWN (restart with ‘:YcmRestartServer‘). Unexpected exit code 1.
  10. springboot订单超时和超时提醒