package org.dromara.system.domain.bo;

import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.system.domain.GameEventProject;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 赛事项目业务对象 game_event_project
 *
 * @author zlt
 * @date 2025-07-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = GameEventProject.class, reverseConvertGenerate = false)
public class GameEventProjectBo extends BaseEntity {

    /**
     * 项目ID
     */
    private Long projectId;

    /**
     * 赛事ID
     */
    @NotNull(message = "赛事ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long eventId;

    /**
     * 项目名称
     */
//    @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectName;

    /**
     * 项目类型（个人/团体）
     */
//    @NotBlank(message = "项目类型（个人/团体）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String projectType;

    /**
     * 项目组别
     */
//    @NotBlank(message = "项目组别不能为空", groups = { AddGroup.class, EditGroup.class })
    private String groupType;

    /**
     * 裁判员ID
     */
//    @NotNull(message = "裁判员ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long refereeId;

    /**
     * 比赛场地
     */
    @NotBlank(message = "比赛场地不能为空", groups = { AddGroup.class, EditGroup.class })
    private String location;

    /**
     * 开始时间
     */
//    @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date startTime;

    /**
     * 结束时间
     */
//    @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date endTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 参赛组数
     */
    private Long groupNum;

    /**
     * 参赛人数
     */
    private Long participateNum;

    /**
     * 轮次
     */
    private String roundType;

    /**
     * 排序方式
     */
    private String orderType;

    /**
     * 计算规则
     */
    private String scoreRule;

    /**
     * 积分分值
     */
//    @NotBlank(message = "积分分值不能为空", groups = { AddGroup.class, EditGroup.class })
    private String scoreValue;

    /**
     * 奖项
     */
    private String award;

    /**
     * 计时点名称
     */
    private String timePoint;

    /**
     * 控制盒编号
     */
    private String boxCode;

    /**
     * 状态（0正常 1停用）
     */
//    @NotBlank(message = "状态（0正常 1停用）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String status;

    /**
     * 备注
     */
    private String remark;


}
