From 6df3f8795f0469d5d8159ed65b5ebcc1ca96c021 Mon Sep 17 00:00:00 2001 From: dark Date: Sat, 14 Feb 2026 11:21:29 +0800 Subject: [PATCH] feat: API definitions and goctl generated code for menu/role/org --- backend/api/menu.api | 52 ++++ backend/api/organization.api | 106 ++++++++ backend/api/role.api | 52 ++++ backend/base.api | 152 +++++++++++ .../handler/menu/createmenuhandler.go | 32 +++ .../handler/menu/deletemenuhandler.go | 32 +++ .../handler/menu/getcurrentmenushandler.go | 25 ++ .../handler/menu/getmenulisthandler.go | 25 ++ .../handler/menu/updatemenuhandler.go | 32 +++ .../organization/addorgmemberhandler.go | 32 +++ .../organization/createorganizationhandler.go | 32 +++ .../organization/deleteorganizationhandler.go | 32 +++ .../getorganizationlisthandler.go | 25 ++ .../organization/getorgmembershandler.go | 32 +++ .../organization/removeorgmemberhandler.go | 32 +++ .../organization/updateorganizationhandler.go | 32 +++ .../organization/updateorgmemberhandler.go | 32 +++ .../handler/profile/getuserorgshandler.go | 25 ++ .../handler/profile/switchorghandler.go | 32 +++ .../handler/role/createrolehandler.go | 32 +++ .../handler/role/deleterolehandler.go | 32 +++ .../handler/role/getrolelisthandler.go | 25 ++ .../handler/role/getrolemenushandler.go | 32 +++ .../handler/role/setrolemenushandler.go | 32 +++ .../handler/role/updaterolehandler.go | 32 +++ backend/internal/handler/routes.go | 215 ++++++++++++++- .../internal/logic/menu/createmenulogic.go | 34 +++ .../internal/logic/menu/deletemenulogic.go | 34 +++ .../logic/menu/getcurrentmenuslogic.go | 34 +++ .../internal/logic/menu/getmenulistlogic.go | 34 +++ .../internal/logic/menu/updatemenulogic.go | 34 +++ .../logic/organization/addorgmemberlogic.go | 34 +++ .../organization/createorganizationlogic.go | 34 +++ .../organization/deleteorganizationlogic.go | 34 +++ .../organization/getorganizationlistlogic.go | 34 +++ .../logic/organization/getorgmemberslogic.go | 34 +++ .../organization/removeorgmemberlogic.go | 34 +++ .../organization/updateorganizationlogic.go | 34 +++ .../organization/updateorgmemberlogic.go | 34 +++ .../logic/profile/getuserorgslogic.go | 34 +++ .../internal/logic/profile/switchorglogic.go | 34 +++ .../internal/logic/role/createrolelogic.go | 34 +++ .../internal/logic/role/deleterolelogic.go | 34 +++ .../internal/logic/role/getrolelistlogic.go | 34 +++ .../internal/logic/role/getrolemenuslogic.go | 34 +++ .../internal/logic/role/setrolemenuslogic.go | 34 +++ .../internal/logic/role/updaterolelogic.go | 34 +++ backend/internal/types/types.go | 245 ++++++++++++++++++ 48 files changed, 2171 insertions(+), 2 deletions(-) create mode 100644 backend/api/menu.api create mode 100644 backend/api/organization.api create mode 100644 backend/api/role.api create mode 100644 backend/internal/handler/menu/createmenuhandler.go create mode 100644 backend/internal/handler/menu/deletemenuhandler.go create mode 100644 backend/internal/handler/menu/getcurrentmenushandler.go create mode 100644 backend/internal/handler/menu/getmenulisthandler.go create mode 100644 backend/internal/handler/menu/updatemenuhandler.go create mode 100644 backend/internal/handler/organization/addorgmemberhandler.go create mode 100644 backend/internal/handler/organization/createorganizationhandler.go create mode 100644 backend/internal/handler/organization/deleteorganizationhandler.go create mode 100644 backend/internal/handler/organization/getorganizationlisthandler.go create mode 100644 backend/internal/handler/organization/getorgmembershandler.go create mode 100644 backend/internal/handler/organization/removeorgmemberhandler.go create mode 100644 backend/internal/handler/organization/updateorganizationhandler.go create mode 100644 backend/internal/handler/organization/updateorgmemberhandler.go create mode 100644 backend/internal/handler/profile/getuserorgshandler.go create mode 100644 backend/internal/handler/profile/switchorghandler.go create mode 100644 backend/internal/handler/role/createrolehandler.go create mode 100644 backend/internal/handler/role/deleterolehandler.go create mode 100644 backend/internal/handler/role/getrolelisthandler.go create mode 100644 backend/internal/handler/role/getrolemenushandler.go create mode 100644 backend/internal/handler/role/setrolemenushandler.go create mode 100644 backend/internal/handler/role/updaterolehandler.go create mode 100644 backend/internal/logic/menu/createmenulogic.go create mode 100644 backend/internal/logic/menu/deletemenulogic.go create mode 100644 backend/internal/logic/menu/getcurrentmenuslogic.go create mode 100644 backend/internal/logic/menu/getmenulistlogic.go create mode 100644 backend/internal/logic/menu/updatemenulogic.go create mode 100644 backend/internal/logic/organization/addorgmemberlogic.go create mode 100644 backend/internal/logic/organization/createorganizationlogic.go create mode 100644 backend/internal/logic/organization/deleteorganizationlogic.go create mode 100644 backend/internal/logic/organization/getorganizationlistlogic.go create mode 100644 backend/internal/logic/organization/getorgmemberslogic.go create mode 100644 backend/internal/logic/organization/removeorgmemberlogic.go create mode 100644 backend/internal/logic/organization/updateorganizationlogic.go create mode 100644 backend/internal/logic/organization/updateorgmemberlogic.go create mode 100644 backend/internal/logic/profile/getuserorgslogic.go create mode 100644 backend/internal/logic/profile/switchorglogic.go create mode 100644 backend/internal/logic/role/createrolelogic.go create mode 100644 backend/internal/logic/role/deleterolelogic.go create mode 100644 backend/internal/logic/role/getrolelistlogic.go create mode 100644 backend/internal/logic/role/getrolemenuslogic.go create mode 100644 backend/internal/logic/role/setrolemenuslogic.go create mode 100644 backend/internal/logic/role/updaterolelogic.go diff --git a/backend/api/menu.api b/backend/api/menu.api new file mode 100644 index 0000000..58d09a3 --- /dev/null +++ b/backend/api/menu.api @@ -0,0 +1,52 @@ +syntax = "v1" + +// ========== 菜单管理类型定义 ========== +type ( + MenuItem { + Id int64 `json:"id"` + ParentId int64 `json:"parentId"` + Name string `json:"name"` + Path string `json:"path"` + Icon string `json:"icon"` + Component string `json:"component"` + Type string `json:"type"` + SortOrder int `json:"sortOrder"` + Visible bool `json:"visible"` + Status int `json:"status"` + Children []MenuItem `json:"children"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + } + + MenuListResponse { + List []MenuItem `json:"list"` + } + + CreateMenuRequest { + ParentId int64 `json:"parentId,optional"` + Name string `json:"name" validate:"required"` + Path string `json:"path,optional"` + Icon string `json:"icon,optional"` + Component string `json:"component,optional"` + Type string `json:"type,optional"` + SortOrder int `json:"sortOrder,optional"` + Visible *bool `json:"visible,optional"` + } + + UpdateMenuRequest { + Id int64 `path:"id"` + ParentId *int64 `json:"parentId,optional"` + Name string `json:"name,optional"` + Path string `json:"path,optional"` + Icon string `json:"icon,optional"` + Component string `json:"component,optional"` + Type string `json:"type,optional"` + SortOrder *int `json:"sortOrder,optional"` + Visible *bool `json:"visible,optional"` + Status *int `json:"status,optional"` + } + + DeleteMenuRequest { + Id int64 `path:"id"` + } +) diff --git a/backend/api/organization.api b/backend/api/organization.api new file mode 100644 index 0000000..f5649e2 --- /dev/null +++ b/backend/api/organization.api @@ -0,0 +1,106 @@ +syntax = "v1" + +// ========== 机构管理类型定义 ========== +type ( + OrgInfo { + Id int64 `json:"id"` + ParentId int64 `json:"parentId"` + Name string `json:"name"` + Code string `json:"code"` + Leader string `json:"leader"` + Phone string `json:"phone"` + Email string `json:"email"` + SortOrder int `json:"sortOrder"` + Status int `json:"status"` + MemberCount int64 `json:"memberCount"` + Children []OrgInfo `json:"children"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + } + + OrgListResponse { + List []OrgInfo `json:"list"` + } + + CreateOrgRequest { + ParentId int64 `json:"parentId,optional"` + Name string `json:"name" validate:"required"` + Code string `json:"code" validate:"required"` + Leader string `json:"leader,optional"` + Phone string `json:"phone,optional"` + Email string `json:"email,optional"` + SortOrder int `json:"sortOrder,optional"` + } + + UpdateOrgRequest { + Id int64 `path:"id"` + ParentId *int64 `json:"parentId,optional"` + Name string `json:"name,optional"` + Code string `json:"code,optional"` + Leader string `json:"leader,optional"` + Phone string `json:"phone,optional"` + Email string `json:"email,optional"` + SortOrder *int `json:"sortOrder,optional"` + Status *int `json:"status,optional"` + } + + DeleteOrgRequest { + Id int64 `path:"id"` + } + + OrgMember { + UserId int64 `json:"userId"` + Username string `json:"username"` + Email string `json:"email"` + Phone string `json:"phone"` + RoleId int64 `json:"roleId"` + RoleName string `json:"roleName"` + RoleCode string `json:"roleCode"` + CreatedAt string `json:"createdAt"` + } + + GetOrgMembersRequest { + Id int64 `path:"id"` + } + + OrgMembersResponse { + List []OrgMember `json:"list"` + } + + AddOrgMemberRequest { + Id int64 `path:"id"` + UserId int64 `json:"userId" validate:"required"` + RoleId int64 `json:"roleId" validate:"required"` + } + + UpdateOrgMemberRequest { + Id int64 `path:"id"` + UserId int64 `path:"userId"` + RoleId int64 `json:"roleId" validate:"required"` + } + + RemoveOrgMemberRequest { + Id int64 `path:"id"` + UserId int64 `path:"userId"` + } + + UserOrgInfo { + OrgId int64 `json:"orgId"` + OrgName string `json:"orgName"` + RoleId int64 `json:"roleId"` + RoleName string `json:"roleName"` + RoleCode string `json:"roleCode"` + } + + UserOrgsResponse { + List []UserOrgInfo `json:"list"` + } + + SwitchOrgRequest { + OrgId int64 `json:"orgId" validate:"required"` + } + + SwitchOrgResponse { + Token string `json:"token"` + } +) diff --git a/backend/api/role.api b/backend/api/role.api new file mode 100644 index 0000000..628a2f7 --- /dev/null +++ b/backend/api/role.api @@ -0,0 +1,52 @@ +syntax = "v1" + +// ========== 角色管理类型定义 ========== +type ( + RoleInfo { + Id int64 `json:"id"` + Name string `json:"name"` + Code string `json:"code"` + Description string `json:"description"` + IsSystem bool `json:"isSystem"` + SortOrder int `json:"sortOrder"` + Status int `json:"status"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + } + + RoleListResponse { + List []RoleInfo `json:"list"` + } + + CreateRoleRequest { + Name string `json:"name" validate:"required"` + Code string `json:"code" validate:"required"` + Description string `json:"description,optional"` + SortOrder int `json:"sortOrder,optional"` + } + + UpdateRoleRequest { + Id int64 `path:"id"` + Name string `json:"name,optional"` + Description string `json:"description,optional"` + SortOrder *int `json:"sortOrder,optional"` + Status *int `json:"status,optional"` + } + + DeleteRoleRequest { + Id int64 `path:"id"` + } + + GetRoleMenusRequest { + Id int64 `path:"id"` + } + + RoleMenusResponse { + MenuIds []int64 `json:"menuIds"` + } + + SetRoleMenusRequest { + Id int64 `path:"id"` + MenuIds []int64 `json:"menuIds"` + } +) diff --git a/backend/base.api b/backend/base.api index 7e73022..bc5ab49 100644 --- a/backend/base.api +++ b/backend/base.api @@ -10,6 +10,10 @@ info ( import "api/user.api" import "api/profile.api" import "api/dashboard.api" +import "api/file.api" +import "api/menu.api" +import "api/role.api" +import "api/organization.api" // ========== 通用响应类型 ========== type ( @@ -122,6 +126,14 @@ service base-api { @doc "修改密码" @handler changePassword post /profile/password (ChangePasswordRequest) returns (Response) + + @doc "获取我的机构列表" + @handler getUserOrgs + get /profile/orgs returns (UserOrgsResponse) + + @doc "切换当前机构" + @handler switchOrg + put /profile/current-org (SwitchOrgRequest) returns (SwitchOrgResponse) } @server ( @@ -142,3 +154,143 @@ service base-api { get /dashboard/activities (RecentActivitiesRequest) returns (RecentActivitiesResponse) } +@server ( + prefix: /api/v1 + group: file + middleware: Cors,Log,Auth,Authz +) +service base-api { + // ========== 文件管理接口 ========== + @doc "上传文件" + @handler uploadFile + post /file/upload returns (FileInfo) + + @doc "获取文件列表" + @handler getFileList + get /files (FileListRequest) returns (FileListResponse) + + @doc "获取文件详情" + @handler getFile + get /file/:id (GetFileRequest) returns (FileInfo) + + @doc "获取文件访问URL" + @handler getFileUrl + get /file/:id/url (GetFileRequest) returns (FileUrlResponse) + + @doc "更新文件信息" + @handler updateFile + put /file/:id (UpdateFileRequest) returns (FileInfo) + + @doc "删除文件" + @handler deleteFile + delete /file/:id (DeleteFileRequest) returns (Response) +} + +// ========== 菜单管理(当前用户菜单,只需登录) ========== +@server ( + prefix: /api/v1 + group: menu + middleware: Cors,Log,Auth +) +service base-api { + @doc "获取当前用户可见菜单" + @handler getCurrentMenus + get /menus/current returns (MenuListResponse) +} + +// ========== 菜单管理(管理端,需授权) ========== +@server ( + prefix: /api/v1 + group: menu + middleware: Cors,Log,Auth,Authz +) +service base-api { + @doc "获取全部菜单列表" + @handler getMenuList + get /menus returns (MenuListResponse) + + @doc "创建菜单" + @handler createMenu + post /menu (CreateMenuRequest) returns (MenuItem) + + @doc "更新菜单" + @handler updateMenu + put /menu/:id (UpdateMenuRequest) returns (MenuItem) + + @doc "删除菜单" + @handler deleteMenu + delete /menu/:id (DeleteMenuRequest) returns (Response) +} + +// ========== 角色管理 ========== +@server ( + prefix: /api/v1 + group: role + middleware: Cors,Log,Auth,Authz +) +service base-api { + @doc "获取角色列表" + @handler getRoleList + get /roles returns (RoleListResponse) + + @doc "创建角色" + @handler createRole + post /role (CreateRoleRequest) returns (RoleInfo) + + @doc "更新角色" + @handler updateRole + put /role/:id (UpdateRoleRequest) returns (RoleInfo) + + @doc "删除角色" + @handler deleteRole + delete /role/:id (DeleteRoleRequest) returns (Response) + + @doc "获取角色菜单" + @handler getRoleMenus + get /role/:id/menus (GetRoleMenusRequest) returns (RoleMenusResponse) + + @doc "设置角色菜单" + @handler setRoleMenus + put /role/:id/menus (SetRoleMenusRequest) returns (Response) +} + +// ========== 机构管理 ========== +@server ( + prefix: /api/v1 + group: organization + middleware: Cors,Log,Auth,Authz +) +service base-api { + @doc "获取机构列表" + @handler getOrganizationList + get /organizations returns (OrgListResponse) + + @doc "创建机构" + @handler createOrganization + post /organization (CreateOrgRequest) returns (OrgInfo) + + @doc "更新机构" + @handler updateOrganization + put /organization/:id (UpdateOrgRequest) returns (OrgInfo) + + @doc "删除机构" + @handler deleteOrganization + delete /organization/:id (DeleteOrgRequest) returns (Response) + + @doc "获取机构成员" + @handler getOrgMembers + get /organization/:id/members (GetOrgMembersRequest) returns (OrgMembersResponse) + + @doc "添加机构成员" + @handler addOrgMember + post /organization/:id/member (AddOrgMemberRequest) returns (Response) + + @doc "更新机构成员角色" + @handler updateOrgMember + put /organization/:id/member/:userId (UpdateOrgMemberRequest) returns (Response) + + @doc "移除机构成员" + @handler removeOrgMember + delete /organization/:id/member/:userId (RemoveOrgMemberRequest) returns (Response) +} + diff --git a/backend/internal/handler/menu/createmenuhandler.go b/backend/internal/handler/menu/createmenuhandler.go new file mode 100644 index 0000000..c243eb1 --- /dev/null +++ b/backend/internal/handler/menu/createmenuhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/menu" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 创建菜单 +func CreateMenuHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateMenuRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := menu.NewCreateMenuLogic(r.Context(), svcCtx) + resp, err := l.CreateMenu(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/menu/deletemenuhandler.go b/backend/internal/handler/menu/deletemenuhandler.go new file mode 100644 index 0000000..b7f59cd --- /dev/null +++ b/backend/internal/handler/menu/deletemenuhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/menu" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 删除菜单 +func DeleteMenuHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.DeleteMenuRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := menu.NewDeleteMenuLogic(r.Context(), svcCtx) + resp, err := l.DeleteMenu(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/menu/getcurrentmenushandler.go b/backend/internal/handler/menu/getcurrentmenushandler.go new file mode 100644 index 0000000..63f38f6 --- /dev/null +++ b/backend/internal/handler/menu/getcurrentmenushandler.go @@ -0,0 +1,25 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/menu" + "github.com/youruser/base/internal/svc" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 获取当前用户可见菜单 +func GetCurrentMenusHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := menu.NewGetCurrentMenusLogic(r.Context(), svcCtx) + resp, err := l.GetCurrentMenus() + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/menu/getmenulisthandler.go b/backend/internal/handler/menu/getmenulisthandler.go new file mode 100644 index 0000000..be72696 --- /dev/null +++ b/backend/internal/handler/menu/getmenulisthandler.go @@ -0,0 +1,25 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/menu" + "github.com/youruser/base/internal/svc" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 获取全部菜单列表 +func GetMenuListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := menu.NewGetMenuListLogic(r.Context(), svcCtx) + resp, err := l.GetMenuList() + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/menu/updatemenuhandler.go b/backend/internal/handler/menu/updatemenuhandler.go new file mode 100644 index 0000000..5df6b13 --- /dev/null +++ b/backend/internal/handler/menu/updatemenuhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/menu" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 更新菜单 +func UpdateMenuHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UpdateMenuRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := menu.NewUpdateMenuLogic(r.Context(), svcCtx) + resp, err := l.UpdateMenu(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/addorgmemberhandler.go b/backend/internal/handler/organization/addorgmemberhandler.go new file mode 100644 index 0000000..2c1cb82 --- /dev/null +++ b/backend/internal/handler/organization/addorgmemberhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 添加机构成员 +func AddOrgMemberHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.AddOrgMemberRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := organization.NewAddOrgMemberLogic(r.Context(), svcCtx) + resp, err := l.AddOrgMember(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/createorganizationhandler.go b/backend/internal/handler/organization/createorganizationhandler.go new file mode 100644 index 0000000..db6e981 --- /dev/null +++ b/backend/internal/handler/organization/createorganizationhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 创建机构 +func CreateOrganizationHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateOrgRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := organization.NewCreateOrganizationLogic(r.Context(), svcCtx) + resp, err := l.CreateOrganization(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/deleteorganizationhandler.go b/backend/internal/handler/organization/deleteorganizationhandler.go new file mode 100644 index 0000000..bcea9c4 --- /dev/null +++ b/backend/internal/handler/organization/deleteorganizationhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 删除机构 +func DeleteOrganizationHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.DeleteOrgRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := organization.NewDeleteOrganizationLogic(r.Context(), svcCtx) + resp, err := l.DeleteOrganization(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/getorganizationlisthandler.go b/backend/internal/handler/organization/getorganizationlisthandler.go new file mode 100644 index 0000000..bc626be --- /dev/null +++ b/backend/internal/handler/organization/getorganizationlisthandler.go @@ -0,0 +1,25 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 获取机构列表 +func GetOrganizationListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := organization.NewGetOrganizationListLogic(r.Context(), svcCtx) + resp, err := l.GetOrganizationList() + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/getorgmembershandler.go b/backend/internal/handler/organization/getorgmembershandler.go new file mode 100644 index 0000000..a6fb286 --- /dev/null +++ b/backend/internal/handler/organization/getorgmembershandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 获取机构成员 +func GetOrgMembersHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.GetOrgMembersRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := organization.NewGetOrgMembersLogic(r.Context(), svcCtx) + resp, err := l.GetOrgMembers(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/removeorgmemberhandler.go b/backend/internal/handler/organization/removeorgmemberhandler.go new file mode 100644 index 0000000..798b314 --- /dev/null +++ b/backend/internal/handler/organization/removeorgmemberhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 移除机构成员 +func RemoveOrgMemberHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.RemoveOrgMemberRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := organization.NewRemoveOrgMemberLogic(r.Context(), svcCtx) + resp, err := l.RemoveOrgMember(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/updateorganizationhandler.go b/backend/internal/handler/organization/updateorganizationhandler.go new file mode 100644 index 0000000..b2bf24b --- /dev/null +++ b/backend/internal/handler/organization/updateorganizationhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 更新机构 +func UpdateOrganizationHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UpdateOrgRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := organization.NewUpdateOrganizationLogic(r.Context(), svcCtx) + resp, err := l.UpdateOrganization(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/organization/updateorgmemberhandler.go b/backend/internal/handler/organization/updateorgmemberhandler.go new file mode 100644 index 0000000..ae8d1bf --- /dev/null +++ b/backend/internal/handler/organization/updateorgmemberhandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/organization" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 更新机构成员角色 +func UpdateOrgMemberHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UpdateOrgMemberRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := organization.NewUpdateOrgMemberLogic(r.Context(), svcCtx) + resp, err := l.UpdateOrgMember(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/profile/getuserorgshandler.go b/backend/internal/handler/profile/getuserorgshandler.go new file mode 100644 index 0000000..bc8ff28 --- /dev/null +++ b/backend/internal/handler/profile/getuserorgshandler.go @@ -0,0 +1,25 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package profile + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/profile" + "github.com/youruser/base/internal/svc" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 获取我的机构列表 +func GetUserOrgsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := profile.NewGetUserOrgsLogic(r.Context(), svcCtx) + resp, err := l.GetUserOrgs() + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/profile/switchorghandler.go b/backend/internal/handler/profile/switchorghandler.go new file mode 100644 index 0000000..70fa0d2 --- /dev/null +++ b/backend/internal/handler/profile/switchorghandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package profile + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/profile" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 切换当前机构 +func SwitchOrgHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.SwitchOrgRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := profile.NewSwitchOrgLogic(r.Context(), svcCtx) + resp, err := l.SwitchOrg(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/role/createrolehandler.go b/backend/internal/handler/role/createrolehandler.go new file mode 100644 index 0000000..28113cd --- /dev/null +++ b/backend/internal/handler/role/createrolehandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/role" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 创建角色 +func CreateRoleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateRoleRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := role.NewCreateRoleLogic(r.Context(), svcCtx) + resp, err := l.CreateRole(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/role/deleterolehandler.go b/backend/internal/handler/role/deleterolehandler.go new file mode 100644 index 0000000..4169bdc --- /dev/null +++ b/backend/internal/handler/role/deleterolehandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/role" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 删除角色 +func DeleteRoleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.DeleteRoleRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := role.NewDeleteRoleLogic(r.Context(), svcCtx) + resp, err := l.DeleteRole(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/role/getrolelisthandler.go b/backend/internal/handler/role/getrolelisthandler.go new file mode 100644 index 0000000..6ae9705 --- /dev/null +++ b/backend/internal/handler/role/getrolelisthandler.go @@ -0,0 +1,25 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/role" + "github.com/youruser/base/internal/svc" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 获取角色列表 +func GetRoleListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := role.NewGetRoleListLogic(r.Context(), svcCtx) + resp, err := l.GetRoleList() + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/role/getrolemenushandler.go b/backend/internal/handler/role/getrolemenushandler.go new file mode 100644 index 0000000..2bbd9b6 --- /dev/null +++ b/backend/internal/handler/role/getrolemenushandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/role" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 获取角色菜单 +func GetRoleMenusHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.GetRoleMenusRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := role.NewGetRoleMenusLogic(r.Context(), svcCtx) + resp, err := l.GetRoleMenus(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/role/setrolemenushandler.go b/backend/internal/handler/role/setrolemenushandler.go new file mode 100644 index 0000000..3684370 --- /dev/null +++ b/backend/internal/handler/role/setrolemenushandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/role" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 设置角色菜单 +func SetRoleMenusHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.SetRoleMenusRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := role.NewSetRoleMenusLogic(r.Context(), svcCtx) + resp, err := l.SetRoleMenus(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/role/updaterolehandler.go b/backend/internal/handler/role/updaterolehandler.go new file mode 100644 index 0000000..d42cc69 --- /dev/null +++ b/backend/internal/handler/role/updaterolehandler.go @@ -0,0 +1,32 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "net/http" + + "github.com/youruser/base/internal/logic/role" + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +// 更新角色 +func UpdateRoleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UpdateRoleRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := role.NewUpdateRoleLogic(r.Context(), svcCtx) + resp, err := l.UpdateRole(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/backend/internal/handler/routes.go b/backend/internal/handler/routes.go index 1160fb2..10c9bf5 100644 --- a/backend/internal/handler/routes.go +++ b/backend/internal/handler/routes.go @@ -8,7 +8,11 @@ import ( auth "github.com/youruser/base/internal/handler/auth" dashboard "github.com/youruser/base/internal/handler/dashboard" + file "github.com/youruser/base/internal/handler/file" + menu "github.com/youruser/base/internal/handler/menu" + organization "github.com/youruser/base/internal/handler/organization" profile "github.com/youruser/base/internal/handler/profile" + role "github.com/youruser/base/internal/handler/role" user "github.com/youruser/base/internal/handler/user" "github.com/youruser/base/internal/svc" @@ -45,7 +49,7 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { server.AddRoutes( rest.WithMiddlewares( - []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth}, + []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth, serverCtx.Authz}, []rest.Route{ { // 获取最近活动列表 @@ -64,10 +68,166 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { rest.WithPrefix("/api/v1"), ) + server.AddRoutes( + rest.WithMiddlewares( + []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth, serverCtx.Authz}, + []rest.Route{ + { + // 获取文件详情 + Method: http.MethodGet, + Path: "/file/:id", + Handler: file.GetFileHandler(serverCtx), + }, + { + // 更新文件信息 + Method: http.MethodPut, + Path: "/file/:id", + Handler: file.UpdateFileHandler(serverCtx), + }, + { + // 删除文件 + Method: http.MethodDelete, + Path: "/file/:id", + Handler: file.DeleteFileHandler(serverCtx), + }, + { + // 获取文件访问URL + Method: http.MethodGet, + Path: "/file/:id/url", + Handler: file.GetFileUrlHandler(serverCtx), + }, + { + // 上传文件 + Method: http.MethodPost, + Path: "/file/upload", + Handler: file.UploadFileHandler(serverCtx), + }, + { + // 获取文件列表 + Method: http.MethodGet, + Path: "/files", + Handler: file.GetFileListHandler(serverCtx), + }, + }..., + ), + rest.WithPrefix("/api/v1"), + ) + server.AddRoutes( rest.WithMiddlewares( []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth}, []rest.Route{ + { + // 获取当前用户可见菜单 + Method: http.MethodGet, + Path: "/menus/current", + Handler: menu.GetCurrentMenusHandler(serverCtx), + }, + }..., + ), + rest.WithPrefix("/api/v1"), + ) + + server.AddRoutes( + rest.WithMiddlewares( + []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth, serverCtx.Authz}, + []rest.Route{ + { + // 创建菜单 + Method: http.MethodPost, + Path: "/menu", + Handler: menu.CreateMenuHandler(serverCtx), + }, + { + // 更新菜单 + Method: http.MethodPut, + Path: "/menu/:id", + Handler: menu.UpdateMenuHandler(serverCtx), + }, + { + // 删除菜单 + Method: http.MethodDelete, + Path: "/menu/:id", + Handler: menu.DeleteMenuHandler(serverCtx), + }, + { + // 获取全部菜单列表 + Method: http.MethodGet, + Path: "/menus", + Handler: menu.GetMenuListHandler(serverCtx), + }, + }..., + ), + rest.WithPrefix("/api/v1"), + ) + + server.AddRoutes( + rest.WithMiddlewares( + []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth, serverCtx.Authz}, + []rest.Route{ + { + // 创建机构 + Method: http.MethodPost, + Path: "/organization", + Handler: organization.CreateOrganizationHandler(serverCtx), + }, + { + // 更新机构 + Method: http.MethodPut, + Path: "/organization/:id", + Handler: organization.UpdateOrganizationHandler(serverCtx), + }, + { + // 删除机构 + Method: http.MethodDelete, + Path: "/organization/:id", + Handler: organization.DeleteOrganizationHandler(serverCtx), + }, + { + // 添加机构成员 + Method: http.MethodPost, + Path: "/organization/:id/member", + Handler: organization.AddOrgMemberHandler(serverCtx), + }, + { + // 更新机构成员角色 + Method: http.MethodPut, + Path: "/organization/:id/member/:userId", + Handler: organization.UpdateOrgMemberHandler(serverCtx), + }, + { + // 移除机构成员 + Method: http.MethodDelete, + Path: "/organization/:id/member/:userId", + Handler: organization.RemoveOrgMemberHandler(serverCtx), + }, + { + // 获取机构成员 + Method: http.MethodGet, + Path: "/organization/:id/members", + Handler: organization.GetOrgMembersHandler(serverCtx), + }, + { + // 获取机构列表 + Method: http.MethodGet, + Path: "/organizations", + Handler: organization.GetOrganizationListHandler(serverCtx), + }, + }..., + ), + rest.WithPrefix("/api/v1"), + ) + + server.AddRoutes( + rest.WithMiddlewares( + []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth, serverCtx.Authz}, + []rest.Route{ + { + // 切换当前机构 + Method: http.MethodPut, + Path: "/profile/current-org", + Handler: profile.SwitchOrgHandler(serverCtx), + }, { // 获取个人信息 Method: http.MethodGet, @@ -80,6 +240,12 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/profile/me", Handler: profile.UpdateProfileHandler(serverCtx), }, + { + // 获取我的机构列表 + Method: http.MethodGet, + Path: "/profile/orgs", + Handler: profile.GetUserOrgsHandler(serverCtx), + }, { // 修改密码 Method: http.MethodPost, @@ -93,7 +259,52 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { server.AddRoutes( rest.WithMiddlewares( - []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth}, + []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth, serverCtx.Authz}, + []rest.Route{ + { + // 创建角色 + Method: http.MethodPost, + Path: "/role", + Handler: role.CreateRoleHandler(serverCtx), + }, + { + // 更新角色 + Method: http.MethodPut, + Path: "/role/:id", + Handler: role.UpdateRoleHandler(serverCtx), + }, + { + // 删除角色 + Method: http.MethodDelete, + Path: "/role/:id", + Handler: role.DeleteRoleHandler(serverCtx), + }, + { + // 获取角色菜单 + Method: http.MethodGet, + Path: "/role/:id/menus", + Handler: role.GetRoleMenusHandler(serverCtx), + }, + { + // 设置角色菜单 + Method: http.MethodPut, + Path: "/role/:id/menus", + Handler: role.SetRoleMenusHandler(serverCtx), + }, + { + // 获取角色列表 + Method: http.MethodGet, + Path: "/roles", + Handler: role.GetRoleListHandler(serverCtx), + }, + }..., + ), + rest.WithPrefix("/api/v1"), + ) + + server.AddRoutes( + rest.WithMiddlewares( + []rest.Middleware{serverCtx.Cors, serverCtx.Log, serverCtx.Auth, serverCtx.Authz}, []rest.Route{ { // 创建用户 diff --git a/backend/internal/logic/menu/createmenulogic.go b/backend/internal/logic/menu/createmenulogic.go new file mode 100644 index 0000000..272dc89 --- /dev/null +++ b/backend/internal/logic/menu/createmenulogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateMenuLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 创建菜单 +func NewCreateMenuLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateMenuLogic { + return &CreateMenuLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *CreateMenuLogic) CreateMenu(req *types.CreateMenuRequest) (resp *types.MenuItem, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/menu/deletemenulogic.go b/backend/internal/logic/menu/deletemenulogic.go new file mode 100644 index 0000000..75106ed --- /dev/null +++ b/backend/internal/logic/menu/deletemenulogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteMenuLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 删除菜单 +func NewDeleteMenuLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteMenuLogic { + return &DeleteMenuLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteMenuLogic) DeleteMenu(req *types.DeleteMenuRequest) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/menu/getcurrentmenuslogic.go b/backend/internal/logic/menu/getcurrentmenuslogic.go new file mode 100644 index 0000000..90467ec --- /dev/null +++ b/backend/internal/logic/menu/getcurrentmenuslogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetCurrentMenusLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 获取当前用户可见菜单 +func NewGetCurrentMenusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetCurrentMenusLogic { + return &GetCurrentMenusLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetCurrentMenusLogic) GetCurrentMenus() (resp *types.MenuListResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/menu/getmenulistlogic.go b/backend/internal/logic/menu/getmenulistlogic.go new file mode 100644 index 0000000..c165544 --- /dev/null +++ b/backend/internal/logic/menu/getmenulistlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetMenuListLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 获取全部菜单列表 +func NewGetMenuListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetMenuListLogic { + return &GetMenuListLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetMenuListLogic) GetMenuList() (resp *types.MenuListResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/menu/updatemenulogic.go b/backend/internal/logic/menu/updatemenulogic.go new file mode 100644 index 0000000..6b5a490 --- /dev/null +++ b/backend/internal/logic/menu/updatemenulogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package menu + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UpdateMenuLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 更新菜单 +func NewUpdateMenuLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateMenuLogic { + return &UpdateMenuLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *UpdateMenuLogic) UpdateMenu(req *types.UpdateMenuRequest) (resp *types.MenuItem, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/addorgmemberlogic.go b/backend/internal/logic/organization/addorgmemberlogic.go new file mode 100644 index 0000000..72b7163 --- /dev/null +++ b/backend/internal/logic/organization/addorgmemberlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AddOrgMemberLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 添加机构成员 +func NewAddOrgMemberLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddOrgMemberLogic { + return &AddOrgMemberLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *AddOrgMemberLogic) AddOrgMember(req *types.AddOrgMemberRequest) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/createorganizationlogic.go b/backend/internal/logic/organization/createorganizationlogic.go new file mode 100644 index 0000000..ec0ee57 --- /dev/null +++ b/backend/internal/logic/organization/createorganizationlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateOrganizationLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 创建机构 +func NewCreateOrganizationLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateOrganizationLogic { + return &CreateOrganizationLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *CreateOrganizationLogic) CreateOrganization(req *types.CreateOrgRequest) (resp *types.OrgInfo, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/deleteorganizationlogic.go b/backend/internal/logic/organization/deleteorganizationlogic.go new file mode 100644 index 0000000..e1d2093 --- /dev/null +++ b/backend/internal/logic/organization/deleteorganizationlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteOrganizationLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 删除机构 +func NewDeleteOrganizationLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteOrganizationLogic { + return &DeleteOrganizationLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteOrganizationLogic) DeleteOrganization(req *types.DeleteOrgRequest) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/getorganizationlistlogic.go b/backend/internal/logic/organization/getorganizationlistlogic.go new file mode 100644 index 0000000..8435830 --- /dev/null +++ b/backend/internal/logic/organization/getorganizationlistlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetOrganizationListLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 获取机构列表 +func NewGetOrganizationListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetOrganizationListLogic { + return &GetOrganizationListLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetOrganizationListLogic) GetOrganizationList() (resp *types.OrgListResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/getorgmemberslogic.go b/backend/internal/logic/organization/getorgmemberslogic.go new file mode 100644 index 0000000..a9642e7 --- /dev/null +++ b/backend/internal/logic/organization/getorgmemberslogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetOrgMembersLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 获取机构成员 +func NewGetOrgMembersLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetOrgMembersLogic { + return &GetOrgMembersLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetOrgMembersLogic) GetOrgMembers(req *types.GetOrgMembersRequest) (resp *types.OrgMembersResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/removeorgmemberlogic.go b/backend/internal/logic/organization/removeorgmemberlogic.go new file mode 100644 index 0000000..31abe72 --- /dev/null +++ b/backend/internal/logic/organization/removeorgmemberlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type RemoveOrgMemberLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 移除机构成员 +func NewRemoveOrgMemberLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RemoveOrgMemberLogic { + return &RemoveOrgMemberLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *RemoveOrgMemberLogic) RemoveOrgMember(req *types.RemoveOrgMemberRequest) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/updateorganizationlogic.go b/backend/internal/logic/organization/updateorganizationlogic.go new file mode 100644 index 0000000..78301cc --- /dev/null +++ b/backend/internal/logic/organization/updateorganizationlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UpdateOrganizationLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 更新机构 +func NewUpdateOrganizationLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateOrganizationLogic { + return &UpdateOrganizationLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *UpdateOrganizationLogic) UpdateOrganization(req *types.UpdateOrgRequest) (resp *types.OrgInfo, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/organization/updateorgmemberlogic.go b/backend/internal/logic/organization/updateorgmemberlogic.go new file mode 100644 index 0000000..f559bef --- /dev/null +++ b/backend/internal/logic/organization/updateorgmemberlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package organization + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UpdateOrgMemberLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 更新机构成员角色 +func NewUpdateOrgMemberLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateOrgMemberLogic { + return &UpdateOrgMemberLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *UpdateOrgMemberLogic) UpdateOrgMember(req *types.UpdateOrgMemberRequest) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/profile/getuserorgslogic.go b/backend/internal/logic/profile/getuserorgslogic.go new file mode 100644 index 0000000..57bc06c --- /dev/null +++ b/backend/internal/logic/profile/getuserorgslogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package profile + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetUserOrgsLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 获取我的机构列表 +func NewGetUserOrgsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserOrgsLogic { + return &GetUserOrgsLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetUserOrgsLogic) GetUserOrgs() (resp *types.UserOrgsResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/profile/switchorglogic.go b/backend/internal/logic/profile/switchorglogic.go new file mode 100644 index 0000000..1265d96 --- /dev/null +++ b/backend/internal/logic/profile/switchorglogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package profile + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SwitchOrgLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 切换当前机构 +func NewSwitchOrgLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SwitchOrgLogic { + return &SwitchOrgLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *SwitchOrgLogic) SwitchOrg(req *types.SwitchOrgRequest) (resp *types.SwitchOrgResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/role/createrolelogic.go b/backend/internal/logic/role/createrolelogic.go new file mode 100644 index 0000000..9ce8423 --- /dev/null +++ b/backend/internal/logic/role/createrolelogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateRoleLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 创建角色 +func NewCreateRoleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateRoleLogic { + return &CreateRoleLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *CreateRoleLogic) CreateRole(req *types.CreateRoleRequest) (resp *types.RoleInfo, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/role/deleterolelogic.go b/backend/internal/logic/role/deleterolelogic.go new file mode 100644 index 0000000..ba381f4 --- /dev/null +++ b/backend/internal/logic/role/deleterolelogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteRoleLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 删除角色 +func NewDeleteRoleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteRoleLogic { + return &DeleteRoleLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteRoleLogic) DeleteRole(req *types.DeleteRoleRequest) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/role/getrolelistlogic.go b/backend/internal/logic/role/getrolelistlogic.go new file mode 100644 index 0000000..ea84c61 --- /dev/null +++ b/backend/internal/logic/role/getrolelistlogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetRoleListLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 获取角色列表 +func NewGetRoleListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetRoleListLogic { + return &GetRoleListLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetRoleListLogic) GetRoleList() (resp *types.RoleListResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/role/getrolemenuslogic.go b/backend/internal/logic/role/getrolemenuslogic.go new file mode 100644 index 0000000..fc5ae7f --- /dev/null +++ b/backend/internal/logic/role/getrolemenuslogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetRoleMenusLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 获取角色菜单 +func NewGetRoleMenusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetRoleMenusLogic { + return &GetRoleMenusLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetRoleMenusLogic) GetRoleMenus(req *types.GetRoleMenusRequest) (resp *types.RoleMenusResponse, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/role/setrolemenuslogic.go b/backend/internal/logic/role/setrolemenuslogic.go new file mode 100644 index 0000000..5acaf80 --- /dev/null +++ b/backend/internal/logic/role/setrolemenuslogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SetRoleMenusLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 设置角色菜单 +func NewSetRoleMenusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SetRoleMenusLogic { + return &SetRoleMenusLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *SetRoleMenusLogic) SetRoleMenus(req *types.SetRoleMenusRequest) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/logic/role/updaterolelogic.go b/backend/internal/logic/role/updaterolelogic.go new file mode 100644 index 0000000..5271429 --- /dev/null +++ b/backend/internal/logic/role/updaterolelogic.go @@ -0,0 +1,34 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package role + +import ( + "context" + + "github.com/youruser/base/internal/svc" + "github.com/youruser/base/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UpdateRoleLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +// 更新角色 +func NewUpdateRoleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateRoleLogic { + return &UpdateRoleLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *UpdateRoleLogic) UpdateRole(req *types.UpdateRoleRequest) (resp *types.RoleInfo, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/backend/internal/types/types.go b/backend/internal/types/types.go index 0ed975e..83d7477 100644 --- a/backend/internal/types/types.go +++ b/backend/internal/types/types.go @@ -11,11 +11,45 @@ type Activity struct { Status string `json:"status"` // 状态 success/error } +type AddOrgMemberRequest struct { + Id int64 `path:"id"` + UserId int64 `json:"userId" validate:"required"` + RoleId int64 `json:"roleId" validate:"required"` +} + type ChangePasswordRequest struct { OldPassword string `json:"oldPassword" validate:"required,min=6,max=32"` // 旧密码 NewPassword string `json:"newPassword" validate:"required,min=6,max=32"` // 新密码 } +type CreateMenuRequest struct { + ParentId int64 `json:"parentId,optional"` + Name string `json:"name" validate:"required"` + Path string `json:"path,optional"` + Icon string `json:"icon,optional"` + Component string `json:"component,optional"` + Type string `json:"type,optional"` + SortOrder int `json:"sortOrder,optional"` + Visible *bool `json:"visible,optional"` +} + +type CreateOrgRequest struct { + ParentId int64 `json:"parentId,optional"` + Name string `json:"name" validate:"required"` + Code string `json:"code" validate:"required"` + Leader string `json:"leader,optional"` + Phone string `json:"phone,optional"` + Email string `json:"email,optional"` + SortOrder int `json:"sortOrder,optional"` +} + +type CreateRoleRequest struct { + Name string `json:"name" validate:"required"` + Code string `json:"code" validate:"required"` + Description string `json:"description,optional"` + SortOrder int `json:"sortOrder,optional"` +} + type CreateUserRequest struct { Username string `json:"username" validate:"required,min=3,max=32"` // 用户名 Email string `json:"email" validate:"required,email"` // 邮箱 @@ -33,10 +67,66 @@ type DashboardStatsResponse struct { UserGrowth int `json:"userGrowth"` // 用户增长率 } +type DeleteFileRequest struct { + Id int64 `path:"id"` +} + +type DeleteMenuRequest struct { + Id int64 `path:"id"` +} + +type DeleteOrgRequest struct { + Id int64 `path:"id"` +} + +type DeleteRoleRequest struct { + Id int64 `path:"id"` +} + type DeleteUserRequest struct { Id int64 `path:"id" validate:"required,min=1"` // 用户ID } +type FileInfo struct { + Id int64 `json:"id"` + Name string `json:"name"` + Key string `json:"key"` + Size int64 `json:"size"` + MimeType string `json:"mimeType"` + Category string `json:"category"` + IsPublic bool `json:"isPublic"` + UserId int64 `json:"userId"` + StorageType string `json:"storageType"` + Url string `json:"url"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +type FileListRequest struct { + Page int `form:"page,default=1"` + PageSize int `form:"pageSize,default=20"` + Keyword string `form:"keyword,optional"` + Category string `form:"category,optional"` + MimeType string `form:"mimeType,optional"` +} + +type FileListResponse struct { + Total int64 `json:"total"` + List []FileInfo `json:"list"` +} + +type FileUrlResponse struct { + Url string `json:"url"` +} + +type GetFileRequest struct { + Id int64 `path:"id"` +} + +type GetOrgMembersRequest struct { + Id int64 `path:"id"` +} + type GetProfileResponse struct { Id int64 `json:"id"` // 用户ID Username string `json:"username"` // 用户名 @@ -49,6 +139,10 @@ type GetProfileResponse struct { UpdatedAt string `json:"updatedAt"` // 更新时间 } +type GetRoleMenusRequest struct { + Id int64 `path:"id"` +} + type GetUserRequest struct { Id int64 `path:"id" validate:"required,min=1"` // 用户ID } @@ -65,6 +159,61 @@ type LoginResponse struct { Token string `json:"token"` // JWT Token } +type MenuItem struct { + Id int64 `json:"id"` + ParentId int64 `json:"parentId"` + Name string `json:"name"` + Path string `json:"path"` + Icon string `json:"icon"` + Component string `json:"component"` + Type string `json:"type"` + SortOrder int `json:"sortOrder"` + Visible bool `json:"visible"` + Status int `json:"status"` + Children []MenuItem `json:"children"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +type MenuListResponse struct { + List []MenuItem `json:"list"` +} + +type OrgInfo struct { + Id int64 `json:"id"` + ParentId int64 `json:"parentId"` + Name string `json:"name"` + Code string `json:"code"` + Leader string `json:"leader"` + Phone string `json:"phone"` + Email string `json:"email"` + SortOrder int `json:"sortOrder"` + Status int `json:"status"` + MemberCount int64 `json:"memberCount"` + Children []OrgInfo `json:"children"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +type OrgListResponse struct { + List []OrgInfo `json:"list"` +} + +type OrgMember struct { + UserId int64 `json:"userId"` + Username string `json:"username"` + Email string `json:"email"` + Phone string `json:"phone"` + RoleId int64 `json:"roleId"` + RoleName string `json:"roleName"` + RoleCode string `json:"roleCode"` + CreatedAt string `json:"createdAt"` +} + +type OrgMembersResponse struct { + List []OrgMember `json:"list"` +} + type RecentActivitiesRequest struct { Limit int `form:"limit,default=10"` // 数量限制 } @@ -84,6 +233,11 @@ type RegisterRequest struct { Email string `json:"email,optional"` // 邮箱(可选) } +type RemoveOrgMemberRequest struct { + Id int64 `path:"id"` + UserId int64 `path:"userId"` +} + type Response struct { Code int `json:"code"` // 状态码 Message string `json:"message"` // 消息 @@ -91,6 +245,77 @@ type Response struct { Data interface{} `json:"data"` // 数据 } +type RoleInfo struct { + Id int64 `json:"id"` + Name string `json:"name"` + Code string `json:"code"` + Description string `json:"description"` + IsSystem bool `json:"isSystem"` + SortOrder int `json:"sortOrder"` + Status int `json:"status"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +type RoleListResponse struct { + List []RoleInfo `json:"list"` +} + +type RoleMenusResponse struct { + MenuIds []int64 `json:"menuIds"` +} + +type SetRoleMenusRequest struct { + Id int64 `path:"id"` + MenuIds []int64 `json:"menuIds"` +} + +type SwitchOrgRequest struct { + OrgId int64 `json:"orgId" validate:"required"` +} + +type SwitchOrgResponse struct { + Token string `json:"token"` +} + +type UpdateFileRequest struct { + Id int64 `path:"id"` + Name string `json:"name,optional"` + Category string `json:"category,optional"` + IsPublic *bool `json:"isPublic,optional"` +} + +type UpdateMenuRequest struct { + Id int64 `path:"id"` + ParentId *int64 `json:"parentId,optional"` + Name string `json:"name,optional"` + Path string `json:"path,optional"` + Icon string `json:"icon,optional"` + Component string `json:"component,optional"` + Type string `json:"type,optional"` + SortOrder *int `json:"sortOrder,optional"` + Visible *bool `json:"visible,optional"` + Status *int `json:"status,optional"` +} + +type UpdateOrgMemberRequest struct { + Id int64 `path:"id"` + UserId int64 `path:"userId"` + RoleId int64 `json:"roleId" validate:"required"` +} + +type UpdateOrgRequest struct { + Id int64 `path:"id"` + ParentId *int64 `json:"parentId,optional"` + Name string `json:"name,optional"` + Code string `json:"code,optional"` + Leader string `json:"leader,optional"` + Phone string `json:"phone,optional"` + Email string `json:"email,optional"` + SortOrder *int `json:"sortOrder,optional"` + Status *int `json:"status,optional"` +} + type UpdateProfileRequest struct { Username string `json:"username,optional" validate:"min=3,max=32"` // 用户名 Phone string `json:"phone,optional"` // 手机号 @@ -98,6 +323,14 @@ type UpdateProfileRequest struct { Bio string `json:"bio,optional"` // 个人简介 } +type UpdateRoleRequest struct { + Id int64 `path:"id"` + Name string `json:"name,optional"` + Description string `json:"description,optional"` + SortOrder *int `json:"sortOrder,optional"` + Status *int `json:"status,optional"` +} + type UpdateUserRequest struct { Id int64 `path:"id" validate:"required,min=1"` // 用户ID Username string `json:"username,optional"` // 用户名 @@ -132,3 +365,15 @@ type UserListResponse struct { Total int64 `json:"total"` // 总数 List []UserInfo `json:"list"` // 用户列表 } + +type UserOrgInfo struct { + OrgId int64 `json:"orgId"` + OrgName string `json:"orgName"` + RoleId int64 `json:"roleId"` + RoleName string `json:"roleName"` + RoleCode string `json:"roleCode"` +} + +type UserOrgsResponse struct { + List []UserOrgInfo `json:"list"` +}