package com.template.model.seewo;

import java.util.*;
import com.seewo.open.sdk.OpenApiParam;
import com.seewo.open.sdk.ParameterPosition;

/**
 * seewo-open API: 更新学生信息
 *
 *
 * @author auto create
 * @since 2.0.1 2023-12-19
 */
public class StudentServiceUpdateStudentInfoParam extends OpenApiParam {


    /**
     * 响应体，MimeType为 application/json
     */

    private RequestBody requestBody;


    public RequestBody getRequestBody() {
        return this.requestBody;
    }

    public void setRequestBody(RequestBody requestBody) {
        this.requestBody = requestBody;
    }

    public static StudentServiceUpdateStudentInfoParamBuilder builder(){
        return new StudentServiceUpdateStudentInfoParamBuilder();
    }

    public static class StudentServiceUpdateStudentInfoParamBuilder{
        private RequestBody requestBody;

        public StudentServiceUpdateStudentInfoParamBuilder requestBody(RequestBody requestBody){
            this.requestBody = requestBody;
            return this;
        }

        public StudentServiceUpdateStudentInfoParam build(){
            StudentServiceUpdateStudentInfoParam param = new StudentServiceUpdateStudentInfoParam();
            param.setRequestBody(requestBody);
            return param;
        }
    }

    public static class RequestBody {
        /**
         * query
         */
        private Query query;

        public Query getQuery() {
            return this.query;
        }

        public void setQuery(Query query) {
            this.query = query;
        }


        public static RequestBodyBuilder builder(){
            return new RequestBodyBuilder();
        }

        public static class RequestBodyBuilder{
            private Query query;

            public RequestBodyBuilder query(Query query){
                this.query = query;
                return this;
            }

            public RequestBody build(){
                RequestBody param = new RequestBody();
                param.setQuery(query);
                return param;
            }
        }
    }

    public static class Query {
        /**
         * appId
         */
        private String appId;
        /**
         * schoolUid
         */
        private String schoolUid;
        /**
         * studentUid
         */
        private String studentUid;
        /**
         * studentCode
         */
        private String studentCode;
        /**
         * studentName
         */
        private String studentName;
        /**
         * cards
         */
        private List<CardsItem> cards;
        /**
         * parents
         */
        private List<ParentsItem> parents;

        public String getAppId() {
            return this.appId;
        }

        public void setAppId(String appId) {
            this.appId = appId;
        }

        public String getSchoolUid() {
            return this.schoolUid;
        }

        public void setSchoolUid(String schoolUid) {
            this.schoolUid = schoolUid;
        }

        public String getStudentUid() {
            return this.studentUid;
        }

        public void setStudentUid(String studentUid) {
            this.studentUid = studentUid;
        }

        public String getStudentCode() {
            return this.studentCode;
        }

        public void setStudentCode(String studentCode) {
            this.studentCode = studentCode;
        }

        public String getStudentName() {
            return this.studentName;
        }

        public void setStudentName(String studentName) {
            this.studentName = studentName;
        }

        public List<CardsItem> getCards() {
            return this.cards;
        }

        public void setCards(List<CardsItem> cards) {
            this.cards = cards;
        }

        public List<ParentsItem> getParents() {
            return this.parents;
        }

        public void setParents(List<ParentsItem> parents) {
            this.parents = parents;
        }


        public static QueryBuilder builder(){
            return new QueryBuilder();
        }

        public static class QueryBuilder{
            private String appId;
            private String schoolUid;
            private String studentUid;
            private String studentCode;
            private String studentName;
            private List<CardsItem> cards;
            private List<ParentsItem> parents;

            public QueryBuilder appId(String appId){
                this.appId = appId;
                return this;
            }
            public QueryBuilder schoolUid(String schoolUid){
                this.schoolUid = schoolUid;
                return this;
            }
            public QueryBuilder studentUid(String studentUid){
                this.studentUid = studentUid;
                return this;
            }
            public QueryBuilder studentCode(String studentCode){
                this.studentCode = studentCode;
                return this;
            }
            public QueryBuilder studentName(String studentName){
                this.studentName = studentName;
                return this;
            }
            public QueryBuilder cards(List<CardsItem> cards){
                this.cards = cards;
                return this;
            }
            public QueryBuilder parents(List<ParentsItem> parents){
                this.parents = parents;
                return this;
            }

            public Query build(){
                Query param = new Query();
                param.setAppId(appId);
                param.setSchoolUid(schoolUid);
                param.setStudentUid(studentUid);
                param.setStudentCode(studentCode);
                param.setStudentName(studentName);
                param.setCards(cards);
                param.setParents(parents);
                return param;
            }
        }
    }

    public static class CardsItem {
        /**
         * type
         */
        private Integer type;
        /**
         * cardId
         */
        private String cardId;

        public Integer getType() {
            return this.type;
        }

        public void setType(Integer type) {
            this.type = type;
        }

        public String getCardId() {
            return this.cardId;
        }

        public void setCardId(String cardId) {
            this.cardId = cardId;
        }


        public static CardsItemBuilder builder(){
            return new CardsItemBuilder();
        }

        public static class CardsItemBuilder{
            private Integer type;
            private String cardId;

            public CardsItemBuilder type(Integer type){
                this.type = type;
                return this;
            }
            public CardsItemBuilder cardId(String cardId){
                this.cardId = cardId;
                return this;
            }

            public CardsItem build(){
                CardsItem param = new CardsItem();
                param.setType(type);
                param.setCardId(cardId);
                return param;
            }
        }
    }

    public static class ParentsItem {
        /**
         * showIndex
         */
        private Integer index;
        /**
         * parentName
         */
        private String name;
        /**
         * parentPhone
         */
        private String phone;

        public Integer getIndex() {
            return this.index;
        }

        public void setIndex(Integer index) {
            this.index = index;
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getPhone() {
            return this.phone;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }


        public static ParentsItemBuilder builder(){
            return new ParentsItemBuilder();
        }

        public static class ParentsItemBuilder{
            private Integer index;
            private String name;
            private String phone;

            public ParentsItemBuilder index(Integer index){
                this.index = index;
                return this;
            }
            public ParentsItemBuilder name(String name){
                this.name = name;
                return this;
            }
            public ParentsItemBuilder phone(String phone){
                this.phone = phone;
                return this;
            }

            public ParentsItem build(){
                ParentsItem param = new ParentsItem();
                param.setIndex(index);
                param.setName(name);
                param.setPhone(phone);
                return param;
            }
        }
    }


}
