package com.sonic.lion.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sonic.lion.enums.MemberType;
import lombok.*;

import java.time.LocalDateTime;

/**
 * 用户订阅表
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "user_subscription", autoResultMap = true)
public class UserSubscription {
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 所属平台
     */
    private Platform platform;
    /**
     * 用户Id
     */
    private Long userId;
    /**
     * 订阅ID 订阅的唯一标识
     */
    private String subscriptionId;
    /**
     * 产品ID 或者说 订阅计划ID
     */
    private String productId;

    /**
     * 会员类型
     */
    private MemberType memberType;

    /**
     * 价格周期
     */
    private AppStoreProduct.PERIOD priceType;

    /**
     * 用于google 续期的token
     */
    private String purchaseToken;


    private Long refundTimeMs;

    /**
     * 购买时间
     */
    private LocalDateTime  purchaseTime;

    /**
     * 过期时间
     */
    private LocalDateTime expTime;

    /**
     * 自动续期状态
     */
    private Boolean autoRenewStatus;
    /**
     * 订阅状态
     */
    private String status;

    /**
     * IP 地址 用于发生争议之后的退款证据
     */
    private String ip;

    /**
     * 是否已经提醒过。
     */
    private Boolean remind;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    /**
     * 编辑时间
     */
    private LocalDateTime editTime;


    @Getter
    public enum Platform {
        STRIPE("web"),
        APPLE("iOS"),
        GOOGLE("android"),
        ;
        private String desc;

        Platform(String desc) {
            this.desc = desc;
        }
    }

}
