|
8 | 8 | import org.hswebframework.web.authorization.DimensionProvider;
|
9 | 9 | import org.hswebframework.web.authorization.DimensionType;
|
10 | 10 | import org.hswebframework.web.crud.service.GenericReactiveCrudService;
|
| 11 | +import org.hswebframework.web.crud.service.GenericReactiveTreeSupportCrudService; |
| 12 | +import org.hswebframework.web.crud.service.ReactiveCrudService; |
11 | 13 | import org.hswebframework.web.crud.service.ReactiveTreeSortEntityService;
|
12 | 14 | import org.hswebframework.web.id.IDGenerator;
|
13 | 15 | import org.hswebframework.web.system.authorization.api.entity.AuthorizationSettingEntity;
|
|
26 | 28 | import java.util.stream.Collectors;
|
27 | 29 |
|
28 | 30 | public class DefaultDimensionService
|
29 |
| - extends GenericReactiveCrudService<DimensionEntity, String> |
30 |
| - implements ReactiveTreeSortEntityService<DimensionEntity, String>, |
| 31 | + extends GenericReactiveTreeSupportCrudService<DimensionEntity, String> |
| 32 | + implements |
31 | 33 | DimensionProvider {
|
32 | 34 |
|
33 | 35 | @Autowired
|
@@ -121,22 +123,24 @@ public ReactiveDelete createDelete() {
|
121 | 123 |
|
122 | 124 | @Override
|
123 | 125 | public Mono<Integer> deleteById(Publisher<String> idPublisher) {
|
| 126 | + |
124 | 127 | return Flux.from(idPublisher)
|
125 | 128 | .collectList()
|
126 |
| - .flatMap(list -> super.deleteById(Flux.fromIterable(list)) |
127 |
| - .then(dimensionUserRepository.createDelete() //删除维度用户关联 |
| 129 | + .flatMap(list -> super.queryIncludeChildren(list) |
| 130 | + .flatMap(dimension -> dimensionUserRepository.createDelete() //删除维度用户关联 |
128 | 131 | .where()
|
129 |
| - .in(DimensionUserEntity::getDimensionId, list) |
130 |
| - .execute()) |
131 |
| - .then(findById(Flux.fromIterable(list)) |
132 |
| - .groupBy(DimensionEntity::getTypeId, DimensionEntity::getId)//按维度类型分组 |
133 |
| - .flatMap(grouping -> grouping.collectList() |
134 |
| - .flatMap(dimensionId -> settingRepository //删除权限设置 |
135 |
| - .createDelete() |
136 |
| - .where(AuthorizationSettingEntity::getDimensionType, grouping.key()) |
137 |
| - .in(AuthorizationSettingEntity::getDimensionTarget, dimensionId).execute())) |
138 |
| - .collect(Collectors.summarizingInt(Integer::intValue)) |
| 132 | + .is(DimensionUserEntity::getDimensionId, dimension.getId()) |
| 133 | + .execute() |
| 134 | + .then(getRepository().deleteById(Mono.just(dimension.getId()))) |
| 135 | + .thenReturn(dimension) |
139 | 136 | )
|
| 137 | + .groupBy(DimensionEntity::getTypeId, DimensionEntity::getId)//按维度类型分组 |
| 138 | + .flatMap(grouping -> grouping.collectList() |
| 139 | + .flatMap(dimensionId -> settingRepository //删除权限设置 |
| 140 | + .createDelete() |
| 141 | + .where(AuthorizationSettingEntity::getDimensionType, grouping.key()) |
| 142 | + .in(AuthorizationSettingEntity::getDimensionTarget, dimensionId).execute())) |
| 143 | + .collect(Collectors.summarizingInt(Integer::intValue)) |
140 | 144 | .doOnSuccess((r) -> eventPublisher.publishEvent(ClearUserAuthorizationCacheEvent.all()))
|
141 | 145 | .thenReturn(list.size()));
|
142 | 146 | }
|
|
0 commit comments