package com.lesingle.modules.biz.contest.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lesingle.common.entity.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_biz_contest_registration")
@Schema(description = "活动报名实体")
public class BizContestRegistration extends BaseEntity {

    @Schema(description = "活动ID")
    @TableField("contest_id")
    private Long contestId;

    @Schema(description = "租户ID")
    @TableField("tenant_id")
    private Long tenantId;

    @Schema(description = "报名类型：individual/team")
    @TableField("registration_type")
    private String registrationType;

    @Schema(description = "团队ID")
    @TableField("team_id")
    private Long teamId;

    @Schema(description = "团队名称快照")
    @TableField("team_name")
    private String teamName;

    @Schema(description = "用户ID")
    @TableField("user_id")
    private Long userId;

    @Schema(description = "账号快照")
    @TableField("account_no")
    private String accountNo;

    @Schema(description = "账号名称")
    @TableField("account_name")
    private String accountName;

    @Schema(description = "角色：leader/member/mentor")
    private String role;

    @Schema(description = "报名状态", allowableValues = {"pending", "passed", "rejected"})
    @TableField("registration_state")
    private String registrationState;

    @Schema(description = "参与者类型", allowableValues = {"self", "child"})
    @TableField("participant_type")
    private String participantType;

    @Schema(description = "子女ID")
    @TableField("child_id")
    private Long childId;

    @Schema(description = "实际提交人ID")
    private Integer registrant;

    @Schema(description = "报名时间")
    @TableField("registration_time")
    private LocalDateTime registrationTime;

    @Schema(description = "审核原因")
    private String reason;

    @Schema(description = "审核操作人")
    private Integer operator;

    @Schema(description = "操作日期")
    @TableField("operation_date")
    private LocalDateTime operationDate;
}
