V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hacker84
V2EX  ›  问与答

请教个会员卡,数据库设计的问题

  •  
  •   hacker84 · 2019-06-11 13:35:02 +08:00 · 2839 次点击
    这是一个创建于 2022 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景

    某洗浴中心会员卡充值,扣款

    功能

    • 会员卡有有效期
    • 可以查看总余额 ,如果有过期的,余额要及时扣除
    • 可以查看消费记录
    • 管理员可以对任意一张卡扣款,也可以不选择卡,直接扣钱

    会员卡种类

    |会员卡类型 | 金额 | 赠送金额 | 有效期 | --- | --- | --- | --- | 临时卡 | 500 0 | 1 个月 银卡| 3000 |300| 6 个月 金卡 |10000| 1500 |12 个月

    会员卡购买记录

    |姓名| 类型| 到期时间| --- | --- | --- | --- | 李四|临时卡 |2019-07-10 张三| 金卡 |2020-08-08 vv |银卡 |2019-12-02

    余额

    姓名 | 剩余额度 --- | --- 准准 | 12000 贱贱 | 5000 小明 | 3500

    消费记录

    姓名 | 金额 | 原因 --- | --- |--- 小明 | -3000 | 大保健 小明 | -3500 | 大保健 小明 | +12000 | 购买金卡

    • 现在账户余额不好处理,卡可能随时过期。还有扣款记录这些应该如何处理
    13 条回复    2019-06-11 19:30:10 +08:00
    hacker84
        1
    hacker84  
    OP
       2019-06-11 13:36:18 +08:00
    貌似不支持 table
    dovme
        2
    dovme  
       2019-06-11 13:47:42 +08:00
    markdown 了解一下
    sujin190
        3
    sujin190  
       2019-06-11 14:05:44 +08:00
    一般来说应该扣余额之前检查卡是否有效就可以了额
    余额的问题应该是算不算收入,算就设个定时每天扣款到消费记录就好了,不算,那就不应该扣余额
    jingyulong
        4
    jingyulong  
       2019-06-11 14:13:52 +08:00 via iPhone
    卡过期冻结余额,重新激活才能使用余额。
    hacker84
        5
    hacker84  
    OP
       2019-06-11 14:20:51 +08:00
    @dovme 用的就是 markdown 格式的 table, 不支持。
    hacker84
        6
    hacker84  
    OP
       2019-06-11 14:23:22 +08:00
    @sujin190 你意思是每天要定期更新,所有用户的可用余额吗。
    管理员查看 用户列表的时候,每个用户有个余额。这个余额是要读取这个用户的充值记录跟扣款记录,计算出来吗。
    delectate
        7
    delectate  
       2019-06-11 14:44:58 +08:00
    不要计算,否则会很麻烦,数据越多,效率越低。两个表,一个记录明细,一个记录余额,只要代码没 bug,二者不会有任何偏差。
    hacker84
        8
    hacker84  
    OP
       2019-06-11 14:49:59 +08:00
    @delectate 会员卡过期的时候,余额要减去这部分。 要弄个定时任务,每天看会员卡是否过期吗
    lifespy
        9
    lifespy  
       2019-06-11 14:51:25 +08:00
    @hacker84 #8 没必要定时任务,上面都说了,扣款的时候去查看是否有效就行
    Mac
        10
    Mac  
       2019-06-11 14:53:26 +08:00 via Android
    这种量级的表随便怎么设计都无所谓,如果是我,我会只设计两个实体表,一个是会员信息包括开卡时间和当前余额,另一个是消费信息,把所有现金业务都统一一下,每次变更都汇总余额写到会员信息那里
    hacker84
        11
    hacker84  
    OP
       2019-06-11 15:21:58 +08:00
    @Mac 会员卡失效的时候,余额会减少。这个地方,是怎么触发呢,定时任务,用户或者管理员,访问的时候?
    Mac
        12
    Mac  
       2019-06-11 17:39:16 +08:00 via Android
    @hacker84 写在业务里啊,先检查时效,过期不执行下面的业务逻辑。
    ebingtel
        13
    ebingtel  
       2019-06-11 19:30:10 +08:00
    @hacker84 借鉴 redis 的 key 过期策略就行:1 )线程定时轮询 2 ) 用的时候,再查一下……如果不涉及到实时统计的需求,1 )可以不用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1534 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:04 · PVG 01:04 · LAX 09:04 · JFK 12:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.