package com.ruoyi.dz.domain;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 学习卡对象 dz_cards
 *
 * @author ruoyi
 * @date 2025-09-12
 */
public class DzCards extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    private Long cardId;

    private List<Long> cardIds;

    /** 账号 */
    @Excel(name = "账号")
    private String cardNo;

    private String begin;
    private String end;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private String assignTimeBegin;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String assignTimeEnd;

    /** 初始密码 */
    @Excel(name = "初始密码")
    private String password;

    /** 0电子卡（0开头，8位），6vip卡，8测试卡（6位），9体验卡 */
    @Excel(name = "0电子卡", readConverterExp = "0=开头，8位")
    private Integer type;

    /** 0未开卡,1已开卡,2已激活, */
    @Excel(name = "0未开卡,30已激活,")
    private Integer status;

    /** 0未分配,1已分配 */
    @Excel(name = "0未分配,10已分配,30关闭")
    private Integer distributeStatus;

    /** 9已过期,10已关卡,11已失效 */
    @Excel(name = "9已过期,10已关卡,11已失效")
    private Integer timeStatus;

    /** 0=未缴费,1=已缴费,2=已退费 */
    @Excel(name = "0=未缴费,1=已缴费,2=已退费")
    private Integer payStatus;

    /** 是否结算(0:否,1:是) */
    @Excel(name = "是否结算(0:否,1:是)")
    private Integer isSettlement;

    /** 机构ID */
    @Excel(name = "机构ID")
    private Long deptId;

    /** 一级代理商ID */
    @Excel(name = "一级代理商ID")
    private Long agentId;

    /** 末级代理商ID */
    @Excel(name = "末级代理商ID")
    private Long leafAgentId;

    /** 安排校区 */
    @Excel(name = "安排校区")
    private Long campusId;
    /** 校区班级ID */
    @Excel(name = "校区班级ID")
    private Long campusClassId;

    @Excel(name = "分配考生省份")
    private String assignLocation;

    @Excel(name = "分配考生类型")
    private String assignExamType;

    @Excel(name = "注册考生类型")
    private String examType;

    /** 分配学校 */
    @Excel(name = "分配学校")
    private Long assignSchoolId;

    /** 校区id */
    @Excel(name = "校区id")
    private Long schoolId;

    /** 校区班级ID */
    @Excel(name = "校区班级ID")
    private Long classId;
    private Long teacherId;
    /** 班级/入学年份 */
    @Excel(name = "班级/入学年份")
    private Integer year;

    /** 高考年份 */
    @Excel(name = "高考年份")
    private Integer endYear;

    /** 开卡ID */
    @Excel(name = "开卡ID")
    private Long openId;

    /** 分配时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "分配时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date distributeTime;

    /** 过期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date outDate;

    /** 开卡时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开卡时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date openTime;

    /** 缴费时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "缴费时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /** 激活时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "激活时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date activeTime;

    /** 结算时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结算时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date settlementTime;

    /** 退费时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "退费时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date refundTime;

    /** 关卡时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "关卡时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date closeTime;

    /**
     * 有效天数
     */
    private Integer days;

    private String deptName;
    /** 代理商 */
    private String agentName;
    /** 安排校区 */
    private String campusName;
    /** 分配学校 */
    private String assignSchoolName;
    /** 校区名称 */
    private String schoolName;
    /** 校区班级ID */
    private String className;
    private String campusClassName;

    private String nickName;
    private String phonenumber;

    private String location;

    /** 统计类型（用于详情查询） */
    private String statisticsType;

    /** 定向学习 */
    private String directedStudy;

    /** 考生专业类别 **/
    private Integer examMajor;

    /** 考生专业类别 **/
    private String examMajorName;

    /** 用户ID */
    private Long userId;

    public List<Long> getCardIds() {
        return cardIds;
    }

    public void setCardIds(List<Long> cardIds) {
        this.cardIds = cardIds;
    }

    public Integer getExamMajor() {
        return examMajor;
    }

    public void setExamMajor(Integer examMajor) {
        this.examMajor = examMajor;
    }

    public String getExamMajorName() {
        return examMajorName;
    }

    public void setExamMajorName(String examMajorName) {
        this.examMajorName = examMajorName;
    }

    public Long getTeacherId() {
        return teacherId;
    }

    public void setTeacherId(Long teacherId) {
        this.teacherId = teacherId;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }

    public void setCardId(Long cardId)
    {
        this.cardId = cardId;
    }

    public Long getCardId()
    {
        return cardId;
    }

    public void setCardNo(String cardNo)
    {
        this.cardNo = cardNo;
    }

    public String getCardNo()
    {
        return cardNo;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }

    public String getPassword()
    {
        return password;
    }

    public void setType(Integer type)
    {
        this.type = type;
    }

    public Integer getType()
    {
        return type;
    }

    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }

    public String getAssignLocation() {
        return assignLocation;
    }

    public void setAssignLocation(String assignLocation) {
        this.assignLocation = assignLocation;
    }

    public void setDistributeStatus(Integer distributeStatus)
    {
        this.distributeStatus = distributeStatus;
    }

    public Integer getDistributeStatus()
    {
        return distributeStatus;
    }

    public void setTimeStatus(Integer timeStatus)
    {
        this.timeStatus = timeStatus;
    }

    public Integer getTimeStatus()
    {
        return timeStatus;
    }

    public void setPayStatus(Integer payStatus)
    {
        this.payStatus = payStatus;
    }

    public Integer getPayStatus()
    {
        return payStatus;
    }

    public void setIsSettlement(Integer isSettlement)
    {
        this.isSettlement = isSettlement;
    }

    public Integer getIsSettlement()
    {
        return isSettlement;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    public void setAgentId(Long agentId)
    {
        this.agentId = agentId;
    }

    public Long getAgentId()
    {
        return agentId;
    }

    public void setLeafAgentId(Long leafAgentId)
    {
        this.leafAgentId = leafAgentId;
    }

    public Long getLeafAgentId()
    {
        return leafAgentId;
    }

    public void setCampusId(Long campusId)
    {
        this.campusId = campusId;
    }

    public Long getCampusId()
    {
        return campusId;
    }

    public void setAssignSchoolId(Long assignSchoolId)
    {
        this.assignSchoolId = assignSchoolId;
    }

    public Long getAssignSchoolId()
    {
        return assignSchoolId;
    }

    public void setSchoolId(Long schoolId)
    {
        this.schoolId = schoolId;
    }

    public Long getSchoolId()
    {
        return schoolId;
    }

    public void setClassId(Long classId)
    {
        this.classId = classId;
    }

    public Long getClassId()
    {
        return classId;
    }

    public void setYear(Integer year)
    {
        this.year = year;
    }

    public Integer getYear()
    {
        return year;
    }

    public void setEndYear(Integer endYear)
    {
        this.endYear = endYear;
    }

    public Integer getEndYear()
    {
        return endYear;
    }

    public void setOpenId(Long openId)
    {
        this.openId = openId;
    }

    public Long getOpenId()
    {
        return openId;
    }

    public void setDistributeTime(Date distributeTime)
    {
        this.distributeTime = distributeTime;
    }

    public Date getDistributeTime()
    {
        return distributeTime;
    }

    public void setOutDate(Date outDate)
    {
        this.outDate = outDate;
    }

    public Date getOutDate()
    {
        return outDate;
    }

    public void setOpenTime(Date openTime)
    {
        this.openTime = openTime;
    }

    public Date getOpenTime()
    {
        return openTime;
    }

    public void setPayTime(Date payTime)
    {
        this.payTime = payTime;
    }

    public Date getPayTime()
    {
        return payTime;
    }

    public void setActiveTime(Date activeTime)
    {
        this.activeTime = activeTime;
    }

    public Date getActiveTime()
    {
        return activeTime;
    }

    public void setSettlementTime(Date settlementTime)
    {
        this.settlementTime = settlementTime;
    }

    public Date getSettlementTime()
    {
        return settlementTime;
    }

    public void setRefundTime(Date refundTime)
    {
        this.refundTime = refundTime;
    }

    public Date getRefundTime()
    {
        return refundTime;
    }

    public void setCloseTime(Date closeTime)
    {
        this.closeTime = closeTime;
    }

    public Date getCloseTime()
    {
        return closeTime;
    }

    public String getAssignExamType() {
        return assignExamType;
    }

    public void setAssignExamType(String assignExamType) {
        this.assignExamType = assignExamType;
    }

    public String getExamType() {
        return examType;
    }

    public void setExamType(String examType) {
        this.examType = examType;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getAgentName() {
        return agentName;
    }

    public void setAgentName(String agentName) {
        this.agentName = agentName;
    }

    public String getCampusName() {
        return campusName;
    }

    public void setCampusName(String campusName) {
        this.campusName = campusName;
    }

    public String getAssignSchoolName() {
        return assignSchoolName;
    }

    public void setAssignSchoolName(String assignSchoolName) {
        this.assignSchoolName = assignSchoolName;
    }

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public Integer getDays() {
        return days;
    }

    public void setDays(Integer days) {
        this.days = days;
    }

    public String getBegin() {
        return begin;
    }

    public void setBegin(String begin) {
        this.begin = begin;
    }

    public String getEnd() {
        return end;
    }

    public void setEnd(String end) {
        this.end = end;
    }

    public String getAssignTimeBegin() {
        return assignTimeBegin;
    }

    public void setAssignTimeBegin(String assignTimeBegin) {
        this.assignTimeBegin = assignTimeBegin;
    }

    public String getAssignTimeEnd() {
        return assignTimeEnd;
    }

    public void setAssignTimeEnd(String assignTimeEnd) {
        this.assignTimeEnd = assignTimeEnd;
    }

    public Long getCampusClassId() {
        return campusClassId;
    }

    public void setCampusClassId(Long campusClassId) {
        this.campusClassId = campusClassId;
    }

    public String getCampusClassName() {
        return campusClassName;
    }

    public void setCampusClassName(String campusClassName) {
        this.campusClassName = campusClassName;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getStatisticsType() {
        return statisticsType;
    }

    public void setStatisticsType(String statisticsType) {
        this.statisticsType = statisticsType;
    }

    public String getDirectedStudy() {
        return directedStudy;
    }

    public void setDirectedStudy(String directedStudy) {
        this.directedStudy = directedStudy;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("cardId", getCardId())
            .append("cardNo", getCardNo())
            .append("password", getPassword())
            .append("type", getType())
            .append("status", getStatus())
            .append("distributeStatus", getDistributeStatus())
            .append("timeStatus", getTimeStatus())
            .append("payStatus", getPayStatus())
            .append("isSettlement", getIsSettlement())
            .append("deptId", getDeptId())
            .append("agentId", getAgentId())
            .append("leafAgentId", getLeafAgentId())
            .append("campusId", getCampusId())
            .append("assignSchoolId", getAssignSchoolId())
            .append("schoolId", getSchoolId())
            .append("classId", getClassId())
            .append("year", getYear())
            .append("endYear", getEndYear())
            .append("openId", getOpenId())
            .append("remark", getRemark())
            .append("distributeTime", getDistributeTime())
            .append("outDate", getOutDate())
            .append("openTime", getOpenTime())
            .append("payTime", getPayTime())
            .append("activeTime", getActiveTime())
            .append("settlementTime", getSettlementTime())
            .append("refundTime", getRefundTime())
            .append("closeTime", getCloseTime())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
