门店会员卡过期时间管理

文章目录

    会员卡状态

    开卡时,设置是否激活字段

    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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式