会员充值-》解决方案之一

peipeiyu 2018-01-09 原文

会员充值-》解决方案之一

会员33元一个月,
1,一次性充值3个月会员送3个月普通代理,
2,一次性充值6个月会员送6个月白金代理。
3,一次性充值1年会员送一年钻石代理。
普通代理:拉一个人注册能获得5元奖励,拉一个人充值普通代理能得到20元奖励,拉一个人充值白金代理能获得30元奖励,拉一个人来充值钻石代理能获得40元奖励,
白金代理:拉一个人来注册能获得10元奖励,拉一个人充值普通代理能得到20元奖励,拉一个人充值白金代理能获得40元奖励,拉一个人来充值钻石代理能获得60元奖励,
钻石代理:拉一个人来注册能获得20元奖励,拉一个人充值普通代理能得到20元奖励,拉一个人充值白金代理能获得40元奖励,拉一个人来充值钻石代理能获得80元奖励,

最终效果提前展示如下:

以上是需求,分析后知道这个充值会员分等级。解决问题前我的分析:

会员类型:1:普通会员(1-2):2:普通代理(3-5):3:白金代理(6-11):4:钻石代理(>=12)
单位:月份
原则:先大后小

假如先充值一个月会员(普通会员),后再充值六个月(白金代理),实际的白金代理时间是六个月,普通会员一个月,正常情况,先享受六个月白金代理(保留普通会员的剩余时间),再享受一个月普通会员

假如先充值了三个月(普通代理),后再充值了六个月(白金代理),实际的白金代理时间是六个月,普通代理三个月,正常情况,先享受六个月白金代理(保留普通会员的剩余时间),再享受三个月普通代理

假设四种类型不分顺序,在一个月内不同时间出现,而且四种类型还有可能重复出现,问会员各个类型时间到期时由高类型向低类型切换,应该记录哪些内容?

要求:时间和类型无缝切换,改变会员的类型(理想状态是一秒不差)

其中涉及的数据表:

1,用户表:记录和展示用户的会员时间和类型
2,充值记录表:记录充值的记录
3,剩余时间记录表:用于记录用户的会员剩余时间,各个时间段对应不同的类型(核心表)
4,支付记录表:记录支付记录

解决这个问题,我的核心思想是:

一个时间段对应一条记录一个类型,始终判断第一条记录是否是当前的会员类型,如果是,什么也不做,如果不是,就改变会员类型为第一条记录的类型。如果没有记录则表明,会员期限已过,消除会员状态和类型等操作。

1:先保存充值记录,并记录在表(3),表3保存的字段有:剩余时间,开始时间,结束时间,会员类型

剩余时间:保存当前状态下会员持续的秒数

开始时间:暂且保存为当前的时间戳

结束时间:开始时间+剩余时间

2:查询会员结束时间大于现在时间的所有记录,按照会员类型由大到小排序,在这里分为两种情况,第一种是只有两条数据的情况,第二种是大于两条记录的情况

3:当是第一种情况时,判断第一条是否是新插入的数据,如果是立即结束当前的会员记录,把结束时间改为当前时间,在创建一条新,类型和结束的这条记录类型一样,开始时间为第一条数据的结束时间,结束时间为总的结束时间;如果不是新插入的数据,只用改变新插入的数据的开始时间为第一条的结束时间

4:当是第二种情况时,判断三种情况,新插入的数据是否是在第一条、中间位置,最后一条,前两种情况时,后边的数据的开始时间都是上一条数据的结束时间,结束时间都是开始时间+剩余时间(此处要用到递归)

发表于 2018-01-09 21:04 骅骝漫轻舞01 阅读() 评论() 编辑 收藏

 

版权声明:本文为peipeiyu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/peipeiyu/p/8253670.html

会员充值-》解决方案之一的更多相关文章

  1. Jeecg踩坑不完全指南

    公司用了这个叫做jeecg的快速开发框架,我不知道有多少公司在用这个框架,园子里有的可以吱一声。个人觉得这框架 […]...

  2. html5大文件上传解决方案(500M以上)

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框...

  3. 2019年,指引技术方向,引导从业方向

    2019年,指引技术方向,引导从业方向 Posted on 2018-12-12 14:02 愚见未来 阅读( […]...

  4. 【C】EM卡韦根32/24格式卡号转换的实现

    写在前面 第八周实验报告的deadline马上就要到了,大家都在奋笔疾书。这次的实验报告中有一个十分秃然的任务 […]...

  5. C#单个去水印软件 - 解决方案

    单个去水印,去水印思路,去水印软件 就像xiaotie 说的,去水印软件是个很邪恶的东西。刚开始碰到这个问题的 […]...

  6. 用U盘安装 win7 ”找不到任何设备驱动程序“ 和 系统出现 windows boot manager 解决方案

    用U盘安装win7系统时,系统交替的出现了如下的2个错误,捣鼓了半天,记录下来:   问题1描述: 安装win […]...

  7. iOS全埋点解决方案-UITableView和UICollectionView点击事件

    前言在 $AppClick 事件采集中,还有两个比较特殊的控件:UITableView•UICollectionView这两个控件的点击事件,一般指的是点击 UITableViewCell 和 UICollectionViewCell...

  8. “人工智能与物联网”,走在科技最前沿!!!

    “人工智能与物联网”,走在科技最前沿!!! Posted on 2018-10-18 12:26 愚见未来 阅 […]...

随机推荐

  1. 51ak带你看MYSQL5.7源码3:修改代码实现你的第一个Mysql版本 – 51ak

    51ak带你看MYSQL5.7源码3:修改代码实现你的第一个Mysql版本 经过开发和测试环境部署 现在到了我 […]...

  2. 点击获取验证码,开始倒计时

    var countdown=60;$(".reset_getcode").click(function () […]...

  3. K8S入门系列之集群二进制部署–>master篇(二)

    组件版本和配置策略 组件版本 Kubernetes 1.16.2 Docker 19.03-ce Etcd 3 […]...

  4. 图像边缘检测 – 啊哈彭

    图像边缘检测 图像边缘检测 1、原理 图像的边缘是图像的基本特征,边缘点是灰度阶跃变化的像素点,即灰度值的导数 […]...

  5. 基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍

    LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方 […]...

  6. JSP视频

    web基础 http://pan.baidu.com/s/1Fy7nV  ...

  7. 微信小程序登录

    微信登录一般流程 App({ onLaunch: function () { wx.login({ succe […]...

  8. VPS性能测试(3):磁盘IO读写速度、SSD硬盘速度测试

    VPS性能测试(3):磁盘IO读写速度、SSD硬盘速度测试 1、磁盘IO,即输入/输出(Input/Outpu […]...

展开目录

目录导航