syntax = "v1" info ( title: "Permission System API" desc: "权限管理系统" version: "1.0" ) // ==================== Common ==================== type PageResp { Total int64 `json:"total"` List interface{} `json:"list"` } // ==================== Auth ==================== type ( LoginReq { Username string `json:"username"` Password string `json:"password"` ProductCode string `json:"productCode"` } AdminLoginReq { Username string `json:"username"` Password string `json:"password"` ManagementKey string `json:"managementKey"` } LoginResp { AccessToken string `json:"accessToken"` RefreshToken string `json:"refreshToken"` Expires int64 `json:"expires"` UserInfo UserInfo `json:"userInfo"` } UserInfo { UserId int64 `json:"userId"` Username string `json:"username"` Nickname string `json:"nickname"` Avatar string `json:"avatar"` Email string `json:"email"` Phone string `json:"phone"` IsSuperAdmin int64 `json:"isSuperAdmin"` MustChangePassword int64 `json:"mustChangePassword"` MemberType string `json:"memberType"` Perms []string `json:"perms"` } RefreshTokenReq { Authorization string `header:"Authorization"` ProductCode string `json:"productCode,optional"` } ChangePasswordReq { OldPassword string `json:"oldPassword"` NewPassword string `json:"newPassword"` } ) // ==================== Product ==================== type ( CreateProductReq { Code string `json:"code"` Name string `json:"name"` Remark string `json:"remark,optional"` } CreateProductResp { Id int64 `json:"id"` Code string `json:"code"` AppKey string `json:"appKey"` AppSecret string `json:"appSecret"` AdminUser string `json:"adminUser"` AdminPassword string `json:"adminPassword"` } UpdateProductReq { Id int64 `json:"id"` Name string `json:"name"` Remark string `json:"remark,optional"` Status int64 `json:"status,optional"` } ProductListReq { Page int64 `json:"page,optional"` PageSize int64 `json:"pageSize,optional"` } ProductDetailReq { Id int64 `json:"id"` } ProductItem { Id int64 `json:"id"` Code string `json:"code"` Name string `json:"name"` AppKey string `json:"appKey"` Remark string `json:"remark"` Status int64 `json:"status"` CreateTime int64 `json:"createTime"` } ) // ==================== Perm ==================== type ( PermListReq { ProductCode string `json:"productCode"` Page int64 `json:"page,optional"` PageSize int64 `json:"pageSize,optional"` } PermItem { Id int64 `json:"id"` ProductCode string `json:"productCode"` Name string `json:"name"` Code string `json:"code"` Remark string `json:"remark"` Status int64 `json:"status"` CreateTime int64 `json:"createTime"` } SyncPermItem { Code string `json:"code"` Name string `json:"name"` Remark string `json:"remark,optional"` } SyncPermsReq { AppKey string `json:"appKey"` AppSecret string `json:"appSecret"` Perms []SyncPermItem `json:"perms"` } SyncPermsResp { Added int64 `json:"added"` Updated int64 `json:"updated"` Disabled int64 `json:"disabled"` } ) // ==================== Role ==================== type ( CreateRoleReq { ProductCode string `json:"productCode"` Name string `json:"name"` Remark string `json:"remark,optional"` PermsLevel int64 `json:"permsLevel"` } UpdateRoleReq { Id int64 `json:"id"` Name string `json:"name"` Remark string `json:"remark,optional"` PermsLevel int64 `json:"permsLevel"` Status int64 `json:"status,optional"` } DeleteRoleReq { Id int64 `json:"id"` } RoleListReq { ProductCode string `json:"productCode"` Page int64 `json:"page,optional"` PageSize int64 `json:"pageSize,optional"` } RoleDetailReq { Id int64 `json:"id"` } RoleItem { Id int64 `json:"id"` ProductCode string `json:"productCode"` Name string `json:"name"` Remark string `json:"remark"` Status int64 `json:"status"` PermsLevel int64 `json:"permsLevel"` PermIds []int64 `json:"permIds,omitempty"` CreateTime int64 `json:"createTime"` } BindPermsReq { RoleId int64 `json:"roleId"` PermIds []int64 `json:"permIds"` } ) // ==================== Dept ==================== type ( CreateDeptReq { ParentId int64 `json:"parentId"` Name string `json:"name"` Sort int64 `json:"sort,optional"` DeptType string `json:"deptType,optional"` Remark string `json:"remark,optional"` } UpdateDeptReq { Id int64 `json:"id"` Name string `json:"name"` Sort int64 `json:"sort,optional"` DeptType string `json:"deptType,optional"` Remark string `json:"remark,optional"` Status int64 `json:"status,optional"` } DeleteDeptReq { Id int64 `json:"id"` } DeptItem { Id int64 `json:"id"` ParentId int64 `json:"parentId"` Name string `json:"name"` Path string `json:"path"` Sort int64 `json:"sort"` DeptType string `json:"deptType"` Remark string `json:"remark"` Status int64 `json:"status"` CreateTime int64 `json:"createTime"` Children []*DeptItem `json:"children"` } ) // ==================== User ==================== type ( CreateUserReq { Username string `json:"username"` Password string `json:"password"` Nickname string `json:"nickname,optional"` Email string `json:"email,optional"` Phone string `json:"phone,optional"` Remark string `json:"remark,optional"` DeptId int64 `json:"deptId,optional"` } UpdateUserReq { Id int64 `json:"id"` Nickname *string `json:"nickname,optional"` Email *string `json:"email,optional"` Phone *string `json:"phone,optional"` Remark *string `json:"remark,optional"` DeptId *int64 `json:"deptId,optional"` Status int64 `json:"status,optional"` } UserListReq { ProductCode string `json:"productCode,optional"` Page int64 `json:"page,optional"` PageSize int64 `json:"pageSize,optional"` } UserDetailReq { Id int64 `json:"id"` } UserItem { Id int64 `json:"id"` Username string `json:"username"` Nickname string `json:"nickname"` Avatar string `json:"avatar"` Email string `json:"email"` Phone string `json:"phone"` Remark string `json:"remark"` DeptId int64 `json:"deptId"` Status int64 `json:"status"` MemberType string `json:"memberType,omitempty"` RoleIds []int64 `json:"roleIds,omitempty"` Perms []string `json:"perms,omitempty"` CreateTime int64 `json:"createTime"` } BindRolesReq { UserId int64 `json:"userId"` RoleIds []int64 `json:"roleIds"` } UserPermItem { PermId int64 `json:"permId"` Effect string `json:"effect"` } SetPermsReq { UserId int64 `json:"userId"` Perms []UserPermItem `json:"perms"` } UpdateUserStatusReq { Id int64 `json:"id"` Status int64 `json:"status"` } ) // ==================== Product Member ==================== type ( AddMemberReq { ProductCode string `json:"productCode"` UserId int64 `json:"userId"` MemberType string `json:"memberType"` } UpdateMemberReq { Id int64 `json:"id"` MemberType string `json:"memberType"` Status int64 `json:"status,optional"` } RemoveMemberReq { Id int64 `json:"id"` } MemberListReq { ProductCode string `json:"productCode"` Page int64 `json:"page,optional"` PageSize int64 `json:"pageSize,optional"` } MemberItem { Id int64 `json:"id"` ProductCode string `json:"productCode"` UserId int64 `json:"userId"` Username string `json:"username"` Nickname string `json:"nickname"` MemberType string `json:"memberType"` Status int64 `json:"status"` CreateTime int64 `json:"createTime"` } ) // ==================== Common Response ==================== type IdResp { Id int64 `json:"id"` } // ==================== Routes ==================== // 公开接口(无需鉴权) @server ( prefix: /api group: pub ) service perm-api { @handler Login post /auth/login (LoginReq) returns (LoginResp) @handler AdminLogin post /auth/adminLogin (AdminLoginReq) returns (LoginResp) @handler RefreshToken post /auth/refreshToken (RefreshTokenReq) returns (LoginResp) @handler SyncPerms post /perm/sync (SyncPermsReq) returns (SyncPermsResp) } // 需要鉴权的接口 @server ( prefix: /api group: auth middleware: JwtAuth ) service perm-api { @handler UserInfoHandler post /auth/userInfo returns (UserInfo) @handler ChangePassword post /auth/changePassword (ChangePasswordReq) } @server ( prefix: /api/product group: product middleware: JwtAuth ) service perm-api { @handler CreateProduct post /create (CreateProductReq) returns (CreateProductResp) @handler UpdateProduct post /update (UpdateProductReq) @handler ProductList post /list (ProductListReq) returns (PageResp) @handler ProductDetail post /detail (ProductDetailReq) returns (ProductItem) } @server ( prefix: /api/dept group: dept middleware: JwtAuth ) service perm-api { @handler CreateDept post /create (CreateDeptReq) returns (IdResp) @handler UpdateDept post /update (UpdateDeptReq) @handler DeleteDept post /delete (DeleteDeptReq) @handler DeptTree post /tree returns ([]*DeptItem) } @server ( prefix: /api/perm group: perm middleware: JwtAuth ) service perm-api { @handler PermList post /list (PermListReq) returns (PageResp) } @server ( prefix: /api/role group: role middleware: JwtAuth ) service perm-api { @handler CreateRole post /create (CreateRoleReq) returns (IdResp) @handler UpdateRole post /update (UpdateRoleReq) @handler DeleteRole post /delete (DeleteRoleReq) @handler RoleList post /list (RoleListReq) returns (PageResp) @handler RoleDetail post /detail (RoleDetailReq) returns (RoleItem) @handler BindRolePerms post /bindPerms (BindPermsReq) } @server ( prefix: /api/user group: user middleware: JwtAuth ) service perm-api { @handler CreateUser post /create (CreateUserReq) returns (IdResp) @handler UpdateUser post /update (UpdateUserReq) @handler UserList post /list (UserListReq) returns (PageResp) @handler UserDetail post /detail (UserDetailReq) returns (UserItem) @handler BindRoles post /bindRoles (BindRolesReq) @handler SetUserPerms post /setPerms (SetPermsReq) @handler UpdateUserStatus post /updateStatus (UpdateUserStatusReq) } @server ( prefix: /api/member group: member middleware: JwtAuth ) service perm-api { @handler AddMember post /add (AddMemberReq) returns (IdResp) @handler UpdateMember post /update (UpdateMemberReq) @handler RemoveMember post /remove (RemoveMemberReq) @handler MemberList post /list (MemberListReq) returns (PageResp) }