商城积分系统的设计方案(中)-- 数模设计

一、总体设计

在这里插入图片描述

在这里插入图片描述

积分和积分渠道,实现积分种类和发放的动态配置,是设计中的关键之处。

积分订单表是不必要的,视具体业务需求而定。

积分账户和账户收支是核心的两个表。

后面三个表都有一个school_id, 其实就是租户编号,不同的学校或租户,互不共享。

二、积分表points

用于抽象各种虚拟货币,并通过类别来区分不同的货币体系。

包括主键ID、积分类别type、积分名称name、创建时间、更新时间、创建人员、更新人员、备注


CREATE TABLE `points` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `type` varchar(32) NOT NULL COMMENT '积分类别',
  `name` varchar(128) NOT NULL COMMENT '积分名称',
  `created_date` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_date` datetime DEFAULT NULL COMMENT '更新时间',
  `created_by` varchar(64) DEFAULT NULL COMMENT '创建人员',
  `modified_by` varchar(64) DEFAULT NULL COMMENT '更新人员',
  `remark` varchar(128) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_type` (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分表';

我这里新增了三种虚拟货币:

在这里插入图片描述

三、积分渠道表points_channel

通过有效期的时间区间,控制积分的发放,减少风险。

包括主键ID、渠道编号code、渠道名称name、积分类别(渠道和积分的关联关系)、奖励的积分数reward_points、有效期起始时间、有效期截止时间、创建时间、更新时间、创建人员、更新人员、备注

CREATE TABLE `points_channel` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `code` varchar(32) NOT NULL COMMENT '渠道编码',
  `name` varchar(128) NOT NULL COMMENT '渠道名称',
  `points_type` varchar(32) NOT NULL COMMENT '积分类别',
  `reward_points` int(10) DEFAULT 0 COMMENT '奖励的积分数',
  `begin_date` datetime DEFAULT NULL COMMENT '起始时间',
  `end_date` datetime DEFAULT NULL COMMENT '截止时间',
  `created_date` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_date` datetime DEFAULT NULL COMMENT '更新时间',
  `created_by` varchar(64) DEFAULT NULL COMMENT '创建人员',
  `modified_by` varchar(64) DEFAULT NULL COMMENT '更新人员',
  `remark` varchar(128) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_code_points_type` (`code`,`points_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分渠道表,一类积分对应多个渠道';

在这里插入图片描述
比如,邀请他人购买某商品,即可获得虚拟货币类型是key的积分值是4。
再比如,某活动闯关成功,即可获得1个积分。

四、积分账户表points_account

包括主键ID、用户ID、积分类别points_type、积分数points、创建时间、更新时间

CREATE TABLE `points_account` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` int(10) DEFAULT NULL COMMENT '学校ID',
  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  `points_type` varchar(32) NOT NULL COMMENT '积分类别',
  `points` int(10) DEFAULT 0 COMMENT '积分数',
  `created_date` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_date` datetime DEFAULT NULL COMMENT '更新时间',
  `version` bigint(20) DEFAULT 0 COMMENT '版本号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分账户表';

这里多了一个学校ID维度,一个用户可能在多个学校开有账户。

如果你的业务系统没有这么复杂,可去掉该字段。

学校ID,可以进一步抽象为租户编号,隔离性和抽象性更好。意思是,你在不同租户的账户不一样。

在这里插入图片描述
这里的余额,就是可用余额,我们没有去细分可用余额和冻结余额。

没有冻结的概念,大大减少了复杂度。

用户在获得积分的时候,增加至账户的余额;同理,在消耗积分的时候,减损的也是账户的余额。

有一种情况,需要考虑的,积分本身的退订。又可以分为两种情况:

  • 通过现金方式购买,获得的积分,用户需要退款。(因为积分本身是虚拟商品,大多数平台是不允许退的。 一旦需要退,则应该视积分的使用情况而定,全额退还是部分退,积分已经消耗量是其重要的依据)

  • 用户使用积分抵扣购买商品,属于消耗积分,用户需要退该订单。(用户审核退单,同意后,自动发放等量的积分给用户)

五、积分账户的流水表points_account_flow

包括主键ID、积分类别、积分数、类型(增/减)、用户ID、积分渠道编号、积分渠道名称、orderNo、创建时间、更新时间


CREATE TABLE `points_account_flow` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` int(10) DEFAULT NULL COMMENT '学校ID',
  `type` smallint(1) DEFAULT 0 COMMENT '类型:0-增加;1-减少',
  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  `points_type` varchar(32) NOT NULL COMMENT '积分类别',
  `points` int(10) DEFAULT 0 COMMENT '积分数',
  `channel_code` varchar(32) DEFAULT NULL COMMENT '渠道编码',
  `channel_name` varchar(128) DEFAULT NULL COMMENT '渠道名称',
  `order_no` varchar(32) DEFAULT NULL COMMENT '订单号',
  `created_date` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_date` datetime DEFAULT NULL COMMENT '更新时间',
  `created_by` varchar(64) DEFAULT NULL COMMENT '创建人员',
  `modified_by` varchar(64) DEFAULT NULL COMMENT '更新人员',
  `remark` varchar(128) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分账户的流水表';

当type类型是0-增加的时候,channel_code和channel_name不能为空;
当type类型是1-减少的时候,order_no不能为空。这里的order_no是业务订单的订单号,记录积分消耗在哪里。

六、积分订单(区别于业务订单)

用户使用现金购买积分(虚拟货币),准确地说,应该叫做积分订单扩展表,用于退款和结算的依据。

记录每个订单的积分数、已使用数、可用、已退、已结算和可结算等。注意:已结算的积分不能退回。(当然积分数不变,其余的都可能会变化)

  • 每次积分的抵扣,更新已使用、可用积分、可结算积分。优先抵扣最早的积分订单的可用积分。也就是说,可能会抵扣多个积分订单中的可用积分。
  • 积分订单退款,只能退款可用的积分,对于已使用的积分是不能退的。
  • 每次结算,把可结算积分加至已结算积分

在这里插入图片描述

下面是总结的几个等式:

  • 积分数=可用积分数+已退积分数+已使用积分数。
  • 积分数=可用积分数+已退积分数+可结算积分数+已结算积分数
  • 已使用积分数=可结算积分数+已结算积分数

CREATE TABLE `points_order` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `order_no` varchar(32) NOT NULL COMMENT '订单号',
  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  `school_id` int(10) NOT NULL COMMENT '学校ID',
  `points_type` varchar(32) NOT NULL COMMENT '积分类别',
  `points` int(10) DEFAULT 0 COMMENT '积分数',
  `used_points` int(10) DEFAULT 0 COMMENT '已使用积分数',
  `available_points` int(10) DEFAULT 0 COMMENT '可用积分数',
  `refunded_points` int(10) DEFAULT 0 COMMENT '已退积分数',
  `settled_points` int(10) DEFAULT 0 COMMENT '已结算积分数',
  `available_settle_points` int(10) DEFAULT 0 COMMENT '可结算积分数',
  `created_date` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_date` datetime DEFAULT NULL COMMENT '更新时间',
  `version` bigint(20) DEFAULT 0 COMMENT '版本号',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_order_no` (`order_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分结算表';

如果你的业务不支持积分订单的退款,更无需结算功能,本表无需引入。

最后说一下,业务订单中涉及积分的退款,视这部分的积分已使用,本来是无法逆向退款。
这里采取一个折中的方案,手动给用户发放等量的积分,比如业务订单使用了999个积分,当退款成功时,后台给用户发放999个积分。

说明文件 ============================= 软件:极限网上网店系统(eWebShop) 版本:V2006.03B060101 目录说明 ============================= DLL : 极限组件安装目录 eWebShop : 程序目录 readme.txt : 本说明文件 安装步骤 ============================= 1、修改config.asp文件的参数设定。各参数详见文件的注释。 a. 修改数据库文件名及路径。注意:为保证安全,一定要修改数据库的文件名和路径。 b. 修改序列号信息。如果您购买了商业版本,我们将提供给您相应版本的序列号,请把序列号信息写在此文件。 2、在服务器上运行DLL文件夹的“注册组件.bat”文件,进行组件的注册。 3、安装完成! 使用 ============================= 1、访问前台可以用以下地址: 本机:http://localhost/eWebShop/ 站点:http://www.你的域名.com/ 2、访问后台可以用以下地址: 本机:http://localhost/eWebShop/admin.asp 站点:http://www.你的域名.com/admin.asp 默认登录用户:admin 默认登录密码:admin 3、初次使用后台功能时一般的使用顺序如下: 修改密码 -> 系统设置 -> 分类管理 -> 新增商品 -> 商品管理 卸载 ============================= 如果您不再使用本系统,请按以下步骤进行卸载: 1、运行DLL文件夹的“卸载组件.bat”文件 2、删除eWebShop文件夹 3、卸载完成! 功能特点 ============================= eWebShop网上商店系统是一套能够适合不同类型商品、超强灵活的多功能在线商店系统,为您提供了一个完整的在线开店解决方案。eWebShop网上商店系统除了拥有一般网上商店系统所具有的所有功能,还拥有着其它网店系统没有的许多超强功能。 1、最强模板定制: 基于eWebSoft始创的超强模板构架,您的系统界面布局几乎可以完全个性化定制。不再是简单的颜色或图片变化,真正的界面与数据的分离,完全超越了所有市面上的其它系统系统自带多套基于此架构的模板方案,您只需轻轻一点,即可完成整个系统界面的完全变化。定制自己网站的界面,我的网站效果我做主。比较看看,有什么与众不同? 2、点卡商品: 支持非实体商品的销售,具有数字商品卡号入库加密存储、自动计算库存、直接在线支付订单、支付成功后直接显示+邮件发货、一全套的数字商品销售功能。 3、组合商品: 特有的组合商品功能,使您不再要为次要属性不同的相同商品管理及销售订单而烦恼。如您开办了一个服装商店,一种服装有不同的颜色和不同的尺码等,您不必再在商品管理增加红色西服,兰色西服等多个商品。您只需增加一个西服的商品,在商品属性选择红色和兰色,则用户在下单时系统会要求用户选择一种颜色,并把此信息存入订单,店主在查看订单时就可以根据此信息来直接发货了,而无需再联系顾客了解确认一件件商品的附加属性,即容易出错,也浪费了大量的时间。 4、套餐商品: 特有的套餐商品功能,为您提供了一种直接有效促销手段。如您有一个软件商品,又有一个虚拟主机商品,您是否想增加一个软件+主机的套餐进行促销呢?一个套餐商品可以包含无限个子商品,可以独立定价,独立管理,套餐商品还能包含组合商品。 5、超强扩展属性: 基于分类的扩展属性,使您可以基于一套系统建立多样的属性完全不同的商店系统。采用eWebShop可以建立,如:网上花店、网上书店、网上点卡店、网上成人用品店、网上玩具店、网上书店、网上手机店、网上数码产品销售店、网上化妆品店、网上服装店、网上保健品店、网上玩具店、网上车模店、网上音像制品店等。您也可以在一个网站包含所有上面的栏目。您可以在书店分类栏目加入ISBN、图书作者、精装简装等图书特有的属性,可以在服装店分类栏目加入颜色、尺码等服装特有的属性。完全定制的属性,使您可以建立完全不同的网店。并且支持扩展属性的高级搜索,使您可以在书店使用ISBN进行搜索,在服装店使用颜色进行搜索。 6、多种支付网关: 内置支付宝、西部支付、首信、IPAY、NPS、IPS、网银、云网、快钱、AllPay等十多种主要的在线支付接口,只需选择一个支付接口填入资料即可使用。也允许同时使用多个不同支付接口。大部分接口在线支付后可直接入会员帐户或直接支付订单。您还可以为每种在线支付接口设置一个费率,让顾客来支付使用在线支付平台的手续费。 7、虚拟币功能: 虚拟币的有效使用是您留住顾客的一种有效途径。您是否想用买100送10的促销方式呢?您是否想长期留住客户呢?强大的虚拟币功能,您可以设置是否开启此功能,可以为每个商品设置赚送的虚拟币数量及是否允许使用虚拟币购物。还有生日送币,注册送币,手动送币,虚拟币日志等功能。同时,利用虚拟币功能,增加积分转换接口,可以大大提高论坛社区的人气,创建友好购物氛围。 8、预付款心: 有了预付款心,您的代理客户或长期客户不再需要为每个订单支付相应款项,可以一次性预存足额的款项,以后只需下单收货即可,不再需要每次进入在线支付或跑银行汇款了。顾客给账户充值,可以通过在线支付的方式提交预付款直接生效,或银行汇款转账等离线方式提交预付款由店主审核生效。顾客下订单可以选择从预付款直接扣、进入在线平台支付、汇款转账支付。 9、灵活的商品定价: 基于会员等级折扣定价功能,使您可以灵活完全的控制每个商品对应每个顾客的价格。您可以增加无限个会员等级,如:金牌会员,银牌会员,一级代理,二级代理等,可以设置每个会员等级的默认商品折扣及每次订单的最低消费金额,您也可以设置每个商品对应各等级的会员折扣。增强的三种价格模式:市场价格、商城价格、会员价格,使您的商店价格体系得到完全的控制。 10、赠品: 特有的赠品促销在网店上的应用。您是否想过为您的网店增加一元商品,是否想打出满100送水杯,满300送背包?所有这些都可以通过赠品管理得已实现。 11、自动计算附加费用: 支付手续费,配送费用可以根据需要随意的设定。可自定义选择使用的在线支付平台及需要的支付手续费费率。可自定义配送方式,设置每个配送方式的起点运费、起点重量和单价运费,结合商品的重量自动计算订单的配送费用。实现整个订单所有相关费用的完全自动化。 12、安全保证: 基于eWebSoft团队多年专业WEB开发的经验,从参数、结构、规范、设计上都为系统的安全提供第一位的保证。所有密码使用MD5不可逆加密,所有参数进行服务器端的有效性检验,重要操作都有日志,涉及钱的数据都进行流水账处理(如日志删除并不影响余额),备份关联处理(如商品删除了,原来有订购此商品的订单可有效查看),等等。同时对于常见的SQL注入问题,以及流行的上传漏洞攻击等问题都作了完善的处理。所有技术上、设计上的处理都为整个系统的安全做好了充分有效的保障。 13、非注册会员直接下单: 顾客无需注册成为会员就可以下单购物,既使会员具有丰富的会员功能,也使普通顾客购物直接、简单。 14、商品多重归类: 使用商品归类功能,可将一个商品归于多个类别,如某商品既是数码产品,又适合作为礼品。 15、库存报警: 通过此功能,店主可以及时了解缺货商品,并相应做出补货处理。 16、商品批量导入: 使用CSV标准通用文件格式,可以快速成批导入商品数据,快捷方便! 17、销售统计报: 实时的销售统计报,掌握销售业绩,有助分析存在问题。 18、无限级分类: eWebShop支持无限级的商品分类,您可以自由的在后台进行设置,除了常用的分类增、删、改功能,附有便捷的分类排序、复位、移动等功能。 19、可视内容编辑: 采用国内最好的,eWebSoft团队自主开发的eWebEditor在线HTML编辑器,您可以更好的直接在线可视编辑发布HTML的文章内容。 20、搜索引擎优化: 特别针对各大搜索引擎进行优化,有助于网店的搜索引擎收录。 21、实用的辅助功能: 动态缓存:把常用的不经常更新的内容自动加入缓存,大大提高系统的效率。 自动关键字匹配:可以设置关键字库,自动匹配相关商品。 上传文件管理:具有上传文件查看、智能清理垃圾文件、清空等功能。 广告管理:支持图片、文字、Flash形式的广告位在线管理功能。 权限管理:支持多人控管模式,严格的权限审核制度。 公告管理:发布及管理站点最新动态,通知等公告信息。 友情链接:支持图片和文字链接,具有排序功能。 帮助心:可以根据自己的需要增加任意多个帮助项目。如:常见问题,关于我们,购物流程等。 留言反馈:支持店主回复,允许隐藏留言内容,使得只有发布人与管理员可以看见。 商品评论:顾客可以对商品进行评论,管理员可以对评论进行管理。 在线消息:会员可以给管理员发消息,管理员可以给单个、多个会员、会员组、所有会员发消息。 收藏夹:会员可以把意的商品加入收藏夹,方便下次浏览。管理员可对收藏夹进行管理。 管理员登录日志:方便查看其它管理员的工作情况,并检查账号是否有被它人登录,关注安全。 使用特点 ============================= eWebShop网上商店系统不仅在功能上完整强大,而且在界面、操作、文档等使用上也紧扣用户的需求。做到功能强大,又不失简单易用。 1、超强营销: 能为使用者提供各种有利的营销手段,实现网站经营者的营销策略,加强促销手段方式、会员等级折扣、虚拟货币、预付款、组合商品、套餐商品、点卡商品、赠品、定单的管理设置,实现访客下单等功能。最终为经营者带来收益。 2、使用简单: 您不需要懂得专业的网络计算机知识,会打字就行。极限网上商店系统,属于全自动化、智能的全在线方式管理、维护、更新的网上商店系统。用这套网店系统,建设网上商店,将不是网络专家的专利,通过强大的管理后台,您就能非常方便的建设、管理、维护、更新您自己的网上商店。 3、操作简便: 软件操作界面由专业设计人员设计,人性化的布局,界面规范,操作简捷。 4、完整帮助: 可随时查看当前功能帮助。提供丰富翔实的帮助文档和系统安装使用文档。 5、标准界面: 采用eWebSoft标准后台管理界面,美观专业,大量的相关查询定位,导航明了,功能统一,尽量让您少一次点击。 6、完整完善: 前台所有功能在后台都可以得到很好的设置和管理。除拥有商店模块的主体功能外,还公告、留言、评论等扩展模块。达到真正完整的网上购物平台系统。 发布日期 ============================= 2006年01月01日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天草二十六_简村人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值