syntax = "proto3"; package organize; import "aeus/rest.proto"; import "validate/validate.proto"; import "google/protobuf/descriptor.proto"; import "google/api/annotations.proto"; option go_package = "git.nobla.cn/golang/aeis-admin/pb;pb"; // Menu 菜单模型定义 message Menu { option (aeus.rest) = { table: "menus" }; int64 id = 1 [(aeus.field) = {gorm:"primaryKey"}]; int64 parent_id = 2; string name = 3 [(aeus.field)={gorm:"index;size:60"},(validate.rules).string = {max_len: 60}]; string label = 4 [(aeus.field)={gorm:"size:120"},(validate.rules).string = {max_len: 120}]; string uri = 5 [(aeus.field)={gorm:"size:512"},(validate.rules).string = {max_len: 512}]; string view_path = 6 [(aeus.field)={gorm:"size:512"},(validate.rules).string = {max_len: 512}]; string icon = 7 [(aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; bool hidden = 8; bool public = 9; } // Role 角色模型定义 message Role { option (aeus.rest) = { table: "roles" }; int64 id = 1 [(aeus.field) = {gorm:"primaryKey"}]; string name = 2 [(aeus.field)={gorm:"index;size:60"},(validate.rules).string = {max_len: 60}]; string label = 3 [(aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; string description = 4 [(aeus.field)={gorm:"size:1024"},(validate.rules).string = {max_len: 1024}]; } // Permission 权限模型定义 message Permission { option (aeus.rest) = { table: "permissions" }; int64 id = 1 [(aeus.field) = {gorm:"primaryKey"}]; int64 menu_id = 2 [(aeus.field)={gorm:"index"}]; string permission = 3 [(aeus.field)={gorm:"index;size:60"},(validate.rules).string = {max_len: 60}]; string label = 4 [(aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; } // RolePermission 角色权限关联表 message RolePermission { option (aeus.rest) = { table: "role_permissions" }; int64 id = 1 [(aeus.field) = {gorm:"primaryKey"}]; string role = 2 [(aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; int64 permission_id = 3; } // User 用户模型定义 message User { option (aeus.rest) = { table: "users" }; int64 id = 1 [(aeus.field) = {gorm:"primaryKey"}]; int64 created_at = 2; int64 updated_at = 3; string uid = 4 [(aeus.field) = {gorm:"index;size:20"},(validate.rules).string = {min_len: 5, max_len: 20}]; string username = 5 [(aeus.field)={gorm:"size:20"},(validate.rules).string = {min_len: 5, max_len: 20}]; string role = 6 [(aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; bool admin = 7; int64 dept_id = 8 [(aeus.field) = {gorm:"not null;default:0"}]; string tag = 9 [ (aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; string password = 10 [(aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; string email = 11 [(aeus.field)={gorm:"size:60"},(validate.rules).string = {max_len: 60}]; string avatar = 12 [(aeus.field)={gorm:"size:1024"},(validate.rules).string = {max_len: 1024}]; string gender = 13 [(aeus.field)={gorm:"size:20;default:man"},(validate.rules).string = {max_len: 20}]; string description = 14 [(aeus.field)={gorm:"size:1024"},(validate.rules).string = {max_len: 1024}]; } // Department 部门模型定义 message Department { option (aeus.rest) = { table: "departments" }; int64 id = 1 [(aeus.field) = {gorm:"primaryKey"}]; int64 created_at = 2; int64 updated_at = 3; int64 parent_id = 4; string name = 5 [(aeus.field)={gorm:"size:20"},(validate.rules).string = {max_len: 20}]; string description = 6 [(aeus.field)={gorm:"size:1024"},(validate.rules).string = {max_len: 1024}]; } message PermissionItem { string value = 1; string label = 2; } // MenuItem 菜单数据 message MenuItem { string label = 1; string name = 2; string icon = 3; bool hidden = 4; bool public = 5; string route = 6; repeated PermissionItem permissions = 7; repeated MenuItem children = 8; } // 获取菜单的请求 message GetMenuRequest { bool permission = 1; } // 获取菜单的响应 message GetMenuResponse { repeated MenuItem data = 1; } // 菜单服务 service MenuService { rpc GetMenus(GetMenuRequest) returns (GetMenuResponse) { option (google.api.http) = { get: "/api/menu" }; } } // 获取用户信息 message GetProfileRequest { string uid = 1; } // 获取用户信息 message GetProfileResponse { string uid = 1; string username = 2; string role = 3; string email = 4; string avatar = 5; bool admin = 6; string description = 7; } message ResetPasswordRequest { string uid = 1; string old_password = 2; string new_password = 3; } message ResetPasswordResponse { string uid = 1; } message UpdateProfileRequest { string uid = 1; string username = 2; string email = 4; string avatar = 5; string description = 7; } message UpdateProfileResponse { string uid = 1; } // 用户服务 service ProfileService { rpc GetProfile(GetProfileRequest) returns (GetProfileResponse) { option (google.api.http) = { get: "/user/profile" }; } rpc UpdateProfile(UpdateProfileRequest) returns (UpdateProfileResponse) { option (google.api.http) = { put: "/user/profile" body: "*" }; } rpc ResetPassword(ResetPasswordRequest) returns (ResetPasswordResponse) { option (google.api.http) = { post: "/user/reset-password" body: "*" }; } } message LoginRequest { string username = 1; string password = 2; string token = 3; } message LoginResponse { string uid = 1; string username = 2; string token = 3; int64 expires = 4; } message LogoutRequest { string token = 1; } message LogoutResponse { string uid = 1; } // 授权服务 service AuthService { rpc Login(LoginRequest) returns (LoginResponse) { option (google.api.http) = { post: "/passport/login" body: "*" }; } rpc Logout(LogoutRequest) returns (LogoutResponse) { option (google.api.http) = { post: "/passport/logout" body: "*" }; } }