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

2019-06-11 13:35:02 +08:00
 hacker84

场景

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

功能

会员卡种类

|会员卡类型 | 金额 | 赠送金额 | 有效期 | --- | --- | --- | --- | 临时卡 | 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 | 购买金卡

2649 次点击
所在节点    问与答
13 条回复
hacker84
2019-06-11 13:36:18 +08:00
貌似不支持 table
dovme
2019-06-11 13:47:42 +08:00
markdown 了解一下
sujin190
2019-06-11 14:05:44 +08:00
一般来说应该扣余额之前检查卡是否有效就可以了额
余额的问题应该是算不算收入,算就设个定时每天扣款到消费记录就好了,不算,那就不应该扣余额
jingyulong
2019-06-11 14:13:52 +08:00
卡过期冻结余额,重新激活才能使用余额。
hacker84
2019-06-11 14:20:51 +08:00
@dovme 用的就是 markdown 格式的 table, 不支持。
hacker84
2019-06-11 14:23:22 +08:00
@sujin190 你意思是每天要定期更新,所有用户的可用余额吗。
管理员查看 用户列表的时候,每个用户有个余额。这个余额是要读取这个用户的充值记录跟扣款记录,计算出来吗。
delectate
2019-06-11 14:44:58 +08:00
不要计算,否则会很麻烦,数据越多,效率越低。两个表,一个记录明细,一个记录余额,只要代码没 bug,二者不会有任何偏差。
hacker84
2019-06-11 14:49:59 +08:00
@delectate 会员卡过期的时候,余额要减去这部分。 要弄个定时任务,每天看会员卡是否过期吗
lifespy
2019-06-11 14:51:25 +08:00
@hacker84 #8 没必要定时任务,上面都说了,扣款的时候去查看是否有效就行
Mac
2019-06-11 14:53:26 +08:00
这种量级的表随便怎么设计都无所谓,如果是我,我会只设计两个实体表,一个是会员信息包括开卡时间和当前余额,另一个是消费信息,把所有现金业务都统一一下,每次变更都汇总余额写到会员信息那里
hacker84
2019-06-11 15:21:58 +08:00
@Mac 会员卡失效的时候,余额会减少。这个地方,是怎么触发呢,定时任务,用户或者管理员,访问的时候?
Mac
2019-06-11 17:39:16 +08:00
@hacker84 写在业务里啊,先检查时效,过期不执行下面的业务逻辑。
ebingtel
2019-06-11 19:30:10 +08:00
@hacker84 借鉴 redis 的 key 过期策略就行:1 )线程定时轮询 2 ) 用的时候,再查一下……如果不涉及到实时统计的需求,1 )可以不用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572783

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX