Browse Source

优化新增用户

zhou-hao 3 years ago
parent
commit
6e0a9915ff

+ 4 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/pom.xml

@@ -30,6 +30,10 @@
             <groupId>org.hibernate.javax.persistence</groupId>
             <artifactId>hibernate-jpa-2.1-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 5 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/system/authorization/api/entity/UserEntity.java

@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.Hidden;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.hswebframework.ezorm.rdb.mapping.annotation.DefaultValue;
 import org.hswebframework.web.api.crud.entity.GenericEntity;
 import org.hswebframework.web.api.crud.entity.RecordCreationEntity;
@@ -78,4 +79,8 @@ public class UserEntity extends GenericEntity<String> implements RecordCreationE
     public String getId() {
         return super.getId();
     }
+
+    public void generateId(){
+       setId(DigestUtils.md5Hex(username));
+    }
 }

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

@@ -71,21 +71,19 @@ public class DefaultReactiveUserService extends GenericReactiveCrudService<UserE
 
         return Mono
                 .defer(() -> {
-                    userEntity.setSalt(IDGenerator.RANDOM.generate());
                     usernameValidator.validate(userEntity.getUsername());
                     passwordValidator.validate(userEntity.getPassword());
+                    userEntity.generateId();
+                    userEntity.setSalt(IDGenerator.RANDOM.generate());
                     userEntity.setPassword(passwordEncoder.encode(userEntity.getPassword(), userEntity.getSalt()));
-                    return Mono.just(userEntity)
-                               .doOnNext(e -> e.tryValidate(CreateGroup.class))
-                               .filterWhen(e -> createQuery()
-                                       .where(userEntity::getUsername)
-                                       .count().map(i -> i == 0))
-                               .switchIfEmpty(Mono.error(() -> new ValidationException("用户名已存在")))
-                               .as(getRepository()::insert)
-                               .thenReturn(userEntity)
-                               .flatMap(user -> new UserCreatedEvent(user)
-                                       .publish(eventPublisher)
-                                       .thenReturn(user));
+                    return Mono
+                            .just(userEntity)
+                            .doOnNext(e -> e.tryValidate(CreateGroup.class))
+                            .as(getRepository()::save)
+                            .thenReturn(userEntity)
+                            .flatMap(user -> new UserCreatedEvent(user)
+                                    .publish(eventPublisher)
+                                    .thenReturn(user));
                 });
 
     }