初始化
This commit is contained in:
82
server/repository/permission_repo.go
Normal file
82
server/repository/permission_repo.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"seeyon-filesystem/config"
|
||||
"seeyon-filesystem/model"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// PermissionRepository 权限数据访问
|
||||
type PermissionRepository struct{}
|
||||
|
||||
func NewPermissionRepository() *PermissionRepository {
|
||||
return &PermissionRepository{}
|
||||
}
|
||||
|
||||
// FindByID 根据ID查找权限
|
||||
func (r *PermissionRepository) FindByID(id uint64) (*model.Permission, error) {
|
||||
var perm model.Permission
|
||||
err := config.DB.First(&perm, id).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &perm, nil
|
||||
}
|
||||
|
||||
// FindByCode 根据权限标识查找
|
||||
func (r *PermissionRepository) FindByCode(code string) (*model.Permission, error) {
|
||||
var perm model.Permission
|
||||
err := config.DB.Where("code = ?", code).First(&perm).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &perm, nil
|
||||
}
|
||||
|
||||
// List 查询所有权限
|
||||
func (r *PermissionRepository) List() ([]model.Permission, error) {
|
||||
var perms []model.Permission
|
||||
err := config.DB.Order("resource ASC, action ASC").Find(&perms).Error
|
||||
return perms, err
|
||||
}
|
||||
|
||||
// ListByResource 按资源类型查询权限
|
||||
func (r *PermissionRepository) ListByResource(resource string) ([]model.Permission, error) {
|
||||
var perms []model.Permission
|
||||
err := config.DB.Where("resource = ?", resource).Order("action ASC").Find(&perms).Error
|
||||
return perms, err
|
||||
}
|
||||
|
||||
// GetUserPermissionCodes 获取用户的所有权限标识(通过角色)
|
||||
func (r *PermissionRepository) GetUserPermissionCodes(userID uint64) ([]string, error) {
|
||||
var codes []string
|
||||
err := config.DB.Table("fs_permission p").
|
||||
Select("DISTINCT p.code").
|
||||
Joins("JOIN fs_role_permission rp ON rp.permission_id = p.id").
|
||||
Joins("JOIN fs_user_role ur ON ur.role_id = rp.role_id").
|
||||
Where("ur.user_id = ?", userID).
|
||||
Pluck("p.code", &codes).Error
|
||||
return codes, err
|
||||
}
|
||||
|
||||
// Create 创建权限
|
||||
func (r *PermissionRepository) Create(perm *model.Permission) error {
|
||||
return config.DB.Create(perm).Error
|
||||
}
|
||||
|
||||
// Update 更新权限
|
||||
func (r *PermissionRepository) Update(perm *model.Permission) error {
|
||||
return config.DB.Save(perm).Error
|
||||
}
|
||||
|
||||
// Delete 删除权限
|
||||
func (r *PermissionRepository) Delete(id uint64) error {
|
||||
return config.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// 删除角色-权限关联
|
||||
if err := tx.Where("permission_id = ?", id).Delete(&model.RolePermission{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Delete(&model.Permission{}, id).Error
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user