1 Star 0 Fork 0

jackly-chao / joy-admin-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
role.go 3.12 KB
一键复制 编辑 原始数据 按行查看 历史
jackly-chao 提交于 2023-09-28 10:50 . 请求参数绑定的处理
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
}
Go
1
https://gitee.com/jackly-chao/joy-admin-server.git
git@gitee.com:jackly-chao/joy-admin-server.git
jackly-chao
joy-admin-server
joy-admin-server
01c5a3fec7ab

搜索帮助

53164aa7 5694891 3bd8fe86 5694891