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
		
	
			
		
		
	
	
			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 BaseResp {
 | |
|   int32 code = 1;
 | |
|   string msg = 2;
 | |
| }
 | |
| 
 | |
| 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 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 UserSocialListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated UserSocialInfo data = 2;
 | |
| }
 | |
| 
 | |
| message DepartmentListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated DepartmentInfo data = 2;
 | |
| }
 | |
| 
 | |
| message DictionaryReq {
 | |
|   int64 ID = 1;
 | |
|   string name = 2;
 | |
|   string title = 3;
 | |
|   bool with_details = 4;
 | |
|   optional Pagination page = 10;
 | |
| }
 | |
| 
 | |
| message DeleteDictionaryDetailReq {
 | |
|   repeated int64 ids = 1;
 | |
|   int64 dict_id = 2;
 | |
| }
 | |
| 
 | |
| message GetDistrictNameReq {
 | |
|   string code = 1;
 | |
|   string separator = 2;
 | |
| }
 | |
| 
 | |
| message CallbackReq {
 | |
|   string state = 1;
 | |
|   string code = 2;
 | |
| }
 | |
| 
 | |
| 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 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 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;
 | |
| }
 | |
| 
 | |
| //  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 RecordReq {
 | |
|   int64 user_id = 1;
 | |
| }
 | |
| 
 | |
| message UserRoleReq {
 | |
|   int64 user_id = 1;
 | |
|   repeated int64 role_ids = 2;
 | |
|   repeated string role_codes = 3;
 | |
| }
 | |
| 
 | |
| 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 OauthProviderReq {
 | |
|   int64 ID = 1;
 | |
|   string name = 2;
 | |
|   string client_id = 3;
 | |
|   optional bool system = 4;
 | |
|   optional bool init = 5;
 | |
|   optional Pagination page = 10;
 | |
| }
 | |
| 
 | |
| message TokenListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated TokenInfo data = 2;
 | |
| }
 | |
| 
 | |
| 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 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 GetDistrictNameResp {
 | |
|   string code = 1;
 | |
|   string name = 2;
 | |
|   repeated string name_list = 3;
 | |
| }
 | |
| 
 | |
| message GetUserRolesReq {
 | |
|   optional Pagination page = 1;
 | |
|   int64 user_id = 2;
 | |
| }
 | |
| 
 | |
| //  Base message
 | |
| message Empty {}
 | |
| 
 | |
| //  基础回执带ID
 | |
| message BaseIDResp {
 | |
|   int64 ID = 1;
 | |
|   int32 code = 2;
 | |
|   string msg = 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 OauthProviderListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated OauthProviderInfo data = 2;
 | |
| }
 | |
| 
 | |
| message RoleListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated RoleInfo data = 2;
 | |
| }
 | |
| 
 | |
| message TokenUserReq {
 | |
|   int64 user_id = 1;
 | |
| }
 | |
| 
 | |
| message IDReq {
 | |
|   int64 ID = 1;
 | |
| }
 | |
| 
 | |
| message IDsReq {
 | |
|   repeated int64 ids = 1;
 | |
| }
 | |
| 
 | |
| 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 DictionaryListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated DictionaryInfo data = 2;
 | |
| }
 | |
| 
 | |
| 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;
 | |
| }
 | |
| 
 | |
| message DictionaryDetailListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated DictionaryDetailInfo data = 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 OauthLoginReq {
 | |
|   string state = 1;
 | |
|   string provider = 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 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 UserListResp {
 | |
|   optional Pagination page = 1;
 | |
|   repeated UserInfo data = 2;
 | |
| }
 | |
| 
 | |
| //  分页参数
 | |
| message Pagination {
 | |
|   uint64 size = 1;
 | |
|   uint64 total = 2;
 | |
|   uint64 current = 3;
 | |
| }
 | |
| 
 | |
| message DistrictCodeReq {
 | |
|   string code = 1;
 | |
| }
 | |
| 
 | |
| 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 OauthRedirectResp {
 | |
|   string url = 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(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);
 | |
| }
 | |
| 
 |