初始化

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,86 @@
package repository
import (
"seeyon-filesystem/config"
"seeyon-filesystem/model"
"gorm.io/gorm"
)
// RoleRepository 角色数据访问
type RoleRepository struct{}
func NewRoleRepository() *RoleRepository {
return &RoleRepository{}
}
// Create 创建角色
func (r *RoleRepository) Create(role *model.Role) error {
return config.DB.Create(role).Error
}
// FindByID 根据ID查找角色(含权限)
func (r *RoleRepository) FindByID(id uint64) (*model.Role, error) {
var role model.Role
err := config.DB.Preload("Permissions").First(&role, id).Error
if err != nil {
return nil, err
}
return &role, nil
}
// FindByName 根据标识查找角色
func (r *RoleRepository) FindByName(name string) (*model.Role, error) {
var role model.Role
err := config.DB.Where("name = ?", name).First(&role).Error
if err != nil {
return nil, err
}
return &role, nil
}
// List 查询所有角色
func (r *RoleRepository) List() ([]model.Role, error) {
var roles []model.Role
err := config.DB.Preload("Permissions").Order("id ASC").Find(&roles).Error
return roles, err
}
// Update 更新角色
func (r *RoleRepository) Update(role *model.Role) error {
return config.DB.Save(role).Error
}
// Delete 删除角色(仅非系统角色)
func (r *RoleRepository) Delete(id uint64) error {
return config.DB.Transaction(func(tx *gorm.DB) error {
// 删除角色-权限关联
if err := tx.Where("role_id = ?", id).Delete(&model.RolePermission{}).Error; err != nil {
return err
}
// 删除用户-角色关联
if err := tx.Where("role_id = ?", id).Delete(&model.UserRole{}).Error; err != nil {
return err
}
// 删除角色
return tx.Delete(&model.Role{}, id).Error
})
}
// SetPermissions 设置角色权限(全量替换)
func (r *RoleRepository) SetPermissions(roleID uint64, permissionIDs []uint64) error {
return config.DB.Transaction(func(tx *gorm.DB) error {
// 先删除旧关联
if err := tx.Where("role_id = ?", roleID).Delete(&model.RolePermission{}).Error; err != nil {
return err
}
// 插入新关联
for _, pid := range permissionIDs {
rp := model.RolePermission{RoleID: roleID, PermissionID: pid}
if err := tx.Create(&rp).Error; err != nil {
return err
}
}
return nil
})
}