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 GetDistrictNameResp { string code = 1; string name = 2; repeated string name_list = 3; } 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 TokenListResp { optional Pagination page = 1; repeated TokenInfo 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 DepartmentListResp { optional Pagination page = 1; repeated DepartmentInfo 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 DistrictListResp { optional Pagination page = 1; repeated DistrictInfo 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 DepartmentInfo { int64 ID = 1; string status = 2; string created_at = 3; string updated_at = 4; string name = 5; string 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 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 OauthProviderListResp { optional Pagination page = 1; repeated OauthProviderInfo data = 2; } 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 metas = 10; repeated RoleInfo roles = 20; repeated UserSocialInfo socials = 21; repeated DepartmentInfo departments = 22; repeated TokenInfo tokens = 23; LoginRecordInfo login_record = 24; } 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; } // Base message message Empty {} message OauthRedirectResp { string url = 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 DictionaryListResp { optional Pagination page = 1; repeated DictionaryInfo data = 2; } 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 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 RoleReq { int64 ID = 1; string name = 2; string code = 3; optional Pagination page = 10; } // 基础回执 message BaseResp { uint32 code = 1; string msg = 2; } 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; } message DictionaryReq { int64 ID = 1; string name = 2; string title = 3; bool with_details = 4; optional Pagination page = 10; } message DictionaryDetailListResp { optional Pagination page = 1; repeated DictionaryDetailInfo data = 2; } message DeleteDictionaryDetailReq { repeated int64 ids = 1; int64 dict_id = 2; } message OauthLoginReq { string state = 1; string provider = 2; } message RoleListResp { optional Pagination page = 1; repeated RoleInfo data = 2; } message UserListResp { optional Pagination page = 1; repeated UserInfo data = 2; } message IDReq { uint64 id = 1; } message IDsReq { repeated uint64 ids = 1; } 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 UserSocialListResp { optional Pagination page = 1; repeated UserSocialInfo data = 2; } message CallbackReq { string state = 1; string code = 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 DistrictTree { repeated DistrictInfo tree = 1; } message RecordReq { int64 user_id = 1; } message GetDistrictNameReq { string code = 1; string separator = 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 TokenUserReq { int64 user_id = 1; } 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; } // 基础回执带ID message BaseIDResp { uint64 id = 1; uint32 code = 2; string msg = 3; } // 分页参数 message Pagination { uint64 size = 1; uint64 total = 2; uint64 current = 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 DistrictCodeReq { string code = 1; } 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(UserReq) returns (UserListResp); // group: dictionary rpc getDictionary(UserReq) 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 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); }