1 Star 0 Fork 0

庞飞 / multiapp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
RolePermissionRepository.go 3.55 KB
一键复制 编辑 原始数据 按行查看 历史
庞飞 提交于 2023-10-08 10:22 . 调整
package repositories
import (
"errors"
"gitee.com/pangxianfei/multiapp/kernel/debug"
"gitee.com/pangxianfei/multiapp/simple/sqlcmd"
"gitee.com/pangxianfei/multiapp/sysmodel"
"gorm.io/gorm"
)
var RolePermissionRepository = new(RoleHasPermissionDao)
type RoleHasPermissionDao struct {
}
// Delete 主键条件删除
func (r *RoleHasPermissionDao) Delete(db *gorm.DB, id int64) error {
return db.Delete(&sysmodel.RolePermissions{}, "id = ?", id).Error
}
// DeleteRolePermission 角色ID条件删除
func (r *RoleHasPermissionDao) DeleteRolePermission(db *gorm.DB, roleId int64) error {
return db.Where("role_id = ?", roleId).Delete(&sysmodel.RolePermissions{}).Error
}
func (r *RoleHasPermissionDao) Take(db *gorm.DB, where ...interface{}) *sysmodel.RolePermissions {
ret := &sysmodel.RolePermissions{}
if err := db.Take(ret, where...).Error; err != nil {
return nil
}
return ret
}
// Find 返回权限列表(菜单)
func (r *RoleHasPermissionDao) Find(db *gorm.DB, cnd *sqlcmd.Cnd) []sysmodel.Permissions {
return PermissionRepository.Find(db, cnd)
}
// GetByRoleId 查询角色下是否分配有权限
func (r *RoleHasPermissionDao) GetByRoleId(db *gorm.DB, roleId int64) *sysmodel.RolePermissions {
return r.Take(db, "role_id = ?", roleId)
}
func (r *RoleHasPermissionDao) GetById(db *gorm.DB, id int64) *sysmodel.RolePermissions {
return r.Take(db, "id = ?", id)
}
// CreateOne 添加一个角色权限
func (r *RoleHasPermissionDao) CreateOne(db *gorm.DB, tenantId int64, roleId int64, permissionId int64) (err error) {
//表不存则创建表
r.IsHasTable(db)
SysPermissions := PermissionRepository.Take(db, "permission_id =?", permissionId)
if SysPermissions == nil {
return nil
}
return db.Transaction(func(tx *gorm.DB) error {
newPermission := &sysmodel.RolePermissions{RoleId: roleId, PermissionId: SysPermissions.PermissionId, TenantsId: tenantId, AppId: SysPermissions.AppId}
if err := tx.Create(newPermission).Error; err != nil {
return err
}
return nil
})
}
// Create 创建
func (r *RoleHasPermissionDao) Create(db *gorm.DB, roleId int64, permission []int64) error {
//表不存则创建表
r.IsHasTable(db)
db.Where(&sysmodel.RolePermissions{RoleId: roleId}).Delete(&sysmodel.RolePermissions{})
cmd := sqlcmd.NewCnd().In("permission_id", permission)
SysPermissions := r.Find(db, cmd)
if len(SysPermissions) <= 0 {
return nil
}
var err error
for _, permissionItem := range SysPermissions {
err = db.Transaction(func(tx *gorm.DB) error {
newPermission := &sysmodel.RolePermissions{RoleId: roleId, PermissionId: permissionItem.PermissionId, AppId: permissionItem.AppId}
if err := tx.Create(newPermission).Error; err != nil {
return err
}
return nil
})
}
return err
}
func (r *RoleHasPermissionDao) RemovePermission(db *gorm.DB, roleId int64, PermissionId int64) error {
if roleId > 0 || PermissionId > 0 {
return db.Delete(&sysmodel.RolePermissions{RoleId: roleId, PermissionId: PermissionId}, PermissionId).Error
}
return errors.New("参数必需")
}
func (r *RoleHasPermissionDao) IsHasTable(db *gorm.DB) {
if db.Migrator().HasTable(&sysmodel.RolePermissions{}) == false {
db.Migrator().CreateTable(&sysmodel.RolePermissions{})
}
}
func (r *RoleHasPermissionDao) RoleToPermission(db *gorm.DB, roleId int64, PermissionId int64) bool {
whereModel := &sysmodel.RolePermissions{
RoleId: roleId,
PermissionId: PermissionId,
}
Result := db.Where(whereModel).First(&sysmodel.RolePermissions{})
if Result.Error == nil && Result.RowsAffected > 0 {
debug.Dd("yes")
return true
}
debug.Dd("NO")
return false
}
Go
1
https://gitee.com/pangxianfei/multiapp.git
git@gitee.com:pangxianfei/multiapp.git
pangxianfei
multiapp
multiapp
v1.2.3

搜索帮助