更新前后端代码

This commit is contained in:
2026-08-23 00:48:10 +08:00
parent 1b5468995f
commit 5c1313e4f6
74 changed files with 9995 additions and 306 deletions
+79
View File
@@ -0,0 +1,79 @@
package repository
import (
"gorm.io/gorm"
"filestoragesystem/internal/model"
)
// RoleRepo 角色数据访问
type RoleRepo struct{ DB *gorm.DB }
func (r *RoleRepo) Create(role *model.Role) error { return r.DB.Create(role).Error }
func (r *RoleRepo) FindByID(id uint) (*model.Role, error) {
var role model.Role
err := r.DB.Preload("Permissions").First(&role, id).Error
return &role, err
}
func (r *RoleRepo) FindByCode(code string) (*model.Role, error) {
var role model.Role
err := r.DB.Where("code = ?", code).First(&role).Error
return &role, err
}
func (r *RoleRepo) List() ([]model.Role, error) {
var roles []model.Role
err := r.DB.Preload("Permissions").Order("id ASC").Find(&roles).Error
return roles, err
}
func (r *RoleRepo) Update(role *model.Role) error { return r.DB.Save(role).Error }
func (r *RoleRepo) Delete(id uint) error { return r.DB.Delete(&model.Role{}, id).Error }
// ReplacePermissions 覆盖式更新角色权限
func (r *RoleRepo) ReplacePermissions(roleID uint, permIDs []uint) error {
return r.DB.Transaction(func(tx *gorm.DB) error {
if err := tx.Exec("DELETE FROM role_permissions WHERE role_id = ?", roleID).Error; err != nil {
return err
}
for _, pid := range permIDs {
if err := tx.Exec("INSERT INTO role_permissions (role_id, permission_id) VALUES (?, ?)", roleID, pid).Error; err != nil {
return err
}
}
return nil
})
}
// CountUsersByRole 统计角色下的用户数
func (r *RoleRepo) CountUsersByRole(roleID uint) (int64, error) {
var n int64
err := r.DB.Model(&model.User{}).Where("role_id = ?", roleID).Count(&n).Error
return n, err
}
// PermissionRepo 权限数据访问
type PermissionRepo struct{ DB *gorm.DB }
func (r *PermissionRepo) List() ([]model.Permission, error) {
var perms []model.Permission
err := r.DB.Order("module ASC, id ASC").Find(&perms).Error
return perms, err
}
func (r *PermissionRepo) ListByIDs(ids []uint) ([]model.Permission, error) {
var perms []model.Permission
err := r.DB.Where("id IN ?", ids).Find(&perms).Error
return perms, err
}
func (r *PermissionRepo) ListByRole(roleID uint) ([]model.Permission, error) {
var perms []model.Permission
err := r.DB.
Joins("JOIN role_permissions rp ON rp.permission_id = permissions.id").
Where("rp.role_id = ?", roleID).Find(&perms).Error
return perms, err
}