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


    一、背景

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

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

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

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

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

    二、支付宝的积分商城

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

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

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

  • 相关阅读:
    20个Python实用小技巧!来自十年老程序员的推荐~
    MySQL8.0修改mysql允许远程连接
    RISC-V架构——物理内存属性和物理内存保护
    Java版本spring cloud + spring boot企业电子招投标系统源代码
    如何在服务器中创建python虚拟环境
    YOLOv5代码解读[03] utils/loss.py文件解析
    [附源码]计算机毕业设计springboot电影院网上售票系统
    UV 裂解的生物素-PEG2-叠氮|CAS:1192802-98-4生物素接头
    基于知名微服务框架go-micro开发gRPC应用程序
    【软件与系统安全】堆溢出
  • 原文地址:https://blog.csdn.net/zhuganlai168/article/details/140003906