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

一、背景

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

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

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

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

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

二、支付宝的积分商城

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,正是为了兼容多种虚拟货币。

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

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

相关推荐
Yaml41 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~1 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616881 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
aloha_7892 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java2 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~2 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
程序媛小果3 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
小屁孩大帅-杨一凡3 小时前
java后端请求想接收多个对象入参的数据
java·开发语言
java1234_小锋3 小时前
使用 RabbitMQ 有什么好处?
java·开发语言
TangKenny4 小时前
计算网络信号
java·算法·华为