package com.pangu.student.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;

/**
 * 学生数据传输对象
 * 
 * @author pangu
 */
@Data
public class StudentDTO implements Serializable {
    
    private static final long serialVersionUID = 1L;

    /** 学生ID */
    private Long studentId;

    /** 学生姓名 */
    @NotBlank(message = "学生姓名不能为空")
    private String studentName;

    /** 学号 */
    private String studentNo;

    /** 性别（0未知 1男 2女） */
    private String gender;

    /** 出生年月 */
    @JsonFormat(pattern = "yyyy-MM")
    private LocalDate birthday;

    /** 所属区域ID */
    @NotNull(message = "所属区域不能为空")
    private Long regionId;

    /** 区域路径 */
    private String regionPath;

    /** 所属学校ID */
    @NotNull(message = "所属学校不能为空")
    private Long schoolId;

    /** 所属学校年级ID */
    @NotNull(message = "所属学校年级不能为空")
    private Long schoolGradeId;

    /** 所属学校班级ID */
    @NotNull(message = "所属学校班级不能为空")
    private Long schoolClassId;

    /** 学科ID */
    private Long subjectId;

    /** 归属会员ID（可选，学生可以暂不绑定会员） */
    private Long memberId;

    /** 状态（0正常 1停用） */
    private String status;

    /** 备注 */
    private String remark;

    // ========== 查询条件 ==========
    /** 用户手机号（查询条件） */
    private String memberPhone;

    /** 开始时间（查询条件） */
    private String beginTime;

    /** 结束时间（查询条件） */
    private String endTime;
    
    /** 关键词搜索（学生姓名、学号）*/
    private String keyword;

    /** 页码 */
    private Integer pageNum;

    /** 每页数量 */
    private Integer pageSize;
}
