package com.pangu.member.domain.vo;

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

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 会员视图对象
 * @author pangu
 */
@Data
public class MemberVO implements Serializable {
    private static final long serialVersionUID = 1L;

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

    /** 会员编号 */
    private String memberCode;

    /** 手机号（脱敏）*/
    private String phone;

    /** 手机号（完整，编辑时使用）*/
    private String phoneFull;

    /** 昵称 */
    private String nickname;

    /** 头像URL */
    private String avatar;

    /** 性别代码 */
    private String gender;

    /** 性别名称 */
    private String genderName;

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

    /** 身份类型代码 */
    private String identityType;

    /** 身份类型名称 */
    private String identityTypeName;

    /** 微信OpenID */
    private String openId;

    /** 所属区域ID */
    private Long regionId;

    /** 区域路径（如：湖北省-武汉市-武昌区）*/
    private String regionPath;

    /** 所属学校ID */
    private Long schoolId;

    /** 学校名称 */
    private String schoolName;

    /** 所属学校年级ID */
    private Long schoolGradeId;

    /** 年级名称 */
    private String gradeName;

    /** 所属学校班级ID */
    private Long schoolClassId;

    /** 班级名称 */
    private String className;

    /** 注册来源代码 */
    private String registerSource;

    /** 注册来源名称 */
    private String registerSourceName;

    /** 注册时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime registerTime;

    /** 状态 */
    private String status;

    /** 绑定的学生列表 */
    private List<StudentVO> students;

    /**
     * 学生视图对象
     */
    @Data
    public static class StudentVO implements Serializable {
        private static final long serialVersionUID = 1L;

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

        /** 学生姓名 */
        private String studentName;

        /** 学号 */
        private String studentNo;

        /** 学校名称 */
        private String schoolName;

        /** 年级名称 */
        private String gradeName;

        /** 班级名称 */
        private String className;
    }
}
