package com.bonus.canteen.core.account.domain;

import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;

/**
 * 账户资料对象 acc_info
 * 
 * @author xsheng
 * @date 2025-04-05
 */


@Data
@ToString
public class AccountInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 账户id 主键自增 */
    @Excel(name = "账户id")
    @ApiModelProperty(value = "账户id")
    private Long accountId;

    /** 账户名称 */
    @Excel(name = "账户名称")
    @ApiModelProperty(value = "账户名称")
    private String accountName;

    /** 人员id */
    @Excel(name = "人员id")
    @ApiModelProperty(value = "人员id")
    private Long userId;

    /** 积分 */
    @Excel(name = "积分")
    @ApiModelProperty(value = "积分")
    private Long scope;

    /** 有效截止日期 */
    @ApiModelProperty(value = "有效截止日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效截止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate endDate;

    /** 账户状态 1正常  2冻结  3销户 */
    @Excel(name = "账户状态 1正常  2冻结  3销户")
    @ApiModelProperty(value = "账户状态 1正常  2冻结  3销户")
    private Integer accountStatus;

    /** 支付密码 加密存储 */
    @Excel(name = "支付密码 加密存储")
    @ApiModelProperty(value = "支付密码 加密存储")
    private String payPwd;

    /** 最后刷卡时间 */
    @ApiModelProperty(value = "最后刷卡时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后刷卡时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastCreditTime;

    /** 当餐使用刷卡次数 */
    @Excel(name = "当餐使用刷卡次数")
    @ApiModelProperty(value = "当餐使用刷卡次数")
    private Long currCreditCount;

    /** 当餐使用刷脸次数 */
    @Excel(name = "当餐使用刷脸次数")
    @ApiModelProperty(value = "当餐使用刷脸次数")
    private Long currBrushCount;

    /** 当日使用次数 */
    @Excel(name = "当日使用次数")
    @ApiModelProperty(value = "当日使用次数")
    private Long sameDayCount;

    /** 当月使用次数 */
    @Excel(name = "当月使用次数")
    @ApiModelProperty(value = "当月使用次数")
    private Long sameMonthCount;

    /** 当餐累计金额 */
    @Excel(name = "当餐累计金额")
    @ApiModelProperty(value = "当餐累计金额")
    private Long currCumuAmount;

    /** 当日累计金额 */
    @Excel(name = "当日累计金额")
    @ApiModelProperty(value = "当日累计金额")
    private Long dayCumuAmount;

    /** 当月累计金额 */
    @Excel(name = "当月累计金额")
    @ApiModelProperty(value = "当月累计金额")
    private Long monthSumuAmount;

    /** 个人钱包最低余额限制金额 */
    @Excel(name = "个人钱包最低余额限制金额")
    @ApiModelProperty(value = "个人钱包最低余额限制金额")
    private BigDecimal minWalletBalLimit;

    /** 补贴钱包最低余额限制金额 */
    @Excel(name = "补贴钱包最低余额限制金额")
    @ApiModelProperty(value = "补贴钱包最低余额限制金额")
    private BigDecimal minRedBalLimit;

    /** 红包钱包最低余额限制金额 */
    @Excel(name = "红包钱包最低余额限制金额")
    @ApiModelProperty(value = "红包钱包最低余额限制金额")
    private BigDecimal minSubBalLimit;

    /** 当月累计使用满减次数 */
    @Excel(name = "当月累计使用满减次数")
    @ApiModelProperty(value = "当月累计使用满减次数")
    private Long monthFullReduceAmount;

    /** 最后使用满减时间 */
    @ApiModelProperty(value = "最后使用满减时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后使用满减时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastFullReduceTime;

    /** 上次导入补贴时间 */
    @ApiModelProperty(value = "上次导入补贴时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "上次导入补贴时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastSubTime;

    /** 补贴过期清0时间 */
    @ApiModelProperty(value = "补贴过期清0时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "补贴过期清0时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date subValidityDate;

    /** 上次导入补贴金额 */
    @Excel(name = "上次导入补贴金额")
    @ApiModelProperty(value = "上次导入补贴金额")
    private Long lastSubAmount;

    /** 上次导入个人钱包时间 */
    @ApiModelProperty(value = "上次导入个人钱包时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "上次导入个人钱包时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastWalTime;

    /** 上次导入个人钱包金额 */
    @Excel(name = "上次导入个人钱包金额")
    @ApiModelProperty(value = "上次导入个人钱包金额")
    private Long lastWalAmount;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;
}
