支持后台支付配置管理
This commit is contained in:
@@ -25,7 +25,11 @@ func (r *Repository) List() ([]RoleDTO, error) {
|
||||
result := make([]RoleDTO, 0, len(roles))
|
||||
for _, role := range roles {
|
||||
var count int64
|
||||
r.db.Model(&model.RolePermission{}).Where("role_id = ?", role.ID).Count(&count)
|
||||
if role.Code == "super_admin" {
|
||||
r.db.Model(&model.Permission{}).Count(&count)
|
||||
} else {
|
||||
r.db.Model(&model.RolePermission{}).Where("role_id = ?", role.ID).Count(&count)
|
||||
}
|
||||
result = append(result, RoleDTO{
|
||||
ID: role.ID,
|
||||
Code: role.Code,
|
||||
@@ -44,7 +48,13 @@ func (r *Repository) FindByID(id uint64) (*RoleDTO, error) {
|
||||
if err := r.db.First(&role, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
perms, err := r.getRolePermissions(id)
|
||||
var perms []PermissionDTO
|
||||
var err error
|
||||
if role.Code == "super_admin" {
|
||||
perms, err = r.ListPermissions()
|
||||
} else {
|
||||
perms, err = r.getRolePermissions(id)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -111,6 +121,13 @@ func (r *Repository) AssignPermissions(roleID uint64, permIDs []uint64) error {
|
||||
return err
|
||||
}
|
||||
return r.db.Transaction(func(tx *gorm.DB) error {
|
||||
if role.Code == "super_admin" {
|
||||
var allPermIDs []uint64
|
||||
if err := tx.Model(&model.Permission{}).Pluck("id", &allPermIDs).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
permIDs = allPermIDs
|
||||
}
|
||||
if err := tx.Where("role_id = ?", roleID).Delete(&model.RolePermission{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user