商城积分系统的设计方案(上)-- 需求分析

一、背景

用户在参与公司的促销活动,比如邀请用户下单支付,可以获得虚拟货币。它可以用于解锁学习课程。

商品在定价的时候,需支持虚拟货币,用户在购买该商品的时候,可使用虚拟货币进行支付。

在电商体系中,更常见的是做任务赚到的积分,可以抵扣现金,以购买商品。比如支付宝的积分商城。

本文分析的参考对象是支付宝积分商城,满足公司业务的不同积分需求,梳理出积分系统的要点。

后文我将把积分体系的数模设计以及接口设计分享出来,供需要的参考一二。

二、支付宝的积分商城

1、功能模块

  • 积分余额(账户的当前积分值)
  • 积分收支明细(每一笔收入的积分和消耗的积分)
  • 收入的积分,进一步分为两种途径:做任务赚取到的积分、支付宝付款(主动扫和被扫)奖励的积分。
  • 消耗积分,购买积分商城的商品,使用积分抵扣。(商品支持使用积分抵扣)
  • 查询积分可兑换的商品列表

收入的积分,除了免费获得外,还有两种途径是通过主动购买和后台手动发放而得。

大家不会去傻傻地去购买支付宝的积分,所以你看不到这个入口,产品大神故无此设计。
但是,作为积分系统,积分本质是一种虚拟货币,比如金币、喵币、金钥匙、淘币等等。

积分,作为促销系统的一种常用手段,拉新用户需要用到积分,活跃老用户更需要用到积分。

所以,大多数公司的业务之外,往往还会有自己的积分商城。

说到虚拟货币,还有更加抽象的概念,比如xx的使用次数、xx的使用时间。

凡此种种,我们需要定义积分类型,表示不同的虚拟货币。

做任务赚取积分,任务类型有以下:

  • 签到
  • 逛一逛xx页面
  • 搜一搜xx
  • 滑动浏览xx页面(15秒)

使用积分抵扣商品的支付,有下面两种情况:

  • 纯积分方式的购买
  • 积分+现金组合方式的购买

纯现金方式的购买,是无法使用积分抵扣的。所以,在给商品定价的时候,价格应该是有两个字段:积分值和现金金额。

2、UI设计

  • 积分余额
  • 积分记录(收入和支出)
  • 任务赚积分
  • 消耗积分之纯积分方式

使用269个支付宝积分,购买一个虚拟商品:1元生活缴费红包。

  • 消耗积分之积分加现金的组合方式

以商品牙刷为例,它需要消耗999个积分,另外付款1元现金。

它的实现方式,跟前面的类似,也是使用999个积分,换得该商品价值9.9元的优惠券。

也就是说,积分+现金的组合方式也好,纯积分方式也罢,都采用了优惠券作为中介。

我们是在对商品进行标价的时候,就把积分赋给了商品的价格。这一点,与支付宝积分商城所有不同。(通过优惠券来过渡一下,好处是不会改变商品原先的定价,一直是10.9元)

三、设计目标

  • 支撑公司所有的商城业务,在营销活动过程中,所衍生出来的多种虚拟货币。
  • 积分的发放多种多样,支持灵活的配置。
  • 商品的价格除默认的现金方式外,还需支持纯虚拟货币方式、现金加虚拟货币的组合方式。

四、总结

本文重点在积分系统的设计,不涉及商品、订单、支付和促销等模块,限于篇幅,我们将分为上中下三篇来阐述我们的设计思路。

上文也说了,积分在这里不仅仅是支付宝积分商城的"积分",更侧重于虚拟货币的概念。

所以,我们是把积分赋给商品的价格里,包括积分数points和现金金额price,重复说一遍!!!

java 复制代码
    @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,正是为了兼容多种虚拟货币。

商品本身也可能是虚拟商品,虚拟货币购买虚拟商品,一切尽在虚拟世界中。

下一篇我们将介绍其数模设计。。。

相关推荐
慕y274几秒前
Java学习第十六部分——JUnit框架
java·开发语言·学习
DavidSoCool1 分钟前
RabbitMQ使用topic Exchange实现微服务分组订阅
分布式·微服务·rabbitmq
paishishaba7 分钟前
Maven
java·maven
张人玉36 分钟前
C# 常量与变量
java·算法·c#
Java技术小馆1 小时前
GitDiagram如何让你的GitHub项目可视化
java·后端·面试
Codebee1 小时前
“自举开发“范式:OneCode如何用低代码重构自身工具链
java·人工智能·架构
掘金-我是哪吒1 小时前
分布式微服务系统架构第158集:JavaPlus技术文档平台日更-JVM基础知识
jvm·分布式·微服务·架构·系统架构
程序无bug1 小时前
手写Spring框架
java·后端
程序无bug1 小时前
Spring 面向切面编程AOP 详细讲解
java·前端
全干engineer2 小时前
Spring Boot 实现主表+明细表 Excel 导出(EasyPOI 实战)
java·spring boot·后端·excel·easypoi·excel导出