|
|
@@ -10,6 +10,7 @@ import org.reactivestreams.Publisher;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import reactor.core.publisher.Flux;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
+import reactor.util.function.Tuple2;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
@@ -62,12 +63,24 @@ public class LocalGeoRegionService extends GenericReactiveTreeSupportCrudService
|
|
|
|
|
|
|
|
|
|
|
|
-// default Mono<Integer> deleteById(Publisher<K> idPublisher) {
|
|
|
-// return findById(Flux.from(idPublisher))
|
|
|
-// .flatMap(e -> createDelete()
|
|
|
-// .where()
|
|
|
-// .like$(e::getPath)
|
|
|
-// .execute())
|
|
|
-// .collect(Collectors.summingInt(Integer::intValue));
|
|
|
-// }
|
|
|
+ @Override
|
|
|
+ public Mono<Integer> deleteById(Publisher<String> idPublisher) {
|
|
|
+ return findById(Flux.from(idPublisher))
|
|
|
+ .flatMap(e -> createDelete()
|
|
|
+ .where()
|
|
|
+ .like$(e::getPath)
|
|
|
+ .execute()
|
|
|
+ .zipWith(Mono.defer(()->
|
|
|
+ this.createQuery()
|
|
|
+ .where(GeoRegionEntity::getParentId,e.getParentId())
|
|
|
+ .count()
|
|
|
+ .flatMap(count->
|
|
|
+ this.createUpdate()
|
|
|
+ .where(GeoRegionEntity::getId,e.getParentId())
|
|
|
+ .set(GeoRegionEntity::getChildrenNum,count)
|
|
|
+ .execute())
|
|
|
+ )))
|
|
|
+ .map(Tuple2::getT1)
|
|
|
+ .collect(Collectors.summingInt(Integer::intValue));
|
|
|
+ }
|
|
|
}
|