zoukankan      html  css  js  c++  java
  • 会员充值-》解决方案之一

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

    理想效果,例如:

    现在是白金    开始时间10.17 结束时间1.17 持续时间3个月

    记录:充 钻石 开始时间1.10 结束时间5.17 持续时间4个月
    记录:新建数据 白金 开始时间5.17 结束时间5.24 持续时间7天

    修改:白金 开始时间10.17 结束时间1.17 持续时间3个月-》改结束时间为1.10,(持续时间)时间2个月23天

    最终效果提前展示如下:

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

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

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

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

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

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

    其中涉及的数据表:

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

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

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

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

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

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

    结束时间:开始时间+会员持续时间

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

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

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

  • 相关阅读:
    (转)一次棘手的rootvg更换硬盘处理过程
    mysql:服务器错误代码
    (转)运行跟踪格式化程序
    (转)InnoDB存储引擎MVCC实现原理
    (转)漫谈JVM
    (转)mysql、innodb和加锁分析
    (转)DB2和 Oracle的并发控制(锁)比较
    (转)Mysql主从复制搭建及详解
    BigDecimal 、BigInteger
    Date、DateFormat、SimpleDateFormat、Calendar
  • 原文地址:https://www.cnblogs.com/peipeiyu/p/8253670.html
Copyright © 2011-2022 走看看