// Code generated by goctl. DO NOT EDIT.
package types

// Pagination | 分页模型
// swagger:model Pagination
// swagger:allOf
type Pagination struct {
	// Page Size | 每页大小
	//
	// Minimum: 0
	// Maximum: 9999
	// Required: false
	// Example: 10
	Size uint64 `json:"size,optional" form:"size,optional" validate:"number,max=9999"`
	// Current Page | 当前页
	//
	// Minimum: 1
	// Maximum: 100000
	// Required: false
	// Example: 1
	Current uint64 `json:"current,optional" form:"current,optional" validate:"number,max=100000"`
	// Total Number | 数据总数
	//
	// Required: false
	Total uint64 `json:"total,optional" form:"total,optional" validate:"number"`
}

// TimeInfo | 时间结构
// swagger:model TimeInfo
type TimeInfo struct {
	// Create Time | 创建时间
	CreatedAt string `json:"createdAt,optional"`
	// Update Time | 更新时间
	UpdatedAt string `json:"updatedAt,optional"`
}

// Basic ID Request | 基础ID结构
type BaseID struct {
	// Id | 序号
	ID int64 `json:"id,string,optional" form:"id,string,optional"`
}

// Basic ID request (path) | 基础ID结构，地址参数
type PathID struct {
	// ID | 序号
	//
	// In: path
	ID int64 `json:"id,optional,string" path:"id,optional,string"`
}

// Basic ID List request | 基础ID列表结构，用于Post
// swagger:model BaseIDs
type BaseIDs struct {
	// 主键列表
	Ids []int64 `json:"ids,optional" form:"ids,optional"`
}

// OAuth log in request | OAuth 登录请求
// swagger:parameters OauthLogin
type OauthLoginReq struct {
	// Provider name | 服务提供商名称
	//
	// In: query
	// Required: true
	// Max Length: 40
	// Example: [google, github, facebook]
	Provider string `form:"provider" validate:"max=40"`
}

// OAuth login return auth url | OAuth登录返回提供商登录页地址
// swagger:model OauthLoginResp
type OauthLoginResp struct {
	// Auth URL | 提供商登录地址
	AuthUrl string `json:"authUrl"`
}

// OAuth log in by code request | OAuth 直接登录请求
// swagger:model OauthLoginByCodeReq
type OauthLoginByCodeReq struct {
	// Code | 一次性code
	Code string `json:"code"`
	// Provider name | 服务提供商名称
	//
	// Example: [wechat,google]
	// max length : 40
	Provider string `json:"provider" validate:"max=40"`
}

// OAuth log in by phone code request | OAuth 手机号码登录请求
// swagger:model OauthLoginByPhoneCodeReq
type OauthLoginByPhoneCodeReq struct {
	// AuthCode | 登录Code，非必填，为了平台兼容性
	AuthCode string `json:"authCode,optional"`
	// Code | 一次性code
	Code string `json:"code"`
	// Provider name | 服务提供商名称
	//
	// Example: [wechat,google]
	// max length : 40
	Provider string `json:"provider" validate:"max=40"`
}

// Log in request | 普通登录请求
// swagger:model LoginReq
type LoginReq struct {
	// Log in subject | 登录主体（用户名/邮箱/手机号码）| 作用于验证码时，不支持用户名
	Subject string `json:"subject"`
	// Credentials | 登录凭证
	Credentials string `json:"credentials"`
	// Platform | 当前登录平台
	Platform string `json:"platform"`
	// Captcha ID which store in redis | 图形验证码编号, 存在redis中
	//
	// Required: true
	// Max length: 32
	CaptchaId string `json:"captchaId,optional"  validate:"len=32"`
	// The Captcha which users input | 用户输入的验证码
	//
	// Required: true
	// Max length: 4
	Captcha string `json:"captcha,optional" validate:"len=4"`
}

// LoginResp | 登录返回数据
// swagger:model LoginResp
type LoginResp struct {
	// TwoFactorType | 两步验证类型,空字符串表示无需两步验证
	TwoFactorType string `json:"twoFactorType"`
	// Token | Token信息
	Token LoginTokenInfo `json:"token,optional"`
}

// LoginTokenInfo | Token数据
// swagger:model LoginTokenInfo
type LoginTokenInfo struct {
	// User ID | 用户ID
	UID int64 `json:"uid,string"`
	// Token Type | Token类型 Authorization: {token_type} {access_token}
	//
	// Example: [Bearer]
	TokenType string `json:"token_type"`
	// Access Token | Jwt-Token
	AccessToken string `json:"access_token"`
	// Expires At | 过期具体时间，时间戳格式
	ExpiresAt int64 `json:"expires_at"`
	// Scope | 授权范围，逗号分割
	Scope string `json:"scope,omitempty,optional"`
}

// Register request | 注册请求
// swagger:model RegisterReq
type RegisterReq struct {
	// Username | 用户名
	Username *string `json:"username,optional"`
	// Email | 邮箱
	Email *string `json:"email,optional"`
	// PhoneNumber | 手机号码
	PhoneNumber *string `json:"phoneNumber,optional"`
	// Credentials | 凭证
	Credentials string `json:"credentials"`
	// Code | 验证码
	Code *string `json:"code,optional"`
	// Captcha ID which store in redis | 图形验证码编号, 存在redis中
	//
	// Required: true
	// Max length: 32
	CaptchaId string `json:"captchaId,optional"  validate:"len=32"`
	// The Captcha which users input | 用户输入的验证码
	//
	// Required: true
	// Max length: 6
	Captcha string `json:"captcha,optional" validate:"len=4"`
}

// swagger:model UserInfo
type UserInfo struct {
	BaseID
	TimeInfo
	// Status | 状态
	Status string `json:"status,optional"`
	// Username | 用户名
	Username string `json:"username,optional"`
	// Phone number | 手机号码
	PhoneNumber *string `json:"phoneNumber,optional"`
	// Email | 邮箱
	Email *string `json:"email,optional"`
	// Password | 密码
	Password string `json:"password,optional,omitempty"`
	// Nickname | 昵称
	Nickname *string `json:"nickname,optional"`
	// Roles | 角色代码列表
	Roles []string `json:"roles,optional"`
	// LoginRecord | 用户登录记录
	LoginRecord *UserLoginRecordInfo `json:"loginRecord,optional"`
	// Meta | 元数据
	Metas map[string]string `json:"metadata"`
}

// 用户登录记录
// swagger:model UserLoginRecordInfo
type UserLoginRecordInfo struct {
	BaseID
	TimeInfo
	// 用户ID
	UserId int64 `json:"userId,string,optional"`
	// 最近一次登录时间
	LastLoginAt string `json:"lastLoginAt,optional"`
	// 最近一次登录IPv4
	LastLoginIpv4 string `json:"lastLoginIpv4,optional"`
	// 最近一次登录设备
	LastLoginDevice string `json:"lastLoginDevice,optional"`
	// 最近一次登录浏览器Ua
	LastLoginUa string `json:"lastLoginUa,optional"`
	// 总登录次数
	LoginCount uint64 `json:"loginCount,optional"`
}

// Token信息
// swagger:model TokenInfo
type TokenInfo struct {
	BaseID
	TimeInfo
	// Status | 状态
	Status string `json:"status,optional"`
	// User's Id | 用户ID
	UserId int64 `json:"userId,string,optional"`
	// AccessToken | AccessToken 字符串
	AccessToken string `json:"accessToken,optional"`
	// RefreshToken | RefreshToken 字符串
	RefreshToken string `json:"refreshYoken,optional"`
	// Source | Token来源，PCWeb/WechatMini/AlipayMini
	Source string `json:"source,optional"`
	// Expire Time | 过期时间
	ExpiredAt int64 `json:"expiredAt,optional"`
}

// 用户社交平台信息
// swagger:model UserSocialInfo
type UserSocialInfo struct {
	BaseID
	TimeInfo
	// 系统用户ID
	UserId int64 `json:"userId,string,optional"`
	// OAuth Provider | 服务提供商
	Provider string `json:"provider,optional"`
	// Access Token | 用户在提供商最近一次登录的访问凭证
	AccessToken string `json:"accessToken,optional"`
	// Refresh Token | 用户在提供商最近一次登录的刷新凭证
	RefreshToken string `json:"refreshToken,optional"`
	// User's ID | 提供商用户ID，不一定存在
	Uid string `json:"uid,optional"`
	// OpenId | 用户在提供商的OpenID
	OpenId string `json:"openId,optional"`
	// UnionId | 用户在提供商的UnionID
	UnionId string `json:"unionId,optional"`
	// Key | 用户在提供商的用于解密的key
	Key string `json:"key,optional"`
	// Expires in | 访问凭证过期时长，单位：秒
	ExpiresIn uint64 `json:"expiresIn,optional"`
	// User Profile | 提供商用户信息，不一定存在
	UserProfile string `json:"userProfile,optional"`
}

// 角色信息
// swagger:model RoleInfo
type RoleInfo struct {
	BaseID
	TimeInfo
	// Status | 状态
	Status string `json:"status,optional"`
	// Role Code | 角色编码，可用于权限控制
	Code string `json:"code,optional"`
	// Role Name | 角色名
	Name string `json:"name,optional"`
	// Description | 角色描述
	Description string `json:"description,optional"`
}

// swagger:model DepartmentInfo
type DepartmentInfo struct {
	BaseID
	TimeInfo
	// Status | 状态
	Status string `json:"status,optional"`
	// Department name | 部门名称
	Name string `json:"name,optional"`
	// Department leader | 部门负责人
	LeaderId int64 `json:"leaderId,string,optional"`
	// Remark | 备注
	Remark string `json:"remark,optional"`
	// Parent ID | 直接父级ID
	ParentId int64 `json:"parentId,string,optional"`
	// Leader | 部门负责人信息
	Leader *UserInfo `json:"leader,optional"`
	// Parent | 直接父级
	Parent *DepartmentInfo `json:"parent,optional"`
	// Children | 孩子列表
	Children []*DepartmentInfo `json:"children,optional"`
}

// swagger:model OauthProviderInfo
type OauthProviderInfo struct {
	BaseID
	TimeInfo
	// The provider's name | 提供商名称
	Name string `json:"name,optional"`
	// The client id | 客户端 id
	ClientId string `json:"clientId,optional"`
	// The client secret | 客户端密钥
	ClientSecret string `json:"clientSecret,optional"`
	// The redirect url | 跳转地址
	RedirectUrl string `json:"redirectUrl,optional"`
	// The scopes | 权限范围
	Scopes string `json:"scopes,optional"`
	// The auth url of the provider | 认证地址
	AuthUrl string `json:"authUrl,optional"`
	// The token url of the provider | 获取 Token 地址
	TokenUrl string `json:"tokenUrl,optional"`
	// The URL to request user information by token | 用户信息请求地址
	InfoUrl string `json:"infoUrl,optional"`
	// The description of the provider | 提供商描述
	Description string `json:"description,optional"`
	// The system internal oauth provider | 系统内置提供商
	System bool `json:"system,optional"`
	// The oauth provider init status | 提供商初始化状态
	Init bool `json:"init,optional"`
}

// District info | 地址信息
// swagger:model DistrictInfo
type DistrictInfo struct {
	BaseID
	TimeInfo
	// Name | 地区名称
	Name string `json:"name"`
	// Short name | 地区缩写，省级
	ShortName string `json:"shortName"`
	// Code | 地址编码
	Code string `json:"code"`
	// Province code | 省级行政编号，表示该地区归属
	Province string `json:"province"`
	// City | 地级行政编号，表示该地区归属
	City string `json:"city"`
	// Area | 县级行政编号，表示该地区归属
	Area string `json:"area"`
	// Street or Town | 乡级行政编号，表示该地区归属
	Street string `json:"street"`
	// Level | 地区级别 1-省、自治区、直辖市 2-地级市、地区、自治州、盟 3-市辖区、县级市、县 4-乡镇
	Level uint32 `json:"level"`
	// Latitude | 纬度
	Latitude float64 `json:"latitude"`
	// Longitude | 经度
	Longitude float64 `json:"longitude"`
	// Children | 子级
	Children []*DistrictInfo `json:"children,optional"`
}

// CaptchaInfo | 验证码信息
// swagger:model CaptchaInfo
type CaptchaInfo struct {
	// CaptchaId | 验证码ID
	CaptchaId string `json:"captchaId"`
	// Base64 | 验证码图片 Base64
	Base64 string `json:"base64"`
}

// 字典信息
// swagger:model DictionaryInfo
type DictionaryInfo struct {
	BaseID
	TimeInfo
	// Status | 状态
	Status string `json:"status,optional"`
	// The title shown in the ui | 展示名称 （建议配合i18n）
	Title string `json:"title,optional"`
	// The name of dictionary for search | 字典搜索名称
	Name string `json:"name,optional"`
	// The description of dictionary | 字典的描述
	Description string `json:"description,optional"`
	// Details | 字典项
	Details []*DictionaryDetailInfo `json:"details,optional"`
}

// 字典项信息
// swagger:model DictionaryDetailInfo
type DictionaryDetailInfo struct {
	BaseID
	TimeInfo
	// Status | 状态
	Status string `json:"status,optional"`
	// Sort number | 排序号
	Sort uint32 `json:"sort,optional"`
	// The title shown in the ui | 展示名称 （建议配合i18n）
	Title string `json:"title,optional"`
	// key | 键
	Key string `json:"key,optional"`
	// value | 值
	Value string `json:"value,optional"`
	// Dictionary Id | 字典ID
	DictionaryId int64 `json:"dictionaryId,string,optional"`
	// Dictionary | 字典信息
	Dictionary *DictionaryInfo `json:"dictionary,optional"`
}

// User request | 用户查询参数
// swagger:parameters GetUserAdmin GetUserListAdmin
type UserReq struct {
	BaseID
	*Pagination
	// Username | 用户名
	Username string `json:"username,optional" form:"username,optional"`
	// PhoneNumber | 手机号码
	PhoneNumber string `json:"phoneNumber,optional" form:"phoneNumber,optional"`
	// Email | 邮箱
	Email string `json:"email,optional" form:"email,optional"`
	// Nickname | 昵称
	Nickname string `json:"nickname,optional" form:"nickname,optional"`
}

// User list response | 用户列表返回
// swagger:model UserListResp
type UserListResp struct {
	// Page | 分页数据
	Page *Pagination `json:"page,optional"`
	// List | 数据列表
	List []*UserInfo `json:"list"`
}

// Role request | 角色查询请求
// swagger:parameters GetRoleAdmin GetRoleListAdmin
type RoleReq struct {
	BaseID
	*Pagination
	// Name | 角色名称
	//
	// Required: false
	// Example: wechat
	Name string `form:"name,optional"`
	// Code | 角色编码（Like）
	//
	// Required: false
	// Example: Admin
	Code string `form:"code,optional"`
}

// Role list response | 角色列表查询返回
// swagger:model RoleListResp
type RoleListResp struct {
	// Page | 分页数据
	Page *Pagination `json:"page,optional"`
	// List | 数据列表
	List []*RoleInfo `json:"list"`
}

// Token request | 查询凭证请求
// swagger:parameters GetTokenListAdmin
type TokenReq struct {
	BaseID
	*Pagination
	// User id | 用户ID
	UserID int64 `json:"userId,string,optional" form:"userId,string,optional"`
	// Token status | Token状态
	Status string `json:"status,optional" form:"status,optional"`
	// Provider source | 提供商来源
	Source string `json:"source,optional" form:"source,optional"`
	// Token type | 凭证类型 [Bearer]
	//
	// Example: Bearer
	TokenType string `json:"tokenType,optional" form:"tokenType,optional"`
}

// Token list response | 凭证列表返回
// swagger:model TokenListResp
type TokenListResp struct {
	// Page | 分页数据
	Page *Pagination `json:"page,optional"`
	// List | 数据列表
	List []TokenInfo `json:"list"`
}

// Validating captcha request | 验证验证码请求
// swagger:model ValidateCaptchaReq
type ValidateCaptchaReq struct {
	// Captcha ID which store in redis | 图形验证码编号, 存在redis中
	//
	// Required: true
	// Max length: 32
	CaptchaId string `json:"captchaId"  validate:"len=32"`
	// The Captcha which users input | 用户输入的验证码
	//
	// Required: true
	// Max length: 4
	Captcha string `json:"captcha" validate:"len=4"`
	// Auto remove captcha | 自动删除被验证的验证码
	//
	// Required: false
	Clear bool `json:"clear,optional"`
}

// District tree | 地址树，层级结构
// swagger:model DistrictTree
type DistrictTree struct {
	// Tree | 树
	Tree []*DistrictInfo `json:"tree"`
}

// District request | 地址请求参数
// swagger:parameters GetDistrictTree
type DistrictReq struct {
	BaseID
	// Code | 地址编码
	Code string `json:"code,optional" form:"code,optional"`
}

// Get District List | 获取地址列表，单级机构，children为空
// swagger:parameters GetDistrictList
type GetDistrictListReq struct {
	BaseID
	*Pagination
	// Name | 地区名称模糊匹配 (like)
	Name string `json:"name,optional" form:"name,optional"`
	// Province code | 省级行政编号，表示该地区归属
	Province string `json:"province,optional" form:"province,optional"`
	// City | 地级行政编号，表示该地区归属
	City string `json:"city,optional" form:"city,optional"`
	// Area | 县级行政编号，表示该地区归属
	Area string `json:"area,optional" form:"area,optional"`
	// Street or Town | 乡级行政编号，表示该地区归属
	Street string `json:"street,optional" form:"street,optional"`
	// Level | 地区级别 1-省、自治区、直辖市 2-地级市、地区、自治州、盟 3-市辖区、县级市、县 4-乡镇
	Level uint32 `json:"level,optional" form:"level,optional"`
}

// Get District Children | 获取子级地址列表，单级机构，children为空
// swagger:parameters GetDistrictChildren
type GetDistrictChildrenReq struct {
	// Parent Code | 父级Code，若为空，则查询level为1的列表
	ParentCode string `json:"parentCode,optional" form:"parentCode,optional"`
}

// District name request | 地址名称请求参数
// swagger:parameters GetDistrictName
type GetDistrictNameReq struct {
	// Code | 地址编码
	Code string `json:"code,optional" form:"code,optional"`
	// Separator | 分隔符，默认为空字符串
	Separator string `json:"sep,optional" form:"sep,optional"`
}

// District name response | 地址名称回复
// swagger:model GetDistrictNameResp
type GetDistrictNameResp struct {
	// Code | 地址编码
	Code string `json:"code"`
	// Name | 地址名称（拼接后）
	Name string `json:"name"`
	// Name List | 地址名称列表，逐级，不拼接
	NameList []string `json:"nameList"`
}

// OAuth provider request | OAuth提供商查询请求
// swagger:parameters GetOauthProviderAdmin GetOauthProviderListAdmin
type OauthProviderReq struct {
	BaseID
	*Pagination
	// Name | 第三方提供商名称
	//
	// Required: false
	// Example: wechat
	Name string `form:"name,optional"`
	// ClientId | 第三方客户端ID (like)
	//
	// Required: false
	// Example: wx21k2j193j2ksdfaak291l
	ClientId string `form:"clientId,optional"`
	// 是否系统内置
	//
	// Required: false
	System *bool `form:"system,optional"`
	// 是否已初始化
	//
	// Required: false
	Init *bool `form:"init,optional"`
}

// OAuth provider list response | OAuth提供商查询返回
// swagger:model OauthProviderListResp
type OauthProviderListResp struct {
	Page *Pagination          `json:"page,optional"`
	List []*OauthProviderInfo `json:"list"`
}

// Department request | 部门查询请求
// swagger:parameters GetDepartmentListAdmin GetDepartmentAdmin
type DepartmentReq struct {
	BaseID
	*Pagination
	// 部门名称
	Name string `json:"name,optional" form:"name,optional"`
	// Leader ID | 负责人ID
	LeaderId int64 `json:"leaderId,string,optional" form:"leaderId,optional"`
	// Parent ID | 父节点ID
	ParentId int64 `json:"parentId,string,optional" form:"parentId,optional"`
}

// Department list response | 部门列表返回
// swagger:model DepartmentListResp
type DepartmentListResp struct {
	// Page | 分页数据
	Page *Pagination `json:"page,optional"`
	// List | 数据列表
	List []*DepartmentInfo `json:"list"`
}

// Dictionary request | 字典查询请求
// swagger:parameters GetDictionaryListAdmin GetDictionaryAdmin
type DictionaryReq struct {
	BaseID
	*Pagination
	// 展示名称
	Title string `json:"title,optional" form:"title,optional"`
	// 搜索名称
	Name string `json:"name,optional" form:"name,optional"`
	// Status | 状态
	Status string `json:"status,optional" form:"status,optional"`
	// Keyword | 综合搜索关键字
	Keyword string `json:"keyword,optional" form:"keyword,optional"`
}

// Dictionary list response | 字典列表返回
// swagger:model DictionaryListResp
type DictionaryListResp struct {
	// Page | 分页数据
	Page *Pagination `json:"page,optional"`
	// List | 数据列表
	List []*DictionaryInfo `json:"list"`
}

// Dictionary detail request | 字典项查询请求
// swagger:parameters GetDictionaryDetailListAdmin GetDictionaryDetailAdmin
type DictionaryDetailReq struct {
	BaseID
	*Pagination
	// 字典ID
	DictionaryID int64 `json:"dictionaryId,string,optional" form:"dictionaryId,optional"`
	// Status | 状态
	Status string `json:"status,optional" form:"status,optional"`
	// 展示名称
	Title string `json:"title,optional" form:"title,optional"`
	// Key
	Key string `json:"key,optional" form:"key,optional"`
	// Keyword | 综合搜索关键字
	Keyword string `json:"keyword,optional" form:"keyword,optional"`
}

// Dictionary Detail list response | 字典项列表返回
// swagger:model DictionaryDetailListResp
type DictionaryDetailListResp struct {
	// Page | 分页数据
	Page *Pagination `json:"page,optional"`
	// List | 数据列表
	List []*DictionaryDetailInfo `json:"list"`
}

// Dictionary Detail request | 字典项删除请求
// swagger:parameters DeleteDictionaryDetailAdmin
type DeleteDictionaryDetailReq struct {
	BaseIDs
	// 字典ID
	DictionaryID int64 `json:"dictionaryId,string,optional" form:"dictionaryId,optional"`
}
