Java生鲜电商平台-优惠券系统的架构设计与源码解析

Java生鲜电商平台-优惠券系统的架构设计与源码解析

 

电商后台:实例解读促销系统

电商后台系统包括商品管理系统、采购系统、仓储系统、订单系统、促销系统、维权系统、财务系统、会员系统、权限系统等,各系统之间相互关联、相互依托,为前端的正常业务流转建立结实稳固的基础。

促销系统的主要目的是便于运营设置各种促销方式,以提高商品的销量、用户的客单价等。

在后台各系统中,促销系统和商品管理系统、订单系统关联最大,商品管理系统为促销系统提供活动商品,用户下单后,促销优惠信息会展示在订单系统中。

促销系统介绍

促销系统主要包括促销活动管理促销类型管理

1、促销活动管理包含活动信息和活动状态管理:

活动信息

  • 活动名称:可用于区分促销活动,同时也便于查询;
  • 活动时间:促销活动的生效时间;
  • 活动规则:对应不同活动类型的规则,比如满X减N,均需要设置;
  • 活动商品:参加促销活动的商品,按照不同活动类型,可分为活动主商品与赠品。

活动状态

按照活动时间,可分为未开始、进行中、已结束。

  • 未开始的促销活动可随意编辑活动信息或者删除活动;
  • 进行中的促销活动为防止突发情况,一般有终止活动操作,也可编辑添加移除商品,但一般不能修改活动规则,否则容易导致前端购买体验不佳;
  • 已结束的促销活动不可编辑。

2、促销类型一般包括:满减、满赠、满折、加价购、特价、套餐、预售、秒杀等。

促销活动创建流程

后台创建促销活动的流程一般是:

  1. 选择活动类型;
  2. 设置相关活动信息:活动名称、活动时间、活动规则等,不同活动类型需要进行不同的设置操作,具体可见下方示例;
  3. 选择活动主商品。对于和赠品相关的活动,在主商品外,需要另选择参与活动的赠品,此处可注意,有些平台会将赠品作为一种单独的商品类型,而有些平台则可直接将主商品作为赠品;
  4. 活动信息设置好后,在活动生效时间内,前端用户可见。

促销系统后台示例

下面以示例来对各个促销类型的创建进行简单说明。

1、满减

  • 阶梯满减:按消费的阶梯额度设置相应的满减值,消费额度越高满减力度越大,以此来刺激用户提高单次购买金额,例如满100-10、满200-30、满300-60等。
  • 每满减:消费每达到一个额度则满减定值,例如每满100-10。
  • 设置内容包括:活动名称、活动时间、满减方式、活动商品。

设置阶梯满减时,可以对满减额度做监控,以免高额度的满减值低于低额度的满减值情况出现。

2、满赠

  • 满额赠:消费达到一定额度,则赠送相应东西给用户,赠送内容一般是特定赠品,例如消费满1000送围巾。
  • 满件赠:消费达到一定件数,则赠送相应东西给用户,赠送内容可以是相同商品,例如满2件送一件。
  • 设置内容包括:活动名称、活动时间、满赠方式、活动商品、赠品。

上文有提过,各个电商平台对于赠品的定义是不一样的。有些平台的赠品不会对外销售,因此将赠品也作为一个商品类型,仅用作赠送活动;而有些平台则可将正常售卖商品作为赠品。因此需根据平台业务来定义赠品:若是第一种,则选择赠品时,只显示类型为赠品的商品;若是第二种,则选择赠品时,显示所有的商品。

3、满折

  • 满额折:消费达到一定额度,可享受相应折扣,例如满500享8折。
  • 满件折:消费达到一定件数,可设置相应折扣,例如满2件享7折。
  • 阶梯满折:按消费的阶梯额度享受相应的折扣,消费额度越高折扣力度越大,即可包含满额折,例如满200打9折,满400打8折,也可包含满件折,例如满2件享7折、满3件享6折、满5件享5折等。
  • 设置内容包括:活动名称、活动时间、满折方式、活动商品。

4、加价购

  • 消费达到一定额度,可享受低价换购其他商品,以主商品带动其他商品销售。
  • 设置内容包括:活动名称、活动时间、加购设置(满X元加N元)、活动商品、加价购商品。

加价购活动的设置中,购买“活动商品”的金额达到加购设置的满额时,可以以加购价购买“加价购商品”。一般加价购商品的价格需要高于设置的加购价,因此选择商品时,可对价格做监控,防止有商品价格过低。

5、套餐

  • 将几件商品作为组合套餐一起销售,用户既可购买套餐,也能单独购买其中商品
  • 设置内容包括:活动名称、活动时间、套餐价格、活动商品。

注意:套餐价格不能超过套餐商品原价的总和。

6、预售

  • 用户可预先支付定金,商品正式开售后,定金可抵售价(一般抵消价格大于定金)。
  • 设置内容:活动名称、活动时间、预付定金比例、定金倍数、活动商品。

预售是现在主流电商平台经常使用的促销手段。预售促销不仅可以用定金抵押来刺激用户购买商品,同时还可以根据用户的消费意愿,判断商品的市场,以此来有效规避库存积压。

7、秒杀

  • 设置某段时间内,用户可以极低价格抢购商品。
  • 设置内容:活动名称、活动时间、活动商品、秒杀价格(秒杀商品的价格即可设置成统一的,也可设置成不同的价格)。

秒杀促销通常作为引流利器,在某个秒杀时间段内吸引大量用户前来抢购。

以上介绍的都是基础的促销方式,要让促销发挥其最大的优势,需要运营人员结合实际业务情况、用户需求进行设置。


电商系统 | 如何根据系统模块来设计产品?(促销体系篇)

系统化的产品经理逐渐在变得越来越重要,并不是以前单纯的页面和交互来做产品,而是通过功能一步步延伸到模块,再从模块趋变于系统的架构。

当系统化变得越来越重要时,我们就应该思考怎么从大方向来思考产品,如何搭建产品架构?

我们可以回想:整体系统的搭建尤其是以电商系统为蓝本,产品肯定是要商业化,商业化就离不开电商变现,也就会涉及到电商管理系统。而现在电商后台的体系成熟化、完整化,对我们去理解系统本身都有很强的参考意义。

然而,每次逛电商网站,总有一大堆促销活动。加上现在移动端社交电商的崛起,拉新和促活就是变得尤为重要。可以说促销活动的多样化是日常运营的重要部分。

那么,其实我们在思考一下:为什么大家如此热衷于促销活动?

  1. 拉新:促销活动可以带来新用户,尤其是用户较少的新平台、新店铺,通过这种方式来吸引用户。
  2. 去库存:通过活动可以清理库存,降低库存占用成本。
  3. 扩大品牌知名度:结合广告做促销能够扩大品牌知名度。
  4. 推新品爆品:很多商家大力做活动来推新品或者爆品,增加店铺流量,同时也能给其他商品带来曝光的机会。
  5. 针对于提高客单价,可以通过在优惠券、满减满赠等方案刺激下,用户都会去凑单购买,同时针对于促销手段的方式,也可以产生用户自发的额外购买行为。

促销的形态是基于已有商品管理的角度上针对于商品进行有关联的促销形态展示。商品中心的展示就变得尤为重要,对应的商品SKU、商品类目和商品价格(原价、促销价)等有关商品的数据都需要有基础展示。

促销的方式有很多种,刚开始是把线下的促销形式搬到了线上,比如:满减促销、赠品促销、单品促销、多买优惠促销和定金促销等。

而现在的促销方式包含1元夺宝、秒杀活动、团购活动、拍卖活动、拼团等形态。接下来,就一一聊下这些形态的配置和展示形态。

一、批发方案

B端商品经常会有批发模式,前端的展示:

通过模型描述:(针对单一的SKU形成组合,单一商品SKU和批发商品形成的“多对多”关系)

则后台怎么配置呢?

(1)批发商品列表(包含商品名称、商家名称、起订量、是否启用、产品审核状态和操作“查看、编辑和删除”)


(2)编辑和新增批发商品展示界面


字段1:批发商品名称是从商品列表中去选择。

字段2:批发商品分类是从商品分类中选择。

后续的字段:显示采购、价格模式(阶梯价格)、最小起订量、库存和商品属性都是和批发活动对应的字段。

由此,可以看出:“商品样式——促销类型——用户关系信息”三者形成了促销体系对应的内容。当然这个只是针对于单一的批发促销方案,若为o2o商城,可以分为自营和商家对应促销管理。

二、优惠券促销

优惠券是电商产品中最常见的促销方式,无论是产品在哪个阶段都是最有效的促销手段。优惠券的整体模型为:


优惠券的基本展示样式:(当然这只是一种展示样式)


则后台的配置和设置:

(1)通用券(主要针对于商品面值和使用门槛,以及每人限领张数),若商家发放的 同样可以添加指定商家等


(2)同样购物券(场景主要是针对用户购买商品后,给用户返的优惠券)

主要增加了用户获取优惠券的门槛(购物满XX元和允许参加的会员,允许参加的会员就需要和会员体系打通)

三、拼团活动促销

拼多多是拼团活动的集大成者,规则是指定数量的人一起购买某商品,可以通过比较低廉的价格获得此商品。

拼团的逻辑为:


前端的基本展示样式为:


那后端的开团列表为:


编辑和新增拼单开团:


四、拍卖促销

拍卖方式一直都有,只不过应用在商品中的样式还是比较少的,这里稍微的介绍下:

前端展示样式:


后台需要创建拍卖列表:


对应的拍卖商品的编辑和新增:


当然这儿只列举了这几种优惠促销的方案。还有很多种优惠促销的方案,后面可以一起聊聊。

总结一下:

  1. 上面只是针对性的做页面的设置和字段,以及前端的展示和业务逻辑。在进行促销活动产品设计时,除了基础的促销活动设置管理,还应考虑促销活动在前端页面显示的样式,包括在活动聚合页面、商品详情页、购物车、订单页中的显示。此外还应该考虑活动商品在订单结算时的计算规则,优惠分摊。
  2. 在前端显示优惠信息时,不但应该展示清晰、提醒友好,还应能链接到同类活动的其他商品,刺激用户的消费需求,引导凑单下单。应提供多样化的促销方式,避免单一促销方式给用户带来的疲惫感。
  3. 对于产品经理来说,后续针对促销后的解决方案比如退款的操作样式和订单的扭转才是最重要的。毕竟,不能和主流程冲突。

代码与数据库下载:

 

相关表结构

优惠券表

用于存储优惠券信息,需要注意的是优惠券的使用类型:0->全场通用;1->指定分类;2->指定商品,不同使用类型的优惠券使用范围不一样。

create table sms_coupon
(id                   bigint not null auto_increment, type int(1) comment '优惠卷类型;0->全场赠券;1->会员赠券;2->购物赠券;3->注册赠券', name varchar(100) comment '名称', platform int(1) comment '使用平台:0->全部;1->移动;2->PC', count int comment '数量', amount decimal(10,2) comment '金额', per_limit int comment '每人限领张数', min_point decimal(10,2) comment '使用门槛;0表示无门槛', start_time datetime comment '开始使用时间', end_time datetime comment '结束使用时间', use_type int(1) comment '使用类型:0->全场通用;1->指定分类;2->指定商品', note varchar(200) comment '备注', publish_count int comment '发行数量', use_count int comment '已使用数量', receive_count int comment '领取数量', enable_time datetime comment '可以领取的日期', code varchar(64) comment '优惠码', member_level int(1) comment '可领取的会员类型:0->无限制', primary key (id) ); 

优惠券历史记录表

用于存储会员领取及使用优惠券的记录,当会员领取到优惠券时,会产生一条优惠券的记录,需要注意的是它的使用状态:0->未使用;1->已使用;2->已过期。

create table sms_coupon_history
(id                   bigint not null auto_increment, coupon_id bigint comment '优惠券id', member_id bigint comment '会员id', order_id bigint comment '订单id', coupon_code varchar(64) comment '优惠券码', member_nickname varchar(64) comment '领取人昵称', get_type int(1) comment '获取类型:0->后台赠送;1->主动获取', create_time datetime comment '创建时间', use_status int(1) comment '使用状态:0->未使用;1->已使用;2->已过期', use_time datetime comment '使用时间', order_sn varchar(100) comment '订单号码', primary key (id) ); 

优惠券和商品的关系表

用于存储优惠券与商品的关系,当优惠券的使用类型为指定商品时,优惠券与商品需要建立关系。

create table sms_coupon_product_relation
(id                   bigint not null auto_increment, coupon_id bigint comment '优惠券id', product_id bigint comment '商品id', product_name varchar(500) comment '商品名称', product_sn varchar(200) comment '商品条码', primary key (id) ); 

优惠券和商品分类关系表

用于存储优惠券与商品分类的关系,当优惠券的使用类型为指定分类时,优惠券与商品分类需要建立关系。

create table sms_coupon_product_category_relation
(id                   bigint not null auto_increment, coupon_id bigint comment '优惠券id', product_category_id bigint comment '商品分类id', product_category_name varchar(200) comment '商品分类名称', parent_category_name varchar(200) comment '父分类名称', primary key (id) ); 

管理端展现

优惠券列表

展示图片

编辑优惠券

全场通用

展示图片

指定商品

展示图片

指定分类

展示图片

查看优惠券

展示图片

移动端展现

我的优惠券

未使用

展示图片

已使用

展示图片

已过期

展示图片

优惠券详情

      代码与数据库下载,请进QQ群下载。(793305035)

转载于:https://www.cnblogs.com/jurendage/p/11304927.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VC 2010下安装OpenCV2.4.4

说明: 安装平台:32位XP,VS2010;OpenCV 2.4.4不支持VC 6.0;网上有很多用CMake编译OpenCV的安装教程,这里建议先不要自己编译,如果使用预编译好的库有问题,再尝试自己编译。希望大家好…

vue3源码中的最长递增子序列

求解最长递增子序列是一道经典的算法题, 多数解法是使用动态规划的思想,算法的时间复杂度是O(); 而Vue.js内部使用的是维基百科提供的一套“贪心二分查找”的算法; 贪心算法的时间复杂度是O(n),二分查找的时间复杂度是O(logn),总时间复杂度…

Java编程基础阶段笔记 day04 Java基础语法(下)

​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个数形参 面向对象:封装性 访问权限修饰符 构造方法&…

汉诺塔递归算法

起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子…

Java编程基础阶段笔记 day 07 面向对象编程(上)

​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个数形参 面向对象:封装性 访问权限修饰符 构造方法&…

Vue/Angular中父窗口新开的子窗口关闭的时候刷新父窗口

最近遇到一个项目需求:Angular中父窗口新开的子窗口提交完信息关闭的时候刷新父窗口。 知识点: window.opener 概述 返回打开当前窗口的那个窗口的引用,例如:在window A中打开了window B,B.opener 返回 A. 语法 …

HDU 6631 line symmetric(枚举)

首先能想到的是至少有一对相邻点或者中间间隔一个点的点对满足轴对称,那么接下来只需要枚举剩下的点对是否满足至多移动一个点可以满足要求。 第一种情况,对于所有点对都满足要求,那么Yes。 第二种情况,有一个点不满足要求&#x…

学习数字图像处理经验谈

一、面向应用:层层分解、抓住要点 我们学习数字图像处理的最终目的还是应用,不管是用它来研制产品还是研发项目抑或是研究课题,都要用数字图像处理的理论、方法和技术来解决实际问题。在此过程中,提高效率是非常重要的&#xff0c…

react-router-dom@6获取路由传参

目录 参数获取 1、子路由形式携带 2、问号(?)形式参数 3、事件跳转传参 router/index.tsx import App from "App"; import Home from "pages/Home"; import List from "pages/List"; import Detail from "pages/Detail"; import…

koa洋葱模型

Koa 和 Express 都会使用到中间件 Express的中间件是顺序执行,从第一个中间件执行到最后一个中间件,发出响应如上图 Koa是从第一个中间件开始执行,遇到 next 进入下一个中间件,一直执行到最后一个中间件,在逆序&#x…

koa后端允许跨域

举个例子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-width…

python面向对象之继承

面向对象之继承 什么是面向对象的继承&#xff1f; 继承&#xff08;英语&#xff1a;inheritance&#xff09;是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B&#xff0c;就把这个A称 为“B的子类别”&#xff0c;而把B称为“A的父类别”也可以称“B是…

美国正面临“人才泡沫”破裂危机?

&#xff08;Jason Lane和Kevin Kinser/文&#xff09;最近&#xff0c;与教育有关的种种问题在美国社会引起了广泛讨论。首先巨额的学生贷款问题&#xff1a;根据美联储纽约分行在2012年11月发布的一份报告&#xff0c;全美学生贷款总额已经达到420亿美元&#xff0c;其中新增…

ngrx学习笔记

什么是ngrx ngrx是Angular基于Rxjs的状态管理&#xff0c;保存了Redux的核心概念&#xff0c;并使用RxJs扩展的Redux实现。使用Observable来简化监听事件和订阅等操作。 在看这篇文章之前&#xff0c;已经假设你已了解rxjs和redux。 有条件的话请查看官方文档进行学习理解。 所…

.slice(0)

高手代码里看到.slice(0)&#xff0c;查了下这样写的好处&#xff1a; 1.对原数组进行深拷贝&#xff0c;这样进行一系列操作的时候就不影响原数组了&#xff1b; 2.将类数组对象转化为真正的数组对象&#xff1a;var anchorArray [].slice.call(document.getElementsByTagN…

亲历2013年TED大会:全球最潮灵感大会

本文转自&#xff1a;http://mooc.guokr.com/opinion/436837/ 本文由《外滩画报》供稿 文/华琪&#xff08;发自美国&#xff09; 编辑/吴慧雯 什么是TED的世界&#xff1f;在这里&#xff0c;你可以轻易发现各种名人出没的痕迹&#xff0c;和各个领域里最具远见卓识和创造…

Java生鲜电商平台-电商会员体系系统的架构设计与源码解析

Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明&#xff1a;Java生鲜电商平台中会员体系作为电商平台的基础设施&#xff0c;重要性不容忽视。我去年整理过生鲜电商中的会员系统&#xff0c;但是比较粗&#xff0c;现在做一个最好的整理架构. 设计电商会员体系需…

为什么要上大学?

为了让自己成为更有意思的人。 &#xff08;文&#xff0f;美国圣母大学哲学教授 Gary Gutting&#xff09;再不久&#xff0c;千千万万的大学生又将走完一个学期。他们中的很多人以及他们的家人&#xff0c;可能为刚刚过去的几个月或是几年投入了相当可观的时间、努力以及金钱…

打造“神犇”是教育的未来吗?

这年头&#xff0c;品学兼优、身怀特长的“神犇”&#xff0c;拼的不仅是天赋异禀和后天努力&#xff0c;更是身后爹妈的钱包&#xff0c;而本该实现社会公平的教育&#xff0c;反而加速和凝固了社会的不公。 高等教育的终极目标真的是造就学业超人吗&#xff1f;《纽约时报》刊…

AntD 官网样例 InputRef报错原因

在官网可编辑表格typescript样例里 const inputRef useRef<InputRef>(null); InputRef项目报错原因是ant design的版本问题! antd 4.19版本重写了input 可通过InputRef来使用input组件的ref