zhouhao il y a 8 ans
Parent
commit
07d3289db1
10 fichiers modifiés avec 50 ajouts et 14 suppressions
  1. 3 3
      hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/message/ResponseMessage.java
  2. 9 0
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultQueryByEntityService.java
  3. 6 0
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericEntityService.java
  4. 5 2
      hsweb-core/src/main/java/org/hswebframework/web/validate/ValidationException.java
  5. 12 1
      hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/RestControllerExceptionTranslator.java
  6. 2 0
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-entity/src/main/java/org/hswebframework/web/entity/authorization/PermissionEntity.java
  7. 6 0
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-service/hsweb-system-authorization-service-simple/src/main/java/org/hswebframework/web/service/authorization/simple/SimplePermissionService.java
  8. 3 3
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/src/test/java/org/hswebframework/web/starter/authorization/UserTests.java
  9. 3 5
      hsweb-system/hsweb-system-organizational/hsweb-system-organizational-service/hsweb-system-organizational-service-simple/src/main/java/org/hswebframework/web/service/organizational/simple/SimpleOrganizationalService.java
  10. 1 0
      hsweb-system/hsweb-system-organizational/pom.xml

+ 3 - 3
hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/message/ResponseMessage.java

@@ -62,12 +62,12 @@ public class ResponseMessage<T> implements Serializable {
         return timestamp;
     }
 
-    public static ResponseMessage error(String message) {
+    public static <T> ResponseMessage<T> error(String message) {
         return error(500, message);
     }
 
-    public static ResponseMessage error(int status, String message) {
-        ResponseMessage msg = new ResponseMessage();
+    public static <T> ResponseMessage<T> error(int status, String message) {
+        ResponseMessage<T> msg = new ResponseMessage<>();
         msg.message = message;
         msg.status(status);
         return msg.putTimeStamp();

+ 9 - 0
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultQueryByEntityService.java

@@ -42,6 +42,15 @@ public interface DefaultQueryByEntityService<E>
     @Override
     default PagerResult<E> selectPager(Entity param) {
         PagerResult<E> pagerResult = new PagerResult<>();
+        if (param instanceof QueryParamEntity) {
+            QueryParamEntity entity = ((QueryParamEntity) param);
+            //不分页,不进行count
+            if (!entity.isPaging()) {
+                pagerResult.setData(getDao().query(param));
+                pagerResult.setTotal(pagerResult.getData().size());
+                return pagerResult;
+            }
+        }
         int total = getDao().count(param);
         pagerResult.setTotal(total);
         if (total == 0) {

+ 6 - 0
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericEntityService.java

@@ -96,6 +96,12 @@ public abstract class GenericEntityService<E extends GenericEntity<PK>, PK>
 
     @Override
     public PK insert(E entity) {
+        if (entity.getId() != null) {
+            if ((entity.getId() instanceof String)) {
+                tryValidateProperty(entity.getId().toString().matches("[a-zA-Z0-9_\\-]+"), "id", "只能由数字,字母,下划线,和-组成");
+            }
+            tryValidateProperty(selectByPk(entity.getId()) == null, "id", entity.getId() + "已存在");
+        }
         if (entity.getId() == null) entity.setId(getIDGenerator().generate());
         tryValidate(entity);
         getDao().insert(entity);

+ 5 - 2
hsweb-core/src/main/java/org/hswebframework/web/validate/ValidationException.java

@@ -21,6 +21,8 @@ package org.hswebframework.web.validate;
 
 import org.hswebframework.web.BusinessException;
 
+import java.util.List;
+
 public class ValidationException extends BusinessException {
     private ValidateResults results;
 
@@ -38,7 +40,8 @@ public class ValidationException extends BusinessException {
         this.results = results;
     }
 
-    public ValidateResults getResults() {
-        return results;
+    public List<ValidateResults.Result> getResults() {
+        if (results == null) return null;
+        return results.getResults();
     }
 }

+ 12 - 1
hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/RestControllerExceptionTranslator.java

@@ -23,6 +23,7 @@ import org.hswebframework.web.AuthorizeForbiddenException;
 import org.hswebframework.web.BusinessException;
 import org.hswebframework.web.NotFoundException;
 import org.hswebframework.web.controller.message.ResponseMessage;
+import org.hswebframework.web.validate.ValidateResults;
 import org.hswebframework.web.validate.ValidationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,6 +33,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
+import java.util.List;
+
 @RestControllerAdvice
 public class RestControllerExceptionTranslator {
 
@@ -47,10 +50,18 @@ public class RestControllerExceptionTranslator {
     @ExceptionHandler(org.hsweb.ezorm.rdb.exception.ValidationException.class)
     @ResponseStatus(HttpStatus.BAD_REQUEST)
     @ResponseBody
-    ResponseMessage handleException(org.hsweb.ezorm.rdb.exception.ValidationException exception) {
+    ResponseMessage<Object> handleException(org.hsweb.ezorm.rdb.exception.ValidationException exception) {
         return ResponseMessage.error(400, exception.getMessage()).data(exception.getValidateResult());
     }
 
+    @ExceptionHandler(ValidationException.class)
+    @ResponseStatus(HttpStatus.BAD_REQUEST)
+    @ResponseBody
+    ResponseMessage<List<ValidateResults.Result>> handleException(ValidationException exception) {
+        return ResponseMessage.<List<ValidateResults.Result>>error(400, exception.getMessage())
+                .data(exception.getResults());
+    }
+
     @ExceptionHandler(BusinessException.class)
     @ResponseBody
     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)

+ 2 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-entity/src/main/java/org/hswebframework/web/entity/authorization/PermissionEntity.java

@@ -20,6 +20,7 @@ package org.hswebframework.web.entity.authorization;
 
 import org.hswebframework.web.commons.entity.GenericEntity;
 
+import javax.validation.constraints.Pattern;
 import java.util.List;
 
 /**
@@ -29,6 +30,7 @@ import java.util.List;
  */
 public interface PermissionEntity extends GenericEntity<String> {
 
+    @Pattern(regexp = "[a-zA-Z0-9_\\-]+")
     String getId();
 
     String getName();

+ 6 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-service/hsweb-system-authorization-service-simple/src/main/java/org/hswebframework/web/service/authorization/simple/SimplePermissionService.java

@@ -29,4 +29,10 @@ public class SimplePermissionService extends GenericEntityService<PermissionEnti
         return permissionDao;
     }
 
+    @Override
+    public String insert(PermissionEntity entity) {
+        entity.setStatus((byte) 1);
+        return super.insert(entity);
+    }
+
 }

+ 3 - 3
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-starter/src/test/java/org/hswebframework/web/starter/authorization/UserTests.java

@@ -105,7 +105,7 @@ public class UserTests extends SimpleWebApplicationTests {
             userService.insert(userEntity);
             Assert.assertTrue(false);
         } catch (ValidationException e) {
-            Assert.assertEquals(e.getResults().getResults().get(0).getMessage(), "密码强度太弱");
+            Assert.assertEquals(e.getResults().get(0).getMessage(), "密码强度太弱");
         }
         userEntity.setPassword("password_1234");
         String id = userService.insert(userEntity);
@@ -130,7 +130,7 @@ public class UserTests extends SimpleWebApplicationTests {
             userService.updatePassword(id, "test", "test");
             Assert.assertTrue(false);
         } catch (ValidationException e) {
-            Assert.assertEquals(e.getResults().getResults().get(0).getMessage(), "{old_password_error}");
+            Assert.assertEquals(e.getResults().get(0).getMessage(), "{old_password_error}");
         }
         userService.updatePassword(id, "password_1234", "password_2345");
         entityInDb = userService.selectByUsername(userEntity.getUsername());
@@ -142,7 +142,7 @@ public class UserTests extends SimpleWebApplicationTests {
             userService.update(anotherId,entityInDb);
             Assert.assertTrue(false);
         } catch (ValidationException e) {
-            Assert.assertEquals(e.getResults().getResults().get(0).getMessage(), "{username_exists}");
+            Assert.assertEquals(e.getResults().get(0).getMessage(), "{username_exists}");
         }
         entityInDb.setId(id);
         userService.update(id,entityInDb);

+ 3 - 5
hsweb-system/hsweb-system-organizational/hsweb-system-organizational-service/hsweb-system-organizational-service-simple/src/main/java/org/hswebframework/web/service/organizational/simple/SimpleOrganizationalService.java

@@ -29,9 +29,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -63,8 +62,7 @@ public class SimpleOrganizationalService extends AbstractTreeSortService<Organiz
 
     @Override
     public List<String> getCanUseRoleIds(List<String> orgIds) {
-        Assert.notNull(orgIds);
-        if (orgIds.isEmpty()) return new ArrayList<>();
+        if (orgIds == null || orgIds.isEmpty()) return new ArrayList<>();
         return createQuery().where().in(GenericEntity.id, orgIds).listNoPaging()
                 .stream().map(OrganizationalEntity::getOptionalRoles) //得到机构可选角色id集合
                 .filter(Objects::nonNull)

+ 1 - 0
hsweb-system/hsweb-system-organizational/pom.xml

@@ -33,6 +33,7 @@
         <module>hsweb-system-organizational-service</module>
         <module>hsweb-system-organizational-controller</module>
         <module>hsweb-system-organizational-entity</module>
+        <module>hsweb-system-organizational-starter</module>
     </modules>