| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | package serviceimport (	"bytes"	"github.com/druidcaesa/gotool"	"ulink-admin/frame"	dao2 "ulink-admin/modules/system/dao"	"ulink-admin/modules/system/models/model"	req2 "ulink-admin/modules/system/models/req"	"ulink-admin/pkg/base"	"xorm.io/xorm")type RoleService struct {	RoleDao     *dao2.RoleDao     `inject:""`	RoleMenuDao *dao2.RoleMenuDao `inject:""`	UserRoleDao *dao2.UserRoleDao `inject:""`}// SelectRoleAll 查询所有角色func (s RoleService) List(query *req2.RoleQuery, list interface{}) {	s.RoleDao.List(query, list)}// SelectRoleListByUserId 根据用户id查询角色id集合func (s RoleService) SelectRoleListByUserId(parseInt int64) *[]int64 {	return s.RoleDao.SelectRoleListByUserId(parseInt)}// GetRoleListByUserId 根据用户ID查询角色func (s RoleService) GetRoleListByUserId(id int64) *[]model.SysRole {	return s.RoleDao.GetRoleListByUserId(id)}// FindList 分页查询角色数据func (s RoleService) Page(query *req2.RoleQuery, list interface{}) int64 {	return s.RoleDao.Page(query, list)}// SelectRoleByRoleId 根据角色id查询角色数据func (s RoleService) GetById(id int64, model interface{}) {	s.RoleDao.GetById(id, model)}// Add 添加角色数据func (s RoleService) Add(role *model.SysRole) {	if s.RoleDao.Exist(role.TableName(), "role_name=?", role.RoleName) {		frame.Throw(frame.BUSINESS_CODE, "新增角色'"+role.RoleName+"'失败,角色名称已存在")	}	if s.RoleDao.Exist(role.TableName(), "role_key=?", role.RoleKey) {		frame.Throw(frame.BUSINESS_CODE, "新增角色'"+role.RoleName+"'失败,角色权限标识已存在")	}	base.Transaction(func(session *xorm.Session) {		s.RoleDao.Insert(role)		s.insertRoleMenu(role)	})}// 添加角色菜单关系func (s RoleService) insertRoleMenu(role *model.SysRole) {	list := make([]model.SysRoleMenu, 0)	for _, id := range role.MenuIds {		menu := model.SysRoleMenu{			RoleId: role.Id,			MenuId: id,		}		list = append(list, menu)	}	s.RoleMenuDao.Add(list)}// Update 修改角色数据func (s RoleService) Update(role *model.SysRole) {	if s.RoleDao.Exist(role.TableName(), "role_name=? and id!=?", role.RoleKey, role.Id) {		frame.Throw(frame.BUSINESS_CODE, "新增角色'"+role.RoleName+"'失败,角色名称已存在")	}	if s.RoleDao.Exist(role.TableName(), "role_key=? and   id!=?", role.RoleKey, role.Id) {		frame.Throw(frame.BUSINESS_CODE, "新增角色'"+role.RoleName+"'失败,角色权限标识已存在")	}	base.Transaction(func(session *xorm.Session) {		//删除菜单关联关系		s.RoleMenuDao.Delete(role)		s.insertRoleMenu(role)		//修改数据		s.RoleDao.Update(role)	})}// Delete 删除角色func (s RoleService) Delete(id int64) {	//删除角色相关表	base.Transaction(func(session *xorm.Session) {		s.RoleDao.Delete(&model.SysRole{}, id)		s.RoleMenuDao.Delete(&model.SysRole{			BaseModel: base.BaseModel{Id: id},		})	})}// CheckRoleAllowed 校验是否可以操作func (s RoleService) CheckRoleAllowed(id int64) (bool, string) {	if id == 1 {		return false, "超级管理员不允许操作"	}	return true, ""}// UpdateRoleStatus 角色状态修改func (s RoleService) UpdateStatus(role *model.SysRole) {	s.RoleDao.Update(role, "status")}// DeleteAuthUser 取消授权用户func (s RoleService) DeleteAuthUser(userRole *model.SysUserRole) {	s.UserRoleDao.DeleteAuthUser(userRole)}// BatchCancelAuthUsers 批量取消用户授权func (s RoleService) BatchCancelAuthUsers(body *req2.UserRoleBody) {	s.UserRoleDao.BatchCancelAuthUsers(body)}// InsertAuthUsers 批量选择用户授权func (s RoleService) InsertAuthUsers(body *req2.UserRoleBody) {	s.UserRoleDao.InsertAuthUsers(body)}// SelectRolesByUserName 查询所属角色组func (s RoleService) SelectRolesByUserName(name string) string {	list := s.RoleDao.SelectRolesByUserName(name)	var buffer bytes.Buffer	var roleName string	for _, role := range *list {		buffer.WriteString(role.RoleName)		buffer.WriteString(",")	}	s2 := buffer.String()	if gotool.StrUtils.HasNotEmpty(s2) {		roleName = s2[0:(len(s2) - 1)]	}	return roleName}
 |