支持后台支付配置管理

This commit is contained in:
yml
2026-06-06 17:49:22 +08:00
parent 13543b3dcb
commit 4d40883da6
29 changed files with 3173 additions and 198 deletions
@@ -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
}