package com.template.model.seewo;

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

/**
 * seewo-open API: queryByCondition
 * 根据条件分页查询老师信息
 *
 * @author auto create
 * @since 2.0.1 2023-12-25
 */
public class TeacherApiQueryByConditionParam extends OpenApiParam {


    /**
     * 请求体，MimeType为 application/json
     */

    private JSONRequestBody requestBody;


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

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

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

    public static class TeacherApiQueryByConditionParamBuilder{
        private JSONRequestBody requestBody;

        public TeacherApiQueryByConditionParamBuilder requestBody(JSONRequestBody requestBody){
            this.requestBody = requestBody;
            return this;
        }

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

    public static class JSONRequestBody {
        /**
         * 组织id
         */
        private UserQueryDto queryDto;
        /**
         * 分页参数
         */
        private PageInfo pageInfo;

        public UserQueryDto getQueryDto() {
            return this.queryDto;
        }

        public void setQueryDto(UserQueryDto queryDto) {
            this.queryDto = queryDto;
        }

        public PageInfo getPageInfo() {
            return this.pageInfo;
        }

        public void setPageInfo(PageInfo pageInfo) {
            this.pageInfo = pageInfo;
        }


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

        public static class JSONRequestBodyBuilder{
            private UserQueryDto queryDto;
            private PageInfo pageInfo;

            public JSONRequestBodyBuilder queryDto(UserQueryDto queryDto){
                this.queryDto = queryDto;
                return this;
            }
            public JSONRequestBodyBuilder pageInfo(PageInfo pageInfo){
                this.pageInfo = pageInfo;
                return this;
            }

            public JSONRequestBody build(){
                JSONRequestBody param = new JSONRequestBody();
                param.setQueryDto(queryDto);
                param.setPageInfo(pageInfo);
                return param;
            }
        }
    }

    public static class UserQueryDto {
        /**
         * 用户id列表
         */
        private List<String> uidList;
        /**
         * 手机号列表
         */
        private List<String> phoneList;
        /**
         * 真实姓名
         */
        private String realName;
        /**
         * 组织id
         */
        private String unitId;

        public List<String> getUidList() {
            return this.uidList;
        }

        public void setUidList(List<String> uidList) {
            this.uidList = uidList;
        }

        public List<String> getPhoneList() {
            return this.phoneList;
        }

        public void setPhoneList(List<String> phoneList) {
            this.phoneList = phoneList;
        }

        public String getRealName() {
            return this.realName;
        }

        public void setRealName(String realName) {
            this.realName = realName;
        }

        public String getUnitId() {
            return this.unitId;
        }

        public void setUnitId(String unitId) {
            this.unitId = unitId;
        }


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

        public static class UserQueryDtoBuilder{
            private List<String> uidList;
            private List<String> phoneList;
            private String realName;
            private String unitId;

            public UserQueryDtoBuilder uidList(List<String> uidList){
                this.uidList = uidList;
                return this;
            }
            public UserQueryDtoBuilder phoneList(List<String> phoneList){
                this.phoneList = phoneList;
                return this;
            }
            public UserQueryDtoBuilder realName(String realName){
                this.realName = realName;
                return this;
            }
            public UserQueryDtoBuilder unitId(String unitId){
                this.unitId = unitId;
                return this;
            }

            public UserQueryDto build(){
                UserQueryDto param = new UserQueryDto();
                param.setUidList(uidList);
                param.setPhoneList(phoneList);
                param.setRealName(realName);
                param.setUnitId(unitId);
                return param;
            }
        }
    }

    public static class PageInfo {
        /**
         * 当前页码 从1开始
         */
        private Integer page;
        /**
         * 每页数据量，正数，不超过MAX_PAGE_SIZE
         */
        private Integer pageSize;

        public Integer getPage() {
            return this.page;
        }

        public void setPage(Integer page) {
            this.page = page;
        }

        public Integer getPageSize() {
            return this.pageSize;
        }

        public void setPageSize(Integer pageSize) {
            this.pageSize = pageSize;
        }


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

        public static class PageInfoBuilder{
            private Integer page;
            private Integer pageSize;

            public PageInfoBuilder page(Integer page){
                this.page = page;
                return this;
            }
            public PageInfoBuilder pageSize(Integer pageSize){
                this.pageSize = pageSize;
                return this;
            }

            public PageInfo build(){
                PageInfo param = new PageInfo();
                param.setPage(page);
                param.setPageSize(pageSize);
                return param;
            }
        }
    }


}
