syntax = "proto3"; package system; option go_package = "./system"; // ========== 通用消息 ========== message CommonResp { int64 code = 1; string msg = 2; } message IdReq { string id = 1; } message IdsReq { repeated string ids = 1; } // ========== 角色 ========== message RoleInfo { string id = 1; string name = 2; string code = 3; int32 sort = 4; repeated string menuIds = 5; } message RoleReq { string name = 1; string code = 2; int32 sort = 3; repeated string menuIds = 4; } message RoleUpdateReq { string id = 1; string name = 2; string code = 3; int32 sort = 4; repeated string menuIds = 5; } message RoleListReq { int32 current = 1; int32 pageSize = 2; string name = 3; } message RoleListResp { repeated RoleInfo list = 1; int64 total = 2; } // ========== 菜单 ========== message MenuInfo { string id = 1; string parentId = 2; int32 category = 3; string name = 4; string title = 5; string code = 6; string path = 7; string permission = 8; string locale = 9; string icon = 10; int32 sort = 11; repeated MenuInfo children = 12; } message MenuReq { string parentId = 1; int32 category = 2; string name = 3; string title = 4; string code = 5; string path = 6; string permission = 7; string locale = 8; string icon = 9; int32 sort = 10; } message MenuUpdateReq { string id = 1; string parentId = 2; int32 category = 3; string name = 4; string title = 5; string code = 6; string path = 7; string permission = 8; string locale = 9; string icon = 10; int32 sort = 11; } message MenuListResp { repeated MenuInfo menus = 1; } // ========== 客户端 ========== message ClientInfo { string id = 1; string clientId = 2; string name = 3; string grantType = 4; string additionalInfo = 5; int64 activeTimeout = 6; } message ClientReq { string clientId = 1; string name = 2; string grantType = 3; string additionalInfo = 4; int64 activeTimeout = 5; } message ClientUpdateReq { string id = 1; string clientId = 2; string name = 3; string grantType = 4; string additionalInfo = 5; int64 activeTimeout = 6; } message ClientListReq { int32 current = 1; int32 pageSize = 2; string name = 3; } message ClientListResp { repeated ClientInfo list = 1; int64 total = 2; } // ========== 字典 ========== message DictInfo { string id = 1; string type = 2; string label = 3; string value = 4; int32 sort = 5; string desc = 6; } message DictReq { string type = 1; string label = 2; string value = 3; int32 sort = 4; string desc = 5; } message DictUpdateReq { string id = 1; string type = 2; string label = 3; string value = 4; int32 sort = 5; string desc = 6; } message DictListReq { int32 current = 1; int32 pageSize = 2; string type = 3; } message DictListResp { repeated DictInfo list = 1; int64 total = 2; } // ========== 操作日志 ========== message OperationRecordInfo { string id = 1; string clientId = 2; string ip = 3; string method = 4; string path = 5; int32 status = 6; int64 latency = 7; string agent = 8; string errorMessage = 9; string body = 10; string resp = 11; string userId = 12; int64 createdAt = 13; } message CreateOperationRecordReq { string clientId = 1; string ip = 2; string method = 3; string path = 4; int32 status = 5; int64 latency = 6; string agent = 7; string errorMessage = 8; string body = 9; string resp = 10; string userId = 11; } message OperationRecordListReq { int32 current = 1; int32 pageSize = 2; string method = 3; string path = 4; int32 status = 5; } message OperationRecordListResp { repeated OperationRecordInfo list = 1; int64 total = 2; } // ========== 用户 ========== message UserInfo { string id = 1; string tenantId = 2; string clientId = 3; string name = 4; string account = 5; string nickName = 6; string phone = 7; string sessionKey = 8; string unionId = 9; string openId = 10; string saOpenId = 11; string avatarId = 12; int32 gender = 13; string country = 14; string province = 15; string city = 16; string language = 17; int32 isVip = 18; int64 vipExpireAt = 19; string lastLoginIp = 20; int64 lastLoginAt = 21; int64 createdAt = 22; int64 updatedAt = 23; string avatarUrl = 24; } message GetUserByIdReq { string id = 1; } message GetUserByIdResp { UserInfo user = 1; } message GetUserByOpenIdReq { string openId = 1; } message GetUserByOpenIdResp { UserInfo user = 1; } message CreateUserReq { string name = 1; string account = 2; string password = 3; string openId = 4; string sessionKey = 5; string clientId = 6; string phone = 7; } message CreateUserResp { UserInfo user = 1; } message UpdateUserReq { string id = 1; string name = 2; string account = 3; string phone = 4; string avatarId = 5; string nickName = 6; } message LoginByAccountReq { string account = 1; string password = 2; } message LoginByAccountResp { UserInfo user = 1; } message GetUserListReq { int32 current = 1; int32 pageSize = 2; string name = 3; string account = 4; } message GetUserListResp { repeated UserInfo list = 1; int64 total = 2; } message DeleteUserReq { repeated string ids = 1; } message ResetPasswordReq { string id = 1; string password = 2; } // ========== 请求/响应(跨模块) ========== message GetRolesByUserIdReq { string userId = 1; } message GetRolesByUserIdResp { repeated RoleInfo roles = 1; } message GetMenusByRoleIdReq { string roleId = 1; } message GetMenusByRoleIdResp { repeated MenuInfo menus = 1; } message GetClientByIdReq { string clientId = 1; } message GetClientByIdResp { ClientInfo client = 1; } // ========== 服务定义 ========== service SystemService { // --- 用户 --- rpc GetUserById(GetUserByIdReq) returns (GetUserByIdResp); rpc GetUserByOpenId(GetUserByOpenIdReq) returns (GetUserByOpenIdResp); rpc LoginByAccount(LoginByAccountReq) returns (LoginByAccountResp); rpc CreateUser(CreateUserReq) returns (CreateUserResp); rpc UpdateUser(UpdateUserReq) returns (CommonResp); rpc GetUserList(GetUserListReq) returns (GetUserListResp); rpc DeleteUser(DeleteUserReq) returns (CommonResp); rpc ResetPassword(ResetPasswordReq) returns (CommonResp); // --- 角色 --- rpc GetRolesByUserId(GetRolesByUserIdReq) returns (GetRolesByUserIdResp); rpc CreateRole(RoleReq) returns (CommonResp); rpc UpdateRole(RoleUpdateReq) returns (CommonResp); rpc DeleteRole(IdsReq) returns (CommonResp); rpc GetRoleList(RoleListReq) returns (RoleListResp); // --- 菜单 --- rpc GetMenusByRoleId(GetMenusByRoleIdReq) returns (GetMenusByRoleIdResp); rpc CreateMenu(MenuReq) returns (CommonResp); rpc UpdateMenu(MenuUpdateReq) returns (CommonResp); rpc DeleteMenu(IdsReq) returns (CommonResp); rpc GetMenuList(IdReq) returns (MenuListResp); // --- 客户端 --- rpc GetClientById(GetClientByIdReq) returns (GetClientByIdResp); rpc CreateClient(ClientReq) returns (CommonResp); rpc UpdateClient(ClientUpdateReq) returns (CommonResp); rpc DeleteClient(IdsReq) returns (CommonResp); rpc GetClientList(ClientListReq) returns (ClientListResp); // --- 字典 --- rpc CreateDict(DictReq) returns (CommonResp); rpc UpdateDict(DictUpdateReq) returns (CommonResp); rpc DeleteDict(IdsReq) returns (CommonResp); rpc GetDictList(DictListReq) returns (DictListResp); // --- 操作日志 --- rpc CreateOperationRecord(CreateOperationRecordReq) returns (CommonResp); rpc DeleteOperationRecord(IdsReq) returns (CommonResp); rpc GetOperationRecordList(OperationRecordListReq) returns (OperationRecordListResp); }