电商促销优惠规则业务分析建模

老肉 老肉     2022-11-11     219

关键词:

转:http://craft6.cn/detail/b2c_promotion_2017.do?tagKey=promotion

 

 

1常 见 的 电 商 促 销 场 景

 

技术分享图片

  •  左侧为享受促销的资格,常见为这三种:

    • 首单

    • 大于或等于某个会员级别

    • 特定会员组:比如女性,月消费满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. 有些促销活动只能参与一次,则通过此表判断。

      3.  

36生鲜电商平台-积分,优惠券,会员折扣,签到预售拼团砍价秒杀及抽奖等促销模块架构设计

...计,包括业务说明,仅供参考 促销体系1.1促销体系在电商和O2O领域,促销是运营人员的一个主要的让利行为,同时促销活动期间的购买量也较之普通商品更高,不同的阶段,对于促销的要求也是不同的。促销实质上是一种沟... 查看详情

优惠券和促销的设计规则

...dex/522932721808512ps:最新做的事情有点杂,发一个优惠券和促销活动的设计,希望对新人有些帮助!1. 设计思路优惠券生成流程1.1. 概述1. 表现形式和内在优惠券 或者 促销活动 只是承载促销的外部表现形式... 查看详情

程序猿也敢谈业务●促销活动

本文主要就促销活动的几大要素做出阐述参与条件:足量。单次购买商品达到指定数量可享受优惠;足金额。单次购买商品总价达到指定金额可享受优惠;优惠方式:  从优惠品属性来看,分实物(赠品)、虚拟资产(优惠券... 查看详情

java开源的规则引擎drools电商行业实战(含完整代码)(代码片段)

...ff0c;经分析后选用规则引擎Drools来实现。本场Chat通过一个电商行业的领取优惠券场景,详细介绍了Drools的常用语法、使用步骤、具体开发过程及代码分析、测试步骤、注意事项等等,并贴出完整的代码。Drools常用语法packa... 查看详情

促销中心模型

类型:满减、包邮、优惠券、虚拟货币范围:平台下的商品、商户、类目属性:单/多 规则模型:满减 规则定义和规则实例:满多少减多少 规则实例对象:某skuid满多少减多少、某商户商品满多少减多少  查看详情

电子商务-促销系统

   促销系统的主要作用:主要提供商品的促销优惠价格,如果该商品没有促销,就提供商品的原价。   促销类型:直降促销:限时直降,限时限量直降满额促销:满减,满折套装促销(多个商品一起买,N个... 查看详情

数据分析报告

...种能力的体现!!!报告必须有价值!!! 背景???公司业务,电商,零售,生鲜等.....个人角色电商业务流程??? 数据分析师参加公司运营和品牌商会议,他们的谈判流程是怎么样的?回顾之前目标目标完成多少.如果没有达成,都有很多常... 查看详情

优惠券系统架构设计与实践

一、业务背景优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券就是其中核心模... 查看详情

优惠券系统架构设计与实践

一、业务背景优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券就是其中核心模... 查看详情

如何设计一个优惠卷系统(代码片段)

...优化-索引发券接口,限流保护前端限流后端限流场景电商大厂常见促销手段 查看详情

如何设计一个优惠卷系统(代码片段)

...优化-索引发券接口,限流保护前端限流后端限流场景电商大厂常见促销手段 查看详情

电商项目中的优惠券系统这样设计,同事直呼666!

...,一本深入讲解Java基础的干货笔记!1Scenario场景电商大厂常见促销手段:优惠券拼团砍价老带新1.1优惠券的种类满减券直减券折扣券1.2优惠券系统的核心流程1.2.1发券发券的方式:同步发送or异步发送1.2.2领券谁能... 查看详情

电商项目中的优惠券系统这样设计,同事直呼666!

...,一本深入讲解Java基础的干货笔记!1Scenario场景电商大厂常见促销手段:优惠券拼团砍价老带新1.1优惠券的种类满减券直减券折扣券1.2优惠券系统的核心流程1.2.1发券发券的方式:同步发送or异步发送1.2.2领券谁能... 查看详情

领域建模常用方法

...理用例基于当前要建模的业务,梳理该场景下的业务规则;梳理领域内的核心业务场景,比如航空领域下购票、航线等;梳理具体的业务流程。这些事情做完之后就可以得到该领域下的重点用例。第二步:分... 查看详情

领域建模常用方法

...理用例基于当前要建模的业务,梳理该场景下的业务规则;梳理领域内的核心业务场景,比如航空领域下购票、航线等;梳理具体的业务流程。这些事情做完之后就可以得到该领域下的重点用例。第二步:分... 查看详情

电商价格监测,关注这些,才算实际到手价

...项工作,是先找出低价乱价链接,这就需要进行电商价格监测。但是我们搜索品牌链接的时候,会发现网页上的价格是多种多样:有原价(但是划掉了)、促销价、折扣价、惊喜价,优惠活动也是眼花... 查看详情

使用hybris的customercoupon进行促销活动(promotion)

...优惠券:在菜单Marketing->PromotionRules里,创建一条新的促销规则PromitionRules:在规则的Conditions和Actions里,维护触发条件。当购买金额Quantity大于1,且购买的产品种类是575,数码相机时,触发这条规则。触发规则的另一条,则是... 查看详情

浅谈优惠券系统设计

原文:浅谈优惠券系统设计 一.概述利用闲暇时间总结下优惠券系统的一些业务与技术方案的设计及其注意事项。从业务与技术角度构建一个安全的高可用的优惠券系统我们的目标:安全,可扩展,高可用二.优惠券业务... 查看详情