初始化

This commit is contained in:
2026-07-03 15:58:29 +08:00
parent 3a942c882e
commit dc90e889e1
77 changed files with 12912 additions and 0 deletions

View 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
})
}