From 53ee8581409ef980b6c801a61f2c9facb41f8200 Mon Sep 17 00:00:00 2001 From: NoahLan <6995syu@163.com> Date: Mon, 11 Sep 2023 18:00:28 +0800 Subject: [PATCH] =?UTF-8?q?wip:=20=E6=B7=BB=E5=8A=A0=E6=89=80=E6=9C=89?= =?UTF-8?q?=E7=9A=84=E5=9F=BA=E6=9C=AC=E6=A8=A1=E5=9E=8B=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=B8=80=E4=BA=9B=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/desc/all.api | 9 +- api/desc/auth/auth.api | 167 ++++++++++++++++++++++ api/desc/common.api | 11 ++ api/desc/core/captcha.api | 38 +++++ api/desc/core/department.api | 56 ++++++++ api/desc/core/dictionary.api | 56 ++++++++ api/desc/core/district.api | 95 +++++++++++++ api/desc/core/model.api | 236 ++++++++++++++++++++++++++++++- api/desc/core/oauth_provider.api | 57 ++++++++ api/desc/core/role.api | 59 ++++++++ api/desc/core/token.api | 49 +++++++ api/desc/core/user.api | 44 +++++- 12 files changed, 870 insertions(+), 7 deletions(-) create mode 100644 api/desc/auth/auth.api create mode 100644 api/desc/common.api create mode 100644 api/desc/core/captcha.api create mode 100644 api/desc/core/department.api create mode 100644 api/desc/core/dictionary.api create mode 100644 api/desc/core/district.api create mode 100644 api/desc/core/oauth_provider.api create mode 100644 api/desc/core/role.api create mode 100644 api/desc/core/token.api diff --git a/api/desc/all.api b/api/desc/all.api index 5e4f49f..14bd281 100644 --- a/api/desc/all.api +++ b/api/desc/all.api @@ -1,3 +1,10 @@ import "base.api" +import "auth/auth.api" import "core/model.api" -import "core/user.api" \ No newline at end of file +import "core/user.api" +import "core/role.api" +import "core/token.api" +import "core/captcha.api" +import "core/district.api" +import "core/oauth_provider.api" +import "core/department.api" diff --git a/api/desc/auth/auth.api b/api/desc/auth/auth.api new file mode 100644 index 0000000..700326a --- /dev/null +++ b/api/desc/auth/auth.api @@ -0,0 +1,167 @@ +syntax = "v1" + +import "../base.api" + +type ( + // OAuth log in request | OAuth 登录请求 + // swagger:parameters OauthLogin + OauthLoginReq { + // 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登录返回提供商登录页地址 + OauthLoginResp { + // Auth URL | 提供商登录地址 + AuthUrl string `json:"authUrl"` + } + + // OAuth log in by code request | OAuth 直接登录请求 + OauthLoginByCodeReq { + // Code | 一次性code + Code string `json:"code"` + + // Provider name | 服务提供商名称 + // + // Example: [wechat,google] + Provider string `json:"provider" validate:"max=40"` + } + + // OAuth log in by phone code request | OAuth 手机号码登录请求 + OauthLoginByPhoneCodeReq { + // AuthCode | 登录Code,非必填,为了平台兼容性 + AuthCode string `json:"authCode,optional"` + + // Code | 一次性code + Code string `json:"code"` + + // Provider name | 服务提供商名称 + // + // Example: [wechat,google] + Provider string `json:"provider" validate:"max=40"` + } + + // Log in request | 普通登录请求 + LoginReq { + // 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 + LoginResp { + // TwoFactorType | 两步验证类型,空字符串表示无需两步验证 + TwoFactorType string `json:"twoFactorType"` + + // Token | Token信息 + Token LoginTokenInfo `json:"token,optional"` + } + + // LoginTokenInfo | Token数据 + // swagger:model LoginTokenInfo + LoginTokenInfo { + // 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 | 注册请求 + RegisterReq { + // 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"` + } +) + +@server( + group: auth + prefix: /api/auth +) +service api { + // Oauth log in | Oauth 第三方登录,获取登录地址(通常针对PC网页登录,APP端自行获取code) + @handler oauthLogin + get /oauth/login (OauthLoginReq) returns (OauthLoginResp) + + // Oauth log in by code | Oauth 第三方登录,客户端自行获取code进行登录 + @handler oauthLoginByCode + post /oauth/login/byCode (OauthLoginByCodeReq) returns (LoginResp) + + // Oauth log in by phone code | Oauth 第三方登录,客户端获取换取手机号的code进行登录 + @handler oauthLoginByPhone + post /oauth/login/byPhone (OauthLoginByPhoneCodeReq) returns (LoginResp) + + // Oauth log in callback route | Oauth 登录返回调接口,即redirect_uri + @handler oauthCallback + get /oauth/login/callback returns (LoginResp) + + // Log in | 密码登录 + @handler login + post /login (LoginReq) returns (LoginResp) + + // Log in by code | 验证码登录,手机x邮箱 + @handler loginByCode + post /login/byCode (LoginReq) returns (LoginResp) + + // Register | 注册 + @handler register + post /register (RegisterReq) returns (BaseID) +} \ No newline at end of file diff --git a/api/desc/common.api b/api/desc/common.api new file mode 100644 index 0000000..804b18f --- /dev/null +++ b/api/desc/common.api @@ -0,0 +1,11 @@ +syntax = "v1" + + // CaptchaInfo | 验证码信息 +type ( + CaptchaInfo { + // CaptchaId | 验证码ID + CaptchaId string `json:"captchaId"` + // ImgPath | 验证码图片路径 + ImgPath string `json:"imgPath"` + } +) \ No newline at end of file diff --git a/api/desc/core/captcha.api b/api/desc/core/captcha.api new file mode 100644 index 0000000..8fd9492 --- /dev/null +++ b/api/desc/core/captcha.api @@ -0,0 +1,38 @@ +syntax = "v1" + +type ( + // Validating captcha request | 验证验证码请求 + ValidateCaptchaReq { + // 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"` + } +) + + +@server( + group: captcha + prefix: /api/captcha +) +service api { + // Get Captcha | 获取验证码 + @handler getCaptcha + get / returns (CaptchaInfo) + + // Validating captcha | 验证验证码正确性 + @handler validateCaptcha + post /validate (ValidateCaptchaReq) +} \ No newline at end of file diff --git a/api/desc/core/department.api b/api/desc/core/department.api new file mode 100644 index 0000000..f7b83bc --- /dev/null +++ b/api/desc/core/department.api @@ -0,0 +1,56 @@ +syntax = "v1" + +type ( + // Department request | 部门查询请求 + // swagger:parameters GetDepartmentListAdmin GetDepartmentAdmin + DepartmentReq { + 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 | 部门列表返回 + DepartmentListResp { + // Page | 分页数据 + Page *Pagination `json:"page,optional"` + + // List | 数据列表 + List []*DepartmentInfo `json:"list"` + } +) + +@server( + jwt: Auth + group: department_admin + middleware: Authority + prefix: /api/admin/department +) +service api { + // Create department | 创建部门 + @handler createDepartmentAdmin + post /create (DepartmentInfo) returns (BaseID) + + // Update department info | 更新部门信息 + @handler updateDepartmentAdmin + post /update (DepartmentInfo) + + // Get department list | 获取部门列表 + @handler getDepartmentListAdmin + get /list (DepartmentReq) returns (DepartmentListResp) + + // Get department | 获取部门 + @handler getDepartmentAdmin + get / (DepartmentReq) returns (DepartmentInfo) + + // Delete department | 删除部门 + @handler deleteDepartmentAdmin + delete / (BaseID) +} \ No newline at end of file diff --git a/api/desc/core/dictionary.api b/api/desc/core/dictionary.api new file mode 100644 index 0000000..d22a3b7 --- /dev/null +++ b/api/desc/core/dictionary.api @@ -0,0 +1,56 @@ +syntax = "v1" + +type ( + // Dictionary request | 字典查询请求 + // swagger:parameters GetDictionaryListAdmin GetDictionaryAdmin + DictionaryReq { + BaseID + *Pagination + + // 展示名称 + Title string `json:"title,optional" form:"title,optional"` + + // 搜索名称 + Name string `json:"name,optional" form:"name,optional"` + + // Keyword | 综合搜索关键字 + Keyword string `json:"keyword,optional" form:"keyword,optional"` + } + + // Dictionary list response | 字典列表返回 + DictionaryListResp { + // Page | 分页数据 + Page *Pagination `json:"page,optional"` + + // List | 数据列表 + List []*DictionaryInfo `json:"list"` + } +) + +@server( + jwt: Auth + group: dictionary_admin + middleware: Authority + prefix: /api/admin/dictionary +) +service api { + // Create dictionary | 创建字典 + @handler createDictionaryAdmin + post /create (DictionaryInfo) returns (BaseID) + + // Update dictionary info | 更新字典信息 + @handler updateDictionaryAdmin + post /update (DictionaryInfo) + + // Get dictionary list | 获取字典列表 + @handler getDictionaryListAdmin + get /list (DictionaryReq) returns (DictionaryListResp) + + // Get dictionary | 获取字典 + @handler getDictionaryAdmin + get / (DictionaryReq) returns (DictionaryInfo) + + // Delete dictionary | 删除字典 + @handler deleteDictionaryAdmin + delete / (BaseID) +} \ No newline at end of file diff --git a/api/desc/core/district.api b/api/desc/core/district.api new file mode 100644 index 0000000..3eec1b5 --- /dev/null +++ b/api/desc/core/district.api @@ -0,0 +1,95 @@ +syntax = "v1" + +type ( + // District tree | 地址树,层级结构 + // swagger:model DistrictTree + DistrictTree { + // Tree | 树 + Tree []*DistrictInfo `json:"tree"` + } + + // District request | 地址请求参数 + // swagger:parameters GetDistrictTree + DistrictReq { + BaseID + + // Code | 地址编码 + Code string `json:"code,optional" form:"code,optional"` + } + + // Get District List | 获取地址列表,单级机构,children为空 + // swagger:parameters GetDistrictList + GetDistrictListReq { + 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 + GetDistrictChildrenReq { + // Parent Code | 父级Code,若为空,则查询level为1的列表 + ParentCode string `json:"parentCode,optional" form:"parentCode,optional"` + } + + // District name request | 地址名称请求参数 + // swagger:parameters GetDistrictName + GetDistrictNameReq { + // Code | 地址编码 + Code string `json:"code,optional" form:"code,optional"` + + // Separator | 分隔符,默认为空字符串 + Separator string `json:"sep,optional" form:"sep,optional"` + } + + // District name response | 地址名称回复 + GetDistrictNameResp { + // Code | 地址编码 + Code string `json:"code"` + + // Name | 地址名称(拼接后) + Name string `json:"name"` + + // Name List | 地址名称列表,逐级,不拼接 + NameList []string `json:"nameList"` + } +) + +@server( + group: district + prefix: /api/district +) +service api { + // get district tree | 获取地址树,整棵树 + @handler getDistrictTree + get /tree (DistrictReq) returns (DistrictTree) + + // get district list | 获取地址列表 + @handler getDistrictList + get /list (GetDistrictListReq) returns ([]*DistrictInfo) + + // get district children | 获取子级地址列表 + @handler getDistrictChildren + get /children (GetDistrictChildrenReq) returns ([]*DistrictInfo) + + // get district name list | 获取地址名 + @handler getDistrictName + get /name (GetDistrictNameReq) returns (GetDistrictNameResp) +} \ No newline at end of file diff --git a/api/desc/core/model.api b/api/desc/core/model.api index a5133a3..4bd1309 100644 --- a/api/desc/core/model.api +++ b/api/desc/core/model.api @@ -10,7 +10,235 @@ info( import "../base.api" -type UserInfo { - BaseID - TimeInfo -} \ No newline at end of file +type ( + UserInfo { + 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"` + } + + // 用户登录记录 + UserLoginRecordInfo { + 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信息 + TokenInfo { + BaseID + TimeInfo + + // Status | 状态 + Status string `json:"status,optional"` + // User's ID | 用户ID + UserID int64 `json:"userId,string,optional"` + // Token type | 凭证类型 [Bearer] + TokenType string `json:"tokenType,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 string `json:"expiredAt,optional"` + } + + // 用户社交平台信息 + UserSocialInfo { + 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"` + } +) + +type ( + // 角色信息 + RoleInfo { + 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"` + } +) + +type ( + DepartmentInfo { + 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"` + } +) + +type ( + OauthProviderInfo { + 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"` + } +) + +type ( + // District info | 地址信息 + DistrictInfo { + 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"` + } + + // 字典信息 + DictionaryInfo { + 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"` + } + + // 字典项信息 + DictionaryDetailInfo { + 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"` + } +) \ No newline at end of file diff --git a/api/desc/core/oauth_provider.api b/api/desc/core/oauth_provider.api new file mode 100644 index 0000000..ece0e1e --- /dev/null +++ b/api/desc/core/oauth_provider.api @@ -0,0 +1,57 @@ +syntax = "v1" + +type ( + // OAuth provider request | OAuth提供商查询请求 + // swagger:parameters GetOauthProviderAdmin GetOauthProviderListAdmin + OauthProviderReq { + BaseID + *Pagination + + // Name | 第三方提供商名称 + // + // Required: false + // Example: wechat + Name string `form:"name,optional"` + + // ClientId | 第三方客户端ID (like) + // + // Required: false + // Example: wx21k2j193j2ksdfaak291l + ClientId string `form:"clientId,optional"` + } + + // OAuth provider list response | OAuth提供商查询返回 + OauthProviderListResp { + Page *Pagination `json:"page,optional"` + + List []*OauthProviderInfo `json:"list"` + } +) + +@server( + jwt: Auth + group: oauthprovider_admin + middleware: Authority + prefix: /api/admin/oauth_provider +) +service api { + // Create oauth provider information | 创建第三方信息 + @handler createOauthProviderAdmin + post /create (OauthProviderInfo) + + // Update oauth provider information | 更新第三方信息 + @handler updateOauthProviderAdmin + post /update (OauthProviderInfo) + + // Delete oauth provider information | 删除第三方信息 + @handler deleteOauthProviderAdmin + post /delete (BaseIDs) + + // Get oauth provider list | 获取第三方信息列表 + @handler getOauthProviderListAdmin + get /list (OauthProviderReq) returns (OauthProviderListResp) + + // Get oauth provider by Params | 根据条件获取第三方信息 + @handler getOauthProviderAdmin + get / (OauthProviderReq) returns (OauthProviderInfo) +} \ No newline at end of file diff --git a/api/desc/core/role.api b/api/desc/core/role.api new file mode 100644 index 0000000..7c301eb --- /dev/null +++ b/api/desc/core/role.api @@ -0,0 +1,59 @@ +syntax = "v1" + +type ( + // Role request | 角色查询请求 + // swagger:parameters GetRoleAdmin GetRoleListAdmin + RoleReq { + 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 | 角色列表查询返回 + RoleListResp { + // Page | 分页数据 + Page *Pagination `json:"page,optional"` + + // List | 数据列表 + List []*RoleInfo `json:"list"` + } +) + +@server( + jwt: Auth + group: role_admin + middleware: Authority + prefix: /api/admin/role +) +service api { + // Create role information | 创建角色 + @handler createRoleAdmin + post /create (RoleInfo) + + // Update role information | 更新角色 + @handler updateRoleAdmin + post /update (RoleInfo) + + // Delete role information | 删除角色信息 + @handler deleteRoleAdmin + delete / (BaseIDs) + + // Get role list | 获取角色列表 + @handler getRoleListAdmin + get /list (RoleReq) returns (RoleListResp) + + // Get Role | 根据条件获取角色 + @handler getRoleAdmin + get / (RoleReq) returns (RoleInfo) +} \ No newline at end of file diff --git a/api/desc/core/token.api b/api/desc/core/token.api new file mode 100644 index 0000000..e4e9e16 --- /dev/null +++ b/api/desc/core/token.api @@ -0,0 +1,49 @@ +syntax = "v1" + +type ( + // Token request | 查询凭证请求 + // swagger:parameters GetTokenListAdmin + TokenReq { + 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 | 凭证列表返回 + TokenListResp { + // Page | 分页数据 + Page *Pagination `json:"page,optional"` + + // List | 数据列表 + List []TokenInfo `json:"list"` + } +) + +@server( + group: token_admin + prefix: /api/admin/token + jwt: Auth + middleware: Authority +) +service api { + // Get token list | 获取凭证列表 + @handler getTokenListAdmin + get /list (TokenReq) returns (TokenListResp) + + // Disable token | 禁用凭证(强制下线) + @handler disableTokenAdmin + post /disable (BaseID) +} \ No newline at end of file diff --git a/api/desc/core/user.api b/api/desc/core/user.api index 0f33063..2813cb1 100644 --- a/api/desc/core/user.api +++ b/api/desc/core/user.api @@ -1,9 +1,29 @@ -//import "model.api" +syntax = "v1" type ( + // User request | 用户查询参数 + // swagger:parameters GetUserAdmin GetUserListAdmin UserReq { 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 | 用户列表返回 + UserListResp { + // Page | 分页数据 + Page *Pagination `json:"page,optional"` + + // List | 数据列表 + List []*UserInfo `json:"list"` } ) @@ -18,11 +38,31 @@ service api { @handler createUserAdmin post /create (UserInfo) returns (BaseID) + // Update user | 更新用户信息 + @handler updateUserAdmin + post /update (UserInfo) + + // Get user list | 获取用户列表 + @handler getUserListAdmin + get /list (UserReq) returns (UserListResp) + // Get user | 获取用户 @handler getUserAdmin get / (UserReq) returns (UserInfo) // Delete user | 删除用户 @handler deleteUserAdmin - post / (BaseID) + delete / (BaseID) +} + +@server( + group: user + prefix: /api/user + jwt: Auth + middleware: Authority +) +service api { + // Get Current User | 获取当前登录用户信息 + @handler getCurrentUser + get / returns (UserInfo) } \ No newline at end of file