package com.pangu.member.domain.dto;

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

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

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

    /** 会员ID */
    private Long memberId;

    /** 手机号 */
    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "请输入正确的手机号")
    private String phone;

    /** 昵称 */
    private String nickname;

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

    /** 出生日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthday;

    /** 身份类型（1家长 2教师）*/
    @NotBlank(message = "请选择身份类型")
    private String identityType;

    /** 所属区域ID（教师必填）*/
    private Long regionId;

    /** 所属学校ID（教师必填）*/
    private Long schoolId;

    /** 所属学校年级ID（教师必填）*/
    private Long schoolGradeId;

    /** 所属学校班级ID（教师必填）*/
    private Long schoolClassId;

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

    /** 绑定的学生ID（用于绑定学生操作）*/
    private Long studentId;

    /** 绑定的学生ID列表（新增时批量绑定）*/
    private List<Long> studentIds;

    // ========== 查询条件 ==========

    /** 注册开始时间 */
    private String beginTime;

    /** 注册结束时间 */
    private String endTime;
    
    /** 关键词搜索（昵称、手机号、会员编码）*/
    private String keyword;
    
    /** 注册来源（1小程序 2H5 3后台录入）*/
    private String registerSource;

    /** 分页参数 - 当前页码 */
    private Integer pageNum;

    /** 分页参数 - 每页数量 */
    private Integer pageSize;
}
