package beilv.competition.domain;

import java.util.Date;

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

/**
 * 赛事发布对象 competition
 *
 * @author LG
 * @date 2024-12-31
 */
public class Competition extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    private Integer id;

    /**
     * 活动标题
     */
    @Excel(name = "赛事标题")
    private String competitionTitle;

    /**
     * 活动类型
     */
    @Excel(name = "赛事类型")
    private String competitionType;

    /**
     * 团队最大人数
     */
    @Excel(name = "团队最大人数")
    private Integer personMax;

    /**
     * 最大团队数
     */
    @Excel(name = "赛事总人数/总团队数")
    private Integer teamMax;

    /**
     * 场地
     */
    @Excel(name = "赛事场地")
    private String competitionPlace;

    /**
     * 报名开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @Excel(name = "赛事开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date applyStartTime;

    /**
     * 报名结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @Excel(name = "赛事结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date applyEndTime;

    /**
     * 取消报名截至时间(活动开始前N小时可退款)
     */
    @Excel(name = "取消报名截至时间")
    private Double applyBeforeTime;

    /**
     * 活动上限人数
     */
    @Excel(name = "赛事上限人数")
    private Integer competitionMaximum;

    /**
     * 活动费用(每人)
     */
    @Excel(name = "赛事费用")
    private Double competitionExpense;

    /**
     * 观看门票
     */
    @Excel(name = "观看门票")
    private Double viewingTicket;

    /**
     * 活动详情
     */
    @Excel(name = "赛事详情")
    private String competitionDetails;

    /**
     * 报名须知
     */
    @Excel(name = "报名须知")
    private String registrationNotes;

    /**
     * 活动状态
     */
    @Excel(name = "赛事状态")
    private String competitionState;

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setCompetitionTitle(String competitionTitle) {
        this.competitionTitle = competitionTitle;
    }

    public String getCompetitionTitle() {
        return competitionTitle;
    }

    public void setCompetitionType(String competitionType) {
        this.competitionType = competitionType;
    }

    public String getCompetitionType() {
        return competitionType;
    }

    public void setPersonMax(Integer personMax) {
        this.personMax = personMax;
    }

    public Integer getPersonMax() {
        return personMax;
    }

    public void setTeamMax(Integer teamMax) {
        this.teamMax = teamMax;
    }

    public Integer getTeamMax() {
        return teamMax;
    }

    public void setCompetitionPlace(String competitionPlace) {
        this.competitionPlace = competitionPlace;
    }

    public String getCompetitionPlace() {
        return competitionPlace;
    }

    public void setApplyStartTime(Date applyStartTime) {
        this.applyStartTime = applyStartTime;
    }

    public Date getApplyStartTime() {
        return applyStartTime;
    }

    public void setApplyEndTime(Date applyEndTime) {
        this.applyEndTime = applyEndTime;
    }

    public Date getApplyEndTime() {
        return applyEndTime;
    }

    public void setApplyBeforeTime(Double applyBeforeTime) {
        this.applyBeforeTime = applyBeforeTime;
    }

    public Double getApplyBeforeTime() {
        return applyBeforeTime;
    }

    public void setCompetitionMaximum(Integer competitionMaximum) {
        this.competitionMaximum = competitionMaximum;
    }

    public Integer getCompetitionMaximum() {
        return competitionMaximum;
    }

    public void setCompetitionExpense(Double competitionExpense) {
        this.competitionExpense = competitionExpense;
    }

    public Double getCompetitionExpense() {
        return competitionExpense;
    }

    public void setViewingTicket(Double viewingTicket) {
        this.viewingTicket = viewingTicket;
    }

    public Double getViewingTicket() {
        return viewingTicket;
    }

    public void setCompetitionDetails(String competitionDetails) {
        this.competitionDetails = competitionDetails;
    }

    public String getCompetitionDetails() {
        return competitionDetails;
    }

    public void setRegistrationNotes(String registrationNotes) {
        this.registrationNotes = registrationNotes;
    }

    public String getRegistrationNotes() {
        return registrationNotes;
    }

    public void setCompetitionState(String competitionState) {
        this.competitionState = competitionState;
    }

    public String getCompetitionState() {
        return competitionState;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("competitionTitle", getCompetitionTitle())
                .append("competitionType", getCompetitionType())
                .append("personMax", getPersonMax())
                .append("teamMax", getTeamMax())
                .append("competitionPlace", getCompetitionPlace())
                .append("applyStartTime", getApplyStartTime())
                .append("applyEndTime", getApplyEndTime())
                .append("applyBeforeTime", getApplyBeforeTime())
                .append("competitionMaximum", getCompetitionMaximum())
                .append("competitionExpense", getCompetitionExpense())
                .append("competitionDetails", getCompetitionDetails())
                .append("registrationNotes", getRegistrationNotes())
                .append("competitionState", getCompetitionState())
                .toString();
    }
}
