zhou-hao vor 5 Jahren
Ursprung
Commit
414abe9126

+ 2 - 1
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/system/authorization/api/entity/AuthorizationSettingEntity.java

@@ -17,7 +17,8 @@ import java.util.List;
 import java.util.Set;
 
 @Table(name = "s_autz_setting_info", indexes = {
-        @Index(name = "idx_sasi_dss", columnList = "dimension_type,dimension_target,state desc")
+        @Index(name = "idx_sasi_dss", columnList = "dimension_type,dimension_target,state desc"),
+        @Index(name = "idx_sasi_pdd", columnList = "permission,dimension_type,dimension_target",unique = true)
 })
 @Getter
 @Setter

+ 25 - 12
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultAuthorizationSettingService.java

@@ -1,5 +1,6 @@
 package org.hswebframework.web.system.authorization.defaults.service;
 
+import org.apache.commons.codec.digest.DigestUtils;
 import org.hswebframework.ezorm.rdb.mapping.ReactiveDelete;
 import org.hswebframework.ezorm.rdb.mapping.ReactiveUpdate;
 import org.hswebframework.ezorm.rdb.mapping.defaults.SaveResult;
@@ -11,6 +12,7 @@ import org.hswebframework.web.system.authorization.api.event.ClearUserAuthorizat
 import org.reactivestreams.Publisher;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.util.StringUtils;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 import reactor.util.function.Tuple2;
@@ -28,9 +30,17 @@ public class DefaultAuthorizationSettingService extends GenericReactiveCrudServi
     private List<DimensionProvider> providers;
 
 
+    protected AuthorizationSettingEntity generateId(AuthorizationSettingEntity entity) {
+        if (StringUtils.isEmpty(entity.getId())) {
+            entity.setId(DigestUtils.md5Hex(entity.getPermission() + entity.getDimensionType() + entity.getDimensionTarget()));
+        }
+        return entity;
+    }
+
     @Override
     public Mono<SaveResult> save(Publisher<AuthorizationSettingEntity> entityPublisher) {
         return Flux.from(entityPublisher)
+                .map(this::generateId)
                 .collectList()
                 .flatMap(autz -> super.save(Flux.fromIterable(autz)).doOnSuccess(r -> clearUserAuthCache(autz)));
     }
@@ -57,6 +67,7 @@ public class DefaultAuthorizationSettingService extends GenericReactiveCrudServi
     public Mono<Integer> insert(Publisher<AuthorizationSettingEntity> entityPublisher) {
 
         return Flux.from(entityPublisher)
+                .map(this::generateId)
                 .collectList()
                 .flatMap(list -> super.insert(Flux.fromIterable(list))
                         .doOnSuccess(i -> clearUserAuthCache(list)));
@@ -66,15 +77,17 @@ public class DefaultAuthorizationSettingService extends GenericReactiveCrudServi
     public Mono<Integer> insertBatch(Publisher<? extends Collection<AuthorizationSettingEntity>> entityPublisher) {
         return Flux.from(entityPublisher)
                 .collectList()
-                .flatMap(list -> super.insertBatch(Flux.fromIterable(list))
+                .flatMap(list -> super.insertBatch(Flux.fromStream(list.stream()
+                        .map(lst -> lst.stream()
+                                .map(this::generateId)
+                                .collect(Collectors.toList()))))
                         .doOnSuccess(i -> clearUserAuthCache(list.stream().flatMap(Collection::stream).collect(Collectors.toList()))));
     }
 
     @Override
     public ReactiveUpdate<AuthorizationSettingEntity> createUpdate() {
-        ReactiveUpdate<AuthorizationSettingEntity> update = super.createUpdate();
 
-        return update.onExecute(r ->
+        return super.createUpdate().onExecute((update, r) ->
                 r.doOnSuccess(i -> {
                     createQuery()
                             .setParam(update.toQueryParam())
@@ -86,15 +99,15 @@ public class DefaultAuthorizationSettingService extends GenericReactiveCrudServi
 
     @Override
     public ReactiveDelete createDelete() {
-        ReactiveDelete delete = super.createDelete();
-        return delete.onExecute(r ->
-                r.doOnSuccess(i -> {
-                    createQuery()
-                            .setParam(delete.toQueryParam())
-                            .fetch()
-                            .collectList()
-                            .subscribe(this::clearUserAuthCache);
-                }));
+        return super.createDelete()
+                .onExecute((delete, r) ->
+                        r.doOnSuccess(i -> {
+                            createQuery()
+                                    .setParam(delete.toQueryParam())
+                                    .fetch()
+                                    .collectList()
+                                    .subscribe(this::clearUserAuthCache);
+                        }));
     }
 
     protected void clearUserAuthCache(List<AuthorizationSettingEntity> settings) {

+ 4 - 6
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultDimensionUserService.java

@@ -62,9 +62,8 @@ public class DefaultDimensionUserService extends GenericReactiveCrudService<Dime
     @Override
     @SuppressWarnings("all")
     public ReactiveUpdate<DimensionUserEntity> createUpdate() {
-        ReactiveUpdate<DimensionUserEntity> update = super.createUpdate();
-        return update
-                .onExecute(r -> r.doOnSuccess(i -> {
+        return super.createUpdate()
+                .onExecute((update, r) -> r.doOnSuccess(i -> {
                     createQuery()
                             .select(DimensionUserEntity::getUserId)
                             .setParam(update.toQueryParam())
@@ -79,9 +78,8 @@ public class DefaultDimensionUserService extends GenericReactiveCrudService<Dime
     @Override
     @SuppressWarnings("all")
     public ReactiveDelete createDelete() {
-        ReactiveDelete delete = super.createDelete();
-        return delete
-                .onExecute(r -> r.doOnSuccess(i -> {
+        return super.createDelete()
+                .onExecute((delete, r) -> r.doOnSuccess(i -> {
                     createQuery()
                             .select(DimensionUserEntity::getUserId)
                             .setParam(delete.toQueryParam())

+ 2 - 2
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultPermissionService.java

@@ -37,13 +37,13 @@ public class DefaultPermissionService extends GenericReactiveCrudService<Permiss
     @Override
     public ReactiveDelete createDelete() {
         return super.createDelete()
-                .onExecute(i -> i.doOnSuccess(r -> eventPublisher.publishEvent(ClearUserAuthorizationCacheEvent.of())));
+                .onExecute((ignore,i) -> i.doOnSuccess(r -> eventPublisher.publishEvent(ClearUserAuthorizationCacheEvent.of())));
     }
 
     @Override
     public ReactiveUpdate<PermissionEntity> createUpdate() {
         return super.createUpdate()
-                .onExecute(i -> i.doOnSuccess(r -> eventPublisher.publishEvent(ClearUserAuthorizationCacheEvent.of())));
+                .onExecute((ignore,i) -> i.doOnSuccess(r -> eventPublisher.publishEvent(ClearUserAuthorizationCacheEvent.of())));
     }
 
 

+ 8 - 8
hsweb-system/hsweb-system-dictionary/src/main/java/org/hswebframework/web/dictionary/service/DefaultDictionaryItemService.java

@@ -35,42 +35,42 @@ public class DefaultDictionaryItemService extends GenericReactiveCrudService<Dic
     @Override
     public Mono<Integer> insert(Publisher<DictionaryItemEntity> entityPublisher) {
         return super.insert(entityPublisher)
-                .doOnSuccess(r->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
+                .doOnSuccess(r -> eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
     }
 
     @Override
     public Mono<Integer> insertBatch(Publisher<? extends Collection<DictionaryItemEntity>> entityPublisher) {
         return super.insertBatch(entityPublisher)
-                .doOnSuccess(r->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
+                .doOnSuccess(r -> eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
     }
 
     @Override
     public Mono<Integer> updateById(String id, Mono<DictionaryItemEntity> entityPublisher) {
-        return super.updateById(id,entityPublisher)
-                .doOnSuccess(r->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
+        return super.updateById(id, entityPublisher)
+                .doOnSuccess(r -> eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
     }
 
     @Override
     public Mono<Integer> deleteById(Publisher<String> idPublisher) {
         return super.deleteById(idPublisher)
-                .doOnSuccess(r->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
+                .doOnSuccess(r -> eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
     }
 
     @Override
     public Mono<SaveResult> save(Publisher<DictionaryItemEntity> entityPublisher) {
         return super.save(entityPublisher)
-                .doOnSuccess(r->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
+                .doOnSuccess(r -> eventPublisher.publishEvent(ClearDictionaryCacheEvent.of()));
     }
 
     @Override
     public ReactiveUpdate<DictionaryItemEntity> createUpdate() {
         return super.createUpdate()
-                .onExecute(r->r.doOnSuccess(l->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
+                .onExecute((ignore, r) -> r.doOnSuccess(l -> eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
     }
 
     @Override
     public ReactiveDelete createDelete() {
         return super.createDelete()
-                .onExecute(r->r.doOnSuccess(l->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
+                .onExecute((ignore, r) -> r.doOnSuccess(l -> eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
     }
 }

+ 2 - 2
hsweb-system/hsweb-system-dictionary/src/main/java/org/hswebframework/web/dictionary/service/DefaultDictionaryService.java

@@ -60,13 +60,13 @@ public class DefaultDictionaryService extends GenericReactiveCrudService<Diction
     @Override
     public ReactiveUpdate<DictionaryEntity> createUpdate() {
         return super.createUpdate()
-                .onExecute(r->r.doOnSuccess(l->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
+                .onExecute((ignore,r)->r.doOnSuccess(l->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
     }
 
     @Override
     public ReactiveDelete createDelete() {
         return super.createDelete()
-                .onExecute(r->r.doOnSuccess(l->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
+                .onExecute((ignore,r)->r.doOnSuccess(l->eventPublisher.publishEvent(ClearDictionaryCacheEvent.of())));
     }