一、背景
用户在参与公司的促销活动,比如邀请用户下单支付,可以获得虚拟货币。它可以用于解锁学习课程。
商品在定价的时候,需支持虚拟货币,用户在购买该商品的时候,可使用虚拟货币进行支付。
在电商体系中,更常见的是做任务赚到的积分,可以抵扣现金,以购买商品。比如支付宝的积分商城。
本文分析的参考对象是支付宝积分商城,满足公司业务的不同积分需求,梳理出积分系统的要点。
后文我将把积分体系的数模设计以及接口设计分享出来,供需要的参考一二。
二、支付宝的积分商城
1、功能模块
- 积分余额(账户的当前积分值)
- 积分收支明细(每一笔收入的积分和消耗的积分)
- 收入的积分,进一步分为两种途径:做任务赚取到的积分、支付宝付款(主动扫和被扫)奖励的积分。
- 消耗积分,购买积分商城的商品,使用积分抵扣。(商品支持使用积分抵扣)
- 查询积分可兑换的商品列表
收入的积分,除了免费获得外,还有两种途径是通过主动购买和后台手动发放而得。
大家不会去傻傻地去购买支付宝的积分,所以你看不到这个入口,产品大神故无此设计。
但是,作为积分系统,积分本质是一种虚拟货币,比如金币、喵币、金钥匙、淘币等等。
积分,作为促销系统的一种常用手段,拉新用户需要用到积分,活跃老用户更需要用到积分。
所以,大多数公司的业务之外,往往还会有自己的积分商城。
说到虚拟货币,还有更加抽象的概念,比如xx的使用次数、xx的使用时间。
凡此种种,我们需要定义积分类型,表示不同的虚拟货币。
做任务赚取积分,任务类型有以下:
- 签到
- 逛一逛xx页面
- 搜一搜xx
- 滑动浏览xx页面(15秒)
使用积分抵扣商品的支付,有下面两种情况:
- 纯积分方式的购买
- 积分+现金组合方式的购买
纯现金方式的购买,是无法使用积分抵扣的。所以,在给商品定价的时候,价格应该是有两个字段:积分值和现金金额。
2、UI设计
- 积分余额
- 积分记录(收入和支出)
- 任务赚积分
- 消耗积分之纯积分方式
使用269个支付宝积分,购买一个虚拟商品:1元生活缴费红包。
- 消耗积分之积分加现金的组合方式
以商品牙刷为例,它需要消耗999个积分,另外付款1元现金。
它的实现方式,跟前面的类似,也是使用999个积分,换得该商品价值9.9元的优惠券。
也就是说,积分+现金的组合方式也好,纯积分方式也罢,都采用了优惠券作为中介。
我们是在对商品进行标价的时候,就把积分赋给了商品的价格。这一点,与支付宝积分商城所有不同。(通过优惠券来过渡一下,好处是不会改变商品原先的定价,一直是10.9元)
三、设计目标
- 支撑公司所有的商城业务,在营销活动过程中,所衍生出来的多种虚拟货币。
- 积分的发放多种多样,支持灵活的配置。
- 商品的价格除默认的现金方式外,还需支持纯虚拟货币方式、现金加虚拟货币的组合方式。
四、总结
本文重点在积分系统的设计,不涉及商品、订单、支付和促销等模块,限于篇幅,我们将分为上中下三篇来阐述我们的设计思路。
上文也说了,积分在这里不仅仅是支付宝积分商城的“积分”,更侧重于虚拟货币的概念。
所以,我们是把积分赋给商品的价格里,包括积分数points和现金金额price,重复说一遍!!!
@Column(name = "points_type", columnDefinition = "VARCHAR(32) COMMENT '积分类别'")
private String pointsType;
@Column(name = "points", columnDefinition = "INT default 0 COMMENT '积分数'")
private int points;
@Column(name = "price", nullable = false, columnDefinition = "INT default 0 COMMENT '商品价格'")
private int price;
price默认是0元,因为有些商品是0元购的,无需使用优惠券。(当然,后台人员在设置0元商品的时候,需要二次审核)
积分类别pointsType + 积分数points,正是为了兼容多种虚拟货币。
商品本身也可能是虚拟商品,虚拟货币购买虚拟商品,一切尽在虚拟世界中。
下一篇我们将介绍其数模设计。。。