初始化
This commit is contained in:
53
server/repository/user_role_repo.go
Normal file
53
server/repository/user_role_repo.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"seeyon-filesystem/config"
|
||||
"seeyon-filesystem/model"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// UserRoleRepository 用户-角色关联数据访问
|
||||
type UserRoleRepository struct{}
|
||||
|
||||
func NewUserRoleRepository() *UserRoleRepository {
|
||||
return &UserRoleRepository{}
|
||||
}
|
||||
|
||||
// SetUserRoles 设置用户角色(全量替换)
|
||||
func (r *UserRoleRepository) SetUserRoles(userID uint64, roleIDs []uint64) error {
|
||||
return config.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// 先删除旧关联
|
||||
if err := tx.Where("user_id = ?", userID).Delete(&model.UserRole{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
// 插入新关联
|
||||
for _, rid := range roleIDs {
|
||||
ur := model.UserRole{UserID: userID, RoleID: rid}
|
||||
if err := tx.Create(&ur).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// GetUserRoles 获取用户的角色列表
|
||||
func (r *UserRoleRepository) GetUserRoles(userID uint64) ([]model.Role, error) {
|
||||
var roles []model.Role
|
||||
err := config.DB.Table("fs_role ro").
|
||||
Joins("JOIN fs_user_role ur ON ur.role_id = ro.id").
|
||||
Where("ur.user_id = ? AND ro.status = 1", userID).
|
||||
Find(&roles).Error
|
||||
return roles, err
|
||||
}
|
||||
|
||||
// GetRoleUsers 获取角色下的用户列表
|
||||
func (r *UserRoleRepository) GetRoleUsers(roleID uint64) ([]model.User, error) {
|
||||
var users []model.User
|
||||
err := config.DB.Table("fs_user u").
|
||||
Joins("JOIN fs_user_role ur ON ur.user_id = u.id").
|
||||
Where("ur.role_id = ?", roleID).
|
||||
Find(&users).Error
|
||||
return users, err
|
||||
}
|
||||
Reference in New Issue
Block a user