From cc169804cf18965d3cea1f9678d93e6671658957 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 29 Aug 2023 16:14:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E4=B8=8E=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=85=B3=E8=81=94=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/sys_role_menu/model_sys_role_menu.go | 15 ++++ features/sys_role_menu/repo_sys_role_menu.go | 71 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 features/sys_role_menu/model_sys_role_menu.go create mode 100644 features/sys_role_menu/repo_sys_role_menu.go diff --git a/features/sys_role_menu/model_sys_role_menu.go b/features/sys_role_menu/model_sys_role_menu.go new file mode 100644 index 00000000..755e66db --- /dev/null +++ b/features/sys_role_menu/model_sys_role_menu.go @@ -0,0 +1,15 @@ +package sysrolemenu + +// SysRoleMenu 角色和菜单关联对象 sys_role_menu +type SysRoleMenu struct { + RoleID string `json:"roleId"` // 角色ID + MenuID string `json:"menuId"` // 菜单ID +} + +// NewSysRoleMenu 创建角色和菜单关联对象的构造函数 +func NewSysRoleMenu(roleID string, menuID string) SysRoleMenu { + return SysRoleMenu{ + RoleID: roleID, + MenuID: menuID, + } +} diff --git a/features/sys_role_menu/repo_sys_role_menu.go b/features/sys_role_menu/repo_sys_role_menu.go new file mode 100644 index 00000000..0f36eef7 --- /dev/null +++ b/features/sys_role_menu/repo_sys_role_menu.go @@ -0,0 +1,71 @@ +package sysrolemenu + +import ( + "fmt" + "strings" + + "ems.agt/lib/core/datasource" + "ems.agt/lib/core/utils/parse" + "github.com/go-admin-team/go-admin-core/logger" +) + +// 实例化数据层 RepoSysRoleMenu 结构体 +var NewRepoSysRoleMenu = &RepoSysRoleMenu{} + +// RepoSysRoleMenu 角色与菜单关联表 数据层处理 +type RepoSysRoleMenu struct{} + +// CheckMenuExistRole 查询菜单分配给角色使用数量 +func (r *RepoSysRoleMenu) CheckMenuExistRole(menuId string) int64 { + querySql := "select count(1) as 'total' from sys_role_menu where menu_id = ?" + results, err := datasource.RawDB("", querySql, []any{menuId}) + if err != nil { + logger.Errorf("query err => %v", err) + return 0 + } + if len(results) > 0 { + return parse.Number(results[0]["total"]) + } + return 0 +} + +// DeleteRoleMenu 批量删除角色和菜单关联 +func (r *RepoSysRoleMenu) DeleteRoleMenu(roleIds []string) int64 { + placeholder := datasource.KeyPlaceholderByQuery(len(roleIds)) + sql := "delete from sys_role_menu where role_id in (" + placeholder + ")" + parameters := datasource.ConvertIdsSlice(roleIds) + results, err := datasource.ExecDB("", sql, parameters) + if err != nil { + logger.Errorf("delete err => %v", err) + return 0 + } + return results +} + +// DeleteMenuRole 批量删除菜单和角色关联 +func (r *RepoSysRoleMenu) DeleteMenuRole(menuIds []string) int64 { + placeholder := datasource.KeyPlaceholderByQuery(len(menuIds)) + sql := "delete from sys_role_menu where menu_id in (" + placeholder + ")" + parameters := datasource.ConvertIdsSlice(menuIds) + results, err := datasource.ExecDB("", sql, parameters) + if err != nil { + logger.Errorf("delete err => %v", err) + return 0 + } + return results +} + +// BatchRoleMenu 批量新增角色菜单信息 +func (r *RepoSysRoleMenu) BatchRoleMenu(sysRoleMenus []SysRoleMenu) int64 { + keyValues := make([]string, 0) + for _, item := range sysRoleMenus { + keyValues = append(keyValues, fmt.Sprintf("(%s,%s)", item.RoleID, item.MenuID)) + } + sql := "insert into sys_role_menu(role_id, menu_id) values " + strings.Join(keyValues, ",") + results, err := datasource.ExecDB("", sql, nil) + if err != nil { + logger.Errorf("delete err => %v", err) + return 0 + } + return results +}