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

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.bonus.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import com.bonus.common.core.web.domain.BaseEntity;

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


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

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

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

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

    /** 个人钱包余额 单位分 */
    @Excel(name = "个人钱包余额 单位分")
    @ApiModelProperty(value = "个人钱包余额 单位分")
    private Long walletBal;

    /** 补贴钱包余额 单位分 */
    @Excel(name = "补贴钱包余额 单位分")
    @ApiModelProperty(value = "补贴钱包余额 单位分")
    private Long subsidyBal;

    /** 红包余额 */
    @Excel(name = "红包余额")
    @ApiModelProperty(value = "红包余额")
    private Long redEnvelope;

    /** 冻结账户余额(补贴) */
    @Excel(name = "冻结账户余额(补贴)")
    @ApiModelProperty(value = "冻结账户余额(补贴)")
    private Long subsidyFreezeBal;

    /** 账户余额(个人钱包+补贴钱包) 单位分 */
    @Excel(name = "账户余额(个人钱包+补贴钱包) 单位分")
    @ApiModelProperty(value = "账户余额(个人钱包+补贴钱包) 单位分")
    private Long accBal;

    /** 钱包2 预留 */
    @Excel(name = "钱包2 预留")
    @ApiModelProperty(value = "钱包2 预留")
    private Long balance2;

    /** 水控个人钱包余额 单位分 */
    @Excel(name = "水控个人钱包余额 单位分")
    @ApiModelProperty(value = "水控个人钱包余额 单位分")
    private Long waterWalletBal;

    /** 水控补贴钱包余额 单位分 */
    @Excel(name = "水控补贴钱包余额 单位分")
    @ApiModelProperty(value = "水控补贴钱包余额 单位分")
    private Long waterSubsidyBal;

    /** 冻结个人钱包余额 */
    @Excel(name = "冻结个人钱包余额")
    @ApiModelProperty(value = "冻结个人钱包余额")
    private Long freezeWalletBal;

    /** 冻结补贴钱包余额 */
    @Excel(name = "冻结补贴钱包余额")
    @ApiModelProperty(value = "冻结补贴钱包余额")
    private Long freezeSubsidyBal;

    /** 冻结红包余额 */
    @Excel(name = "冻结红包余额")
    @ApiModelProperty(value = "冻结红包余额")
    private Long freezeRedEnvelope;

    /** 个人钱包透支金额 单位分 */
    @Excel(name = "个人钱包透支金额 单位分")
    @ApiModelProperty(value = "个人钱包透支金额 单位分")
    private Long walletOverBal;

    /** 补贴透支金额 单位分 */
    @Excel(name = "补贴透支金额 单位分")
    @ApiModelProperty(value = "补贴透支金额 单位分")
    private Long subOverBal;

    /** 积分 */
    @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;

    /** 红包过期时间 */
    @ApiModelProperty(value = "红包过期时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "红包过期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate redValidityDate;

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

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

    /** 按日补贴标识 1-已补贴 2-未补贴(针对就餐补贴) */
    @Excel(name = "按日补贴标识 1-已补贴 2-未补贴(针对就餐补贴)")
    @ApiModelProperty(value = "按日补贴标识 1-已补贴 2-未补贴(针对就餐补贴)")
    private Long subDateFlag;

    /** 按月补贴标识 1-已补贴 2-未补贴(针对就餐补贴) */
    @Excel(name = "按月补贴标识 1-已补贴 2-未补贴(针对就餐补贴)")
    @ApiModelProperty(value = "按月补贴标识 1-已补贴 2-未补贴(针对就餐补贴)")
    private Long subMonthFlag;

    /** 账户交易次数 每次对余额的增减时都要递增1 */
    @Excel(name = "账户交易次数 每次对余额的增减时都要递增1")
    @ApiModelProperty(value = "账户交易次数 每次对余额的增减时都要递增1")
    private Long accPayCount;

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

    /** 餐次id */
    @Excel(name = "餐次id")
    @ApiModelProperty(value = "餐次id")
    private Long intervalId;

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

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

    /** 当餐使用预留1次数 */
    @Excel(name = "当餐使用预留1次数")
    @ApiModelProperty(value = "当餐使用预留1次数")
    private Long currUseReserveCount1;

    /** 当餐使用预留2次数 */
    @Excel(name = "当餐使用预留2次数")
    @ApiModelProperty(value = "当餐使用预留2次数")
    private Long currUseReserveCount2;

    /** 当日使用次数 */
    @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;

    /** 乐观锁 */
    @Excel(name = "乐观锁")
    @ApiModelProperty(value = "乐观锁")
    private Long revision;

    /** 预留字段1 */
    @Excel(name = "预留字段1")
    @ApiModelProperty(value = "预留字段1")
    private String reserved1;

    /** 预留字段2 */
    @Excel(name = "预留字段2")
    @ApiModelProperty(value = "预留字段2")
    private String reserved2;

    /** 预留字段3 */
    @Excel(name = "预留字段3")
    @ApiModelProperty(value = "预留字段3")
    private String reserved3;

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