You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

529 lines
12 KiB
Protocol Buffer

syntax = "proto3";
package core;
option go_package="./core";
// 操作类型
enum Operator {
EQ = 0;
NEQ = 1;
IN = 2;
NotIn = 3;
GT = 4;
GTE = 5;
LT = 6;
LTE = 7;
Contains = 8;
Prefix = 9;
Suffix = 10;
EqualFold = 11;
ContainsFold = 12;
}
enum DistrictQueryType {
Normal = 0;
Children = 1;
ChildrenByLevel = 2;
Parents = 3;
}
message DepartmentInfo {
int64 ID = 1;
string status = 2;
string created_at = 3;
string updated_at = 4;
string name = 5;
int64 leader_id = 6;
string remark = 7;
int64 parent_id = 8;
DepartmentInfo parent = 10;
repeated DepartmentInfo children = 11;
repeated UserInfo users = 12;
UserInfo leader = 13;
}
message DeleteDictionaryDetailReq {
repeated int64 ids = 1;
int64 dict_id = 2;
}
message UserSocialListResp {
optional Pagination page = 1;
repeated UserSocialInfo data = 2;
}
// 基础回执
message BaseResp {
int32 code = 1;
string msg = 2;
}
message GetDistrictNameResp {
string code = 1;
string name = 2;
repeated string name_list = 3;
}
message RecordReq {
int64 user_id = 1;
}
message OauthProviderListResp {
optional Pagination page = 1;
repeated OauthProviderInfo data = 2;
}
message TokenInfo {
int64 ID = 1;
string status = 2;
string created_at = 3;
string updated_at = 4;
int64 user_id = 5;
string access_token = 6;
string refresh_token = 7;
string source = 8;
int64 expired_at = 9;
UserInfo user = 10;
}
message UserReq {
int64 ID = 1;
string username = 2;
string phone_number = 3;
string email = 4;
string nickname = 5;
bool with_role = 6;
bool with_social = 7;
bool with_department = 8;
bool with_token = 9;
bool with_login_record = 10;
optional Pagination page = 20;
}
message GetUserRolesReq {
optional Pagination page = 1;
int64 user_id = 2;
}
message DepartmentListResp {
optional Pagination page = 1;
repeated DepartmentInfo data = 2;
}
message DictionaryDetailListResp {
optional Pagination page = 1;
repeated DictionaryDetailInfo data = 2;
}
message DistrictListResp {
optional Pagination page = 1;
repeated DistrictInfo data = 2;
}
message OauthProviderReq {
int64 ID = 1;
string name = 2;
string client_id = 3;
optional bool system = 4;
optional bool init = 5;
optional Pagination page = 10;
}
message CallbackReq {
string state = 1;
string code = 2;
}
message OauthRedirectResp {
string url = 1;
}
message UserInfo {
int64 ID = 1;
string status = 2;
string created_at = 3;
string updated_at = 4;
string username = 5;
optional string phone_number = 6;
optional string email = 7;
string password = 8;
optional string nickname = 9;
map<string,string> metas = 10;
repeated RoleInfo roles = 20;
repeated UserSocialInfo socials = 21;
repeated DepartmentInfo departments = 22;
repeated TokenInfo tokens = 23;
LoginRecordInfo login_record = 24;
}
message UserRoleReq {
int64 user_id = 1;
repeated int64 role_ids = 2;
repeated string role_codes = 3;
}
message DictionaryInfo {
int64 ID = 1;
string status = 2;
string created_at = 3;
string updated_at = 4;
string title = 5;
string name = 6;
string description = 7;
repeated DictionaryDetailInfo details = 10;
}
message DictionaryDetailInfo {
int64 ID = 1;
string status = 2;
string created_at = 3;
string updated_at = 4;
string title = 5;
string key = 6;
string value = 7;
uint32 sort = 8;
int64 dictionary_id = 9;
DictionaryInfo dictionary = 10;
}
message DistrictReq {
string code = 1;
string province = 2;
string city = 3;
string area = 4;
string street = 5;
uint32 level = 6;
string name = 7;
string parent_code = 8;
optional Pagination page = 10;
DistrictQueryType query_type = 11;
}
message DistrictCodeReq {
string code = 1;
}
// 分页参数
message Pagination {
uint64 size = 1;
uint64 total = 2;
uint64 current = 3;
}
message GetDistrictNameReq {
string code = 1;
string separator = 2;
}
message LoginRecordInfo {
int64 ID = 1;
string created_at = 3;
string updated_at = 4;
int64 user_id = 5;
string last_login_at = 6;
string last_login_ipv4 = 7;
string last_login_device = 8;
string last_login_ua = 9;
uint64 login_count = 10;
}
message OauthProviderInfo {
int64 ID = 1;
string created_at = 2;
string updated_at = 3;
string name = 4;
string client_id = 5;
string client_secret = 6;
string redirect_url = 7;
string scopes = 8;
string auth_url = 9;
string token_url = 10;
string info_url = 11;
string description = 12;
bool system = 13;
bool init = 14;
}
message OauthLoginReq {
string state = 1;
string provider = 2;
}
message TokenUserReq {
int64 user_id = 1;
}
message TokenReq {
int64 ID = 1;
int64 user_id = 2;
string username = 3;
string phone_number = 4;
string email = 5;
bool with_user = 6;
optional Pagination page = 10;
}
message TokenListResp {
optional Pagination page = 1;
repeated TokenInfo data = 2;
}
message DictionaryDetailReq {
optional Pagination page = 1;
int64 ID = 2;
int64 dict_id = 3;
string title = 4;
string key = 5;
string value = 6;
bool with_dictionary = 7;
}
message DictionaryReq {
int64 ID = 1;
string name = 2;
string title = 3;
bool with_details = 4;
optional Pagination page = 10;
}
message RoleListResp {
optional Pagination page = 1;
repeated RoleInfo data = 2;
}
message UserSocialInfo {
int64 ID = 1;
string created_at = 2;
string updated_at = 3;
int64 user_id = 4;
string provider = 5;
string access_token = 6;
string refresh_token = 7;
string uid = 8;
string open_id = 9;
string union_id = 10;
string key = 11;
uint64 expires_in = 12;
string user_profile = 13;
UserInfo user = 14;
}
message DepartmentReq {
int64 ID = 1;
string name = 2;
int64 leader_id = 3;
int64 parent_id = 4;
bool with_leader = 5;
bool with_user = 6;
bool with_children = 7;
optional Pagination page = 10;
}
// 基础回执带ID
message BaseIDResp {
int64 ID = 1;
int32 code = 2;
string msg = 3;
}
message DictionaryListResp {
optional Pagination page = 1;
repeated DictionaryInfo data = 2;
}
// DistrictInfo 地址单体结构
message DistrictInfo {
int64 ID = 1;
string created_at = 2;
string updated_at = 3;
string name = 4;
string short_name = 5;
string code = 6;
string province = 7;
string city = 8;
string area = 9;
string street = 10;
uint32 level = 11;
double latitude = 12;
double longitude = 13;
repeated DistrictInfo children = 20;
}
message DistrictTree {
repeated DistrictInfo tree = 1;
}
message RoleReq {
int64 ID = 1;
string name = 2;
string code = 3;
bool with_user = 4;
optional Pagination page = 10;
}
message UserListResp {
optional Pagination page = 1;
repeated UserInfo data = 2;
}
message IDsReq {
repeated int64 ids = 1;
}
message IDReq {
int64 ID = 1;
}
message RoleInfo {
int64 ID = 1;
string status = 2;
string created_at = 3;
string updated_at = 4;
string code = 5;
string name = 6;
string description = 7;
repeated UserInfo users = 10;
}
message UserSocialReq {
int64 ID = 1;
int64 user_id = 2;
string provider = 3;
string access_token = 4;
string uid = 5;
string open_id = 6;
string union_id = 7;
bool with_user = 8;
optional Pagination page = 10;
}
// Base message
message Empty {}
service Core {
// group: base
rpc initDatabase(Empty) returns (BaseResp);
// Role management
// group: department
rpc createDepartment(DepartmentInfo) returns (BaseIDResp);
// group: department
rpc updateDepartment(DepartmentInfo) returns (BaseResp);
// group: department
rpc getDepartmentList(DepartmentReq) returns (DepartmentListResp);
// group: department
rpc getDepartment(DepartmentReq) returns (DepartmentInfo);
// group: department
rpc deleteDepartment(IDsReq) returns (BaseResp);
// Dictionary Management
// group: dictionary
rpc createDictionary(DictionaryInfo) returns (BaseIDResp);
// group: dictionary
rpc updateDictionary(DictionaryInfo) returns (BaseResp);
// group: dictionary
rpc getDictionaryList(DictionaryReq) returns (DictionaryListResp);
// group: dictionary
rpc getDictionary(DictionaryReq) returns (DictionaryInfo);
// group: dictionary
rpc deleteDictionary(IDsReq) returns (BaseResp);
// Details
// group: dictionary
rpc createDictionaryDetail(DictionaryDetailInfo) returns (BaseIDResp);
// group: dictionary
rpc updateDictionaryDetail(DictionaryDetailInfo) returns (BaseResp);
// group: dictionary
rpc getDictionaryDetailList(DictionaryDetailReq) returns (DictionaryDetailListResp);
// group: dictionary
rpc getDictionaryDetail(DictionaryDetailReq) returns (DictionaryDetailInfo);
// group: dictionary
rpc deleteDictionaryDetail(DeleteDictionaryDetailReq) returns (BaseResp);
// District management
// group: district
rpc getDistrict(DistrictCodeReq) returns (DistrictInfo);
// group: district
rpc getDistrictList(DistrictReq) returns (DistrictListResp);
// group: district
rpc getDistrictTree(DistrictCodeReq) returns (DistrictTree);
// group: district
rpc getDistrictName(GetDistrictNameReq) returns (GetDistrictNameResp);
// Login Record management
// group: login_record
rpc getRecord(RecordReq) returns (LoginRecordInfo);
// group: login_record
rpc record(LoginRecordInfo) returns (BaseResp);
// OauthProvider management
// group: oauth_provider
rpc createOauthProvider(OauthProviderInfo) returns (BaseIDResp);
// group: oauth_provider
rpc updateOauthProvider(OauthProviderInfo) returns (BaseResp);
// group: oauth_provider
rpc getOauthProviderList(OauthProviderReq) returns (OauthProviderListResp);
// group: oauth_provider
rpc getOauthProvider(OauthProviderReq) returns (OauthProviderInfo);
// group: oauth_provider
rpc deleteOauthProvider(IDsReq) returns (BaseResp);
// group: oauth_provider
rpc oauthLogin(OauthLoginReq) returns (OauthRedirectResp);
// group: oauth_provider
rpc oauthCallback(CallbackReq) returns (UserInfo);
// Role management
// group: role
rpc createRole(RoleInfo) returns (BaseIDResp);
// group: role
rpc updateRole(RoleInfo) returns (BaseResp);
// group: role
rpc getRoleList(RoleReq) returns (RoleListResp);
// group: role
rpc getRole(RoleReq) returns (RoleInfo);
// group: role
rpc deleteRole(IDsReq) returns (BaseResp);
// Token management
// group: token
rpc createToken(TokenInfo) returns (BaseIDResp);
// group: token
rpc updateToken(TokenInfo) returns (BaseResp);
// group: token
rpc getTokenList(TokenReq) returns (TokenListResp);
// group: token
rpc getToken(TokenReq) returns (TokenInfo);
// group: token
rpc deleteToken(IDsReq) returns (BaseResp);
// group: token
rpc blockUserAllToken(TokenUserReq) returns (BaseResp);
// User Management
// group: user
rpc createUser(UserInfo) returns (BaseIDResp);
// group: user
rpc updateUser(UserInfo) returns (BaseResp);
// group: user
rpc getUserList(UserReq) returns (UserListResp);
// group: user
rpc getUser(UserReq) returns (UserInfo);
// group: user
rpc deleteUser(IDsReq) returns (BaseResp);
// User-Role Relationship Management
// UserBindRole 用户绑定角色
// group: user_role
rpc UserBindRole(UserRoleReq) returns (BaseResp);
// UserUnbindRole 用户解绑角色
// group: user_role
rpc UserUnbindRole(UserRoleReq) returns (BaseResp);
// UserClearRole 用户清理角色
// group: user_role
rpc UserClearRole(IDReq) returns (BaseResp);
// GetUserRoles 获取用户绑定的角色列表
// group: user_role
rpc GetUserRoles(GetUserRolesReq) returns (RoleListResp);
// User Management
// group: user_social
rpc createUserSocial(UserSocialInfo) returns (BaseIDResp);
// group: user_social
rpc updateUserSocial(UserSocialInfo) returns (BaseResp);
// group: user_social
rpc getUserSocialList(UserSocialReq) returns (UserSocialListResp);
// group: user_social
rpc getUserSocial(UserSocialReq) returns (UserSocialInfo);
// group: user_social
rpc deleteUserSocial(IDsReq) returns (BaseResp);
}