代码拉取完成,页面将自动刷新
package agency
import (
"errors"
"reflect"
"gitee.com/jackly-chao/joy-admin-server/src/global"
"gitee.com/jackly-chao/joy-admin-server/src/global/request"
"gitee.com/jackly-chao/joy-admin-server/src/model/agency"
"gorm.io/gorm"
)
type RoleService struct{}
func (s *RoleService) GetRole(request request.IdRequest) (result agency.Role, err error) {
err = global.DbMap[dbName].Model(&agency.Role{}).Preload("Menus").Preload("Apis").First(&result, request.Id).Error
return
}
func (s *RoleService) GetRoles(request agency.RoleRequest) (result []agency.Role, total int64, err error) {
db := global.DbMap[dbName].Model(&agency.Role{})
handleRoleRequest(db, request)
err = db.Count(&total).Error
if err != nil {
return
}
db = db.Limit(request.PageSize).Offset(request.PageSize * (request.Page - 1))
db = db.Preload("Menus")
db = db.Preload("Apis")
err = db.Find(&result).Error
return
}
func (s *RoleService) GetAllRoles(request agency.RoleRequest) (result []agency.Role, err error) {
db := global.DbMap[dbName].Model(&agency.Role{})
handleRoleRequest(db, request)
db = db.Preload("Menus")
db = db.Preload("Apis")
err = db.Find(&result).Error
return
}
func (s *RoleService) CreateRole(request agency.Role) (result agency.Role, err error) {
err = checkAddOrModRole(request)
if err != nil {
return
}
err = global.DbMap[dbName].Create(&request).Error
return request, err
}
func (s *RoleService) UpdateRole(request agency.Role) (result agency.Role, err error) {
err = checkAddOrModRole(request)
if err != nil {
return
}
err = global.DbMap[dbName].Save(&request).Error
return request, err
}
func (s *RoleService) DeleteRoles(request request.IdsRequest) (err error) {
err = global.DbMap[dbName].Delete(&agency.Role{}, request.Ids).Error
return
}
func (s *RoleService) SwitchRoles(request request.SwitchRequest) (err error) {
err = global.DbMap[dbName].Model(&agency.Role{}).Where("id in ?", request.Ids).Update("is_enable", request.IsEnable).Error
return
}
func (s *RoleService) UpdateRoleMenus(request agency.Role) (result agency.Role, err error) {
err = global.DbMap[dbName].Model(&request).Association("Menus").Replace(request.Menus)
if err != nil {
err = errors.New("修改角色权限菜单失败")
return
}
return
}
func (s *RoleService) UpdateRoleApis(request agency.Role) (result agency.Role, err error) {
err = global.DbMap[dbName].Model(&request).Association("Apis").Replace(request.Apis)
if err != nil {
err = errors.New("修改角色权限Api失败")
return
}
return
}
func handleRoleRequest(db *gorm.DB, request agency.RoleRequest) {
if request.Name != "" {
db = db.Where("name Like ?", "%"+request.Name+"%")
}
if !reflect.ValueOf(request.IsEnable).IsNil() {
db = db.Where("is_enable = ?", request.IsEnable)
}
db = db.Order("is_enable desc")
db = db.Order("sort")
}
func checkAddOrModRole(request agency.Role) (err error) {
var result agency.Role
db := global.DbMap[dbName].Model(&result)
db = db.Where("id != ?", request.Id)
db = db.Where("name = ?", request.Name)
err = db.First(&result).Error
if !errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("存在相同角色")
return
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。