首页
学习
活动
专区
圈层
工具
发布

优惠券系统设计

商户发的优惠券只能用于商户自身的商品,平台发的优惠券适用的范围就非常广了。...优惠券基本属性 优惠秋的类型:立减券,满减券,折扣券等 优惠券基本描述:比如活动名称等 优惠券发行方: 优惠券的发行方式: 优惠券的有效期:一般有两种,固定起止时间的有效期,领取后一定时间内过期 优惠券面额...: 优惠券的满减条件: 优惠券的发行量: 领券 领取限制 谁能领:一张优惠券是所有用户都可以领取还是只能指定的用户可领取 领取上限:一个优惠券最多能领取多少张?...流程交互 那么对于一个优惠券系统,一般的流程交互如下: image.png 需要解决的问题 那么对于一个优惠券系统,需要解决的问题主要有两点 安全性: 优惠券超: 高并发的情况下优惠券领取的数量超过了发行量...后记 本文主要讨论了一个优惠券系统设计时候该考虑的一些问题,除了优惠券的一些属性细节之外,重点讨论了下一个优惠券系统再高并发时候的安全性 和可扩展性。

6.7K75
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    优惠券功能的实现

    参考一号店的样式,做了类似一个这样的模板 下面讲讲大概的逻辑: 首先我们需要一个优惠券模板表 这个表用于后台生成优惠券模板,然后会员兑换、领取 还需要一张用户优惠券表 表结构大概如下 #...) 运维人员填入券标题,如某某假日优惠券等等 并包含满减金额和门槛金额(门槛金额为 0,代表无门槛券) score代表需要积分兑换,某些商城需要积分才能兑换优惠券 最后加上一个使用日期的限制即可 优惠券模板发布之后..., end_date公共字段复制给会员券表 领取之后,会员可在自己的券中心查看 优惠券的使用 当会员下单,判断订单的总金额是否大于优惠券的门槛金额,如果满足即可使用 标记优惠券的used_at为当前时间...,代表优惠券已经使用,订单并关联优惠券主键 优惠券的退单 当发生优惠券退单时,实际退还优惠之后的金额 此订单和优惠券的关联取消掉 把优惠券的used_at标记为null代表未使用 类似京东还有一个比较有趣的功能...,并为此会员生成一张优惠券 标记次兑换码已经使用

    1.6K10

    优惠券超发问题

    问题引发 如果同时来了两个线程(你可以理解成是两个请求),比如先来的那个请求通过了检查(线程 A),这时线程 A 还没有扣减库存,这时线程 B 经过一翻操作也通过了这个检查优惠券是否可领取的方法...问题解决 | 解决方案 1(Java 代码加锁) 导致这一问题的根本原因是多个线程同时访问这个领取优惠券的方法,那只要保证在同一段只有一个线程进入到这个方法就可以了。...在使用了 synchronized 加锁后,就会形成串行等待的问题,当一个线程 A 在领取优惠券方法内执行过久时,其它线程会等待直到线程 A 执行结束。...这样也可以避免优惠券超领。 还有种办法就是乐观锁,可以在表中加个version 字段,每次修改数据的时候这个字段会加 1,也可以直接使用mybatisplus中的乐观锁插件。

    1.7K30

    微信推出优惠券新玩法,“朋友共享的优惠券”正式上线

    11月18日,微信推出新玩法,“朋友共享的优惠券”(简称“朋友的券”)上线。 作为微信重磅打造的新玩法,微信“朋友的券”打通了微信关系链,让朋友间能共享同一张优惠券。...用户领取或收到朋友共享的第一张“朋友的券”后,“优惠券”入口将自动打开,无论是餐饮、购物还是娱乐,都可以在微信“优惠券”中,尝试寻找朋友共享的优惠,抢先体验这一福利。...在“朋友的券”新玩法下,用户在线下门店领取一张优惠券后,朋友也可以在自己的微信“优惠券”中看到该券,并前往门店使用。自己闲置的优惠可能正是朋友的急需,朋友间的共享让每张优惠券都发挥最大价值。...这意味着每一张朋友间共享的优惠券,都会是不限制起用金额、时段、品类、门店等的高质量优惠券。 据实际体验,“朋友的券”会根据位置智能分类,为用户提供丰富而便捷的消费选择。...目前上线“朋友共享的优惠券”的商家有摩登百货、堂会KTV、麻田会、巴黎欧莱雅、美宝莲等。 微信团队表示:期待微信“优惠券”全新的互动式玩法,可以让用户和商户发现更多新乐趣。

    3K80

    设计电商平台优惠券系统

    优惠券的投放方式有多种,本文采用的是活动页送券这种形式。 一、创建优惠券 优惠券是一套规则的组合,创建优惠券是优惠券系统设计的第一步,主要有以下几部分组成:基本信息、优惠类型、使用范围、有效期等。...使用范围 使用优惠券的用户类型、使用优惠券的商品类型、订单类型。...六、优惠券退还 优惠券退还要看具体的场景,一般有以下几种: 用户下单未支付,取消订单,优惠券可退还; 商家在订单未完成的情况下,发起退款操作,优惠券可退还; 用户下单支付后,申请退款,优惠券不退还...以下提供几个统计维度,仅供参考: 领取率:优惠券领取总量/优惠券发放总量; 使用率:优惠券已使用总量/优惠券已领取总量; 优惠总金额:使用该优惠券优惠的总金额; 用券总成交额:使用该优惠券的订单付款总金额...用户领取优惠券后,优惠券处于待使用状态; 成功使用优惠券后状态变为已使用; 未在有效期内使用的优惠券状态变为已过期; 退款的优惠券状态为已取消。 实例设计: ?

    5.1K31

    优惠券功能设计与实现

    ,提升平台活跃率; 转化:下单未支付用户定向发放优惠券,提升付款转化率; 留存:会员专属优惠券、周期性发放优惠券,增强用户粘性; 清库存:临期商品、滞销商品搭配专属优惠券,加速库存周转。...1.2 核心功能需求 基于业务场景,优惠券系统需实现以下核心功能: 优惠券配置:支持多种类型优惠券的创建、编辑、停用; 优惠券发放:支持主动发放、用户领取、活动定向发放等多种模式; 优惠券使用:支持订单抵扣...、使用规则校验、优惠券核销; 优惠券查询:支持用户查询已拥有、已使用、已过期优惠券; 过期处理:支持优惠券过期自动失效及相关通知; 数据统计:支持优惠券发放量、使用率、核销金额等数据统计。...验证依赖调用 verify(couponService, times(1)).getById(couponId); verify(stringRedisTemplate,...; 实现层面:核心功能覆盖配置、领取、使用、过期、统计,代码严格遵循阿里巴巴开发手册,确保可编译运行; 分布式层面:针对超发、并发冲突、数据一致性等核心问题,提供了经过验证的解决方案。

    63710

    抢点麦当劳优惠券?让OpenClaw来!

    第二步:获取MCPTokenToken是连接麦当劳账户的钥匙,获取步骤如下:1.访问官网●打开麦当劳MCP平台2.登录账号●点击右上角「登录」●使用手机号验证登录●⚠️重要:这个手机号就是你的麦当劳会员账号...,帮我查询可用的优惠券(我的虾已经在添加token时帮我查过了)成功标志:###麦麦省优惠券列表:-优惠券标题:10.9元麦辣鸡翅状态:可领取-优惠券标题:13.5元麦乐鸡买一送一状态:可领取-优惠券标题...成功标志:###领券结果总计:7张优惠券成功:7张失败:0张####成功领取的优惠券:-10.9元麦辣鸡翅couponCode:MCD680LK0000TV5P815TC-13.5元麦乐鸡买一送一couponCode...●路径:「我的」→「优惠券」●或首页「会员中心」→「我的卡券」4.使用优惠券●点餐时选择对应优惠券●或到店出示会员码让店员扫码第七步:定时薅羊毛在OpenClaw对话页面,设置定时任务每周定时领取所有可领券...直接在OpenClaw页面询问是否失效Q3:优惠券有效期多久?不同优惠券有效期不同,通常在领取后7-30天。

    1.4K40

    一张优惠券引发的血案

    一个月前—— 整个优惠券中心分为前端和后端,小灰所负责的是后端RPC接口的开发。...接口中包含“查券”和“领券”两个方法,项目大体结构如下图: 两周后—— 小灰:看,这是优惠券查询功能的效果! 小灰:看,这是优惠券领取功能的效果!...三天后—— 小灰原本的优惠券查询接口是这样实现的: 优惠券列表在Redis中以List的形式存储,查询时的逻辑很简单: 1.查询缓存,如果缓存存在,返回结果 2.缓存不存在,查询数据库...2.为什么优惠券列表的信息要使用List类型来存入缓存,而不是把整个列表存为一个很长的Json字符串?这是由于业务需要,使用List在某些情况下更方便对单个优惠券信息进行修改(LSET指令)。...3.为什么优惠券列表的信息不使用Redis的Set或者Hash数据类型来存储,实现自动去重呢?

    70610

    备战 618,用 Python 领取京东优惠券

    又快到一年一度的 618 了,6 月 18 日是京东的店庆日,在这一天会有大量的优惠券,但我们知道有一些优惠券是不太好抢的,本文我们来看一下如何使用 Python 来领取京东优惠券。...首先,我们在浏览器上登录自己的京东账号,接着点击首页的优惠券,如下图所示: 我们点击之后会跳转到优惠券列表页面,我们尝试手动领取一张优惠券,看一下领取时发送的请求,具体操作为:打开开发者工具并选择 Network...,然后点击立即领取按钮,如下图所示: 从图中,我们可以看出领券时发送的请求是 get 方式的,参数都是拼接在 URL 后面的,其中参数 key 就是标识优惠券的。...看一下实现代码: cookie = '自己的cookie' key = '要领取优惠券的key' url = 'https://a.jd.com/indexAjax/getCoupon.html?...,看一下运行结果: jQuery2784014({"code":"999","success":true,"message":"领券成功"}) 此时说明我们已经成功领取优惠券了,我们可以验证一下,比如我们再次运行一下领取的代码

    2K20

    大厂的优惠券系统是如何设计的?

    1 Scenario 场景 电商系统的促销手段(Electronic Commerce Systems): 优惠券 拼团 砍价 老带新 优惠券的种类 满减券 直减券 折扣券 优惠券系统的核心流程 发券...领取方式 用户主动领取 or 自动发放被动领取 用券 作用范围 商品、商户、类目 计算方式 是否互斥、是否达到门槛等 需求拆解 商家侧: 创建优惠券 发送优惠券 用户侧: 领取优惠券...如何防止用户重复领券 3 Storage存储 模型的设计 优惠券系统 Coupon System 模型定义 优惠券系统的难点 3.1 表单设计 券批次(券模板),coupon_batch 指一批优惠券的抽象...、模板,包含优惠券的大部分属性。...如将某批次的优惠券中的一张发送给某个用户,此时优惠券属于用户。 规则 优惠券的使用有规则和条件限制,比如满100减50券,需要达到门槛金额100元才能使用。

    12.1K64
    领券