Explorar o código

Merge remote-tracking branch 'origin/master'

zhou-hao %!s(int64=7) %!d(string=hai) anos
pai
achega
26ed84937b
Modificáronse 16 ficheiros con 176 adicións e 116 borrados
  1. 2 0
      README.md
  2. 4 1
      hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java
  3. 6 0
      hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/src/main/java/org/hswebframework/web/authorization/oauth2/client/simple/request/SimpleOAuth2Request.java
  4. 5 5
      hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/src/main/java/org/hswebframework/web/authorization/oauth2/client/simple/session/DefaultOAuth2Session.java
  5. 1 1
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormOperationController.java
  6. 3 1
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormColumnService.java
  7. 7 7
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormOperationService.java
  8. 24 3
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java
  9. 1 8
      hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/src/test/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormServiceTest.java
  10. 96 88
      hsweb-system/hsweb-system-module/hsweb-system-module-entity/src/main/java/org/hswebframework/web/entity/module/SimpleModuleEntity.java
  11. 14 0
      hsweb-system/hsweb-system-module/hsweb-system-module-starter/src/main/java/org/hswebframework/web/template/starter/ModuleAutoConfiguration.java
  12. 3 0
      hsweb-system/hsweb-system-module/hsweb-system-module-starter/src/main/resources/META-INF/spring.factories
  13. 1 1
      hsweb-system/hsweb-system-template/hsweb-system-template-controller/src/main/java/org/hswebframework/web/controller/template/TempalteController.java
  14. 0 0
      hsweb-system/hsweb-system-template/hsweb-system-template-dao/hsweb-system-template-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/template/TemplateMapper.xml
  15. 0 1
      hsweb-system/hsweb-system-template/hsweb-system-template-entity/src/main/java/org/hswebframework/web/entity/template/TemplateEntity.java
  16. 9 0
      hsweb-system/hsweb-system-template/hsweb-system-template-service/hsweb-system-template-service-simple/src/main/java/org/hswebframework/web/service/template/simple/SimpleTemplateService.java

+ 2 - 0
README.md

@@ -9,6 +9,8 @@
 
  [贡献代码](CONTRIBUTING.md)  [开发手册](https://github.com/hs-web/hsweb-framework/wiki/开发手册)
 
+本项目是hsweb的核心,不推荐将其直接clone后修改,运行.推荐使用maven依赖的方式使用hsweb.你可以参照[demo](https://github.com/hs-web/hsweb3-demo)进行使用.
+
 ## 模块简介
 
 | 模块       | 说明          |   进度 |

+ 4 - 1
hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java

@@ -64,7 +64,10 @@ public class DefaultAopMethodAuthorizeDefinitionParser implements AopMethodAutho
                     .map(customer -> customer.parse(target, method, context))
                     .filter(Objects::nonNull)
                     .findAny().orElse(null);
-            if (definition != null && !(definition instanceof EmptyAuthorizeDefinition)) {
+            if (definition instanceof EmptyAuthorizeDefinition) {
+                return null;
+            }
+            if (definition != null) {
                 return definition;
             }
         }

+ 6 - 0
hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/src/main/java/org/hswebframework/web/authorization/oauth2/client/simple/request/SimpleOAuth2Request.java

@@ -90,6 +90,9 @@ public class SimpleOAuth2Request implements OAuth2Request {
 
     @Override
     public OAuth2Request param(String name, Object value) {
+        if (value == null) {
+            return this;
+        }
         request.param(name, String.valueOf(value));
         return this;
     }
@@ -102,6 +105,9 @@ public class SimpleOAuth2Request implements OAuth2Request {
 
     @Override
     public OAuth2Request header(String name, String value) {
+        if (value == null) {
+            return this;
+        }
         request.header(name, value);
         return this;
     }

+ 5 - 5
hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-client/src/main/java/org/hswebframework/web/authorization/oauth2/client/simple/session/DefaultOAuth2Session.java

@@ -161,10 +161,10 @@ public class DefaultOAuth2Session implements OAuth2Session {
         }
         OAuth2Request request = createRequest(getRealUrl(serverConfig.getAccessTokenUrl()));
         //request.onRefreshTokenExpired(reTry -> {
-            //重新请求token
-          //  setAccessTokenInfo(requestAccessToken());
-            //applyTokenParam(request);
-            //reTry.doReTry();
+        //重新请求token
+        //  setAccessTokenInfo(requestAccessToken());
+        //applyTokenParam(request);
+        //reTry.doReTry();
         //});
         applyBasicAuthParam(request);
         boolean[] skip = new boolean[1];
@@ -189,7 +189,7 @@ public class DefaultOAuth2Session implements OAuth2Session {
             tokenInfo.setCreateTime(accessTokenInfo.getCreateTime());
             tokenInfo.setUpdateTime(System.currentTimeMillis());
             setAccessTokenInfo(tokenInfo);
-        } catch (OAuth2RequestException|BusinessException e) {
+        } catch (OAuth2RequestException | BusinessException e) {
             if (!skip[0]) {
                 //refresh token success
                 throw e;

+ 1 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormOperationController.java

@@ -73,7 +73,7 @@ public class DynamicFormOperationController {
     @DeleteMapping("/{formId}")
     @ApiOperation("动态删除")
     @Authorize(action = Permission.ACTION_DELETE)
-    public ResponseMessage<Integer> delete(@PathVariable String formId, DeleteParamEntity paramEntity) {
+    public ResponseMessage<Integer> delete(@PathVariable String formId, @RequestParam DeleteParamEntity paramEntity) {
         return ResponseMessage.ok(dynamicFormOperationService.delete(formId, paramEntity));
     }
 }

+ 3 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormColumnService.java

@@ -18,10 +18,12 @@ public class SimpleDynamicFormColumnService extends GenericEntityService<Dynamic
         implements DynamicFormColumnService {
     @Autowired
     private DynamicFormColumnDao dynamicFormColumnDao;
-   @Override
+
+    @Override
     protected IDGenerator<String> getIDGenerator() {
         return IDGenerator.MD5;
     }
+
     @Override
     public DynamicFormColumnDao getDao() {
         return dynamicFormColumnDao;

+ 7 - 7
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormOperationService.java

@@ -67,7 +67,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
             List<T> list = query.setParam(paramEntity).list();
             return PagerResult.of(total, list);
         } catch (SQLException e) {
-            throw new DynamicFormException("selectPager fail", e);
+            throw new DynamicFormException("selectPager fail:" + e.getMessage(), e);
         }
 
     }
@@ -80,7 +80,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
             RDBQuery<T> query = table.createQuery();
             return query.setParam(paramEntity).list();
         } catch (SQLException e) {
-            throw new DynamicFormException("select fail", e);
+            throw new DynamicFormException("select fail:" + e.getMessage(), e);
         }
     }
 
@@ -93,7 +93,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return query.setParam(paramEntity).single();
         } catch (SQLException e) {
-            throw new DynamicFormException("selectSingle fail", e);
+            throw new DynamicFormException("selectSingle fail:" + e.getMessage(), e);
         }
     }
 
@@ -106,7 +106,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return query.setParam(paramEntity).total();
         } catch (SQLException e) {
-            throw new DynamicFormException("count fail", e);
+            throw new DynamicFormException("count fail:" + e.getMessage(), e);
         }
     }
 
@@ -121,7 +121,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return update.setParam(paramEntity).exec();
         } catch (SQLException e) {
-            throw new DynamicFormException("update fail", e);
+            throw new DynamicFormException("update fail:" + e.getMessage(), e);
         }
     }
 
@@ -132,7 +132,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
             Insert<T> insert = table.createInsert();
             insert.value(entity).exec();
         } catch (SQLException e) {
-            throw new DynamicFormException("insert fail", e);
+            throw new DynamicFormException("insert fail:" + e.getMessage(), e);
         }
     }
 
@@ -147,7 +147,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return delete.setParam(paramEntity).exec();
         } catch (SQLException e) {
-            throw new DynamicFormException("delete fail", e);
+            throw new DynamicFormException("delete fail:" + e.getMessage(), e);
         }
     }
 }

+ 24 - 3
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java

@@ -3,6 +3,7 @@ package org.hswebframework.web.service.form.simple;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import jdk.nashorn.internal.scripts.JD;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.hswebframework.ezorm.core.Trigger;
 import org.hswebframework.ezorm.core.ValueConverter;
@@ -350,7 +351,7 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
                 database.alterTable(metaData);
             }
         } catch (SQLException e) {
-            throw new RuntimeException(e);
+            throw new DynamicFormException("部署失败:" + e.getMessage(), e);
         }
     }
 
@@ -425,14 +426,14 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
             RDBColumnMetaData columnMeta = new RDBColumnMetaData();
             columnMeta.setName(column.getColumnName());
             columnMeta.setAlias(column.getAlias());
-            columnMeta.setComment(column.getName());
+            columnMeta.setComment(column.getDescribe());
             columnMeta.setLength(column.getLength() == null ? 0 : column.getLength());
             columnMeta.setPrecision(column.getPrecision() == null ? 0 : column.getPrecision());
             columnMeta.setScale(column.getScale() == null ? 0 : column.getScale());
             columnMeta.setJdbcType(JDBCType.valueOf(column.getJdbcType()));
             columnMeta.setJavaType(getJavaType(column.getJavaType()));
             columnMeta.setProperties(column.getProperties() == null ? new HashMap<>() : column.getProperties());
-            columnMeta.setValidator(columnMeta.getValidator());
+//            columnMeta.setValidator(column.getValidator());
             if (StringUtils.isEmpty(column.getDataType())) {
                 Dialect dialect = database.getMeta().getDialect();
                 columnMeta.setDataType(dialect.buildDataType(columnMeta));
@@ -447,9 +448,29 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
             metaData.addColumn(columnMeta);
         });
         customTableSetting(database, form, metaData);
+        //没有主键并且没有id字段
+        if (metaData.getColumns().stream().noneMatch(RDBColumnMetaData::isPrimaryKey) && metaData.findColumn("id") == null) {
+            RDBColumnMetaData primaryKey = createPrimaryKeyColumn();
+            Dialect dialect = database.getMeta().getDialect();
+            primaryKey.setDataType(dialect.buildDataType(primaryKey));
+            metaData.addColumn(primaryKey);
+        }
         return metaData;
     }
 
+    protected RDBColumnMetaData createPrimaryKeyColumn() {
+        RDBColumnMetaData id = new RDBColumnMetaData();
+        id.setName("id");
+        id.setJdbcType(JDBCType.VARCHAR);
+        id.setJavaType(String.class);
+        id.setLength(32);
+        id.setDefaultValue(IDGenerator.MD5::generate);
+        id.setComment("主键");
+        id.setPrimaryKey(true);
+        id.setNotNull(true);
+        return id;
+    }
+
     protected void customTableSetting(RDBDatabase database
             , DynamicFormEntity formEntity
             , RDBTableMetaData table) {

+ 1 - 8
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/src/test/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormServiceTest.java

@@ -59,12 +59,6 @@ public class SimpleDynamicFormServiceTest extends SimpleWebApplicationTests {
                 "{\"target\":\"s_dyn_form\",\"alias\":\"form\",\"condition\":\"form.u_id=f_test.id\"}" +
                 "]");
 
-        DynamicFormColumnEntity column_id = entityFactory.newInstance(DynamicFormColumnEntity.class);
-        column_id.setColumnName("id");
-        column_id.setName("ID");
-        column_id.setJavaType("string");
-        column_id.setJdbcType(JDBCType.VARCHAR.getName());
-        column_id.setLength(32);
         DynamicFormColumnEntity column_name = entityFactory.newInstance(DynamicFormColumnEntity.class);
         column_name.setName("姓名");
         column_name.setColumnName("name");
@@ -84,7 +78,7 @@ public class SimpleDynamicFormServiceTest extends SimpleWebApplicationTests {
         DynamicFormColumnBindEntity bindEntity = new DynamicFormColumnBindEntity();
 
         bindEntity.setForm(form);
-        bindEntity.setColumns(Arrays.asList(column_id, column_name, column_age));
+        bindEntity.setColumns(Arrays.asList(column_name, column_age));
 
         String id = dynamicFormService.saveOrUpdate(bindEntity);
 
@@ -93,7 +87,6 @@ public class SimpleDynamicFormServiceTest extends SimpleWebApplicationTests {
 
         dynamicFormOperationService.insert(form.getId(), new HashMap<String, Object>() {
             {
-                put("id", id);
                 put("name", "张三");
                 put("age", 10);
             }

+ 96 - 88
hsweb-system/hsweb-system-module/hsweb-system-module-entity/src/main/java/org/hswebframework/web/entity/module/SimpleModuleEntity.java

@@ -1,100 +1,108 @@
 package org.hswebframework.web.entity.module;
+
 import org.hswebframework.web.commons.entity.SimpleGenericEntity;
 
 /**
-* 系统自定义模块
-* @author hsweb-generator-online
-*/
-public class SimpleModuleEntity extends SimpleGenericEntity<String> implements ModuleEntity{
-  		//名称
-        private String name;
-  		//权限id
-        private String permissionId;
-  		//备注
-        private String remark;
-  		//列表配置
-        private String listMeta;
-  		//保存页配置
-        private String saveMeta;
-  		//状态
-        private Long status;
+ * 系统自定义模块
+ *
+ * @author hsweb-generator-online
+ */
+public class SimpleModuleEntity extends SimpleGenericEntity<String> implements ModuleEntity {
+    private static final long serialVersionUID = -25986777322199816L;
+    //名称
+    private String name;
+    //权限id
+    private String permissionId;
+    //备注
+    private String remark;
+    //列表配置
+    private String listMeta;
+    //保存页配置
+    private String saveMeta;
+    //状态
+    private Long   status;
+
+    /**
+     * @return 名称
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * @param name 名称
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return 权限id
+     */
+    public String getPermissionId() {
+        return this.permissionId;
+    }
+
+    /**
+     * @param permissionId 权限id
+     */
+    public void setPermissionId(String permissionId) {
+        this.permissionId = permissionId;
+    }
+
+    /**
+     * @return 备注
+     */
+    public String getRemark() {
+        return this.remark;
+    }
 
-        /**
-        * @return  名称
-        */
-        public String getName(){
-			return this.name;
-        }
+    /**
+     * @param remark 备注
+     */
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
 
-        /**
-        * @param  name  名称
-        */
-        public void setName(String name){
-        	this.name=name;
-        }
-        /**
-        * @return  权限id
-        */
-        public String getPermissionId(){
-			return this.permissionId;
-        }
+    /**
+     * @return 列表配置
+     */
+    public String getListMeta() {
+        return this.listMeta;
+    }
 
-        /**
-        * @param  permissionId  权限id
-        */
-        public void setPermissionId(String permissionId){
-        	this.permissionId=permissionId;
-        }
-        /**
-        * @return  备注
-        */
-        public String getRemark(){
-			return this.remark;
-        }
+    /**
+     * @param listMeta 列表配置
+     */
+    public void setListMeta(String listMeta) {
+        this.listMeta = listMeta;
+    }
 
-        /**
-        * @param  remark  备注
-        */
-        public void setRemark(String remark){
-        	this.remark=remark;
-        }
-        /**
-        * @return  列表配置
-        */
-        public String getListMeta(){
-			return this.listMeta;
-        }
+    /**
+     * @return 保存页配置
+     */
+    public String getSaveMeta() {
+        return this.saveMeta;
+    }
 
-        /**
-        * @param  listMeta  列表配置
-        */
-        public void setListMeta(String listMeta){
-        	this.listMeta=listMeta;
-        }
-        /**
-        * @return  保存页配置
-        */
-        public String getSaveMeta(){
-			return this.saveMeta;
-        }
+    /**
+     * @param saveMeta 保存页配置
+     */
+    public void setSaveMeta(String saveMeta) {
+        this.saveMeta = saveMeta;
+    }
 
-        /**
-        * @param  saveMeta  保存页配置
-        */
-        public void setSaveMeta(String saveMeta){
-        	this.saveMeta=saveMeta;
-        }
-        /**
-        * @return  状态
-        */
-        public Long getStatus(){
-			return this.status;
-        }
+    /**
+     * @return 状态
+     */
+    public Long getStatus() {
+        return this.status;
+    }
 
-        /**
-        * @param  status  状态
-        */
-        public void setStatus(Long status){
-        	this.status=status;
-        }
+    /**
+     * @param status 状态
+     */
+    public void setStatus(Long status) {
+        this.status = status;
+    }
 }

+ 14 - 0
hsweb-system/hsweb-system-module/hsweb-system-module-starter/src/main/java/org/hswebframework/web/template/starter/ModuleAutoConfiguration.java

@@ -0,0 +1,14 @@
+package org.hswebframework.web.template.starter;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author zhouhao
+ * @since 3.0
+ */
+@Configuration
+@ComponentScan({"org.hswebframework.web.service.module.simple"
+        , "org.hswebframework.web.controller.module"})
+public class ModuleAutoConfiguration {
+}

+ 3 - 0
hsweb-system/hsweb-system-module/hsweb-system-module-starter/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,3 @@
+# Auto Configure
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.hswebframework.web.template.starter.ModuleAutoConfiguration

+ 1 - 1
hsweb-system/hsweb-system-template/hsweb-system-template-controller/src/main/java/org/hswebframework/web/controller/template/TempalteController.java

@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("${hsweb.web.mappings.template:template}")
 @Authorize(permission = "template")
 @AccessLogger("模板")
-public class TempalteController implements SimpleGenericEntityController<TemplateEntity, String, QueryParamEntity> {
+public class TemplateController implements SimpleGenericEntityController<TemplateEntity, String, QueryParamEntity> {
 
     private TemplateService templateService;
 

hsweb-system/hsweb-system-template/hsweb-system-template-dao/hsweb-system-template-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/template/TempalteMapper.xml → hsweb-system/hsweb-system-template/hsweb-system-template-dao/hsweb-system-template-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/template/TemplateMapper.xml


+ 0 - 1
hsweb-system/hsweb-system-template/hsweb-system-template-entity/src/main/java/org/hswebframework/web/entity/template/TemplateEntity.java

@@ -65,7 +65,6 @@ public interface TemplateEntity extends GenericEntity<String> {
     /**
      * @return 模板内容
      */
-    @NotBlank(groups = CreateGroup.class)
     String getTemplate();
 
     /**

+ 9 - 0
hsweb-system/hsweb-system-template/hsweb-system-template-service/hsweb-system-template-service-simple/src/main/java/org/hswebframework/web/service/template/simple/SimpleTemplateService.java

@@ -9,6 +9,9 @@ import org.hswebframework.web.service.template.TemplateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheConfig;
 import org.springframework.stereotype.Service;
+import org.springframework.util.AntPathMatcher;
+
+import java.util.regex.Pattern;
 
 /**
  * 默认的服务实现
@@ -39,4 +42,10 @@ public class SimpleTemplateService extends EnableCacheGenericEntityService<Templ
         entity.setVersion(old.getVersion() + 1);
         return super.updateByPk(id, entity);
     }
+
+    @Override
+    public String insert(TemplateEntity entity) {
+        entity.setVersion(1L);
+        return super.insert(entity);
+    }
 }