package system import ( "errors" "spaceofcheng/services/models/model" "spaceofcheng/services/models/system" "spaceofcheng/services/service" "spaceofcheng/services/utils" ) // RoleServ 系统处理 type RoleServ struct { ctx *utils.Context dao *system.RoleDAO } // NewRoleServ 初始化 func NewRoleServ(ctx *utils.Context) *RoleServ { return &RoleServ{ ctx: ctx, dao: system.NewRoleDAO(ctx), } } // GetRoleList 获取Role列表 func (s *RoleServ) GetRoleList(name string, page, pageSize int) (map[string]interface{}, error) { if pageSize == 0 { pageSize = service.PAGENUM } if page == 0 { page = 1 } roles, err := s.dao.GetRoleList(name, page, pageSize) if err != nil { utils.LogError("获取角色列表失败: " + err.Error()) return nil, errors.New("获取角色列表失败") } total, err := s.dao.GetRoleCount(name) if err != nil { utils.LogError("获取角色列表失败: " + err.Error()) return nil, errors.New("获取角色列表失败") } return map[string]interface{}{ "list": roles, "pagesize": pageSize, "pagenum": total, "page": page, }, nil } // GetRoleByID 根据ID获取角色 func (s *RoleServ) GetRoleByID(roleid string) (*model.SysRole, error) { role, err := s.dao.GetRoleByID(roleid) if err != nil { utils.LogError("获取角色信息失败: " + err.Error()) return nil, errors.New("获取角色信息失败") } // if role != nil { // menus, err := s.dao.GetRoleMenuByRoleID(roleid) // if err != nil { // beego.Error(err) // return nil, err // } // role.RoleMenu = menus // } return role, nil } // GetRoleMeneByID 根据ID获取角色菜单 func (s *RoleServ) GetRoleMeneByID(roleid string) ([]model.SysMenu, error) { menus, err := s.dao.GetRoleMenuByRoleID(roleid) if err != nil { utils.LogError("获取角色菜单失败: " + err.Error()) return nil, errors.New("获取角色菜单失败") } return menus, nil } // SaveRole 保存角色 func (s *RoleServ) SaveRole(role model.SysRole) (*model.SysRole, error) { if role.RoleName == "" { return nil, utils.LogError("角色名称不允许为空!") } var newInfo *model.SysRole var err error if role.RoleId == "" { newInfo, err = s.dao.AddRole(role) } else { err = s.dao.UpdateRole(role) newInfo = &role } if err != nil { utils.LogError("保存角色信息失败: " + err.Error()) return nil, errors.New("保存角色信息失败") } return newInfo, err } // SaveRoleMenu 保存角色菜单 func (s *RoleServ) SaveRoleMenu(roleid, menuids string) error { var err error err = s.dao.DelRoleMenu(roleid) if err != nil { utils.LogError("保存角色菜单失败: " + err.Error()) return errors.New("保存角色菜单失败") } err = s.dao.SaveRoleMenu(roleid, menuids) if err != nil { utils.LogError("保存角色菜单失败: " + err.Error()) return errors.New("保存角色菜单失败") } err = s.dao.DelUserMenusByRole(roleid) if err != nil { utils.LogError("保存角色菜单失败: " + err.Error()) return errors.New("保存角色菜单失败") } err = s.dao.SaveUserMenus(roleid) if err != nil { utils.LogError("保存角色菜单失败: " + err.Error()) return errors.New("保存角色菜单失败") } return nil } // DelRole 删除角色 func (s *RoleServ) DelRole(Roleid string) error { err := s.dao.DeleteRole(Roleid) if err != nil { utils.LogError("删除角色信息失败: " + err.Error()) return errors.New("删除角色信息失败") } return err }