30、生鲜电商平台-电商促销业务分析设计与系统架构

说明:Java开源生鲜电商平台-电商促销业务分析设计与系统架构,列举的是常见的促销场景与源代码下载

  • 左侧为享受促销的资格,常见为这三种:
    • 首单
    • 大于或等于某个会员级别
    • 特定会员组:比如女性,月消费满1000等等,都是通过查询条件查询出来的特定分组。
  • 优惠类型,对于电商网站主要是下面4类:
    • 金额
    • 赠品:商品、优惠券、现金券、积分等
    • 包邮(实际上也是钱)
    • 其它:如送精美包装等。 对于其它业务类型的平台,则估计会有其它形式的优惠,比如赠送三个VIP会员等等。
  • 范围,无非就是:
    • 整单
    • 指定品类或特定品类(临时的活动分类,比如夏季新品特卖)
    • 指定商品
  • 满减:针对金额的减免,可以指定金额或百分比,涉及阶梯累加和数量累加等。
  • 满赠:满足条件后获得赠品,赠品可以是五花八门,对于电商平台一般是商品、现金券、优惠券、积分等。
  • 包邮:金额减免的另一种方式,但效果比减免小额金额要好。
  • 其它规则:有些会带来设计的复杂度,但本质无非就是满减或满赠。

2促 销 的 表 现 形 式

促销的表现形式主要分为促销活动和优惠券两种。

站在系统的角度,促销活动是主动的,优惠券是被动的。

促销活动表示只要满足条件,下单时自动会进行促销规则计算,进行减免或者赠送。但是优惠券必须客户进行选择(或者输入券码)。

促销活动可以多个同时生效,比如:

  • 首单包邮
  • 满100减20
  • 买电磁炉赠送餐具

这三个促销活动对于新会员(未曾购买过)都是同时有效的。

但促销活动存在互斥和优先级,这两个概念在后面再分析。

优惠券只存在一张优惠券生效。

即客户选择使用哪一张,就哪一张生效,无所谓互斥或者优先级。

优惠券可以和促销活动同时生效,只要生效促销活动不排斥优惠券即可。

那么,对于促销规则而言,促销活动和优惠券只是它上层的表现形式,实际的底层的促销规则是可以共用的(无非都是满减、满赠)

3促 销 规 则 分 析

从第一节场景来看,促销无非就是看:

  1. 是否满足资格
    1. 没有资格享受该优惠,就不必往下计算了。
  2. 当前规则的优惠类型是什么?
    1. 满减、满赠、包邮或者其它?
  3. 当前规则的生效范围是什么?
    1. 判断客户当前订单(购物车)是否满足当前规则生效范围之内,是则计算优惠。
  4. 规则的累加规则是什么?
    1. 阶梯累加:一般只针对金额
    2. 数量累加:否则只计算一次,是则乘以倍数。
  5. 规则之间的关系是怎样的?
    1. 优先级
    2. 兼容
    3. 互斥

可以通过这张图整体理解这个结构:

4促 销 规 则 的 关 系

促销规则的关系是设计的一个难点,对于规则而言本身是独立的,所以所谓关系就是它的上层表现形式的关系,而前面第二节也谈到,优惠券之间是无所谓关系的,用那张就那张生效(前提是该张优惠券可用,可以用)。

那么现在要分析的关系就只有:

  • 促销活动之间的关系
  • 促销活动和优惠券之间的关系

其中促销活动与优惠券的关系是一票否决方式,即只要本次订单(购物车)对应的生效促销活动有任一个设置为:排斥优惠券,则本订单(购物车)不能使用优惠券。

那么我们剩下要分析的就是促销活动之间的关系了,详见下图:

5领 域 业 务 建 模(模块级别)

  1. 促销规则独立为一个模块
    1. 促销活动、优惠券的管理在模块内,共规则模型调用。
    2. 规则模型对外提供接口,其它模块只能通过该接口访问模型。
    3. 模型实现该接口。
    4. 规则接口要求传入上下文参数
    5. 该上下文参数包含:商品列表(购物车当前选择的商品,客户ID 和 使用的优惠券。
    6. 规则接口是规则模块的边界。
  2. 调用者为购物车模块。
    1. 任何时候购物车发生修改时,调用规则接口重新计算。
    2. 规则发生更改时,会发送事件出来。
    3. 购物车模块计算价格业务监听此事件,有变更则更新相关购物车的价格。
    4. 此监听器为异步。
  3. 外部支持接口
    1. 客户接口:供查询客户资格相关使用
    2. 商品接口:供查询商品分类和其它定义使用。

6领 域 业 务 建 模(类级别)

类图有些大,手机上如果看不清,可以分享到pc上查看。

设计思路过程描述:

    1. 提供CartRuleService作为对外接口
    2. 分别调用:
      1. PromotionService:促销活动接口
      2. CouponService:优惠券接口

来处理促销活动和优惠券。

  1. 促销活动接口和优惠券接口均是实际调用RuleService来实现促销规则计算。
  2. RuleService的实现采用桥模式和策略模式,并通过工程模式获得各个策略的实例。
  3. 传入的上下文参数封装为RuleContext,传给RuleService
  4. RuleService返回RuleResult对象
  5. PromotionResult和CoupontResult分别封装RuleResult对象进行返回。

通过这个设计方案,当有新的资格判断方式、目标范围和优惠类型时,通过新增策略实现即可,符合开闭原则。

7规 则 的 持 久 化

前面已经充分分析了规则的各个内容,如何将促销活动、优惠券和促销规则持久化以及持久化存储到那里其实已经是水到渠成的事情。怎样存储其实都可以,哪怕是一个json结构。

因为无论什么结构,最终在代码中都会被解析为对象并缓存起来供接口实现来调用。所以数据库设计在效率上不会要求太高。

数据库结构ER图:

  1. 规则定义和规则利益是独立的两个表,和优惠券、促销活动一对一关联。
  2. 规则定义包含:
    1. 资格类型、资格配置
    2. 利益类型、利益参数(是否累加)
    3. 目标范围类型、范围设置
    4. 其它字段根据项目情况自由添加。
  3. 规则利益
    1. 可以对不同的利益分别设计字段。
    2. 也可以设置一个利益类型和利益配置(json结构)
    3. 之所以独立出来作为子表,是因为存在阶梯累加的业务情况需要配置多条利益。
  4. 优惠券的设计为常规方式
    1. 定义:定义它的各种参数
    2. 实体:具体某一张优惠券
    3. 使用:一般一张优惠券只会使用一次,记录使用历史,也有优惠券可以使用多次。
  5. 促销活动定义
    1. 前面第4节说的促销规则的关系(其实是促销活动的关系)就是定义在这里。
    2. 分组、优先级、对优惠券的排斥等。
  6. 促销活动的参与日志
    1. 记录谁参与过
    2. 有些促销活动只能参与一次,则通过此表判断。

转载自-- https://www.cnblogs.com/jurendage/p/9137815.html

原文地址:https://www.cnblogs.com/lu-manman/p/10052405.html

时间: 2024-10-08 02:00:21

30、生鲜电商平台-电商促销业务分析设计与系统架构的相关文章

Java生鲜电商平台-电商订单系统全解析

Java生鲜电商平台-电商订单系统全解析 今天分享将会分为以下三个环节来阐述: 1.订单系统的介绍 2.订单系统的解构 3.垂直电商订单系统设计思路 一.什么是订单系统? 订单管理系统(OMS)是物流管理系统的一部分,通过对客户下达的订单进行管理及跟踪,动态掌握订单的进展和完成情况,提升物流过程中的作业效率,从而节省运作时间和作业成本,提高物流企业的市场竞争力.顾名思义,电商系统就是用户.平台.商户等对于订单的管控.跟踪的系统,衔接着商品中心.wms.促销系统.物流系统等,是电子商务的基础模块:

Java生鲜电商平台-电商支付流程架构实战

Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. 6.缺点与防范 一.场景描述 想必大家都曾遇到过这个问题,在电商购物的过程中,已经走到了最后一步:去支付.这个时候突然意识到商品数量不对,或者收货信息选错. 除此之外,用户还存在之下返回的原因: 误点击,也就是说用户还是想买的: 犹豫中点了返回,想买的欲望不是十分坚决: 坚决不买了. 二.可选方案

Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析

Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才是检索结果.首先,电商的搜索引擎并没有爬虫系统,因为所有的数据都是结构化的,一般都是微软的数据库或者 Oracle 的数据库,所以不用像百度一样用「爬虫」去不断去别的网站找内容,当然,电商其实也有自己的「爬虫」系统,一般都是抓取友商的价格,再对自己进行调整. 第二点,就是电商搜索引擎的过滤功能其实比

Java生鲜电商平台-电商虚拟币的充值与消费思考

Java生鲜电商平台-电商虚拟币的充值与消费思考 项目背景 最近由于项目业务原因,需要为系统设计虚拟币的充值及消费功能.公司内已经有成熟的支付网关服务,所以重点变成了如何设计项目内虚拟币的充值流程,让整个充值流程都实现幂等,确保用户的虚拟币余额不会重复增加或扣减. 商品购买及支付流程 微信支付时序图 (1)用户购买商品,商户后台请求生成支付订单并返回相关信息到客户端. (2)客户端根据返回的信息唤起支付SDK,用户确认支付. (3)用户完成支付后,支付系统会异步通知商户后台支付结果. (4)商户

Java生鲜电商平台-电商中"再来一单"功能架构与详细设计(APP/小程序)

Java生鲜电商平台-电商中"再来一单"功能架构与详细设计(APP/小程序) 说明:在实际的业务场景中(无论是TO B还是TO C)不管是休闲食品.餐饮.水果.日用百货.母婴等高频购买行业,还是其他行业,“再来一单”都能够大大缩短买家再次下单的流程,促进转化. 于是就有了针对生鲜电商平台的“再来一单”功能,买家只要在订单列表.订单详情或者支付成功中点击“再来一单”,就可以把订单中的商品再次加入购物车,方便快捷,高效. 上面的话可以总结出来"再来一单“以下几个信息.      

电子商务(电销)平台中用户模块(User)数据库设计明细

以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 用户基础表(user_base)|-- 自动编号 (user_id)|-- 用户名 (user_name)|-- 手机号码|-- 电子邮件|-- 登录密码 (password)|-- 用户状态 (status) 用户开放登录帐号表|-- 自动编号|-- 用户编号|-- 腾讯QQ号码 (qq)|-- 微信号码 (wechat)|-- 淘宝帐号 (taobao)|-- Skype (skyp

电商平台商品类别与商品表设计方法

1.商品类别表设计 采用树状结构保存商品所有了类别信息,见下图1 其中上层的是类别树结构,加上方框的项目,代表类别的根节点,例如“贴膜”,贴膜下方的两层树结构式是“贴膜”类别商品的筛选树(一般2层),用来产生商品的筛选项目,图2 图1 树状结构图 图2 商品筛选图 图3 子类别图 2.商品表设计 首先创建一个商品信息的通用表,用来保存商品的共性信息 再根据商品类别表中,每个类别的叶子节点,例如”贴膜“,单独创建一个表,用来存放此类商品的筛选信息(每个筛选项可以做为此表的一列),列的值为筛选值(可

Java开源生鲜电商平台-Java后端生成Token架构与设计详解(源码可下载)

Java开源生鲜电商平台-Java后端生成Token架构与设计详解(源码可下载) 目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交. 技术选型:用开源的JWT架构. 1.概述:在web项目中,服务端和前端经常需要交互数据,有的时候由于网络相应慢,客户端在提交某些敏感数据(比如按照正常的业务逻辑,此份数据只能保存一份)时,如果前端多次点击提交按钮会导致提交多份数据,这种情况我们是要防止发生的. 2.解决方法: ①前端处理:在提交之后通过js立即将按钮

Java开源生鲜电商平台-OMS订单系统中并发问题和锁机制的探讨与解决方案(源码可下载)

Java开源生鲜电商平台-OMS订单系统中并发问题和锁机制的探讨与解决方案(源码可下载) 说明:Java开源生鲜电商中OMS订单系统中并发问题和锁机制的探讨与解决方案: 问题由来     假设在一个订单系统中(以火车票订单系统为例),用户A,用户B都要预定从成都到北京的火车票,A.B在不同的售票窗口均同时查询到了某车厢卧铺中.下铺位有空位.用户A正在犹豫订中铺还是下铺,这时用户B果断订购了下铺.当用户A决定订下铺时,系统提示下铺已经被预订,请重新选择铺位.在这个系统场景中,我们来探讨一下,火车票