代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。