会员卡状态
开卡时,设置是否激活字段
status 是否更合适:
- 0 未激活
- 1 已激活
- 2 已过期
- 3 已注销
- 4 无剩余次数
卡的有效期类型
- ExpireType int // 有效期类型。1:永久有效;2:购买后 N 天内有效;3:使用后 N 天内有效;4:指定时间段
- ExpireValue string // 根据有效期不同的类型,存储不同的值。2/3 存储数字;4 存储时间段,逗号分隔,例如:2022-11-04,2022-12-04
开卡时,初始化会员卡状态字段
逐个类型判断,设置有效期,及 status 状态字段。
永久有效
- 开卡时 status 为已激活
- 过期时间设置为 "9999-12-31 23:59:59",即 mysql datetime 字段类型的最大值。(raw sql 更简单)
购买后 N 天内有效
- 开卡时 status 为已激活
- 过期时间设置为当前时间 + N 天.(raw sql 更简单)
- 拉取卡信息时,判断是否过期,是否无剩余次数
使用后 N 天内有效
- 开卡时 status 为已激活 (这个不可能是未激活,否则没法用第一次。。。);过期时间设置为 "9999-12-31 23:59:59",因为只要没用,就是一直可以用。。。
- 第一次扣卡时,修正过期时间,过期时间设置为当前时间 + N 天.(raw sql 更简单)
- 拉取卡信息时,判断是否过期,是否无剩余次数
指定时间段
- 开卡时 status 是否激活,取决于当前时间是否大于起始时间
- 过期时间设置为结束时间
- 每次拉取卡信息时,若 status 为未激活,要判断当前时间是否大于起始时间,并设置 status 值;同时判断是否过期,是否无剩余次数
TODO
- [X] 新增会员卡状态字段
- [X] 开卡时,初始化会员卡状态字段
- [X] 拉取卡信息时,计算状态
- 扣卡时的逻辑
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式