package com.ruoyi.member.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.*;
import com.ruoyi.common.core.domain.DlBaseEntity;
import org.apache.ibatis.type.JdbcType;

import java.util.Date;

/**
 * 会员权益(定时任务重置剩余值)，用户id、会员卡id、权益对应1对象 dl_member_rights
 * 
 * @author pqz
 * @date 2025-03-17
 */
@TableName("dl_member_rights")
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberRights
{
    private static final long serialVersionUID = 1L;

    /** 唯一主键 */
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;

    /** 用户id */
    @Excel(name = "用户id")
    private Long userId;

    /** 用户类型（数据字典：dl_user_type） */
    @Excel(name = "用户类型", readConverterExp = "数=据字典：dl_user_type")
    private String userType;

    /** 会员卡id */
    @Excel(name = "会员卡id")
    private String cardId;

    /** 权益编码 */
    @Excel(name = "权益编码")
    private String rightsCode;

    /** 权益类型（数据字典：dl_rights_type） */
    @Excel(name = "权益类型", readConverterExp = "数=据字典：dl_rights_type")
    private String rightsType;

    /** 权益限制周期(数据字典：dl_rights_cycle) */
    @Excel(name = "权益限制周期(数据字典：dl_rights_cycle)")
    private String rightsCycle;

    /** 权益值(权益类型为是否时：0代表不支持，1代表支持；权益类型为数量限制时：0代表不限制，其他数字代表具体限制数量) */
    @Excel(name = "权益值(权益类型为是否时：0代表不支持，1代表支持；权益类型为数量限制时：0代表不限制，其他数字代表具体限制数量)")
    private Integer rightsValue;

    /** 剩余值 */
    @Excel(name = "剩余值")
    private Integer remaining;

    /** 创建者 */
    @TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR)
    private String creator;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    @TableField(fill = FieldFill.INSERT_UPDATE, jdbcType = JdbcType.VARCHAR)
    private String updater;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

}
