227 lines
6.3 KiB
Protocol Buffer
227 lines
6.3 KiB
Protocol Buffer
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: "*"
|
|
};
|
|
}
|
|
} |