Forráskód Böngészése

Merge pull request #1 from hs-web/CamelCaseVersion

Camel case version
z.h 9 éve
szülő
commit
bb1dd334d7
89 módosított fájl, 2232 hozzáadás és 1080 törlés
  1. 18 13
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/QueryParam.java
  2. 65 0
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Sort.java
  3. 2 0
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/SqlParam.java
  4. 1 1
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Term.java
  5. 9 8
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/GenericPo.java
  6. 132 0
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/classified/Classified.java
  7. 10 10
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/config/Config.java
  8. 10 10
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/form/Form.java
  9. 34 34
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/history/History.java
  10. 89 89
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/logger/LoggerInfo.java
  11. 25 33
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/module/Module.java
  12. 10 10
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/module/ModuleMeta.java
  13. 21 14
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/resource/Resources.java
  14. 13 48
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/role/RoleModule.java
  15. 12 12
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/role/UserRole.java
  16. 15 15
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/user/User.java
  17. 31 8
      hsweb-web-bean/src/main/resources/system/install/sql/h2/install.sql
  18. 21 3
      hsweb-web-bean/src/main/resources/system/install/sql/mysql/install.sql
  19. 30 7
      hsweb-web-bean/src/main/resources/system/install/sql/oracle/install.sql
  20. 8 3
      hsweb-web-concurrent/hsweb-web-concurrent-cache/src/main/java/org/hsweb/concureent/cache/ConcurrentMapCacheManagerAutoConfig.java
  21. 6 6
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/AopAccessLoggerResolverConfiguration.java
  22. 10 0
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/DynamicFormAuthorizeValidator.java
  23. 30 0
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/DynamicFormAuthorizeValidatorConfiguration.java
  24. 4 3
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/GenericController.java
  25. 30 0
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/classified/ClassifiedController.java
  26. 10 20
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/file/FileController.java
  27. 40 1
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/form/DynamicFormController.java
  28. 7 5
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/login/UserModuleController.java
  29. 1 1
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/module/ModuleMetaController.java
  30. 4 25
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/resource/ResourcesController.java
  31. 10 10
      hsweb-web-core/src/main/java/org/hsweb/web/core/logger/AopAccessLoggerResolver.java
  32. 1 1
      hsweb-web-dao-impl-mybatis/README.md
  33. 167 37
      hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/builder/DefaultSqlParamBuilder.java
  34. 10 0
      hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/builder/MysqlParamBuilder.java
  35. 65 0
      hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/handler/JsonArrayHandler.java
  36. 1 1
      hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/plgins/pager/PagerInterceptor.java
  37. 15 152
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/basic/BasicMapper.xml
  38. 214 0
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/basic/BasicMapper.xml.old
  39. 71 0
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/classified/ClassifiedMapper.xml
  40. 7 8
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/config/ConfigMapper.xml
  41. 12 12
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/form/FormMapper.xml
  42. 16 16
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/history/HistoryMapper.xml
  43. 11 11
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/module/ModuleMapper.xml
  44. 67 0
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/module/ModuleMetaMapper.xml
  45. 10 10
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/resource/ResourcesMapper.xml
  46. 4 4
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/RoleMapper.xml
  47. 9 8
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/RoleModuleMapper.xml
  48. 6 6
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/UserRoleMapper.xml
  49. 7 6
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/script/DynamicScriptMapper.xml
  50. 11 11
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/user/UserMapper.xml
  51. 12 177
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/basic/BasicMapper.xml
  52. 245 0
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/basic/BasicMapper.xml.old
  53. 71 0
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/classified/ClassifiedMapper.xml
  54. 7 9
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/config/ConfigMapper.xml
  55. 20 16
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/form/FormMapper.xml
  56. 16 16
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/history/HistoryMapper.xml
  57. 11 11
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/module/ModuleMapper.xml
  58. 7 7
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/module/ModuleMetaMapper.xml
  59. 10 10
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/resource/ResourcesMapper.xml
  60. 4 4
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/RoleMapper.xml
  61. 9 8
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/RoleModuleMapper.xml
  62. 6 6
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/UserRoleMapper.xml
  63. 7 6
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/script/DynamicScriptMapper.xml
  64. 11 11
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/user/UserMapper.xml
  65. 12 0
      hsweb-web-dao-interface/src/main/java/org/hsweb/web/dao/classified/ClassifiedMapper.java
  66. 5 0
      hsweb-web-service-impl-common/pom.xml
  67. 3 3
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/AbstractServiceImpl.java
  68. 27 0
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/classified/ClassifiedServiceImpl.java
  69. 1 1
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/config/ConfigServiceImpl.java
  70. 1 1
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DefaultFormParser.java
  71. 151 11
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DynamicFormServiceImpl.java
  72. 21 21
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormServiceImpl.java
  73. 1 1
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/history/HistoryServiceImpl.java
  74. 0 21
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/module/ModuleServiceImpl.java
  75. 37 5
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/resource/FileServiceImpl.java
  76. 8 13
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/resource/ResourcesServiceImpl.java
  77. 5 5
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/role/RoleServiceImpl.java
  78. 3 3
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/script/DynamicScriptServiceImpl.java
  79. 17 17
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/user/UserServiceImpl.java
  80. 21 16
      hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/form/FormServiceImplTest.java
  81. 25 7
      hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/system/DataBaseManagerServiceImplTest.java
  82. 1 0
      hsweb-web-service-impl-common/src/test/resources/application.yml
  83. 0 1
      hsweb-web-service-impl-common/src/test/resources/mybatis-config.xml
  84. BIN
      hsweb-web-service-impl-common/src/test/resources/test.xlsx
  85. 13 0
      hsweb-web-service-interface/src/main/java/org/hsweb/web/service/classified/ClassifiedService.java
  86. 10 0
      hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/DynamicFormDataValidator.java
  87. 8 0
      hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/DynamicFormService.java
  88. 9 0
      hsweb-web-service-interface/src/main/java/org/hsweb/web/service/resource/FileService.java
  89. 5 1
      pom.xml

+ 18 - 13
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/QueryParam.java

@@ -28,30 +28,28 @@ public class QueryParam extends SqlParam<QueryParam> implements Serializable {
     /**
      * 排序字段
      */
+    @Deprecated
     private Set<String> sortField = new LinkedHashSet<>();
 
+    /**
+     * 排序字段
+     */
+    private Set<Sort> sorts = new LinkedHashSet<>();
+
     /**
      * 排序方式 DESC 反序 ASC 正序
      */
+    @Deprecated
     private String sortOrder = "asc";
 
     public QueryParam select(String... fields) {
         return this.includes(fields);
     }
 
-    public QueryParam orderBy(String sortField) {
-        this.sortField.add(sortField);
-        return this;
-    }
-
-    public QueryParam asc() {
-        setSortOrder("asc");
-        return this;
-    }
-
-    public QueryParam desc() {
-        setSortOrder("desc");
-        return this;
+    public Sort orderBy(String sortField) {
+        Sort sort = new Sort(this, sortField);
+        sorts.add(sort);
+        return sort;
     }
 
     public QueryParam doPaging(int pageIndex) {
@@ -123,4 +121,11 @@ public class QueryParam extends SqlParam<QueryParam> implements Serializable {
         return new QueryParam();
     }
 
+    public Set<Sort> getSorts() {
+        return sorts;
+    }
+
+    public void setSorts(Set<Sort> sorts) {
+        this.sorts = sorts;
+    }
 }

+ 65 - 0
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Sort.java

@@ -0,0 +1,65 @@
+package org.hsweb.web.bean.common;
+
+/**
+ * Created by zhouhao on 16-5-14.
+ */
+public class Sort {
+    private String field;
+
+    private String dir = "asc";
+
+    private transient QueryParam queryParam;
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getDir() {
+        return dir;
+    }
+
+    public void setDir(String dir) {
+        this.dir = dir;
+    }
+
+    public Sort() {
+    }
+
+    public Sort(QueryParam queryParam, String field) {
+        this.queryParam = queryParam;
+        this.field = field;
+    }
+
+    public Sort(String field) {
+        this.field = field;
+    }
+
+    public QueryParam asc() {
+        this.dir = "asc";
+        return queryParam;
+    }
+
+    public QueryParam desc() {
+        this.dir = "desc";
+        return queryParam;
+    }
+
+    public Sort and(String field) {
+        return queryParam.orderBy(field);
+    }
+
+    @Override
+    public int hashCode() {
+        return String.valueOf(field).concat(dir).hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        return this.hashCode() == obj.hashCode();
+    }
+}

+ 2 - 0
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/SqlParam.java

@@ -98,10 +98,12 @@ public class SqlParam<R extends SqlParam> {
     }
 
     public Set<String> getIncludes() {
+        if(includes==null)includes=new LinkedHashSet<>();
         return includes;
     }
 
     public Set<String> getExcludes() {
+        if(excludes==null)excludes=new LinkedHashSet<>();
         return excludes;
     }
 

+ 1 - 1
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Term.java

@@ -87,8 +87,8 @@ public class Term {
 
     public void setField(String field) {
         if(field==null)return;
-        setTermType(TermType.fromString(field));
         if (field.contains("$")) {
+            setTermType(TermType.fromString(field));
             field = field.split("[\\$]")[0];
         }
         this.field = field;

+ 9 - 8
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/GenericPo.java

@@ -17,10 +17,14 @@ public class GenericPo<PK> implements Serializable {
     /**
      * 主键
      */
-    private PK u_id;
+    private PK id;
 
-    public PK getU_id() {
-        return u_id;
+    public PK getId() {
+        return id;
+    }
+
+    public void setId(PK id) {
+        this.id = id;
     }
 
     private Map<String, Object> customAttr = new LinkedHashMap<>();
@@ -36,8 +40,8 @@ public class GenericPo<PK> implements Serializable {
 
     @Override
     public int hashCode() {
-        if (getU_id() == null) return 0;
-        return getU_id().hashCode();
+        if (getId() == null) return 0;
+        return getId().hashCode();
     }
 
     @Override
@@ -46,9 +50,6 @@ public class GenericPo<PK> implements Serializable {
         return this.hashCode() == obj.hashCode();
     }
 
-    public void setU_id(PK u_id) {
-        this.u_id = u_id;
-    }
 
     /**
      * 创建一个主键

+ 132 - 0
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/classified/Classified.java

@@ -0,0 +1,132 @@
+package org.hsweb.web.bean.po.classified;
+import org.hsweb.web.bean.po.GenericPo;
+/**
+* 
+* Created by hsweb-generator 2016-5-14 10:18:41
+*/
+public class Classified extends GenericPo<String>{
+        //分类名称
+        private String name;
+        //备注
+        private String remark;
+        //分类类型
+        private String type;
+        //父级分类
+        private String parentId;
+        //显示图标
+        private String icon;
+        //其他配置
+        private String config;
+        //排序
+        private int sortIndex;
+
+        /**
+        * 获取 分类名称
+        * @return java.lang.String 分类名称
+        */
+        public String getName(){
+            if(this.name==null)
+            return "";
+        return this.name;
+        }
+
+        /**
+        * 设置 分类名称
+        */
+        public void setName(String name){
+        this.name=name;
+        }
+        /**
+        * 获取 备注
+        * @return java.lang.String 备注
+        */
+        public String getRemark(){
+            if(this.remark==null)
+            return "";
+        return this.remark;
+        }
+
+        /**
+        * 设置 备注
+        */
+        public void setRemark(String remark){
+        this.remark=remark;
+        }
+        /**
+        * 获取 分类类型
+        * @return java.lang.String 分类类型
+        */
+        public String getType(){
+            if(this.type==null)
+            return "";
+        return this.type;
+        }
+
+        /**
+        * 设置 分类类型
+        */
+        public void setType(String type){
+        this.type=type;
+        }
+        /**
+        * 获取 父级分类
+        * @return java.lang.String 父级分类
+        */
+        public String getParentId() {
+                return parentId;
+        }
+
+        /**
+        * 设置 父级分类
+        */
+        public void setParentId(String parentId) {
+                this.parentId = parentId;
+        }
+
+        /**
+        * 获取 显示图标
+        * @return java.lang.String 显示图标
+        */
+        public String getIcon(){
+            if(this.icon==null)
+            return "";
+        return this.icon;
+        }
+
+        /**
+        * 设置 显示图标
+        */
+        public void setIcon(String icon){
+        this.icon=icon;
+        }
+        /**
+        * 获取 其他配置
+        * @return java.lang.String 其他配置
+        */
+        public String getConfig(){
+            if(this.config==null)
+            return "";
+        return this.config;
+        }
+
+        /**
+        * 设置 其他配置
+        */
+        public void setConfig(String config){
+        this.config=config;
+        }
+        /**
+        * 获取 排序
+        * @return int 排序
+        */
+        public int getSortIndex() {
+                return sortIndex;
+        }
+
+        /**
+        * 设置 排序
+        */
+        public void setSortIndex(int sortIndex) {
+                this.sortIndex = sortIndex;
+        }
+}

+ 10 - 10
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/config/Config.java

@@ -22,10 +22,10 @@ public class Config extends GenericPo<String> {
     private String content;
 
     //创建日期
-    private java.util.Date create_date;
+    private java.util.Date createDate;
 
     //最后一次修改日期
-    private java.util.Date update_date;
+    private java.util.Date updateDate;
 
     //配置类型: properties,json
     private String type;
@@ -71,15 +71,15 @@ public class Config extends GenericPo<String> {
      *
      * @return java.util.Date 创建日期
      */
-    public java.util.Date getCreate_date() {
-        return this.create_date;
+    public java.util.Date getCreateDate() {
+        return this.createDate;
     }
 
     /**
      * 设置 创建日期
      */
-    public void setCreate_date(java.util.Date create_date) {
-        this.create_date = create_date;
+    public void setCreateDate(java.util.Date createDate) {
+        this.createDate = createDate;
     }
 
     /**
@@ -87,15 +87,15 @@ public class Config extends GenericPo<String> {
      *
      * @return java.util.Date 最后一次修改日期
      */
-    public java.util.Date getUpdate_date() {
-        return this.update_date;
+    public java.util.Date getUpdateDate() {
+        return this.updateDate;
     }
 
     /**
      * 设置 最后一次修改日期
      */
-    public void setUpdate_date(java.util.Date update_date) {
-        this.update_date = update_date;
+    public void setUpdateDate(java.util.Date updateDate) {
+        this.updateDate = updateDate;
     }
 
     public String getType() {

+ 10 - 10
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/form/Form.java

@@ -45,10 +45,10 @@ public class Form extends GenericPo<String> {
     private boolean using;
 
     //创建时间
-    private java.util.Date create_date;
+    private java.util.Date createDate;
 
     //最后一次修改时间
-    private java.util.Date update_date;
+    private java.util.Date updateDate;
 
 
     /**
@@ -93,15 +93,15 @@ public class Form extends GenericPo<String> {
      *
      * @return java.util.Date 创建时间
      */
-    public java.util.Date getCreate_date() {
-        return this.create_date;
+    public java.util.Date getCreateDate() {
+        return this.createDate;
     }
 
     /**
      * 设置 创建时间
      */
-    public void setCreate_date(java.util.Date create_date) {
-        this.create_date = create_date;
+    public void setCreateDate(java.util.Date createDate) {
+        this.createDate = createDate;
     }
 
     /**
@@ -109,15 +109,15 @@ public class Form extends GenericPo<String> {
      *
      * @return java.util.Date 最后一次修改时间
      */
-    public java.util.Date getUpdate_date() {
-        return this.update_date;
+    public java.util.Date getUpdateDate() {
+        return this.updateDate;
     }
 
     /**
      * 设置 最后一次修改时间
      */
-    public void setUpdate_date(java.util.Date update_date) {
-        this.update_date = update_date;
+    public void setUpdateDate(java.util.Date updateDate) {
+        this.updateDate = updateDate;
     }
 
     public static long getSerialVersionUID() {

+ 34 - 34
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/history/History.java

@@ -25,32 +25,32 @@ public class History extends GenericPo<String> {
     /**
      * 操作数据的主键名称
      */
-    private String primary_key_name;
+    private String primaryKeyName;
 
     /**
      * 操作数据的主键值
      */
-    private String primary_key_value;
+    private String primaryKeyValue;
 
     /**
      * 操作前记录
      */
-    private String change_before;
+    private String changeBefore;
 
     /**
      * 操作后记录
      */
-    private String change_after;
+    private String changeAfter;
 
     /**
      * 创建日期
      */
-    private Date create_date;
+    private Date createDate;
 
     /**
      * 创建人主键
      */
-    private String creator_id;
+    private String creatorId;
 
     public History() {
     }
@@ -76,59 +76,59 @@ public class History extends GenericPo<String> {
         this.describe = describe;
     }
 
-    public String getPrimary_key_name() {
-        return primary_key_name;
+    public String getPrimaryKeyName() {
+        return primaryKeyName;
     }
 
-    public void setPrimary_key_name(String primary_key_name) {
-        this.primary_key_name = primary_key_name;
+    public void setPrimaryKeyName(String primaryKeyName) {
+        this.primaryKeyName = primaryKeyName;
     }
 
-    public String getPrimary_key_value() {
-        return primary_key_value;
+    public String getPrimaryKeyValue() {
+        return primaryKeyValue;
     }
 
-    public void setPrimary_key_value(String primary_key_value) {
-        this.primary_key_value = primary_key_value;
+    public void setPrimaryKeyValue(String primaryKeyValue) {
+        this.primaryKeyValue = primaryKeyValue;
     }
 
-    public String getChange_before() {
-        return change_before;
+    public String getChangeBefore() {
+        return changeBefore;
     }
 
-    public void setChange_before(String change_before) {
-        this.change_before = change_before;
+    public void setChangeBefore(String changeBefore) {
+        this.changeBefore = changeBefore;
     }
 
-    public String getChange_after() {
-        return change_after;
+    public String getChangeAfter() {
+        return changeAfter;
     }
 
-    public void setChange_after(String change_after) {
-        this.change_after = change_after;
+    public void setChangeAfter(String changeAfter) {
+        this.changeAfter = changeAfter;
     }
 
-    public Date getCreate_date() {
-        return create_date;
+    public Date getCreateDate() {
+        return createDate;
     }
 
-    public void setCreate_date(Date create_date) {
-        this.create_date = create_date;
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
     }
 
-    public String getCreator_id() {
-        return creator_id;
+    public String getCreatorId() {
+        return creatorId;
     }
 
-    public void setCreator_id(String creator_id) {
-        this.creator_id = creator_id;
+    public void setCreatorId(String creatorId) {
+        this.creatorId = creatorId;
     }
 
-    public static History newInstace(String type) {
+    public static History newInstance(String type) {
         History history = new History(type);
-        history.setU_id(MD5.encode(UUID.randomUUID().toString().concat(String.valueOf(Math.random()))));
-        history.setCreate_date(new Date());
-        history.setCreator_id("_sys");
+        history.setId(MD5.encode(UUID.randomUUID().toString().concat(String.valueOf(Math.random()))));
+        history.setCreateDate(new Date());
+        history.setCreatorId("Sys");
         return history;
     }
 }

+ 89 - 89
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/logger/LoggerInfo.java

@@ -10,47 +10,47 @@ public class LoggerInfo extends GenericPo<String> {
     /**
      * 请求者ip
      */
-    private String client_ip;
+    private String clientIp;
 
     /**
      * 请求路径
      */
-    private String request_uri;
+    private String requestUri;
 
     /**
      * 完整路径
      */
-    private String request_url;
+    private String requestUrl;
 
     /**
      * 对应的方法,格式为 HTTP方法+java方法 如:GET.list()
      */
-    private String request_method;
+    private String requestMethod;
 
     /**
      * 响应结果
      */
-    private String response_content;
+    private String responseContent;
 
     /**
      * 用户主键
      */
-    private String user_id;
+    private String userId;
 
     /**
      * 请求时间
      */
-    private long request_time;
+    private long requestTime;
 
     /**
      * 响应时间
      */
-    private long response_time;
+    private long responseTime;
 
     /**
      * 请求耗时
      */
-    private long use_time = -1;
+    private long useTime = 1;
 
     /**
      * referer信息
@@ -60,78 +60,78 @@ public class LoggerInfo extends GenericPo<String> {
     /**
      * 客户端标识
      */
-    private String user_agent;
+    private String userAgent;
 
     /**
      * 响应码
      */
-    private String response_code;
+    private String responseCode;
 
     /**
      * 请求头信息
      */
-    private String request_header;
+    private String requestHeader;
 
     /**
      * 对应类名
      */
-    private String class_name;
+    private String className;
 
     /**
      * 功能摘要
      */
-    private String module_desc;
+    private String moduleDesc;
 
     /**
      * 请求参数
      */
-    private String request_param;
+    private String requestParam;
 
     /**
      * 响应异常
      */
-    private String exception_info;
+    private String exceptionInfo;
 
     /**
      * 命中缓存
      */
-    private String cache_key;
+    private String cacheKey;
 
 
-    public String getUser_id() {
-        if (user_id == null)
-            user_id = "-";
-        return user_id;
+    public String getUserId() {
+        if (userId == null)
+            userId = "";
+        return userId;
     }
 
-    public void setUser_id(String user_id) {
-        this.user_id = user_id;
+    public void setUserId(String userId) {
+        this.userId = userId;
     }
 
-    public long getRequest_time() {
-        return request_time;
+    public long getRequestTime() {
+        return requestTime;
     }
 
-    public void setRequest_time(long request_time) {
-        this.request_time = request_time;
+    public void setRequestTime(long requestTime) {
+        this.requestTime = requestTime;
     }
 
-    public long getResponse_time() {
-        return response_time;
+    public long getResponseTime() {
+        return responseTime;
     }
 
-    public void setResponse_time(long response_time) {
-        this.response_time = response_time;
+    public void setResponseTime(long responseTime) {
+        this.responseTime = responseTime;
     }
 
-    public long getUse_time() {
-        if (use_time == -1)
-            use_time = getResponse_time() - getRequest_time();
-        return use_time;
+    public long getUseTime() {
+        if (useTime == 1)
+            useTime = getResponseTime() - getRequestTime();
+        return useTime;
     }
 
-    public void setUse_time(long use_time) {
-        this.use_time = use_time;
+    public void setUseTime(long useTime) {
+        this.useTime = useTime;
     }
 
     public String getReferer() {
@@ -142,108 +142,108 @@ public class LoggerInfo extends GenericPo<String> {
         this.referer = referer;
     }
 
-    public String getUser_agent() {
-        return user_agent;
+    public String getUserAgent() {
+        return userAgent;
     }
 
-    public void setUser_agent(String user_agent) {
-        this.user_agent = user_agent;
+    public void setUserAgent(String userAgent) {
+        this.userAgent = userAgent;
     }
 
 
-    public String getClass_name() {
-        return class_name;
+    public String getClassName() {
+        return className;
     }
 
-    public void setClass_name(String class_name) {
-        this.class_name = class_name;
+    public void setClassName(String className) {
+        this.className = className;
     }
 
-    public String getClient_ip() {
-        return client_ip;
+    public String getClientIp() {
+        return clientIp;
     }
 
-    public void setClient_ip(String client_ip) {
-        this.client_ip = client_ip;
+    public void setClientIp(String clientIp) {
+        this.clientIp = clientIp;
     }
 
-    public String getRequest_uri() {
-        return request_uri;
+    public String getRequestUri() {
+        return requestUri;
     }
 
-    public void setRequest_uri(String request_uri) {
-        this.request_uri = request_uri;
+    public void setRequestUri(String requestUri) {
+        this.requestUri = requestUri;
     }
 
-    public String getRequest_url() {
-        return request_url;
+    public String getRequestUrl() {
+        return requestUrl;
     }
 
-    public void setRequest_url(String request_url) {
-        this.request_url = request_url;
+    public void setRequestUrl(String requestUrl) {
+        this.requestUrl = requestUrl;
     }
 
-    public String getRequest_method() {
-        return request_method;
+    public String getRequestMethod() {
+        return requestMethod;
     }
 
-    public void setRequest_method(String request_method) {
-        this.request_method = request_method;
+    public void setRequestMethod(String requestMethod) {
+        this.requestMethod = requestMethod;
     }
 
-    public String getResponse_content() {
-        return response_content;
+    public String getResponseContent() {
+        return responseContent;
     }
 
-    public void setResponse_content(String response_content) {
-        this.response_content = response_content;
+    public void setResponseContent(String responseContent) {
+        this.responseContent = responseContent;
     }
 
-    public String getResponse_code() {
-        return response_code;
+    public String getResponseCode() {
+        return responseCode;
     }
 
-    public void setResponse_code(String response_code) {
-        this.response_code = response_code;
+    public void setResponseCode(String responseCode) {
+        this.responseCode = responseCode;
     }
 
-    public String getRequest_header() {
-        return request_header;
+    public String getRequestHeader() {
+        return requestHeader;
     }
 
-    public void setRequest_header(String request_header) {
-        this.request_header = request_header;
+    public void setRequestHeader(String requestHeader) {
+        this.requestHeader = requestHeader;
     }
 
-    public String getModule_desc() {
-        return module_desc;
+    public String getModuleDesc() {
+        return moduleDesc;
     }
 
-    public void setModule_desc(String module_desc) {
-        this.module_desc = module_desc;
+    public void setModuleDesc(String moduleDesc) {
+        this.moduleDesc = moduleDesc;
     }
 
-    public String getRequest_param() {
-        return request_param;
+    public String getRequestParam() {
+        return requestParam;
     }
 
-    public void setRequest_param(String request_param) {
-        this.request_param = request_param;
+    public void setRequestParam(String requestParam) {
+        this.requestParam = requestParam;
     }
 
-    public String getException_info() {
-        return exception_info;
+    public String getExceptionInfo() {
+        return exceptionInfo;
     }
 
-    public void setException_info(String exception_info) {
-        this.exception_info = exception_info;
+    public void setExceptionInfo(String exceptionInfo) {
+        this.exceptionInfo = exceptionInfo;
     }
 
-    public String getCache_key() {
-        return cache_key;
+    public String getCacheKey() {
+        return cacheKey;
     }
 
-    public void setCache_key(String cache_key) {
-        this.cache_key = cache_key;
+    public void setCacheKey(String cacheKey) {
+        this.cacheKey = cacheKey;
     }
 }

+ 25 - 33
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/module/Module.java

@@ -2,10 +2,12 @@ package org.hsweb.web.bean.po.module;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
+import org.apache.commons.beanutils.BeanUtils;
 import org.hibernate.validator.constraints.NotEmpty;
 import org.hsweb.web.bean.po.GenericPo;
 
 import javax.validation.constraints.NotNull;
+import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 
 
@@ -28,7 +30,7 @@ public class Module extends GenericPo<String> implements Comparable<Module> {
     private String icon;
 
     //父级模块主键
-    private String p_id = "-1";
+    private String parentId = "-1";
 
     //备注
     private String remark;
@@ -37,12 +39,10 @@ public class Module extends GenericPo<String> implements Comparable<Module> {
     private int status = 1;
 
     //模块操作选项
-    private String m_option;
+    private String optional;
 
     //排序
-    private long sort_index;
-
-    private String old_id;
+    private long sortIndex;
 
     /**
      * 获取 模块名称
@@ -103,17 +103,17 @@ public class Module extends GenericPo<String> implements Comparable<Module> {
      *
      * @return String 父级模块主键
      */
-    public String getP_id() {
-        if (this.p_id == null)
-            return "-1";
-        return this.p_id;
+    public String getParentId() {
+        if (this.parentId == null)
+            return "1";
+        return this.parentId;
     }
 
     /**
      * 设置 父级模块主键
      */
-    public void setP_id(String p_id) {
-        this.p_id = p_id;
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
     }
 
     /**
@@ -150,12 +150,12 @@ public class Module extends GenericPo<String> implements Comparable<Module> {
         this.status = status;
     }
 
-    public long getSort_index() {
-        return sort_index;
+    public long getSortIndex() {
+        return sortIndex;
     }
 
-    public void setSort_index(long sort_index) {
-        this.sort_index = sort_index;
+    public void setSortIndex(long sortIndex) {
+        this.sortIndex = sortIndex;
     }
 
     /**
@@ -163,13 +163,14 @@ public class Module extends GenericPo<String> implements Comparable<Module> {
      *
      * @return String 模块操作选项
      */
-    public String getM_option() {
-        return this.m_option;
+    public String getOptional() {
+        return this.optional;
     }
 
-    public Map<String, Object> getM_optionMap() {
+    public Map<String, Object> getOptionalMap() {
         try {
-            List<Map<String, Object>> opt = JSON.parseObject(getM_option(),new TypeReference<LinkedList<Map<String, Object>>>(){});
+            List<Map<String, Object>> opt = JSON.parseObject(getOptional(), new TypeReference<LinkedList<Map<String, Object>>>() {
+            });
             if (opt == null) return new HashMap<>();
             Map<String, Object> all = new LinkedHashMap<>();
             for (Map<String, Object> map : opt) {
@@ -181,26 +182,17 @@ public class Module extends GenericPo<String> implements Comparable<Module> {
         }
     }
 
+    public void setOptional(String optional) {
+        this.optional = optional;
+    }
+
     /**
      * 设置 模块操作选项
      */
-    public void setM_option(String m_option) {
-        this.m_option = m_option;
-    }
 
     @Override
     public int compareTo(Module o) {
-        return getSort_index() > o.getSort_index() ? 1 : -1;
-    }
-
-    public String getOld_id() {
-        if (old_id == null)
-            old_id = getU_id();
-        return old_id;
-    }
-
-    public void setOld_id(String old_id) {
-        this.old_id = old_id;
+        return getSortIndex() > o.getSortIndex() ? 1 : 1;
     }
 
 }

+ 10 - 10
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/module/ModuleMeta.java

@@ -12,9 +12,9 @@ public class ModuleMeta extends GenericPo<String> {
 
     private String remark;
 
-    private String module_id;
+    private String moduleId;
 
-    private String role_id;
+    private String roleId;
 
     private String meta;
 
@@ -44,20 +44,20 @@ public class ModuleMeta extends GenericPo<String> {
         this.status = status;
     }
 
-    public String getModule_id() {
-        return module_id;
+    public String getModuleId() {
+        return moduleId;
     }
 
-    public void setModule_id(String module_id) {
-        this.module_id = module_id;
+    public void setModuleId(String moduleId) {
+        this.moduleId = moduleId;
     }
 
-    public String getRole_id() {
-        return role_id;
+    public String getRoleId() {
+        return roleId;
     }
 
-    public void setRole_id(String role_id) {
-        this.role_id = role_id;
+    public void setRoleId(String roleId) {
+        this.roleId = roleId;
     }
 
     public String getMeta() {

+ 21 - 14
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/resource/Resources.java

@@ -2,9 +2,6 @@ package org.hsweb.web.bean.po.resource;
 
 import org.hsweb.web.bean.po.GenericPo;
 import org.webbuilder.utils.file.FileUtils;
-import org.hibernate.validator.constraints.NotEmpty;
-
-import javax.validation.constraints.NotNull;
 
 /**
  * 资源
@@ -20,10 +17,10 @@ public class Resources extends GenericPo<String> {
     private String path;
 
     //创建时间
-    private java.util.Date create_date;
+    private java.util.Date createDate;
 
     //创建人主键
-    private String creator_id;
+    private String creatorId;
 
     //MD5校验值
     private String md5;
@@ -31,9 +28,19 @@ public class Resources extends GenericPo<String> {
     //资源类型
     private String type;
 
+    //资源分类
+    private String classified;
+
     //状态
     private int status;
 
+    public String getClassified() {
+        return classified;
+    }
+
+    public void setClassified(String classified) {
+        this.classified = classified;
+    }
 
     /**
      * 获取 资源名称
@@ -76,15 +83,15 @@ public class Resources extends GenericPo<String> {
      *
      * @return java.util.Date 创建时间
      */
-    public java.util.Date getCreate_date() {
-        return this.create_date;
+    public java.util.Date getCreateDate() {
+        return this.createDate;
     }
 
     /**
      * 设置 创建时间
      */
-    public void setCreate_date(java.util.Date create_date) {
-        this.create_date = create_date;
+    public void setCreateDate(java.util.Date createDate) {
+        this.createDate = createDate;
     }
 
     /**
@@ -92,17 +99,17 @@ public class Resources extends GenericPo<String> {
      *
      * @return String 创建人主键
      */
-    public String getCreator_id() {
-        if (this.creator_id == null)
+    public String getCreatorId() {
+        if (this.creatorId == null)
             return "";
-        return this.creator_id;
+        return this.creatorId;
     }
 
     /**
      * 设置 创建人主键
      */
-    public void setCreator_id(String creator_id) {
-        this.creator_id = creator_id;
+    public void setCreatorId(String creatorId) {
+        this.creatorId = creatorId;
     }
 
     /**

+ 13 - 48
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/role/RoleModule.java

@@ -1,14 +1,10 @@
 package org.hsweb.web.bean.po.role;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.TypeReference;
 import org.hibernate.validator.constraints.NotEmpty;
 import org.hsweb.web.bean.po.GenericPo;
 import org.hsweb.web.bean.po.module.Module;
-import org.webbuilder.utils.common.StringUtils;
 
 import javax.validation.constraints.NotNull;
-import java.util.LinkedList;
 import java.util.List;
 
 /**
@@ -21,37 +17,34 @@ public class RoleModule extends GenericPo<String> {
     //模块主键
     @NotNull
     @NotEmpty
-    private String module_id;
+    private String moduleId;
 
     //角色主键
     @NotNull
     @NotEmpty
-    private String role_id;
+    private String roleId;
 
-    //权限级别
-    private String o_level;
+    private List<String> actions;
 
     private transient Module module;
 
-    private List<String> actions;
-
 
     /**
      * 获取 模块主键
      *
      * @return String 模块主键
      */
-    public String getModule_id() {
-        if (this.module_id == null)
+    public String getModuleId() {
+        if (this.moduleId == null)
             return "";
-        return this.module_id;
+        return this.moduleId;
     }
 
     /**
      * 设置 模块主键
      */
-    public void setModule_id(String module_id) {
-        this.module_id = module_id;
+    public void setModuleId(String moduleId) {
+        this.moduleId = moduleId;
     }
 
     /**
@@ -59,35 +52,17 @@ public class RoleModule extends GenericPo<String> {
      *
      * @return String 角色主键
      */
-    public String getRole_id() {
-        if (this.role_id == null)
+    public String getRoleId() {
+        if (this.roleId == null)
             return "";
-        return this.role_id;
+        return this.roleId;
     }
 
     /**
      * 设置 角色主键
      */
-    public void setRole_id(String role_id) {
-        this.role_id = role_id;
-    }
-
-    /**
-     * 获取 权限级别
-     *
-     * @return String 权限级别
-     */
-    public String getO_level() {
-        if (this.o_level == null)
-            return "";
-        return this.o_level;
-    }
-
-    /**
-     * 设置 权限级别
-     */
-    public void setO_level(String o_level) {
-        this.o_level = o_level;
+    public void setRoleId(String roleId) {
+        this.roleId = roleId;
     }
 
     public Module getModule() {
@@ -99,16 +74,6 @@ public class RoleModule extends GenericPo<String> {
     }
 
     public List<String> getActions() {
-        if (!StringUtils.isNullOrEmpty(getO_level())) {
-            try {
-                if (actions == null)
-                    actions = JSON.parseObject(getO_level(), new TypeReference<List<String>>(){});
-            } catch (Exception e) {
-                actions = new LinkedList<>();
-            }
-        } else {
-            actions = new LinkedList<>();
-        }
         return actions;
     }
 

+ 12 - 12
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/role/UserRole.java

@@ -14,11 +14,11 @@ public class UserRole extends GenericPo<String> {
 
     //用户主键
     @NotEmpty
-    private String user_id;
+    private String userId;
 
     //角色主键
     @NotEmpty
-    private String role_id;
+    private String roleId;
 
     //角色实例
     private transient Role role;
@@ -28,17 +28,17 @@ public class UserRole extends GenericPo<String> {
      *
      * @return String 用户主键
      */
-    public String getUser_id() {
-        if (this.user_id == null)
+    public String getUserId() {
+        if (this.userId == null)
             return "";
-        return this.user_id;
+        return this.userId;
     }
 
     /**
      * 设置 用户主键
      */
-    public void setUser_id(String user_id) {
-        this.user_id = user_id;
+    public void setUserId(String userId) {
+        this.userId = userId;
     }
 
     /**
@@ -46,17 +46,17 @@ public class UserRole extends GenericPo<String> {
      *
      * @return String 角色主键
      */
-    public String getRole_id() {
-        if (this.role_id == null)
+    public String getRoleId() {
+        if (this.roleId == null)
             return "";
-        return this.role_id;
+        return this.roleId;
     }
 
     /**
      * 设置 角色主键
      */
-    public void setRole_id(String role_id) {
-        this.role_id = role_id;
+    public void setRoleId(String roleId) {
+        this.roleId = roleId;
     }
 
     public Role getRole() {

+ 15 - 15
hsweb-web-bean/src/main/java/org/hsweb/web/bean/po/user/User.java

@@ -44,10 +44,10 @@ public class User extends GenericPo<String> {
     private int status;
 
     //创建日期
-    private java.util.Date create_date;
+    private java.util.Date createDate;
 
     //修改日期
-    private java.util.Date update_date;
+    private java.util.Date updateDate;
 
     //用户角色绑定
     private List<UserRole> userRoles;
@@ -74,7 +74,7 @@ public class User extends GenericPo<String> {
 
     public Module getModule(String mId) {
         for (Module module : getModules()) {
-            if (module.getU_id().equals(mId)) return module;
+            if (module.getId().equals(mId)) return module;
         }
         return null;
     }
@@ -94,14 +94,14 @@ public class User extends GenericPo<String> {
     public Set<Module> getModulesByPid(String pid) {
         Set<Module> modules = getModules()
                 .stream()
-                .filter(module -> pid.equals(module.getP_id()))
+                .filter(module -> pid.equals(module.getParentId()))
                 .collect(Collectors.toCollection(() -> new LinkedHashSet<>()));
         return modules;
     }
 
     public Set<Module> getModulesByPid(String pid, String level) {
         Set<Module> modules = getModules().stream()
-                .filter(module -> module.getP_id().equals(pid) && hasAccessModuleAction(module.getU_id(), level))
+                .filter(module -> module.getParentId().equals(pid) && hasAccessModuleAction(module.getId(), level))
                 .collect(Collectors.toCollection(() -> new LinkedHashSet<>()));
         return modules;
     }
@@ -109,7 +109,7 @@ public class User extends GenericPo<String> {
     public boolean hasAccessRole(String rId) {
         if (getUserRoles() != null)
             for (UserRole userRole : getUserRoles()) {
-                if (rId.equals(userRole.getRole_id())) return true;
+                if (rId.equals(userRole.getRoleId())) return true;
             }
         return false;
     }
@@ -117,7 +117,7 @@ public class User extends GenericPo<String> {
     public boolean hasAccessModule(String mId) {
         if (roleInfo == null) initRoleInfo();
         for (Module module : roleInfo.keySet()) {
-            if (module.getU_id().equals(mId)) return true;
+            if (module.getId().equals(mId)) return true;
         }
         return false;
     }
@@ -259,15 +259,15 @@ public class User extends GenericPo<String> {
      *
      * @return java.util.Date 创建日期
      */
-    public java.util.Date getCreate_date() {
-        return this.create_date;
+    public java.util.Date getCreateDate() {
+        return this.createDate;
     }
 
     /**
      * 设置 创建日期
      */
-    public void setCreate_date(java.util.Date create_date) {
-        this.create_date = create_date;
+    public void setCreateDate(java.util.Date createDate) {
+        this.createDate = createDate;
     }
 
     /**
@@ -275,15 +275,15 @@ public class User extends GenericPo<String> {
      *
      * @return java.util.Date 修改日期
      */
-    public java.util.Date getUpdate_date() {
-        return this.update_date;
+    public java.util.Date getUpdateDate() {
+        return this.updateDate;
     }
 
     /**
      * 设置 修改日期
      */
-    public void setUpdate_date(java.util.Date update_date) {
-        this.update_date = update_date;
+    public void setUpdateDate(java.util.Date updateDate) {
+        this.updateDate = updateDate;
     }
 
     public List<UserRole> getUserRoles() {

+ 31 - 8
hsweb-web-bean/src/main/resources/system/install/sql/h2/install.sql

@@ -25,7 +25,7 @@ CREATE TABLE "S_FORM" (
   "META"        CLOB          NULL,
   "CONFIG"      CLOB          NULL,
   "VERSION"     NUMBER(32)    NULL,
-  "REVISION"     NUMBER(32)    NULL,
+  "REVISION"    NUMBER(32)    NULL,
   "RELEASE"     NUMBER(32)    NULL,
   "USING"       NUMBER(4)     NULL,
   "CREATE_DATE" DATETIME      NOT NULL,
@@ -105,10 +105,10 @@ CREATE TABLE "S_MODULES" (
   "NAME"       VARCHAR2(256)  NOT NULL,
   "URI"        VARCHAR2(1024) NULL,
   "ICON"       VARCHAR2(256)  NULL,
-  "P_ID"       VARCHAR2(256)  NOT NULL,
+  "PARENT_ID"       VARCHAR2(256)  NOT NULL,
   "REMARK"     VARCHAR2(512)  NULL,
   "STATUS"     NUMBER(4)      NULL,
-  "M_OPTION"   CLOB           NOT NULL,
+  "OPTIONAL"   CLOB           NOT NULL,
   "SORT_INDEX" NUMBER(32)     NOT NULL
 );
 COMMENT ON TABLE "S_MODULES" IS '系统模块';
@@ -116,10 +116,10 @@ COMMENT ON COLUMN "S_MODULES"."U_ID" IS 'UID';
 COMMENT ON COLUMN "S_MODULES"."NAME" IS '模块名称';
 COMMENT ON COLUMN "S_MODULES"."URI" IS 'URI';
 COMMENT ON COLUMN "S_MODULES"."ICON" IS '图标';
-COMMENT ON COLUMN "S_MODULES"."P_ID" IS '上级菜单';
+COMMENT ON COLUMN "S_MODULES"."PARENT_ID" IS '上级菜单';
 COMMENT ON COLUMN "S_MODULES"."REMARK" IS '备注';
 COMMENT ON COLUMN "S_MODULES"."STATUS" IS '状态';
-COMMENT ON COLUMN "S_MODULES"."M_OPTION" IS '可选权限';
+COMMENT ON COLUMN "S_MODULES"."OPTIONAL" IS '可选权限';
 COMMENT ON COLUMN "S_MODULES"."SORT_INDEX" IS '排序';
 
 CREATE TABLE "S_MODULE_META" (
@@ -153,12 +153,13 @@ INSERT INTO "S_MODULES" VALUES ('s_logger', '日志管理', 'admin/logger/list.h
 -- Table structure for S_RESOURCES
 -- ----------------------------
 CREATE TABLE "S_RESOURCES" (
-  "U_ID"        VARCHAR2(256)  NOT NULL,
+  "U_ID"        VARCHAR2(32)   NOT NULL,
   "NAME"        VARCHAR2(256)  NOT NULL,
   "PATH"        VARCHAR2(1024) NOT NULL,
   "TYPE"        VARCHAR2(256)  NOT NULL,
   "MD5"         VARCHAR2(256)  NOT NULL,
   "STATUS"      NUMBER(4)      NULL,
+  "CLASSIFIED"  VARCHAR2(32)   NULL,
   "CREATE_DATE" DATETIME       NOT NULL,
   "CREATOR_ID"  VARCHAR2(256)  NOT NULL
 );
@@ -169,9 +170,30 @@ COMMENT ON COLUMN "S_RESOURCES"."PATH" IS '路径';
 COMMENT ON COLUMN "S_RESOURCES"."TYPE" IS '类型';
 COMMENT ON COLUMN "S_RESOURCES"."MD5" IS 'MD5校验值';
 COMMENT ON COLUMN "S_RESOURCES"."STATUS" IS '状态';
+COMMENT ON COLUMN "S_RESOURCES"."CLASSIFIED" IS '分类';
 COMMENT ON COLUMN "S_RESOURCES"."CREATE_DATE" IS '创建时间';
 COMMENT ON COLUMN "S_RESOURCES"."CREATOR_ID" IS '创建人';
 
+
+CREATE TABLE "S_CLASSIFIED" (
+  "U_ID"   VARCHAR2(32)   NOT NULL,
+  "NAME"   VARCHAR2(256)  NOT NULL,
+  "REMARK" VARCHAR2(1024) NULL,
+  "TYPE"   VARCHAR2(256)  NULL,
+  "PARENT_ID"   VARCHAR2(32)   NOT NULL,
+  "ICON"   VARCHAR2(256)  NULL,
+  "CONFIG" CLOB           NULL,
+  "SORT_INDEX" NUMBER(32)           NULL
+);
+COMMENT ON TABLE "S_CLASSIFIED" IS '数据分类表';
+COMMENT ON COLUMN "S_CLASSIFIED"."U_ID" IS 'UID';
+COMMENT ON COLUMN "S_CLASSIFIED"."NAME" IS '分类名称';
+COMMENT ON COLUMN "S_CLASSIFIED"."REMARK" IS '备注';
+COMMENT ON COLUMN "S_CLASSIFIED"."TYPE" IS '类型';
+COMMENT ON COLUMN "S_CLASSIFIED"."PARENT_ID" IS '父级分类';
+COMMENT ON COLUMN "S_CLASSIFIED"."ICON" IS '图标';
+COMMENT ON COLUMN "S_CLASSIFIED"."CONFIG" IS '分类配置';
+COMMENT ON COLUMN "S_CLASSIFIED"."SORT_INDEX" IS '排序';
 -- ----------------------------
 -- Table structure for S_ROLE
 -- ----------------------------
@@ -199,13 +221,13 @@ CREATE TABLE "S_ROLE_MODULES" (
   "U_ID"      VARCHAR2(256) NOT NULL,
   "MODULE_ID" VARCHAR2(256) NOT NULL,
   "ROLE_ID"   VARCHAR2(256) NOT NULL,
-  "O_LEVEL"   CLOB          NULL
+  "ACTIONS"   CLOB          NULL
 );
 COMMENT ON TABLE "S_ROLE_MODULES" IS '角色模块绑定表';
 COMMENT ON COLUMN "S_ROLE_MODULES"."U_ID" IS 'UID';
 COMMENT ON COLUMN "S_ROLE_MODULES"."MODULE_ID" IS '模块ID';
 COMMENT ON COLUMN "S_ROLE_MODULES"."ROLE_ID" IS '角色ID';
-COMMENT ON COLUMN "S_ROLE_MODULES"."O_LEVEL" IS '可操作权限';
+COMMENT ON COLUMN "S_ROLE_MODULES"."ACTIONS" IS '可操作权限';
 
 -- ----------------------------
 -- Table structure for S_SCRIPT
@@ -290,6 +312,7 @@ CREATE TABLE "S_HISTORY"
 );
 
 
+ALTER TABLE "S_CLASSIFIED" ADD PRIMARY KEY ("U_ID");
 ALTER TABLE "S_CONFIG" ADD PRIMARY KEY ("U_ID");
 ALTER TABLE "S_LOGGER" ADD PRIMARY KEY ("U_ID");
 ALTER TABLE "S_MODULES" ADD PRIMARY KEY ("U_ID");

+ 21 - 3
hsweb-web-bean/src/main/resources/system/install/sql/mysql/install.sql

@@ -50,13 +50,13 @@ CREATE TABLE `s_modules` (
   COMMENT 'uri',
   `icon`       VARCHAR(256)  NULL
   COMMENT '图标',
-  `p_id`       VARCHAR(256)  NOT NULL
+  `parent_id`       VARCHAR(256)  NOT NULL
   COMMENT '上级菜单',
   `remark`     VARCHAR(512)  NULL
   COMMENT '备注',
   `status`     INT(4)        NULL
   COMMENT '状态',
-  `m_option`   TEXT          NOT NULL
+  `optional`   TEXT          NOT NULL
   COMMENT '可选权限',
   `sort_index` INT(32)       NOT NULL
   COMMENT '排序'
@@ -115,6 +115,24 @@ CREATE TABLE `s_resources` (
 );
 ALTER TABLE `s_resources` COMMENT '资源表';
 
+CREATE TABLE `s_classified` (
+  `u_id`       VARCHAR(32)  NOT NULL PRIMARY KEY
+  COMMENT 'uid',
+  `remark`     VARCHAR(1024) NOT NULL
+  COMMENT '备注',
+  `type`       VARCHAR(256) NOT NULL
+  COMMENT '类型',
+  `parent_id`       VARCHAR(32) NOT NULL
+  COMMENT '父级分类',
+  `icon`       VARCHAR(256) NULL
+  COMMENT '状态',
+  `config`     TEXT         NOT NULL
+  COMMENT '创建时间',
+  `sort_index` INT          NOT NULL
+  COMMENT '排序'
+);
+ALTER TABLE `s_resources` COMMENT '资源表';
+
 -- ----------------------------
 -- Table structure for S_ROLE
 -- ----------------------------
@@ -145,7 +163,7 @@ CREATE TABLE `s_role_modules` (
   COMMENT '模块id',
   `role_id`   VARCHAR(256) NOT NULL
   COMMENT '角色id',
-  `o_level`   TEXT         NULL
+  `actions`   TEXT         NULL
   COMMENT '可操作权限'
 );
 ALTER TABLE `s_role_modules` COMMENT '角色模块绑定表';

+ 30 - 7
hsweb-web-bean/src/main/resources/system/install/sql/oracle/install.sql

@@ -105,10 +105,10 @@ CREATE TABLE ${jdbc.username}."S_MODULES" (
 "NAME" VARCHAR2(256)  NOT NULL,
 "URI" VARCHAR2(1024) NULL,
 "ICON" VARCHAR2(256)  NULL,
-"P_ID" VARCHAR2(256)  NOT NULL,
+"PARENT_ID" VARCHAR2(256)  NOT NULL,
 "REMARK" VARCHAR2(512)  NULL,
 "STATUS" NUMBER(4)      NULL,
-"M_OPTION" CLOB NOT NULL,
+"OPTIONAL" CLOB NOT NULL,
 "SORT_INDEX" NUMBER(32)     NOT NULL
 );
 COMMENT ON TABLE ${jdbc.username}."S_MODULES" IS '系统模块';
@@ -116,12 +116,33 @@ COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."U_ID" IS 'UID';
 COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."NAME" IS '模块名称';
 COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."URI" IS 'URI';
 COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."ICON" IS '图标';
-COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."P_ID" IS '上级菜单';
+COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."PARENT_ID" IS '上级菜单';
 COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."REMARK" IS '备注';
 COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."STATUS" IS '状态';
-COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."M_OPTION" IS '可选权限';
+COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."OPTIONAL" IS '可选权限';
 COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."SORT_INDEX" IS '排序';
 
+CREATE TABLE ${jdbc.username}."S_CLASSIFIED" (
+"U_ID" VARCHAR2(32)   NOT NULL,
+"NAME" VARCHAR2(256)  NOT NULL,
+"REMARK" VARCHAR2(1024) NULL,
+"TYPE" VARCHAR2(256)  NULL,
+"PARENT_ID" VARCHAR2(32)   NOT NULL,
+"ICON" VARCHAR2(256)  NULL,
+"CONFIG" CLOB NULL,
+"SORT_INDEX" NUMBER(32)  NULL
+);
+COMMENT ON TABLE ${jdbc.username}."S_CLASSIFIED" IS '数据分类表';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."U_ID" IS 'UID';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."NAME" IS '分类名称';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."REMARK" IS '备注';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."TYPE" IS '类型';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."PARENT_ID" IS '父级分类';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."ICON" IS '图标';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."CONFIG" IS '分类配置';
+COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."SORT_INDEX" IS '排序';
+
+
 CREATE TABLE ${jdbc.username}."S_MODULE_META" (
 "U_ID" VARCHAR2(32)  NOT NULL,
 "KEY" VARCHAR2(256) NOT NULL,
@@ -157,6 +178,7 @@ CREATE TABLE ${jdbc.username}."S_RESOURCES" (
 "NAME" VARCHAR2(256)  NOT NULL,
 "PATH" VARCHAR2(1024) NOT NULL,
 "TYPE" VARCHAR2(256)  NOT NULL,
+"CLASSIFIED"  VARCHAR2(32)   NULL,
 "MD5" VARCHAR2(256)  NOT NULL,
 "STATUS" NUMBER(4)      NULL,
 "CREATE_DATE" DATE NOT NULL,
@@ -167,6 +189,7 @@ COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."U_ID" IS 'UID';
 COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."NAME" IS '资源名称';
 COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."PATH" IS '路径';
 COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."TYPE" IS '类型';
+COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."CLASSIFIED" IS '分类';
 COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."MD5" IS 'MD5校验值';
 COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."STATUS" IS '状态';
 COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."CREATE_DATE" IS '创建时间';
@@ -199,13 +222,13 @@ CREATE TABLE ${jdbc.username}."S_ROLE_MODULES" (
 "U_ID" VARCHAR2(256) NOT NULL,
 "MODULE_ID" VARCHAR2(256) NOT NULL,
 "ROLE_ID" VARCHAR2(256) NOT NULL,
-"O_LEVEL" CLOB NULL
+"ACTIONS" CLOB NULL
 );
 COMMENT ON TABLE ${jdbc.username}."S_ROLE_MODULES" IS '角色模块绑定表';
 COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."U_ID" IS 'UID';
 COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."MODULE_ID" IS '模块ID';
 COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."ROLE_ID" IS '角色ID';
-COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."O_LEVEL" IS '可操作权限';
+COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."ACTIONS" IS '可操作权限';
 
 -- ----------------------------
 -- Table structure for S_SCRIPT
@@ -289,7 +312,7 @@ COMMENT ON COLUMN ${jdbc.username}."S_USER_ROLE"."U_ID" IS 'UID';
 COMMENT ON COLUMN ${jdbc.username}."S_USER_ROLE"."USER_ID" IS '用户ID';
 COMMENT ON COLUMN ${jdbc.username}."S_USER_ROLE"."ROLE_ID" IS '角色ID';
 
-
+ALTER TABLE ${jdbc.username}."S_CLASSIFIED" ADD PRIMARY KEY ("U_ID");
 ALTER TABLE ${jdbc.username}."S_CONFIG" ADD PRIMARY KEY ("U_ID");
 ALTER TABLE ${jdbc.username}."S_LOGGER" ADD PRIMARY KEY ("U_ID");
 ALTER TABLE ${jdbc.username}."S_MODULES" ADD PRIMARY KEY ("U_ID");

+ 8 - 3
hsweb-web-concurrent/hsweb-web-concurrent-cache/src/main/java/org/hsweb/concureent/cache/ConcurrentMapCacheManagerAutoConfig.java

@@ -1,6 +1,5 @@
 package org.hsweb.concureent.cache;
 
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
 import org.springframework.cache.Cache;
 import org.springframework.cache.CacheManager;
@@ -13,6 +12,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import java.util.HashSet;
+import java.util.concurrent.ConcurrentHashMap;
 
 @EnableCaching
 @Configuration
@@ -35,10 +35,15 @@ public class ConcurrentMapCacheManagerAutoConfig extends CachingConfigurerSuppor
     @Bean
     public CacheManager cacheManager() {
         SimpleCacheManager cacheManager = new SimpleCacheManager() {
-
             @Override
             protected Cache getMissingCache(String name) {
-                return new ConcurrentMapCache(name);
+                return new ConcurrentMapCache(name, false) {
+                    @Override
+                    public void put(Object key, Object value) {
+                        if (key == null || value == null) return;
+                        super.put(key, value);
+                    }
+                };
             }
         };
         cacheManager.setCaches(new HashSet<>());

+ 6 - 6
hsweb-web-controller/src/main/java/org/hsweb/web/controller/AopAccessLoggerResolverConfiguration.java

@@ -43,7 +43,7 @@ public class AopAccessLoggerResolverConfiguration extends AopAccessLoggerResolve
         } catch (Throwable e) {
             if (!(e instanceof BusinessException)) {
                 result = ResponseMessage.error(e.getMessage());
-                loggerInfo.setException_info(StringUtils.throwable2String(e));
+                loggerInfo.setExceptionInfo(StringUtils.throwable2String(e));
             } else {
                 result = ResponseMessage.error(e.getMessage(), ((BusinessException) e).getStatus());
             }
@@ -51,13 +51,13 @@ public class AopAccessLoggerResolverConfiguration extends AopAccessLoggerResolve
         } finally {
             long responseTime = System.currentTimeMillis();
             User user = WebUtil.getLoginUser();
-            loggerInfo.setRequest_time(requestTime);
-            loggerInfo.setResponse_time(responseTime);
-            loggerInfo.setResponse_content(fastJsonHttpMessageConverter.converter(result));
+            loggerInfo.setRequestTime(requestTime);
+            loggerInfo.setResponseTime(responseTime);
+            loggerInfo.setResponseContent(fastJsonHttpMessageConverter.converter(result));
             if (user != null)
-                loggerInfo.setUser_id(user.getU_id());
+                loggerInfo.setUserId(user.getId());
             if (result instanceof ResponseMessage)
-                loggerInfo.setResponse_code(String.valueOf(((ResponseMessage) result).getCode()));
+                loggerInfo.setResponseCode(String.valueOf(((ResponseMessage) result).getCode()));
             if (accessLoggerPersisting != null) {
                 accessLoggerPersisting.forEach(loggerPersisting -> loggerPersisting.save(loggerInfo));
             }

+ 10 - 0
hsweb-web-controller/src/main/java/org/hsweb/web/controller/DynamicFormAuthorizeValidator.java

@@ -0,0 +1,10 @@
+package org.hsweb.web.controller;
+
+import org.hsweb.web.bean.po.user.User;
+
+/**
+ * Created by zhouhao on 16-5-16.
+ */
+public interface DynamicFormAuthorizeValidator {
+    boolean validate(String formName, User user, String... actions);
+}

+ 30 - 0
hsweb-web-controller/src/main/java/org/hsweb/web/controller/DynamicFormAuthorizeValidatorConfiguration.java

@@ -0,0 +1,30 @@
+package org.hsweb.web.controller;
+
+import org.hsweb.web.bean.po.user.User;
+import org.hsweb.web.core.authorize.ExpressionScopeBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by zhouhao on 16-5-16.
+ */
+@Component("dynamicFormAuthorizeValidator")
+public class DynamicFormAuthorizeValidatorConfiguration implements ExpressionScopeBean {
+
+    @Autowired(required = false)
+    private List<DynamicFormAuthorizeValidator> dynamicFormAuthorizeValidators;
+
+    public boolean validate(String formName, User user, String... actions) {
+        if (dynamicFormAuthorizeValidators != null) {
+            for (DynamicFormAuthorizeValidator validator : dynamicFormAuthorizeValidators) {
+                if (validator.validate(formName, user, actions)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+        return true;
+    }
+}

+ 4 - 3
hsweb-web-controller/src/main/java/org/hsweb/web/controller/GenericController.java

@@ -5,6 +5,7 @@ import org.hsweb.web.core.authorize.annotation.Authorize;
 import org.hsweb.web.bean.common.QueryParam;
 import org.hsweb.web.bean.po.GenericPo;
 import org.hsweb.web.core.exception.BusinessException;
+import org.hsweb.web.core.exception.NotFoundException;
 import org.hsweb.web.core.logger.annotation.AccessLogger;
 import org.hsweb.web.core.message.ResponseMessage;
 import org.hsweb.web.service.GenericService;
@@ -132,7 +133,7 @@ public abstract class GenericController<PO, PK> {
     @Authorize(action = "D")
     public ResponseMessage delete(@PathVariable("id") PK id) throws Exception {
         PO old = getService().selectByPk(id);
-        if (old == null) throw new BusinessException("data is not found!", 404);
+        if (old == null) throw new NotFoundException("data is not found!");
         int number = getService().delete(id);
         return ResponseMessage.ok(number);
     }
@@ -148,9 +149,9 @@ public abstract class GenericController<PO, PK> {
     @Authorize(action = "U")
     public ResponseMessage update(@PathVariable("id") PK id, @RequestBody(required = true) PO object) throws Exception {
         PO old = getService().selectByPk(id);
-        if (old == null) throw new BusinessException("data is not found!", 404);
+        if (old == null) throw new NotFoundException("data is not found!");
         if (object instanceof GenericPo) {
-            ((GenericPo) object).setU_id(id);
+            ((GenericPo) object).setId(id);
         }
         int number = getService().update(object);
         return ResponseMessage.ok(number);

+ 30 - 0
hsweb-web-controller/src/main/java/org/hsweb/web/controller/classified/ClassifiedController.java

@@ -0,0 +1,30 @@
+package org.hsweb.web.controller.classified;
+
+import org.hsweb.web.bean.po.classified.Classified;
+import org.hsweb.web.controller.GenericController;
+import org.hsweb.web.core.authorize.annotation.Authorize;
+import org.hsweb.web.service.classified.ClassifiedService;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+* 控制器,继承自GenericController,使用rest+json
+* Created by hsweb-generator 2016-5-14 10:18:41
+*/
+@RestController
+@RequestMapping(value = "/classified")
+@Authorize(module = "classified")
+public class ClassifiedController extends GenericController<Classified,String> {
+
+    //默认服务类
+    @Resource
+    private ClassifiedService classifiedService;
+
+    @Override
+    public ClassifiedService getService(){
+        return this.classifiedService;
+    }
+
+}

+ 10 - 20
hsweb-web-controller/src/main/java/org/hsweb/web/controller/file/FileController.java

@@ -8,7 +8,9 @@ import org.hsweb.web.core.message.ResponseMessage;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
+import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
 import org.webbuilder.utils.common.StringUtils;
 import org.hsweb.web.service.config.ConfigService;
 import org.hsweb.web.service.resource.FileService;
@@ -37,22 +39,9 @@ public class FileController {
 
     private org.slf4j.Logger logger = LoggerFactory.getLogger(this.getClass());
 
-    /**
-     * 配置服务类,用于获取文件存放路径等配置信息
-     */
-    @Resource
-    private ConfigService configService;
-
-    /**
-     * 资源服务类,每一个上传的文件都对应一个资源。通过存放到数据库的资源信息,可以实现文件秒传。
-     * 通过资源id进行下载,使系统更安全
-     */
     @Resource
     private ResourcesService resourcesService;
 
-    /**
-     * 文件服务类,用于进行文件保存等操作
-     */
     @Resource
     private FileService fileService;
 
@@ -104,7 +93,7 @@ public class FileController {
         } else {
             if (!"file".equals(resources.getType()))
                 throw new NotFoundException("文件不存在");
-            String fileBasePath = configService.get("upload", "basePath", "/upload/").trim();
+            String fileBasePath = fileService.getFileBasePath();
             File file = new File(fileBasePath.concat(resources.getPath().concat("/".concat(resources.getMd5()))));
             if (!file.canRead()) {
                 throw new NotFoundException("文件不存在");
@@ -164,21 +153,22 @@ public class FileController {
      */
     @RequestMapping(value = "/upload", method = RequestMethod.POST)
     @AccessLogger("上传文件")
-    public Object upload(@RequestParam("file") CommonsMultipartFile[] files) throws Exception {
+    public Object upload(@RequestParam("file") MultipartFile[] files) throws Exception {
         if (logger.isInfoEnabled())
             logger.info(String.format("start upload , file number:%s", files.length));
         List<Resources> resourcesList = new LinkedList<>();
         for (int i = 0; i < files.length; i++) {
-            CommonsMultipartFile file = files[i];
+            MultipartFile file = files[i];
             if (!file.isEmpty()) {
                 if (logger.isInfoEnabled())
-                    logger.info(String.format("start write file:%s", file.getOriginalFilename()));
-                String fileName = files[i].getOriginalFilename();
-                Resources resources = fileService.saveFile(files[i].getFileItem().getInputStream(), fileName);
+                    logger.info("start write file:{}", file.getOriginalFilename());
+                String fileName = file.getOriginalFilename();
+                Resources resources = fileService.saveFile(file.getInputStream(), fileName);
                 resourcesList.add(resources);
             }
         }//响应上传成功的资源信息
         return ResponseMessage.ok(resourcesList)
-                .include(Resources.class, "u_id", "name", "md5");
+                .include(Resources.class, "id", "name", "md5");
     }
+
 }

+ 40 - 1
hsweb-web-controller/src/main/java/org/hsweb/web/controller/form/DynamicFormController.java

@@ -7,9 +7,15 @@ import org.hsweb.web.bean.common.UpdateMapParam;
 import org.hsweb.web.core.logger.annotation.AccessLogger;
 import org.hsweb.web.core.message.ResponseMessage;
 import org.hsweb.web.service.form.DynamicFormService;
+import org.hsweb.web.service.resource.FileService;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -18,14 +24,17 @@ import java.util.Map;
 @RestController
 @RequestMapping(value = "/dyn-form")
 @AccessLogger("动态表单")
-@Authorize
 public class DynamicFormController {
 
     @Resource
     private DynamicFormService dynamicFormService;
 
+    @Resource
+    private FileService fileService;
+
     @RequestMapping(value = "/{name}", method = RequestMethod.GET)
     @AccessLogger("查看列表")
+    @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,'R')")
     public ResponseMessage list(@PathVariable("name") String name,
                                 QueryParam param) throws Exception {
         // 获取条件查询
@@ -40,6 +49,7 @@ public class DynamicFormController {
 
     @RequestMapping(value = "/{name}/{primaryKey}", method = RequestMethod.GET)
     @AccessLogger("按主键查询")
+    @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,'R')")
     public ResponseMessage info(@PathVariable("name") String name,
                                 @PathVariable("primaryKey") String primaryKey) throws Exception {
         Map<String, Object> data = dynamicFormService.selectByPk(name, primaryKey);
@@ -48,6 +58,7 @@ public class DynamicFormController {
 
     @RequestMapping(value = "/{name}", method = RequestMethod.POST)
     @AccessLogger("新增数据")
+    @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,'C')")
     public ResponseMessage insert(@PathVariable("name") String name,
                                   @RequestBody(required = true) Map<String, Object> data) throws Exception {
         String pk = dynamicFormService.insert(name, new InsertMapParam(data));
@@ -56,6 +67,7 @@ public class DynamicFormController {
 
     @RequestMapping(value = "/{name}/{primaryKey}", method = RequestMethod.PUT)
     @AccessLogger("更新数据")
+    @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,'U')")
     public ResponseMessage update(@PathVariable("name") String name,
                                   @PathVariable("primaryKey") String primaryKey,
                                   @RequestBody(required = true) Map<String, Object> data) throws Exception {
@@ -65,10 +77,37 @@ public class DynamicFormController {
 
     @RequestMapping(value = "/{name}/{primaryKey}", method = RequestMethod.DELETE)
     @AccessLogger("删除数据")
+    @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,'D')")
     public ResponseMessage delete(@PathVariable("name") String name,
                                   @PathVariable("primaryKey") String primaryKey) throws Exception {
         dynamicFormService.deleteByPk(name, primaryKey);
         return ResponseMessage.ok();
     }
 
+    @RequestMapping(value = "/{name}/export/{fileName:.+}", method = RequestMethod.GET)
+    @AccessLogger("导出excel")
+    @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,'export')")
+    public void exportExcel(@PathVariable("name") String name,
+                                       @PathVariable("fileName") String fileName,
+                                       QueryParam queryParam,
+                                       HttpServletResponse response) throws Exception {
+        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
+        response.setContentType("application/vnd.ms-excel");
+        dynamicFormService.exportExcel(name, queryParam, response.getOutputStream());
+    }
+
+    @RequestMapping(value = "/{name}/import/{fileId:.+}", method = {RequestMethod.PATCH})
+    @AccessLogger("导入为excel")
+    @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,'import')")
+    public ResponseMessage importExcel(@PathVariable("name") String name,
+                                       @PathVariable("fileId") String fileId) throws Exception {
+        String[] ids = fileId.split("[,]");
+        Map<String, Object> result = new HashMap<>();
+        for (int i = 0; i < ids.length; i++) {
+            InputStream inputStream = fileService.readResources(ids[i]);
+            result.put(ids[i], dynamicFormService.importExcel(name, inputStream));
+        }
+        return ResponseMessage.ok(result);
+    }
+
 }

+ 7 - 5
hsweb-web-controller/src/main/java/org/hsweb/web/controller/login/UserModuleController.java

@@ -30,15 +30,17 @@ public class UserModuleController {
     @RequestMapping
     public ResponseMessage userModule() throws Exception {
         String[] includes = {
-                "name", "u_id", "p_id", "icon", "uri", "m_option"
+                "name", "id", "parentId", "icon", "uri", "optional"
         };
         User user = WebUtil.getLoginUser();
         List<Module> modules;
         if (user == null) {
-            modules = moduleService.select(new QueryParam().includes(includes).orderBy("sort_index"));
+            QueryParam queryParam = new QueryParam();
+            queryParam.includes(includes).orderBy("sortIndex");
+            modules = moduleService.select(queryParam);
             modules = modules.stream()
                     .filter(module -> {
-                        Object obj = module.getM_optionMap().get("M");
+                        Object obj = module.getOptionalMap().get("M");
                         if (obj instanceof Map)
                             return StringUtils.isTrue(((Map) obj).get("checked"));
                         return false;
@@ -46,13 +48,13 @@ public class UserModuleController {
                     .collect(Collectors.toCollection(() -> new LinkedList<>()));
         } else {
             modules = user.getModules().stream()
-                    .filter(module -> user.hasAccessModuleAction(module.getU_id(), "M"))
+                    .filter(module -> user.hasAccessModuleAction(module.getId(), "M"))
                     .collect(Collectors.toCollection(() -> new LinkedList<>()));
         }
 
         return ResponseMessage.ok(modules)
                 .include(Module.class, includes)
-                .exclude(Module.class, "m_option")
+                .exclude(Module.class, "optional")
                 .onlyData();
     }
 }

+ 1 - 1
hsweb-web-controller/src/main/java/org/hsweb/web/controller/module/ModuleMetaController.java

@@ -42,7 +42,7 @@ public class ModuleMetaController extends GenericController<ModuleMeta, String>
         List<UserRole> roles = user.getUserRoles();
         String[] roleIdList = roles
                 .stream()
-                .map(userRole -> userRole.getRole_id())
+                .map(userRole -> userRole.getRoleId())
                 .collect(Collectors.toList()).toArray(new String[roles.size()]);
         return ResponseMessage.ok(getService().selectByKeyAndRoleId(key, roleIdList));
     }

+ 4 - 25
hsweb-web-controller/src/main/java/org/hsweb/web/controller/resource/ResourcesController.java

@@ -1,29 +1,20 @@
 package org.hsweb.web.controller.resource;
 
-import org.hsweb.web.core.exception.NotFoundException;
-import org.hsweb.web.core.logger.annotation.AccessLogger;
-import org.hsweb.web.core.authorize.annotation.Authorize;
 import org.hsweb.web.bean.po.resource.Resources;
-import org.hsweb.web.bean.po.role.Role;
 import org.hsweb.web.controller.GenericController;
+import org.hsweb.web.core.authorize.annotation.Authorize;
+import org.hsweb.web.core.exception.NotFoundException;
+import org.hsweb.web.core.logger.annotation.AccessLogger;
 import org.hsweb.web.core.message.ResponseMessage;
 import org.hsweb.web.service.resource.ResourcesService;
-
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 
-/**
- * 资源控制器,继承自GenericController,使用rest+json
- * Created by generator 2015-8-28 13:01:29
- *
- * @author 浩
- * @version 1.0
- * @UpdateRemark 2015年8月31日,重写{@link ResourcesController#delete(String)}方法,删除资源时需要授权认证
- */
 @RestController
 @RequestMapping(value = "/resources")
 @AccessLogger("资源管理")
+@Authorize(module = "resources")
 public class ResourcesController extends GenericController<Resources, String> {
 
     //默认服务类
@@ -35,18 +26,6 @@ public class ResourcesController extends GenericController<Resources, String> {
         return this.resourcesService;
     }
 
-    /**
-     * 重写 {@link GenericController#delete(Object)} 新增注解: @Authorize(role = Role.SYS_ROLE_ADMIN),只有拥有系统管理员权限的用户才能执行此操作
-     *
-     * @param id 要删除的id标识
-     * @return
-     */
-    @Override
-    @Authorize(role = Role.SYS_ROLE_ADMIN)
-    public ResponseMessage delete(@PathVariable("id") String id) throws Exception {
-        return super.delete(id);
-    }
-
     /**
      * 判断资源文件是否存在并检测其健康状况
      *

+ 10 - 10
hsweb-web-core/src/main/java/org/hsweb/web/core/logger/AopAccessLoggerResolver.java

@@ -35,17 +35,17 @@ public class AopAccessLoggerResolver {
                 describe.append("-");
             describe.append(methodAnnotation.value());
         }
-        logInfo.setU_id(MD5.encode(String.valueOf(System.nanoTime())));
-        logInfo.setModule_desc(describe.toString());//方法描述
-        logInfo.setClass_name(target.getName());//当前访问映射到的类名
-        logInfo.setClient_ip(WebUtil.getIpAddr(request));//ip地址
-        logInfo.setRequest_method(request.getMethod().concat(".").concat(methodName));//方法:GET.select()
-        logInfo.setRequest_header(JSON.toJSONString(WebUtil.getHeaders(request)));//http请求头
+        logInfo.setId(MD5.encode(String.valueOf(System.nanoTime())));
+        logInfo.setModuleDesc(describe.toString());//方法描述
+        logInfo.setClassName(target.getName());//当前访问映射到的类名
+        logInfo.setClientIp(WebUtil.getIpAddr(request));//ip地址
+        logInfo.setRequestMethod(request.getMethod().concat(".").concat(methodName));//方法:GET.select()
+        logInfo.setRequestHeader(JSON.toJSONString(WebUtil.getHeaders(request)));//http请求头
         logInfo.setReferer(request.getHeader("referer"));//referer
-        logInfo.setRequest_uri(request.getRequestURI());//请求相对路径
-        logInfo.setRequest_url(WebUtil.getBasePath(request).concat(logInfo.getRequest_uri().substring(1)));//请求绝对路径
-        logInfo.setUser_agent(request.getHeader("User-agent"));//客户端标识
-        logInfo.setRequest_param(JSON.toJSONString(WebUtil.getParams(request)));//请求参数
+        logInfo.setRequestUri(request.getRequestURI());//请求相对路径
+        logInfo.setRequestUrl(WebUtil.getBasePath(request).concat(logInfo.getRequestUri().substring(1)));//请求绝对路径
+        logInfo.setUserAgent(request.getHeader("UserAgent"));//客户端标识
+        logInfo.setRequestParam(JSON.toJSONString(WebUtil.getParams(request)));//请求参数
         return logInfo;
     }
 

+ 1 - 1
hsweb-web-dao-impl-mybatis/README.md

@@ -36,7 +36,7 @@
                         ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                         ,'email':#{'jdbcType':'VARCHAR','javaType':'string'}
                         ,'phone':#{'jdbcType':'VARCHAR','javaType':'string'}
-                        ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
+                        ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
                         ,'create_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
                         ,'update_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
                         }"/>

+ 167 - 37
hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/builder/DefaultSqlParamBuilder.java

@@ -1,12 +1,13 @@
 package org.hsweb.web.mybatis.builder;
 
-import org.hsweb.web.bean.common.Term;
-import org.hsweb.web.bean.common.TermType;
+import org.apache.commons.beanutils.BeanUtils;
+import org.hsweb.web.bean.common.*;
 import org.hsweb.web.mybatis.utils.SqlAppender;
 import org.webbuilder.utils.common.DateTimeUtils;
 import org.webbuilder.utils.common.StringUtils;
 
 import java.sql.JDBCType;
+import java.sql.SQLException;
 import java.util.*;
 
 /**
@@ -14,62 +15,70 @@ import java.util.*;
  */
 public class DefaultSqlParamBuilder {
 
+    public String getQuoteStart() {
+        return "\"";
+    }
+
+    public String getQuoteEnd() {
+        return "\"";
+    }
+
     protected Map<TermType, KeyWordMapper> mapperMap = new HashMap<>();
 
     private static DefaultSqlParamBuilder instance = new DefaultSqlParamBuilder();
 
     public DefaultSqlParamBuilder() {
-        mapperMap.put(TermType.eq, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " = ", "#{", paramKey, "}").toString()
+        mapperMap.put(TermType.eq, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " = ", "#{", paramKey, "}").toString()
         );
-        mapperMap.put(TermType.not, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " != ", "#{", paramKey, "}").toString()
+        mapperMap.put(TermType.not, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " != ", "#{", paramKey, "}").toString()
         );
-        mapperMap.put(TermType.like, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " like ", "#{", paramKey, "}").toString()
+        mapperMap.put(TermType.like, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " like ", "#{", paramKey, "}").toString()
         );
-        mapperMap.put(TermType.notlike, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " not like ", "#{", paramKey, "}").toString()
+        mapperMap.put(TermType.notlike, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " not like ", "#{", paramKey, "}").toString()
         );
-        mapperMap.put(TermType.notnull, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " is not null").toString()
+        mapperMap.put(TermType.notnull, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " is not null").toString()
         );
-        mapperMap.put(TermType.isnull, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " is null").toString()
+        mapperMap.put(TermType.isnull, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " is null").toString()
         );
-        mapperMap.put(TermType.empty, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " =''").toString()
+        mapperMap.put(TermType.empty, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " =''").toString()
         );
-        mapperMap.put(TermType.notempty, (paramKey, field, jdbcType) ->
-                        new SqlAppender().add(field.getField(), " !=''").toString()
+        mapperMap.put(TermType.notempty, (paramKey, tableName, field, jdbcType) ->
+                        new SqlAppender().add(tableName, ".", field.getField(), " !=''").toString()
         );
-        mapperMap.put(TermType.btw, (paramKey, field, jdbcType) ->
+        mapperMap.put(TermType.btw, (paramKey, tableName, field, jdbcType) ->
         {
             SqlAppender sqlAppender = new SqlAppender();
             List<Object> objects = param2list(field.getValue());
             if (objects.size() == 1)
                 objects.add(objects.get(0));
             field.setValue(objects);
-            sqlAppender.addSpc(field.getField(), "between")
+            sqlAppender.add(tableName, ".", field.getField()," ").addSpc("between")
                     .add(" #{", paramKey, "[0]}")
                     .add(" and ", "#{", paramKey, "[1]}");
             return sqlAppender.toString();
         });
 
-        mapperMap.put(TermType.notbtw, (paramKey, field, jdbcType) ->
+        mapperMap.put(TermType.notbtw, (paramKey, tableName, field, jdbcType) ->
         {
             SqlAppender sqlAppender = new SqlAppender();
             List<Object> objects = param2list(field.getValue());
             if (objects.size() == 1)
                 objects.add(objects.get(0));
             field.setValue(objects);
-            sqlAppender.addSpc(field.getField(), "not between")
+            sqlAppender.add(tableName, ".", field.getField()," ").addSpc("not between")
                     .add(" #{", paramKey, "[0]}")
                     .add(" and ", "#{", paramKey, "[1]}");
             return sqlAppender.toString();
         });
 
-        mapperMap.put(TermType.gt, (paramKey, field, jdbcType) -> {
+        mapperMap.put(TermType.gt, (paramKey, tableName, field, jdbcType) -> {
             SqlAppender sqlAppender = new SqlAppender();
             if (Arrays.<JDBCType>asList(JDBCType.DATE, JDBCType.TIME, JDBCType.TIMESTAMP).contains(jdbcType)) {
                 if (!(field.getValue() instanceof Date)) {
@@ -78,11 +87,11 @@ public class DefaultSqlParamBuilder {
                     if (date != null) field.setValue(date);
                 }
             }
-            sqlAppender.add(field.getField(), " >= #{", paramKey, "}");
+            sqlAppender.add(tableName, ".", field.getField(), " >= #{", paramKey, "}");
             return sqlAppender.toString();
         });
 
-        mapperMap.put(TermType.lt, (paramKey, field, jdbcType) -> {
+        mapperMap.put(TermType.lt, (paramKey, tableName, field, jdbcType) -> {
             SqlAppender sqlAppender = new SqlAppender();
             if (Arrays.<JDBCType>asList(JDBCType.DATE, JDBCType.TIME, JDBCType.TIMESTAMP).contains(jdbcType)) {
                 if (!(field.getValue() instanceof Date)) {
@@ -91,15 +100,15 @@ public class DefaultSqlParamBuilder {
                     if (date != null) field.setValue(date);
                 }
             }
-            sqlAppender.add(field.getField(), " <= #{", paramKey, "}");
+            sqlAppender.add(tableName, ".",field.getField(), " <= #{", paramKey, "}");
             return sqlAppender.toString();
         });
 
-        mapperMap.put(TermType.in, (paramKey, field, jdbcType) -> {
+        mapperMap.put(TermType.in, (paramKey, tableName, field, jdbcType) -> {
             List<Object> values = param2list(field.getValue());
             field.setValue(values);
             SqlAppender appender = new SqlAppender();
-            appender.addSpc(field.getField(), "in(");
+            appender.add(tableName, ".").addSpc(field.getField(), "in(");
             for (int i = 0; i < values.size(); i++) {
                 appender.add("#{", paramKey, "[", i, "]}", ",");
             }
@@ -108,11 +117,11 @@ public class DefaultSqlParamBuilder {
             return appender.toString();
         });
 
-        mapperMap.put(TermType.notin, (paramKey, field, jdbcType) -> {
+        mapperMap.put(TermType.notin, (paramKey, tableName, field, jdbcType) -> {
             List<Object> values = param2list(field.getValue());
             field.setValue(values);
             SqlAppender appender = new SqlAppender();
-            appender.addSpc(field.getField(), "not in(");
+            appender.add(tableName, ".").addSpc(field.getField(), "not in(");
             for (int i = 0; i < values.size(); i++) {
                 appender.add("#{", paramKey, "[", i, "]}", ",");
             }
@@ -131,13 +140,118 @@ public class DefaultSqlParamBuilder {
         return mapperMap.get(type);
     }
 
-    public String buildWhere(Map<String, Object> fieldConfig, List<Term> terms) {
+    public String buildWhere(Map<String, Object> fieldConfig, String tableName, List<Term> terms) {
         SqlAppender sqlAppender = new SqlAppender();
-        buildWhere(fieldConfig, "", terms, sqlAppender);
+        buildWhere(fieldConfig, "", tableName, terms, sqlAppender);
         if (sqlAppender.size() > 0) sqlAppender.removeFirst();
         return sqlAppender.toString();
     }
 
+    public String buildSelectFields(Map<String, Object> fieldConfig, String tableName, SqlParam param) {
+        if (param == null) return "*";
+        Set<String> includes = param.getIncludes(),
+                excludes = param.getExcludes();
+        boolean includesIsEmpty = includes.isEmpty(),
+                excludesIsEmpty = excludes.isEmpty();
+        if (includesIsEmpty && excludesIsEmpty)
+            return "*";
+        Map<String, String> propertyMapper = getPropertyMapper(fieldConfig, param);
+        SqlAppender appender = new SqlAppender();
+        propertyMapper.forEach((k, v) -> {
+            if (!appender.isEmpty())
+                appender.add(",");
+            appender.add(tableName, ".", k, " as ").addEdSpc(getQuoteStart(), k, getQuoteEnd());
+        });
+        if (appender.isEmpty()) return "*";
+        return appender.toString();
+    }
+
+    public String buildUpdateFields(Map<String, Object> fieldConfig, UpdateParam param) throws Exception {
+        Map<String, String> propertyMapper = getPropertyMapper(fieldConfig, param);
+        SqlAppender appender = new SqlAppender();
+        propertyMapper.forEach((k, v) -> {
+            try {
+                Object obj = BeanUtils.getProperty(param.getData(), v);
+                if (obj != null) {
+                    if (!appender.isEmpty())
+                        appender.add(",");
+                    Map<String, Object> config = ((Map) fieldConfig.get(k));
+                    appender.add(k, "=", "#{data.", v);
+                    if (config != null) {
+                        Object jdbcType = config.get("jdbcType"),
+                                javaType = config.get("javaType");
+                        if (jdbcType != null) {
+                            appender.add(",jdbcType=", jdbcType);
+                        }
+                        if (javaType != null) {
+                            appender.add(",javaType=", javaType);
+                        }
+                    }
+                    appender.add("}");
+                }
+            } catch (Exception e) {
+            }
+        });
+        if (appender.isEmpty()) throw new SQLException("未指定列");
+        return appender.toString();
+    }
+
+    public String buildOrder(Map<String, Object> fieldConfig, String tableName, QueryParam param) throws Exception {
+        QueryParam tmp = new QueryParam();
+        tmp.setSorts(param.getSorts());
+        Map<String, String> propertyMapper = getPropertyMapper(fieldConfig, tmp);
+        if (tmp.getSorts().isEmpty()) return "";
+        Set<Sort> sorts = new LinkedHashSet<>();
+        param.getSorts().forEach(sort -> {
+            String fieldName = sort.getField();
+            if (StringUtils.isNullOrEmpty(fieldName)) return;
+            if (fieldName.contains("."))
+                fieldName = fieldName.split("[.]")[1];
+            if (propertyMapper.containsKey(fieldName) || propertyMapper.containsValue(fieldName)) {
+                sorts.add(sort);
+            }
+        });
+        if (sorts.isEmpty()) return "";
+        String sql = sorts.stream()
+                .map(sort -> {
+                    String fieldName = sort.getField();
+                    if (fieldName.contains("."))
+                        fieldName = fieldName.split("[.]")[1];
+                    return new SqlAppender()
+                            .add(tableName, ".", StringUtils.camelCase2UnderScoreCase(fieldName), " ", sort.getDir()).toString();
+                })
+                .reduce((s, s1) -> new SqlAppender().add(s, ",", s1).toString()).get();
+        return " order by ".concat(sql);
+    }
+
+    public Map<String, String> getPropertyMapper(Map<String, Object> fieldConfig, SqlParam param) {
+        Set<String> includes = param.getIncludes(),
+                excludes = param.getExcludes();
+        boolean includesIsEmpty = includes.isEmpty(),
+                excludesIsEmpty = excludes.isEmpty();
+        Map<String, String> propertyMapper = new HashMap<>();
+        fieldConfig.forEach((k, v) -> {
+            Map<String, Object> config = ((Map) v);
+            String fieldName = (String) config.get("property");
+            if (fieldName == null) fieldName = k;
+            if (includesIsEmpty && excludesIsEmpty) {
+                propertyMapper.put(k, fieldName);
+                return;
+            }
+            if (excludes.contains(fieldName) || excludes.contains(k)) {
+                return;
+            }
+            if (includesIsEmpty) {
+                propertyMapper.put(k, fieldName);
+            } else if (includes.contains(fieldName) || includes.contains(k)) {
+                propertyMapper.put(k, fieldName);
+            }
+
+
+        });
+        return propertyMapper;
+    }
+
     public JDBCType getFieldJDBCType(String field, Map<String, Object> fieldConfig) {
         if (field == null) return JDBCType.NULL;
         Object conf = fieldConfig.get(field);
@@ -150,11 +264,27 @@ public class DefaultSqlParamBuilder {
         return JDBCType.VARCHAR;
     }
 
-    public void buildWhere(Map<String, Object> fieldConfig, String prefix, List<Term> terms, SqlAppender appender) {
+    public String getColumn(Map<String, Object> fieldConfig, String name) {
+        if (name == null) return null;
+        Map<String, Object> config = ((Map) fieldConfig.get(name));
+        if (config == null) {
+            for (Map.Entry<String, Object> entry : fieldConfig.entrySet()) {
+                String fieldName = (String) ((Map) entry.getValue()).get("property");
+                if (name.equals(fieldName)) {
+                    return entry.getKey();
+                }
+            }
+        }
+        return name;
+    }
+
+    public void buildWhere(Map<String, Object> fieldConfig, String prefix, String tableName, List<Term> terms, SqlAppender appender) {
         if (terms == null || terms.isEmpty()) return;
         int index = 0;
         String prefixTmp = StringUtils.concat(prefix, StringUtils.isNullOrEmpty(prefix) ? "" : ".");
         for (Term term : terms) {
+            String column = getColumn(fieldConfig, term.getField());
+            if (column != null) term.setField(column);
             boolean nullTerm = StringUtils.isNullOrEmpty(term.getField());
             //不是空条件 也不是可选字段
             if (!nullTerm && !fieldConfig.containsKey(term.getField())) continue;
@@ -173,7 +303,7 @@ public class DefaultSqlParamBuilder {
             if (!term.getTerms().isEmpty()) {
                 //构建嵌套的条件
                 SqlAppender nest = new SqlAppender();
-                buildWhere(fieldConfig, prefix, term.getTerms(), nest);
+                buildWhere(fieldConfig, prefix, tableName, term.getTerms(), nest);
                 //如果嵌套结果为空
                 if (nest.isEmpty()) {
                     appender.removeLast();//删除最后一个(and 或者 or)
@@ -185,12 +315,12 @@ public class DefaultSqlParamBuilder {
                 }
                 appender.add("(");
                 if (!nullTerm)
-                    appender.add(mapperMap.get(term.getTermType()).fieldMapper(prefix + ".value", term, jdbcType));
+                    appender.add(mapperMap.get(term.getTermType()).fieldMapper(prefix + ".value", tableName, term, jdbcType));
                 appender.addAll(nest);
                 appender.add(")");
             } else {
                 if (!nullTerm)
-                    appender.add(mapperMap.get(term.getTermType()).fieldMapper("" + prefix + ".value", term, jdbcType));
+                    appender.add(mapperMap.get(term.getTermType()).fieldMapper("" + prefix + ".value", tableName, term, jdbcType));
             }
         }
     }
@@ -240,6 +370,6 @@ public class DefaultSqlParamBuilder {
     }
 
     public interface KeyWordMapper {
-        String fieldMapper(String paramKey, Term term, JDBCType jdbcType);
+        String fieldMapper(String paramKey, String tableName, Term term, JDBCType jdbcType);
     }
 }

+ 10 - 0
hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/builder/MysqlParamBuilder.java

@@ -13,4 +13,14 @@ public class MysqlParamBuilder extends DefaultSqlParamBuilder {
     public static MysqlParamBuilder instance() {
         return instance;
     }
+
+    @Override
+    public String getQuoteStart() {
+        return "`";
+    }
+
+    @Override
+    public String getQuoteEnd() {
+        return "`";
+    }
 }

+ 65 - 0
hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/handler/JsonArrayHandler.java

@@ -0,0 +1,65 @@
+package org.hsweb.web.mybatis.handler;
+
+import com.alibaba.fastjson.JSON;
+import org.apache.ibatis.type.Alias;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by zhouhao on 16-5-14.
+ */
+@Alias("jsonArrayHandler")
+@MappedTypes({List.class})
+public class JsonArrayHandler extends BaseTypeHandler<List<Object>> {
+
+    @Override
+    public List<Object> getResult(ResultSet rs, int columnIndex) throws SQLException {
+        String s = rs.getString(columnIndex);
+        return JSON.parseArray(s);
+    }
+
+    @Override
+    public List<Object> getResult(ResultSet rs, String columnName) throws SQLException {
+        String s = rs.getString(columnName);
+        return JSON.parseArray(s);
+    }
+
+    @Override
+    public List<Object> getResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String s = cs.getString(columnIndex);
+        return JSON.parseArray(s);
+    }
+
+    @Override
+    public void setParameter(PreparedStatement ps, int i, List<Object> parameter, JdbcType jdbcType) throws SQLException {
+        ps.setString(i, JSON.toJSONString(parameter));
+    }
+
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, List<Object> parameter, JdbcType jdbcType) throws SQLException {
+        ps.setString(i, "[]");
+    }
+
+    @Override
+    public List<Object> getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        return new ArrayList<>();
+    }
+
+    @Override
+    public List<Object> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        return new ArrayList<>();
+    }
+
+    @Override
+    public List<Object> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        return new ArrayList<>();
+    }
+}

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/plgins/pager/PagerInterceptor.java

@@ -53,7 +53,7 @@ public class PagerInterceptor implements Interceptor {
             if (obj instanceof QueryParam) {
                 QueryParam param = (QueryParam) obj;
                 PagerHelper helper = pagerHelperBase.get(dialect);
-                if (helper != null && !sql.contains("count(0)")) {
+                if (helper != null && param.isPaging() && !sql.contains("count(0)")) {
                     String newSql = helper.doPaging(param, sql);
                     metaStatementHandler.setValue("delegate.boundSql.sql", newSql);
                 }

+ 15 - 152
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/basic/BasicMapper.xml

@@ -3,171 +3,37 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="BasicMapper">
-    <sql id="buildWhereV2">
-        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildWhere($fieldsInfo,#this['_parameter'].terms)}
-    </sql>
     <!--通用查询条件-->
     <sql id="buildWhere">
-        <include refid="BasicMapper.buildWhereV2"/>
-        <!--动态生成查询条件-->
-        <!--<foreach item="item" index="index" collection="$fields">-->
-            <!--<if test="#this['term.'+item]!=null">-->
-                <!--AND `${$tableName}`.`${item}`=#{term.${item}}-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOT']!=null">-->
-                <!--AND `${$tableName}`.`${item}`!=#{term.${item+'$NOT'}}-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$LIKE']!=null">-->
-                <!--AND ${$tableName}.${item} like #{term.${item+'$LIKE'}}-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOTLIKE']!=null">-->
-                <!--AND  ${$tableName}.${item} not like #{term.${item+'$LIKE'}}-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$IN']!=null">-->
-                <!--AND `${$tableName}`.`${item}` IN-->
-                <!--<foreach item="it" index="i" collection="#this['term.'+item+'$IN']" open="(" separator="," close=")">-->
-                    <!--#{it}-->
-                <!--</foreach>-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOTIN']!=null">-->
-                <!--AND `${$tableName}`.`${item}` NOT IN-->
-                <!--<foreach item="it" index="i" collection="#this['term.'+item+'$NOTIN']" open="(" separator="," close=")">-->
-                    <!--#{it}-->
-                <!--</foreach>-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$ISNULL']!=null">-->
-                <!--AND `${$tableName}`.`${item}` IS NULL-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOTNULL']!=null">-->
-                <!--AND `${$tableName}`.`${item}` IS NOT NULL-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$GT']!=null">-->
-                <!--AND `${$tableName}`.`${item}` &gt;=#{term.${item+'$GT'}}-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$LT']!=null">-->
-                <!--AND `${$tableName}`.`${item}` &lt;=#{term.${item+'$LT'}}-->
-            <!--</if>-->
-        <!--</foreach>-->
-        <!--动态生成查询条件结束-->
+        ${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildWhere($fieldsInfo,$tableName,#this['_parameter'].terms)}
     </sql>
     <!--生成查询字段-->
     <sql id="buildSelectField">
-        <bind name="fieldHasLen" value="false"/>
-        <choose>
-            <!--指定查询的字段-->
-            <when test="includes!=null and includes.size()>0">
-                <foreach item="item" index="index" collection="includes" open="" separator="," close="">
-                    <if test="item in $fields">
-                        <bind name="fieldHasLen" value="true"/>
-                        ${$tableName}.${item} as `${item}`
-                    </if>
-                </foreach>
-            </when>
-            <!--指定不查询的字段-->
-            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
-                    <if test="!(item in excludes)">
-                        <bind name="fieldHasLen" value="true"/>
-                        ${$tableName}.${item} as `${item}`
-                    </if>
-                </foreach>
-            </when>
-            <otherwise> <bind name="fieldHasLen" value="true"/>*</otherwise>
-        </choose>
-        <if test="!fieldHasLen">*</if>
+        ${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildSelectFields($fieldsInfo,#this['_parameter'])}
     </sql>
 
     <!--生成修改字段-->
     <sql id="buildUpdateField">
-        <set>
-            <choose>
-                <!--指定要修改的字段-->
-                <when test="includes!=null and includes.size()>0">
-                    <foreach item="item" index="index" collection="includes" open="" separator="," close="">
-                        <if test="item in $fields">
-                            `${item}`=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                        </if>
-                    </foreach>
-                </when>
-                <!--指定不修改的字段-->
-                <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
-                        <if test="!(item in excludes)">
-                            `${item}`= #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                        </if>
-                    </foreach>
-                </when>
-                <!--修改所有-->
-                <otherwise>
-                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
-                        <if test="data[item] != null">
-                            `${item}`=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                        </if>
-                    </foreach>
-                </otherwise>
-            </choose>
-        </set>
+       <set>
+           ${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildUpdateFields($fieldsInfo,#this['_parameter'])}
+       </set>
     </sql>
 
     <!--生成插入字段-->
     <sql id="buildInsertField">
-        <choose>
-            <when test="includes!=null and includes.size()>0">
-                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
-                    <if test="item in $fields">`${item}`</if>
-                </foreach>
-            </when>
-            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
-                    <if test="!(item in excludes)">`${item}`</if>
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">`${item}`</foreach>
-            </otherwise>
-        </choose>
+        <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">${item}</foreach>
     </sql>
 
     <!--生成插入值-->
     <sql id="buildInsertValues">
-        <choose>
-            <when test="includes!=null and includes.size()>0">
-                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
-                    <if test="item in $fields">
-                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                    </if>
-                </foreach>
-            </when>
-            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
-                    <if test="!(item in excludes)">
-                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                    </if>
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
-                    #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                </foreach>
-            </otherwise>
-        </choose>
+        <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+            #{data.${$fieldsInfo[item].property==null?item:$fieldsInfo[item].property},jdbcType=${$fieldsInfo[item]['jdbcType']},javaType=${$fieldsInfo[item]['javaType']}}
+        </foreach>
     </sql>
 
     <!--生成排序字段-->
     <sql id="buildSortField">
-        <bind name="fieldHasLen" value="false"/>
-        <choose>
-            <!--指定排序的字段-->
-            <when test="sortField!=null and sortField.size()>0">
-                <foreach item="item" index="index" collection="sortField" open="" separator="," close="">
-                    <if test="item in $fields">
-                        <if test="!fieldHasLen"> order by </if>${$tableName}.${item}
-                        <bind name="fieldHasLen" value="true"/>
-                    </if>
-                </foreach>
-                <if test="fieldHasLen"> ${sortOrder}</if>
-            </when>
-        </choose>
+        ${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildOrder($fieldsInfo,$tableName,#this['_parameter'])}
     </sql>
 
     <!--生成查询sql-->
@@ -176,8 +42,7 @@
         <include refid="BasicMapper.buildSelectField"/>
         from ${$tableName}
         <where>
-            <include refid="BasicMapper.buildWhereV2"/>
-            <!--<include refid="BasicMapper.buildWhere"/>-->
+            <include refid="BasicMapper.buildWhere"/>
         </where>
         <include refid="BasicMapper.buildSortField"/>
     </sql>
@@ -195,10 +60,9 @@
         update ${$tableName}
         <include refid="BasicMapper.buildUpdateField"/>
         <where>
-            <include refid="BasicMapper.buildWhereV2"/>
-            <!--<include refid="BasicMapper.buildWhere"/>-->
-            <if test="term.size()==0">
-                u_id=#{data.u_id}
+            <include refid="BasicMapper.buildWhere"/>
+            <if test="terms.size()==0">
+                u_id=#{data.id}
             </if>
         </where>
     </sql>
@@ -207,8 +71,7 @@
     <sql id="buildTotalSql">
         select count(0) as "total" from ${$tableName}
         <where>
-            <include refid="BasicMapper.buildWhereV2"/>
-            <!--<include refid="BasicMapper.buildWhere"/>-->
+            <include refid="BasicMapper.buildWhere"/>
         </where>
     </sql>
 </mapper>

+ 214 - 0
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/basic/BasicMapper.xml.old

@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="BasicMapper">
+    <sql id="buildWhereV2">
+        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildWhere($fieldsInfo,#this['_parameter'].terms)}
+    </sql>
+    <!--通用查询条件-->
+    <sql id="buildWhere">
+        <include refid="BasicMapper.buildWhereV2"/>
+        <!--动态生成查询条件-->
+        <!--<foreach item="item" index="index" collection="$fields">-->
+            <!--<if test="#this['term.'+item]!=null">-->
+                <!--AND `${$tableName}`.`${item}`=#{term.${item}}-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$NOT']!=null">-->
+                <!--AND `${$tableName}`.`${item}`!=#{term.${item+'$NOT'}}-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$LIKE']!=null">-->
+                <!--AND ${$tableName}.${item} like #{term.${item+'$LIKE'}}-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$NOTLIKE']!=null">-->
+                <!--AND  ${$tableName}.${item} not like #{term.${item+'$LIKE'}}-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$IN']!=null">-->
+                <!--AND `${$tableName}`.`${item}` IN-->
+                <!--<foreach item="it" index="i" collection="#this['term.'+item+'$IN']" open="(" separator="," close=")">-->
+                    <!--#{it}-->
+                <!--</foreach>-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$NOTIN']!=null">-->
+                <!--AND `${$tableName}`.`${item}` NOT IN-->
+                <!--<foreach item="it" index="i" collection="#this['term.'+item+'$NOTIN']" open="(" separator="," close=")">-->
+                    <!--#{it}-->
+                <!--</foreach>-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$ISNULL']!=null">-->
+                <!--AND `${$tableName}`.`${item}` IS NULL-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$NOTNULL']!=null">-->
+                <!--AND `${$tableName}`.`${item}` IS NOT NULL-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$GT']!=null">-->
+                <!--AND `${$tableName}`.`${item}` &gt;=#{term.${item+'$GT'}}-->
+            <!--</if>-->
+            <!--<if test="#this['term.'+item+'$LT']!=null">-->
+                <!--AND `${$tableName}`.`${item}` &lt;=#{term.${item+'$LT'}}-->
+            <!--</if>-->
+        <!--</foreach>-->
+        <!--动态生成查询条件结束-->
+    </sql>
+    <!--生成查询字段-->
+    <sql id="buildSelectField">
+        <bind name="fieldHasLen" value="false"/>
+        <choose>
+            <!--指定查询的字段-->
+            <when test="includes!=null and includes.size()>0">
+                <foreach item="item" index="index" collection="includes" open="" separator="," close="">
+                    <if test="item in $fields">
+                        <bind name="fieldHasLen" value="true"/>
+                        ${$tableName}.${item} as `${item}`
+                    </if>
+                </foreach>
+            </when>
+            <!--指定不查询的字段-->
+            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
+                <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
+                    <if test="!(item in excludes)">
+                        <bind name="fieldHasLen" value="true"/>
+                        ${$tableName}.${item} as `${item}`
+                    </if>
+                </foreach>
+            </when>
+            <otherwise> <bind name="fieldHasLen" value="true"/>*</otherwise>
+        </choose>
+        <if test="!fieldHasLen">*</if>
+    </sql>
+
+    <!--生成修改字段-->
+    <sql id="buildUpdateField">
+        <set>
+            <choose>
+                <!--指定要修改的字段-->
+                <when test="includes!=null and includes.size()>0">
+                    <foreach item="item" index="index" collection="includes" open="" separator="," close="">
+                        <if test="item in $fields">
+                            `${item}`=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                        </if>
+                    </foreach>
+                </when>
+                <!--指定不修改的字段-->
+                <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
+                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
+                        <if test="!(item in excludes)">
+                            `${item}`= #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                        </if>
+                    </foreach>
+                </when>
+                <!--修改所有-->
+                <otherwise>
+                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
+                        <if test="data[item] != null">
+                            `${item}`=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                        </if>
+                    </foreach>
+                </otherwise>
+            </choose>
+        </set>
+    </sql>
+
+    <!--生成插入字段-->
+    <sql id="buildInsertField">
+        <choose>
+            <when test="includes!=null and includes.size()>0">
+                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
+                    <if test="item in $fields">`${item}`</if>
+                </foreach>
+            </when>
+            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+                    <if test="!(item in excludes)">`${item}`</if>
+                </foreach>
+            </when>
+            <otherwise>
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">`${item}`</foreach>
+            </otherwise>
+        </choose>
+    </sql>
+
+    <!--生成插入值-->
+    <sql id="buildInsertValues">
+        <choose>
+            <when test="includes!=null and includes.size()>0">
+                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
+                    <if test="item in $fields">
+                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                    </if>
+                </foreach>
+            </when>
+            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+                    <if test="!(item in excludes)">
+                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                    </if>
+                </foreach>
+            </when>
+            <otherwise>
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+                    #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                </foreach>
+            </otherwise>
+        </choose>
+    </sql>
+
+    <!--生成排序字段-->
+    <sql id="buildSortField">
+        <bind name="fieldHasLen" value="false"/>
+        <choose>
+            <!--指定排序的字段-->
+            <when test="sortField!=null and sortField.size()>0">
+                <foreach item="item" index="index" collection="sortField" open="" separator="," close="">
+                    <if test="item in $fields">
+                        <if test="!fieldHasLen"> order by </if>${$tableName}.${item}
+                        <bind name="fieldHasLen" value="true"/>
+                    </if>
+                </foreach>
+                <if test="fieldHasLen"> ${sortOrder}</if>
+            </when>
+        </choose>
+    </sql>
+
+    <!--生成查询sql-->
+    <sql id="buildSelectSql">
+        select
+        <include refid="BasicMapper.buildSelectField"/>
+        from ${$tableName}
+        <where>
+            <include refid="BasicMapper.buildWhereV2"/>
+            <!--<include refid="BasicMapper.buildWhere"/>-->
+        </where>
+        <include refid="BasicMapper.buildSortField"/>
+    </sql>
+
+    <!--生成InsertSql-->
+    <sql id="buildInsertSql">
+        insert into ${$tableName}
+        <include refid="BasicMapper.buildInsertField"/>
+        values
+        <include refid="BasicMapper.buildInsertValues"/>
+    </sql>
+
+    <!--生成UpdateSql-->
+    <sql id="buildUpdateSql">
+        update ${$tableName}
+        <include refid="BasicMapper.buildUpdateField"/>
+        <where>
+            <include refid="BasicMapper.buildWhereV2"/>
+            <!--<include refid="BasicMapper.buildWhere"/>-->
+            <if test="term.size()==0">
+                u_id=#{data.u_id}
+            </if>
+        </where>
+    </sql>
+
+    <!--生成查询数量sql-->
+    <sql id="buildTotalSql">
+        select count(0) as "total" from ${$tableName}
+        <where>
+            <include refid="BasicMapper.buildWhereV2"/>
+            <!--<include refid="BasicMapper.buildWhere"/>-->
+        </where>
+    </sql>
+</mapper>

+ 71 - 0
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/classified/ClassifiedMapper.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="org.hsweb.web.dao.classified.ClassifiedMapper">
+    <resultMap id="ClassifiedResultMap" type="org.hsweb.web.bean.po.classified.Classified">
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+            <result property="name" column="name" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="remark" column="remark" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="type" column="type" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="parentId" column="parent_id" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="icon" column="icon" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="config" column="config" javaType="java.lang.String" jdbcType="CLOB"/>
+            <result property="sortIndex" column="sort_index" javaType="int" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <!--字段配置-->
+    <sql id="fieldConfig">
+        <bind name="$fieldsInfo"
+              value="#{
+                    'id':#{'column':'id','jdbcType':'VARCHAR','javaType':'String'}
+                    ,'name':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'remark':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'type':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'parent_id':#{'property':'parentId','jdbcType':'VARCHAR','javaType':'String'}
+                    ,'icon':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'config':#{'jdbcType':'CLOB','javaType':'String'}
+                    ,'sort_index':#{'jdbcType':'INTEGER','javaType':'int'}
+                    }"/>
+
+        <bind name="$fields" value="$fieldsInfo.keySet()"/>
+    </sql>
+
+    <!--表名-->
+    <sql id="tableName">
+        <bind name="$tableName" value="'s_classified'"/>
+    </sql>
+
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildInsertSql"/>
+    </insert>
+
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+        delete from s_classified where u_id=#{term.primaryKey}
+    </delete>
+
+    <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildUpdateSql"/>
+    </update>
+
+    <select id="selectByPk" parameterType="string" resultMap="ClassifiedResultMap">
+        select * from s_classified where u_id=#{id}
+    </select>
+
+    <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ClassifiedResultMap">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildSelectSql"/>
+    </select>
+
+    <select id="total" parameterType="org.hsweb.web.bean.common.QueryParam" resultType="int">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildTotalSql"/>
+    </select>
+</mapper>

+ 7 - 8
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/config/ConfigMapper.xml

@@ -5,11 +5,10 @@
 
 <mapper namespace="org.hsweb.web.dao.config.ConfigMapper">
     <resultMap id="ConfigResultMap" type="Config">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
-        <result property="u_id" column="u_id" javaType="String" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
         <result property="content" column="content" javaType="String" jdbcType="VARCHAR"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
     </resultMap>
 
@@ -17,11 +16,11 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'content':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'create_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
-                    ,'update_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'update_date':#{'property':'updateDate','jdbcType':'TIMESTAMP','javaType':'date'}
                      ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
                     }"/>
 
@@ -32,7 +31,7 @@
         <bind name="$tableName" value="'s_config'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -49,7 +48,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="ConfigResultMap">
-        select * from s_config where u_id=#{u_id}
+        select * from s_config where u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ConfigResultMap">

+ 12 - 12
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/form/FormMapper.xml

@@ -5,7 +5,7 @@
 
 <mapper namespace="org.hsweb.web.dao.form.FormMapper">
     <resultMap id="FormResultMap" type="Form">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="html" column="html" javaType="String" jdbcType="VARCHAR"/>
         <result property="meta" column="meta" javaType="String" jdbcType="VARCHAR"/>
@@ -15,26 +15,26 @@
         <result property="revision" column="revision" javaType="int" jdbcType="INTEGER"/>
         <result property="release" column="release" javaType="int" jdbcType="INTEGER"/>
         <result property="using" column="using" javaType="boolean" jdbcType="INTEGER"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
-        <result property="update_date" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="updateDate" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'html':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'meta':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'config':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'version':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'revision':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'release':#{'jdbcType':'INTEGER','javaType':'number'}
+                    ,'version':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'revision':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'release':#{'jdbcType':'INTEGER','javaType':'int'}
                     ,'using':#{'jdbcType':'INTEGER','javaType':'boolean'}
-                    ,'create_date':#{'jdbcType':'VARCHAR','javaType':'date'}
-                    ,'update_date':#{'jdbcType':'VARCHAR','javaType':'date'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'VARCHAR','javaType':'date'}
+                    ,'update_date':#{'property':'updateDate','jdbcType':'VARCHAR','javaType':'date'}
                     }"/>
 
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
@@ -45,7 +45,7 @@
         <bind name="$tableName" value="'s_form'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -62,11 +62,11 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="FormResultMap">
-        select * from s_form WHERE u_id=#{u_id}
+        select * from s_form WHERE u_id=#{id}
     </select>
 
     <select id="selectUsing" parameterType="string" resultMap="FormResultMap">
-        select * from s_form WHERE `using`=1 and `name`=#{name}
+        select * from s_form WHERE using=1 and name=#{name}
     </select>
 
     <select id="selectLatestList" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="FormResultMap">

+ 16 - 16
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/history/HistoryMapper.xml

@@ -5,30 +5,30 @@
 
 <mapper namespace="org.hsweb.web.dao.history.HistoryMapper">
     <resultMap id="HistoryResultMap" type="History">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
         <result property="describe" column="describe" javaType="String" jdbcType="VARCHAR"/>
-        <result property="primary_key_name" column="primary_key_name" javaType="String" jdbcType="VARCHAR"/>
-        <result property="primary_key_value" column="primary_key_value" javaType="String" jdbcType="VARCHAR"/>
-        <result property="change_before" column="change_before" javaType="String" jdbcType="VARCHAR"/>
-        <result property="change_after" column="change_after" javaType="String" jdbcType="INTEGER"/>
-        <result property="creator_id" column="creator_id" javaType="String" jdbcType="VARCHAR"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="primaryKeyName" column="primary_key_name" javaType="String" jdbcType="VARCHAR"/>
+        <result property="primaryKeyValue" column="primary_key_value" javaType="String" jdbcType="VARCHAR"/>
+        <result property="changeBefore" column="change_before" javaType="String" jdbcType="VARCHAR"/>
+        <result property="changeAfter" column="change_after" javaType="String" jdbcType="INTEGER"/>
+        <result property="creatorId" column="creator_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'describe':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'primary_key_name':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'primary_key_value':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'change_before':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'change_after':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'creator_id':#{'jdbcType':'VARCHAR','javaType':'boolean'}
-                    ,'create_date':#{'jdbcType':'VARCHAR','javaType':'date'}
+                    ,'primary_key_name':#{'property':'primaryKeyName','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'primary_key_value':#{'property':'primaryKeyValue','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'change_before':#{'property':'changeBefore','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'change_after':#{'property':'changeAfter','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'creator_id':#{'property':'creatorId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'VARCHAR','javaType':'date'}
                     }"/>
 
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
@@ -39,7 +39,7 @@
         <bind name="$tableName" value="'s_history'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -56,7 +56,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="HistoryResultMap">
-        select * from s_history WHERE u_id=#{u_id}
+        select * from s_history WHERE u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="HistoryResultMap">

+ 11 - 11
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/module/ModuleMapper.xml

@@ -5,30 +5,30 @@
 
 <mapper namespace="org.hsweb.web.dao.module.ModuleMapper">
     <resultMap id="ModuleResultMap" type="Module">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="uri" column="uri" javaType="String" jdbcType="VARCHAR"/>
         <result property="icon" column="icon" javaType="String" jdbcType="VARCHAR"/>
-        <result property="p_id" column="p_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="parentId" column="p_id" javaType="String" jdbcType="VARCHAR"/>
         <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
         <result property="status" column="status" javaType="int" jdbcType="INTEGER"/>
-        <result property="m_option" column="m_option" javaType="String" jdbcType="VARCHAR"/>
-        <result property="sort_index" column="sort_index" javaType="long" jdbcType="INTEGER"/>
+        <result property="optional" column="optional" javaType="String" jdbcType="VARCHAR"/>
+        <result property="sortIndex" column="sort_index" javaType="long" jdbcType="INTEGER"/>
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'uri':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'icon':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'p_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    ,'parent_id':#{'property':'parentId','jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'m_option':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'sort_index':#{'jdbcType':'INTEGER','javaType':'number'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'optional':#{'property':'optional','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'sort_index':#{'property':'sortIndex','jdbcType':'INTEGER','javaType':'long'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>
@@ -37,7 +37,7 @@
         <bind name="$tableName" value="'s_modules'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -54,7 +54,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="ModuleResultMap">
-        select * from s_modules WHERE u_id=#{u_id}
+        select * from s_modules WHERE u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ModuleResultMap">

+ 67 - 0
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/module/ModuleMetaMapper.xml

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="org.hsweb.web.dao.module.ModuleMetaMapper">
+    <resultMap id="ModuleMetaResultMap" type="ModuleMeta">
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <result property="key" column="key" javaType="String" jdbcType="VARCHAR"/>
+        <result property="moduleId" column="module_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="roleId" column="role_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="meta" column="meta" javaType="String" jdbcType="CLOB"/>
+        <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
+        <result property="status" column="status" javaType="int" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <!--字段信息绑定-->
+    <sql id="fieldConfig">
+        <bind name="$fieldsInfo"
+              value="#{
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'key':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    ,'module_id':#{'property':'moduleId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'role_id':#{'property':'roleId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'meta':#{'jdbcType':'CLOB','javaType':'string'}
+                    ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
+                    }"/>
+        <bind name="$fields" value="$fieldsInfo.keySet()"/>
+    </sql>
+    <!--表名-->
+    <sql id="tableName">
+        <bind name="$tableName" value="'s_module_meta'"/>
+    </sql>
+
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildInsertSql"/>
+    </insert>
+
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+        delete from s_module_meta where u_id=#{term.primaryKey}
+    </delete>
+
+    <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildUpdateSql"/>
+    </update>
+
+    <select id="selectByPk" parameterType="string" resultMap="ModuleMetaResultMap">
+        select * from s_module_meta WHERE u_id=#{u_id}
+    </select>
+
+    <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ModuleMetaResultMap">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildSelectSql"/>
+    </select>
+
+    <select id="total" parameterType="org.hsweb.web.bean.common.QueryParam" resultType="int">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildTotalSql"/>
+    </select>
+</mapper>

+ 10 - 10
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/resource/ResourcesMapper.xml

@@ -5,28 +5,28 @@
 
 <mapper namespace="org.hsweb.web.dao.resource.ResourcesMapper">
     <resultMap id="ResourcesResultMap" type="Resources" >
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR" />
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR" />
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR" />
         <result property="path" column="path" javaType="String" jdbcType="VARCHAR" />
-        <result property="creator_id" column="creator_id" javaType="String" jdbcType="VARCHAR" />
+        <result property="creatorId" column="creator_id" javaType="String" jdbcType="VARCHAR" />
         <result property="md5" column="md5" javaType="String" jdbcType="VARCHAR" />
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR" />
         <result property="status" column="status" javaType="int" jdbcType="INTEGER" />
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP" />
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP" />
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'path':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'creator_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    ,'creator_id':#{'property':'creatorId','jdbcType':'VARCHAR','javaType':'string'}
                     ,'md5':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'create_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'TIMESTAMP','javaType':'date'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>
@@ -35,13 +35,13 @@
         <bind name="$tableName" value="'s_resources'"/>
     </sql>
 
-    <insert id="insert" parameterType="Resources" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="Resources" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>
 
-    <delete id="delete" parameterType="Resources" >
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
         delete from s_resources where u_id=#{term.primaryKey}
     </delete>
 
@@ -52,7 +52,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="ResourcesResultMap">
-        select * from s_resources WHERE u_id=#{u_id}
+        select * from s_resources WHERE u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ResourcesResultMap">

+ 4 - 4
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/RoleMapper.xml

@@ -4,7 +4,7 @@
         "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.hsweb.web.dao.role.RoleMapper">
     <resultMap id="RoleResultMap" type="Role">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
@@ -16,7 +16,7 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
@@ -29,7 +29,7 @@
         <bind name="$tableName" value="'s_role'"/>
     </sql>
 
-    <insert id="insert" parameterType="Role" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="Role" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -46,7 +46,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="RoleResultMap">
-        select * from s_role where u_id=#{u_id}
+        select * from s_role where u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="RoleResultMap">

+ 9 - 8
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/RoleModuleMapper.xml

@@ -5,10 +5,11 @@
 
 <mapper namespace="org.hsweb.web.dao.role.RoleModuleMapper">
     <resultMap id="RoleModuleResultMap" type="RoleModule" >
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR" />
-        <result property="module_id" column="module_id" javaType="String" jdbcType="VARCHAR" />
-        <result property="role_id" column="role_id" javaType="String" jdbcType="VARCHAR" />
-        <result property="o_level" column="o_level" javaType="String" jdbcType="VARCHAR" />
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR" />
+        <result property="moduleId" column="module_id" javaType="String" jdbcType="VARCHAR" />
+        <result property="roleId" column="role_id" javaType="String" jdbcType="VARCHAR" />
+        <result property="actions" column="actions" javaType="String" jdbcType="VARCHAR"
+                typeHandler="org.hsweb.web.mybatis.handler.JsonArrayHandler" />
         <collection property="module" column="module_id" ofType="Module" select="org.hsweb.web.dao.module.ModuleMapper.selectByPk"/>
     </resultMap>
 
@@ -16,10 +17,10 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'module_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'role_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'o_level':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'module_id':#{'property':'moduleId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'role_id':#{'property':'roleId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'actions':#{'jdbcType':'CLOB','javaType':'java.util.List'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>

+ 6 - 6
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/UserRoleMapper.xml

@@ -5,9 +5,9 @@
 
 <mapper namespace="org.hsweb.web.dao.role.UserRoleMapper">
     <resultMap id="UserRoleResultMap" type="UserRole">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
-        <result property="user_id" column="user_id" javaType="String" jdbcType="VARCHAR"/>
-        <result property="role_id" column="role_id" javaType="String" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <result property="userId" column="user_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="roleId" column="role_id" javaType="String" jdbcType="VARCHAR"/>
         <collection property="role" column="role_id" jdbcType="VARCHAR" ofType="Role"
                     select="org.hsweb.web.dao.role.RoleMapper.selectByPk"></collection>
     </resultMap>
@@ -16,9 +16,9 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'user_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'role_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'user_id':#{'property':'userId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'role_id':#{'property':'roleId','jdbcType':'VARCHAR','javaType':'string'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>

+ 7 - 6
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/script/DynamicScriptMapper.xml

@@ -5,7 +5,7 @@
 
 <mapper namespace="org.hsweb.web.dao.script.DynamicScriptMapper">
     <resultMap id="DynamicScriptResultMap" type="DynamicScript" >
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR" />
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR" />
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR" />
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR" />
         <result property="content" column="content" javaType="String" jdbcType="VARCHAR" />
@@ -18,7 +18,7 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'content':#{'jdbcType':'VARCHAR','javaType':'string'}
@@ -32,7 +32,7 @@
 
     <!--表名-->
     <sql id="tableName">
-        <bind name="$tableName" value="'S_SCRIPT'"/>
+        <bind name="$tableName" value="'s_script'"/>
     </sql>
 
     <insert id="insert" parameterType="DynamicScript" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
@@ -41,10 +41,11 @@
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>
 
-    <delete id="delete" parameterType="UserRole">
-        delete from s_user_role where u_id=#{u_id}
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+        delete from s_script where u_id=#{term.primaryKey}
     </delete>
 
+
     <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
@@ -52,7 +53,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="DynamicScriptResultMap">
-        SELECT * FROM S_SCRIPT WHERE u_id=#{u_id}
+        select * from s_script where u_id=#{u_id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="DynamicScriptResultMap">

+ 11 - 11
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/user/UserMapper.xml

@@ -5,15 +5,15 @@
 
 <mapper namespace="org.hsweb.web.dao.user.UserMapper">
     <resultMap id="UserResultMap" type="User">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="username" column="username" javaType="String" jdbcType="VARCHAR"/>
         <result property="password" column="password" javaType="String" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="email" column="email" javaType="String" jdbcType="VARCHAR"/>
         <result property="phone" column="phone" javaType="String" jdbcType="VARCHAR"/>
         <result property="status" column="status" javaType="int" jdbcType="INTEGER"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
-        <result property="update_date" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="updateDate" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
         <collection property="userRoles" column="u_id" ofType="UserRole"
                     select="org.hsweb.web.dao.role.UserRoleMapper.selectByUserId"/>
     </resultMap>
@@ -21,15 +21,15 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'username':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'password':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'email':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'phone':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'create_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
-                    ,'update_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'update_date':#{'property':'updateDate','jdbcType':'TIMESTAMP','javaType':'date'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>
@@ -38,18 +38,18 @@
         <bind name="$tableName" value="'s_user'"/>
     </sql>
 
-    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>
 
-    <delete id="delete" parameterType="UserRole">
-        delete from s_user where u_id=#{u_id}
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+        delete from s_user where u_id=#{term.primaryKey}
     </delete>
 
     <update id="updatePassword" parameterType="User">
-        update s_user set password=#{password,jdbcType=VARCHAR} where u_id = #{u_id}
+        update s_user set password=#{password,jdbcType=VARCHAR} where u_id = #{id}
     </update>
 
     <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">

+ 12 - 177
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/basic/BasicMapper.xml

@@ -3,199 +3,37 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="BasicMapper">
-    <sql id="buildWhereV2">
-        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildWhere($fieldsInfo,#this['_parameter'].terms)}
-    </sql>
-
     <!--通用查询条件-->
     <sql id="buildWhere">
-        <include refid="BasicMapper.buildWhereV2"/>
-        <!--动态生成查询条件-->
-        <!--<foreach item="item" index="index" collection="$fields">-->
-            <!--<if test="#this['term.'+item]!=null">-->
-                <!--<choose>-->
-                    <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
-                        <!--AND ${$tableName}.${item}=to_date(#{term.${item}},'YYYY-MM-DD HH24:MI:SS')-->
-                    <!--</when>-->
-                    <!--<otherwise>AND ${$tableName}.${item}=#{term.${item}}</otherwise>-->
-                <!--</choose>-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOT']!=null">-->
-                <!--<choose>-->
-                    <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
-                        <!--AND ${$tableName}.${item}!=to_date(#{term.${item+'$NOT'}},'YYYY-MM-DD HH24:MI:SS')-->
-                    <!--</when>-->
-                    <!--<otherwise>AND ${$tableName}.${item}!=#{term.${item+'$NOT'}}</otherwise>-->
-                <!--</choose>-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$LIKE']!=null">-->
-                <!--AND ${$tableName}.${item} like #{term.${item+'$LIKE'}}-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOTLIKE']!=null">-->
-                <!--AND ${$tableName}.${item} not like #{term.${item+'$LIKE'}}-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$IN']!=null">-->
-                <!--AND ${$tableName}.${item} IN-->
-                <!--<foreach item="it" index="i" collection="#this['term.'+item+'$IN']" open="(" separator="," close=")">-->
-                    <!--#{it}-->
-                <!--</foreach>-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOTIN']!=null">-->
-                <!--AND ${$tableName}.${item} NOT IN-->
-                <!--<foreach item="it" index="i" collection="#this['term.'+item+'$NOTIN']" open="(" separator="," close=")">-->
-                    <!--#{it}-->
-                <!--</foreach>-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$ISNULL']!=null">-->
-                <!--AND ${$tableName}.${item} IS NULL-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$NOTNULL']!=null">-->
-                <!--AND ${$tableName}.${item} IS NOT NULL-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$GT']!=null">-->
-                <!--<choose>-->
-                    <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
-                        <!--AND ${$tableName}.${item} &gt;=to_date(#{term.${item+'$GT'}},'YYYY-MM-DD HH24:MI:SS')-->
-                    <!--</when>-->
-                    <!--<when test="$fieldsInfo[item]['javaType'] == 'number' ">-->
-                        <!--AND ${$tableName}.${item} &gt;=#{term.${item+'$GT'}}-->
-                    <!--</when>-->
-                    <!--<otherwise></otherwise>-->
-                <!--</choose>-->
-            <!--</if>-->
-            <!--<if test="#this['term.'+item+'$LT']!=null">-->
-                <!--<choose>-->
-                    <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
-                        <!--AND ${$tableName}.${item} &lt;=to_date(#{term.${item+'$LT'}},'YYYY-MM-DD HH24:MI:SS')-->
-                    <!--</when>-->
-                    <!--<when test="$fieldsInfo[item]['javaType'] == 'number' ">-->
-                        <!--AND ${$tableName}.${item} &lt;=#{term.${item+'$LT'}}-->
-                    <!--</when>-->
-                    <!--<otherwise></otherwise>-->
-                <!--</choose>-->
-            <!--</if>-->
-        <!--</foreach>-->
-        <!--动态生成查询条件结束-->
+        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildWhere($fieldsInfo,$tableName,#this['_parameter'].terms)}
     </sql>
     <!--生成查询字段-->
     <sql id="buildSelectField">
-        <bind name="fieldHasLen" value="false"/>
-        <choose>
-            <!--指定查询的字段-->
-            <when test="includes!=null and includes.size()>0">
-                <foreach item="item" index="index" collection="includes" open="" separator="," close="">
-                    <if test="item in $fields">
-                        <bind name="fieldHasLen" value="true"/>
-                        ${$tableName}.${item} as "${item}"
-                    </if>
-                </foreach>
-            </when>
-            <!--指定不查询的字段-->
-            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
-                    <if test="!(item in excludes)">
-                        <bind name="fieldHasLen" value="true"/>
-                        ${$tableName}.${item} as "${item}"
-                    </if>
-                </foreach>
-            </when>
-            <otherwise><bind name="fieldHasLen" value="true"/>*
-            </otherwise>
-        </choose>
-        <if test="!fieldHasLen">*</if>
+        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildSelectFields($fieldsInfo,$tableName,#this['_parameter'])}
     </sql>
 
     <!--生成修改字段-->
     <sql id="buildUpdateField">
         <set>
-            <choose>
-                <!--指定要修改的字段-->
-                <when test="includes!=null and includes.size()>0">
-                    <foreach item="item" index="index" collection="includes" open="" separator="," close="">
-                        <if test="item in $fields">
-                            ${item}=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                        </if>
-                    </foreach>
-                </when>
-                <!--指定不修改的字段-->
-                <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
-                        <if test="!(item in excludes)">
-                            ${item}= #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                        </if>
-                    </foreach>
-                </when>
-                <!--修改所有-->
-                <otherwise>
-                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
-                        <if test="data[item] != null">
-                            ${item}=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                        </if>
-                    </foreach>
-                </otherwise>
-            </choose>
+        ${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildUpdateFields($fieldsInfo,#this['_parameter'])}
         </set>
     </sql>
 
     <!--生成插入字段-->
     <sql id="buildInsertField">
-        <choose>
-            <when test="includes!=null and includes.size()>0">
-                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
-                    <if test="item in $fields">${item}</if>
-                </foreach>
-            </when>
-            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
-                    <if test="!(item in excludes)">${item}</if>
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">${item}</foreach>
-            </otherwise>
-        </choose>
+        <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">${item}</foreach>
     </sql>
 
     <!--生成插入值-->
     <sql id="buildInsertValues">
-        <choose>
-            <when test="includes!=null and includes.size()>0">
-                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
-                    <if test="item in $fields">
-                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                    </if>
-                </foreach>
-            </when>
-            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
-                    <if test="!(item in excludes)">
-                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                    </if>
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
-                    #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
-                </foreach>
-            </otherwise>
-        </choose>
+        <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+            #{data.${$fieldsInfo[item].property==null?item:$fieldsInfo[item].property},jdbcType=${$fieldsInfo[item]['jdbcType']},javaType=${$fieldsInfo[item]['javaType']}}
+        </foreach>
     </sql>
 
     <!--生成排序字段-->
     <sql id="buildSortField">
-        <bind name="fieldHasLen" value="false"/>
-        <choose>
-            <!--指定排序的字段-->
-            <when test="sortField!=null and sortField.size()>0">
-                <foreach item="item" index="index" collection="sortField" open="" separator="," close="">
-                    <if test="item in $fields">
-                        <if test="!fieldHasLen">order by</if>${$tableName}.${item}
-                        <bind name="fieldHasLen" value="true"/>
-                    </if>
-                </foreach>
-                <if test="fieldHasLen">${sortOrder}</if>
-            </when>
-        </choose>
+        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildOrder($fieldsInfo,$tableName,#this['_parameter'])}
     </sql>
 
     <!--生成查询sql-->
@@ -204,8 +42,7 @@
         <include refid="BasicMapper.buildSelectField"/>
         from ${$tableName}
         <where>
-            <include refid="BasicMapper.buildWhereV2"/>
-            <!--<include refid="BasicMapper.buildWhere"/>-->
+            <include refid="BasicMapper.buildWhere"/>
         </where>
         <include refid="BasicMapper.buildSortField"/>
     </sql>
@@ -223,10 +60,9 @@
         update ${$tableName}
         <include refid="BasicMapper.buildUpdateField"/>
         <where>
-            <include refid="BasicMapper.buildWhereV2"/>
-            <!--<include refid="BasicMapper.buildWhere"/>-->
+            <include refid="BasicMapper.buildWhere"/>
             <if test="terms.size()==0">
-                u_id=#{data.u_id}
+                u_id=#{data.id}
             </if>
         </where>
     </sql>
@@ -235,8 +71,7 @@
     <sql id="buildTotalSql">
         select count(0) as "total" from ${$tableName}
         <where>
-            <include refid="BasicMapper.buildWhereV2"/>
-            <!--<include refid="BasicMapper.buildWhere"/>-->
+            <include refid="BasicMapper.buildWhere"/>
         </where>
     </sql>
 </mapper>

+ 245 - 0
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/basic/BasicMapper.xml.old

@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="BasicMapper">
+    <sql id="buildWhereV2">
+        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildWhere($fieldsInfo,#this['_parameter'].terms)}
+    </sql>
+    <sql id="buildSelectFieldV2">
+        ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildSelectFields($fieldsInfo,#this['_parameter'])}
+    </sql>
+    <!--通用查询条件-->
+    <sql id="buildWhere">
+        <include refid="BasicMapper.buildWhereV2"/>
+        <!--动态生成查询条件-->
+        <!--<foreach item="item" index="index" collection="$fields">-->
+        <!--<if test="#this['term.'+item]!=null">-->
+        <!--<choose>-->
+        <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
+        <!--AND ${$tableName}.${item}=to_date(#{term.${item}},'YYYY-MM-DD HH24:MI:SS')-->
+        <!--</when>-->
+        <!--<otherwise>AND ${$tableName}.${item}=#{term.${item}}</otherwise>-->
+        <!--</choose>-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$NOT']!=null">-->
+        <!--<choose>-->
+        <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
+        <!--AND ${$tableName}.${item}!=to_date(#{term.${item+'$NOT'}},'YYYY-MM-DD HH24:MI:SS')-->
+        <!--</when>-->
+        <!--<otherwise>AND ${$tableName}.${item}!=#{term.${item+'$NOT'}}</otherwise>-->
+        <!--</choose>-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$LIKE']!=null">-->
+        <!--AND ${$tableName}.${item} like #{term.${item+'$LIKE'}}-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$NOTLIKE']!=null">-->
+        <!--AND ${$tableName}.${item} not like #{term.${item+'$LIKE'}}-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$IN']!=null">-->
+        <!--AND ${$tableName}.${item} IN-->
+        <!--<foreach item="it" index="i" collection="#this['term.'+item+'$IN']" open="(" separator="," close=")">-->
+        <!--#{it}-->
+        <!--</foreach>-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$NOTIN']!=null">-->
+        <!--AND ${$tableName}.${item} NOT IN-->
+        <!--<foreach item="it" index="i" collection="#this['term.'+item+'$NOTIN']" open="(" separator="," close=")">-->
+        <!--#{it}-->
+        <!--</foreach>-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$ISNULL']!=null">-->
+        <!--AND ${$tableName}.${item} IS NULL-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$NOTNULL']!=null">-->
+        <!--AND ${$tableName}.${item} IS NOT NULL-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$GT']!=null">-->
+        <!--<choose>-->
+        <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
+        <!--AND ${$tableName}.${item} &gt;=to_date(#{term.${item+'$GT'}},'YYYY-MM-DD HH24:MI:SS')-->
+        <!--</when>-->
+        <!--<when test="$fieldsInfo[item]['javaType'] == 'number' ">-->
+        <!--AND ${$tableName}.${item} &gt;=#{term.${item+'$GT'}}-->
+        <!--</when>-->
+        <!--<otherwise></otherwise>-->
+        <!--</choose>-->
+        <!--</if>-->
+        <!--<if test="#this['term.'+item+'$LT']!=null">-->
+        <!--<choose>-->
+        <!--<when test="$fieldsInfo[item]['javaType'] == 'date' ">-->
+        <!--AND ${$tableName}.${item} &lt;=to_date(#{term.${item+'$LT'}},'YYYY-MM-DD HH24:MI:SS')-->
+        <!--</when>-->
+        <!--<when test="$fieldsInfo[item]['javaType'] == 'number' ">-->
+        <!--AND ${$tableName}.${item} &lt;=#{term.${item+'$LT'}}-->
+        <!--</when>-->
+        <!--<otherwise></otherwise>-->
+        <!--</choose>-->
+        <!--</if>-->
+        <!--</foreach>-->
+        <!--动态生成查询条件结束-->
+    </sql>
+    <!--生成查询字段-->
+    <sql id="buildSelectField">
+        <include refid="BasicMapper.buildSelectFieldV2"/>
+        <!--<bind name="fieldHasLen" value="false"/>-->
+        <!--<choose>-->
+        <!--&lt;!&ndash;指定查询的字段&ndash;&gt;-->
+        <!--<when test="includes!=null and includes.size()>0">-->
+        <!--<foreach item="item" index="index" collection="includes" open="" separator="," close="">-->
+        <!--<if test="item in $fields">-->
+        <!--<bind name="fieldHasLen" value="true"/>-->
+        <!--${$tableName}.${item} as "${item}"-->
+        <!--</if>-->
+        <!--</foreach>-->
+        <!--</when>-->
+        <!--&lt;!&ndash;指定不查询的字段&ndash;&gt;-->
+        <!--<when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">-->
+        <!--<foreach item="item" index="index" collection="$fields" open=" " separator="," close="">-->
+        <!--<if test="!(item in excludes)">-->
+        <!--<bind name="fieldHasLen" value="true"/>-->
+        <!--${$tableName}.${item} as "${item}"-->
+        <!--</if>-->
+        <!--</foreach>-->
+        <!--</when>-->
+        <!--<otherwise><bind name="fieldHasLen" value="true"/>*-->
+        <!--</otherwise>-->
+        <!--</choose>-->
+        <!--<if test="!fieldHasLen">*</if>-->
+    </sql>
+
+    <!--生成修改字段-->
+    <sql id="buildUpdateField">
+        <set>
+            <choose>
+                <!--指定要修改的字段-->
+                <when test="includes!=null and includes.size()>0">
+                    <foreach item="item" index="index" collection="includes" open="" separator="," close="">
+                        <if test="item in $fields">
+                            ${item}=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                        </if>
+                    </foreach>
+                </when>
+                <!--指定不修改的字段-->
+                <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
+                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
+                        <if test="!(item in excludes)">
+                            ${item}= #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                        </if>
+                    </foreach>
+                </when>
+                <!--修改所有-->
+                <otherwise>
+                    <foreach item="item" index="index" collection="$fields" open=" " separator="," close="">
+                        <if test="data[item] != null">
+                            ${item}=#{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                        </if>
+                    </foreach>
+                </otherwise>
+            </choose>
+        </set>
+    </sql>
+
+    <!--生成插入字段-->
+    <sql id="buildInsertField">
+        <choose>
+            <when test="includes!=null and includes.size()>0">
+                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
+                    <if test="item in $fields">${item}</if>
+                </foreach>
+            </when>
+            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+                    <if test="!(item in excludes)">${item}</if>
+                </foreach>
+            </when>
+            <otherwise>
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">${item}</foreach>
+            </otherwise>
+        </choose>
+    </sql>
+
+    <!--生成插入值-->
+    <sql id="buildInsertValues">
+        <choose>
+            <when test="includes!=null and includes.size()>0">
+                <foreach item="item" index="index" collection="includes" open="(" separator="," close=")">
+                    <if test="item in $fields">
+                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                    </if>
+                </foreach>
+            </when>
+            <when test="(includes==null or includes.size()==0) and excludes!=null and excludes.size()>0">
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+                    <if test="!(item in excludes)">
+                        #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                    </if>
+                </foreach>
+            </when>
+            <otherwise>
+                <foreach item="item" index="index" collection="$fields" open="(" separator="," close=")">
+                    #{data.${item},jdbcType=${$fieldsInfo[item]['jdbcType']}}
+                </foreach>
+            </otherwise>
+        </choose>
+    </sql>
+
+    <!--生成排序字段-->
+    <sql id="buildSortField">
+        <bind name="fieldHasLen" value="false"/>
+        <choose>
+            <!--指定排序的字段-->
+            <when test="sortField!=null and sortField.size()>0">
+                <foreach item="item" index="index" collection="sortField" open="" separator="," close="">
+                    <if test="item in $fields">
+                        <if test="!fieldHasLen">order by</if>${$tableName}.${item}
+                        <bind name="fieldHasLen" value="true"/>
+                    </if>
+                </foreach>
+                <if test="fieldHasLen">${sortOrder}</if>
+            </when>
+        </choose>
+    </sql>
+
+    <!--生成查询sql-->
+    <sql id="buildSelectSql">
+        select
+        <include refid="BasicMapper.buildSelectField"/>
+        from ${$tableName}
+        <where>
+            <include refid="BasicMapper.buildWhereV2"/>
+            <!--<include refid="BasicMapper.buildWhere"/>-->
+        </where>
+        <include refid="BasicMapper.buildSortField"/>
+    </sql>
+
+    <!--生成InsertSql-->
+    <sql id="buildInsertSql">
+        insert into ${$tableName}
+        <include refid="BasicMapper.buildInsertField"/>
+        values
+        <include refid="BasicMapper.buildInsertValues"/>
+    </sql>
+
+    <!--生成UpdateSql-->
+    <sql id="buildUpdateSql">
+        update ${$tableName}
+        <include refid="BasicMapper.buildUpdateField"/>
+        <where>
+            <include refid="BasicMapper.buildWhereV2"/>
+            <!--<include refid="BasicMapper.buildWhere"/>-->
+            <if test="terms.size()==0">
+                u_id=#{data.u_id}
+            </if>
+        </where>
+    </sql>
+
+    <!--生成查询数量sql-->
+    <sql id="buildTotalSql">
+        select count(0) as "total" from ${$tableName}
+        <where>
+            <include refid="BasicMapper.buildWhereV2"/>
+            <!--<include refid="BasicMapper.buildWhere"/>-->
+        </where>
+    </sql>
+</mapper>

+ 71 - 0
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/classified/ClassifiedMapper.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="org.hsweb.web.dao.classified.ClassifiedMapper">
+    <resultMap id="ClassifiedResultMap" type="org.hsweb.web.bean.po.classified.Classified">
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+            <result property="name" column="name" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="remark" column="remark" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="type" column="type" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="parentId" column="parent_id" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="icon" column="icon" javaType="java.lang.String" jdbcType="VARCHAR"/>
+            <result property="config" column="config" javaType="java.lang.String" jdbcType="CLOB"/>
+            <result property="sortIndex" column="sort_index" javaType="int" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <!--字段配置-->
+    <sql id="fieldConfig">
+        <bind name="$fieldsInfo"
+              value="#{
+                    'id':#{'column':'id','jdbcType':'VARCHAR','javaType':'String'}
+                    ,'name':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'remark':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'type':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'parent_id':#{'property':'parentId','jdbcType':'VARCHAR','javaType':'String'}
+                    ,'icon':#{'jdbcType':'VARCHAR','javaType':'String'}
+                    ,'config':#{'jdbcType':'CLOB','javaType':'String'}
+                    ,'sort_index':#{'jdbcType':'INTEGER','javaType':'int'}
+                    }"/>
+
+        <bind name="$fields" value="$fieldsInfo.keySet()"/>
+    </sql>
+
+    <!--表名-->
+    <sql id="tableName">
+        <bind name="$tableName" value="'s_classified'"/>
+    </sql>
+
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildInsertSql"/>
+    </insert>
+
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+        delete from s_classified where u_id=#{term.primaryKey}
+    </delete>
+
+    <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildUpdateSql"/>
+    </update>
+
+    <select id="selectByPk" parameterType="string" resultMap="ClassifiedResultMap">
+        select * from s_classified where u_id=#{id}
+    </select>
+
+    <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ClassifiedResultMap">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildSelectSql"/>
+    </select>
+
+    <select id="total" parameterType="org.hsweb.web.bean.common.QueryParam" resultType="int">
+        <include refid="fieldConfig"/>
+        <include refid="tableName"/>
+        <include refid="BasicMapper.buildTotalSql"/>
+    </select>
+</mapper>

+ 7 - 9
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/config/ConfigMapper.xml

@@ -5,12 +5,10 @@
 
 <mapper namespace="org.hsweb.web.dao.config.ConfigMapper">
     <resultMap id="ConfigResultMap" type="Config">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
-        <result property="u_id" column="u_id" javaType="String" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
         <result property="content" column="content" javaType="String" jdbcType="VARCHAR"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
-        <result property="update_date" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
     </resultMap>
 
@@ -18,11 +16,11 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'content':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'create_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
-                    ,'update_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'update_date':#{'property':'updateDate','jdbcType':'TIMESTAMP','javaType':'date'}
                      ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
                     }"/>
 
@@ -33,7 +31,7 @@
         <bind name="$tableName" value="'s_config'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -50,7 +48,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="ConfigResultMap">
-        select * from s_config where u_id=#{u_id}
+        select * from s_config where u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ConfigResultMap">

+ 20 - 16
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/form/FormMapper.xml

@@ -5,7 +5,7 @@
 
 <mapper namespace="org.hsweb.web.dao.form.FormMapper">
     <resultMap id="FormResultMap" type="Form">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="html" column="html" javaType="String" jdbcType="VARCHAR"/>
         <result property="meta" column="meta" javaType="String" jdbcType="VARCHAR"/>
@@ -15,26 +15,26 @@
         <result property="revision" column="revision" javaType="int" jdbcType="INTEGER"/>
         <result property="release" column="release" javaType="int" jdbcType="INTEGER"/>
         <result property="using" column="using" javaType="boolean" jdbcType="INTEGER"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
-        <result property="update_date" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="updateDate" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'html':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'meta':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'config':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'version':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'revision':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'release':#{'jdbcType':'INTEGER','javaType':'number'}
+                    ,'version':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'revision':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'release':#{'jdbcType':'INTEGER','javaType':'int'}
                     ,'using':#{'jdbcType':'INTEGER','javaType':'boolean'}
-                    ,'create_date':#{'jdbcType':'VARCHAR','javaType':'date'}
-                    ,'update_date':#{'jdbcType':'VARCHAR','javaType':'date'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'VARCHAR','javaType':'date'}
+                    ,'update_date':#{'property':'updateDate','jdbcType':'VARCHAR','javaType':'date'}
                     }"/>
 
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
@@ -45,7 +45,7 @@
         <bind name="$tableName" value="'s_form'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -62,7 +62,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="FormResultMap">
-        select * from s_form WHERE u_id=#{u_id}
+        select * from s_form WHERE u_id=#{id}
     </select>
 
     <select id="selectUsing" parameterType="string" resultMap="FormResultMap">
@@ -70,17 +70,21 @@
     </select>
 
     <select id="selectLatestList" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="FormResultMap">
-        <include refid="fieldConfig"/><!--定义字段配置-->
-        <bind name="$tableName" value="'t2'"/><!--定义表名-->
+        <include refid="fieldConfig"/>
+        <!--定义字段配置-->
+        <bind name="$tableName" value="'t2'"/>
+        <!--定义表名-->
         select
-        <include refid="BasicMapper.buildSelectField"/> <!--动态生成要查询的字段-->
+        <!--动态生成要查询的字段-->
+        <include refid="BasicMapper.buildSelectField"/>
         from (
         select s_form.name,max(s_form.version) as version from s_form s_form
         <include refid="tableName"/>
         <where>
-            <include refid="BasicMapper.buildWhere"/> <!--动态查询条件-->
+            <!--动态查询条件-->
+            <include refid="BasicMapper.buildWhere"/>
         </where>
-        group by name ) t1
+        group by name) t1
         left join s_form t2 on t1.name=t2.name and t1.version =t2.version
         <bind name="$tableName" value="'t2'"/>
         <include refid="BasicMapper.buildSortField"/>

+ 16 - 16
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/history/HistoryMapper.xml

@@ -5,30 +5,30 @@
 
 <mapper namespace="org.hsweb.web.dao.history.HistoryMapper">
     <resultMap id="HistoryResultMap" type="History">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
         <result property="describe" column="describe" javaType="String" jdbcType="VARCHAR"/>
-        <result property="primary_key_name" column="primary_key_name" javaType="String" jdbcType="VARCHAR"/>
-        <result property="primary_key_value" column="primary_key_value" javaType="String" jdbcType="VARCHAR"/>
-        <result property="change_before" column="change_before" javaType="String" jdbcType="VARCHAR"/>
-        <result property="change_after" column="change_after" javaType="String" jdbcType="INTEGER"/>
-        <result property="creator_id" column="creator_id" javaType="String" jdbcType="VARCHAR"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="primaryKeyName" column="primary_key_name" javaType="String" jdbcType="VARCHAR"/>
+        <result property="primaryKeyValue" column="primary_key_value" javaType="String" jdbcType="VARCHAR"/>
+        <result property="changeBefore" column="change_before" javaType="String" jdbcType="VARCHAR"/>
+        <result property="changeAfter" column="change_after" javaType="String" jdbcType="INTEGER"/>
+        <result property="creatorId" column="creator_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'describe':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'primary_key_name':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'primary_key_value':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'change_before':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'change_after':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'creator_id':#{'jdbcType':'VARCHAR','javaType':'boolean'}
-                    ,'create_date':#{'jdbcType':'VARCHAR','javaType':'date'}
+                    ,'primary_key_name':#{'property':'primaryKeyName','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'primary_key_value':#{'property':'primaryKeyValue','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'change_before':#{'property':'changeBefore','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'change_after':#{'property':'changeAfter','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'creator_id':#{'property':'creatorId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'VARCHAR','javaType':'date'}
                     }"/>
 
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
@@ -39,7 +39,7 @@
         <bind name="$tableName" value="'s_history'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -56,7 +56,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="HistoryResultMap">
-        select * from s_history WHERE u_id=#{u_id}
+        select * from s_history WHERE u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="HistoryResultMap">

+ 11 - 11
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/module/ModuleMapper.xml

@@ -5,30 +5,30 @@
 
 <mapper namespace="org.hsweb.web.dao.module.ModuleMapper">
     <resultMap id="ModuleResultMap" type="Module">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="uri" column="uri" javaType="String" jdbcType="VARCHAR"/>
         <result property="icon" column="icon" javaType="String" jdbcType="VARCHAR"/>
-        <result property="p_id" column="p_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="parentId" column="p_id" javaType="String" jdbcType="VARCHAR"/>
         <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
         <result property="status" column="status" javaType="int" jdbcType="INTEGER"/>
-        <result property="m_option" column="m_option" javaType="String" jdbcType="VARCHAR"/>
-        <result property="sort_index" column="sort_index" javaType="long" jdbcType="INTEGER"/>
+        <result property="optional" column="optional" javaType="String" jdbcType="VARCHAR"/>
+        <result property="sortIndex" column="sort_index" javaType="long" jdbcType="INTEGER"/>
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'uri':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'icon':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'p_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    ,'parent_id':#{'property':'parentId','jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'m_option':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'sort_index':#{'jdbcType':'INTEGER','javaType':'number'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'optional':#{'property':'optional','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'sort_index':#{'property':'sortIndex','jdbcType':'INTEGER','javaType':'long'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>
@@ -37,7 +37,7 @@
         <bind name="$tableName" value="'s_modules'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -54,7 +54,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="ModuleResultMap">
-        select * from s_modules WHERE u_id=#{u_id}
+        select * from s_modules WHERE u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ModuleResultMap">

+ 7 - 7
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/module/ModuleMetaMapper.xml

@@ -5,10 +5,10 @@
 
 <mapper namespace="org.hsweb.web.dao.module.ModuleMetaMapper">
     <resultMap id="ModuleMetaResultMap" type="ModuleMeta">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="key" column="key" javaType="String" jdbcType="VARCHAR"/>
-        <result property="module_id" column="module_id" javaType="String" jdbcType="VARCHAR"/>
-        <result property="role_id" column="role_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="moduleId" column="module_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="roleId" column="role_id" javaType="String" jdbcType="VARCHAR"/>
         <result property="meta" column="meta" javaType="String" jdbcType="CLOB"/>
         <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
         <result property="status" column="status" javaType="int" jdbcType="INTEGER"/>
@@ -18,13 +18,13 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'key':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'module_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'role_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    ,'module_id':#{'property':'moduleId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'role_id':#{'property':'roleId','jdbcType':'VARCHAR','javaType':'string'}
                     ,'meta':#{'jdbcType':'CLOB','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>

+ 10 - 10
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/resource/ResourcesMapper.xml

@@ -5,28 +5,28 @@
 
 <mapper namespace="org.hsweb.web.dao.resource.ResourcesMapper">
     <resultMap id="ResourcesResultMap" type="Resources" >
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR" />
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR" />
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR" />
         <result property="path" column="path" javaType="String" jdbcType="VARCHAR" />
-        <result property="creator_id" column="creator_id" javaType="String" jdbcType="VARCHAR" />
+        <result property="creatorId" column="creator_id" javaType="String" jdbcType="VARCHAR" />
         <result property="md5" column="md5" javaType="String" jdbcType="VARCHAR" />
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR" />
         <result property="status" column="status" javaType="int" jdbcType="INTEGER" />
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP" />
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP" />
     </resultMap>
 
     <!--字段信息绑定-->
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'path':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'creator_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    ,'creator_id':#{'property':'creatorId','jdbcType':'VARCHAR','javaType':'string'}
                     ,'md5':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'create_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'TIMESTAMP','javaType':'date'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>
@@ -35,13 +35,13 @@
         <bind name="$tableName" value="'s_resources'"/>
     </sql>
 
-    <insert id="insert" parameterType="Resources" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="Resources" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>
 
-    <delete id="delete" parameterType="Resources" >
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
         delete from s_resources where u_id=#{term.primaryKey}
     </delete>
 
@@ -52,7 +52,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="ResourcesResultMap">
-        select * from s_resources WHERE u_id=#{u_id}
+        select * from s_resources WHERE u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="ResourcesResultMap">

+ 4 - 4
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/RoleMapper.xml

@@ -4,7 +4,7 @@
         "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.hsweb.web.dao.role.RoleMapper">
     <resultMap id="RoleResultMap" type="Role">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="remark" column="remark" javaType="String" jdbcType="VARCHAR"/>
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR"/>
@@ -16,7 +16,7 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'remark':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
@@ -29,7 +29,7 @@
         <bind name="$tableName" value="'s_role'"/>
     </sql>
 
-    <insert id="insert" parameterType="Role" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="Role" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
@@ -46,7 +46,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="RoleResultMap">
-        select * from s_role where u_id=#{u_id}
+        select * from s_role where u_id=#{id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="RoleResultMap">

+ 9 - 8
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/RoleModuleMapper.xml

@@ -5,10 +5,11 @@
 
 <mapper namespace="org.hsweb.web.dao.role.RoleModuleMapper">
     <resultMap id="RoleModuleResultMap" type="RoleModule" >
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR" />
-        <result property="module_id" column="module_id" javaType="String" jdbcType="VARCHAR" />
-        <result property="role_id" column="role_id" javaType="String" jdbcType="VARCHAR" />
-        <result property="o_level" column="o_level" javaType="String" jdbcType="VARCHAR" />
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR" />
+        <result property="moduleId" column="module_id" javaType="String" jdbcType="VARCHAR" />
+        <result property="roleId" column="role_id" javaType="String" jdbcType="VARCHAR" />
+        <result property="actions" column="actions" javaType="String" jdbcType="VARCHAR"
+                typeHandler="org.hsweb.web.mybatis.handler.JsonArrayHandler" />
         <collection property="module" column="module_id" ofType="Module" select="org.hsweb.web.dao.module.ModuleMapper.selectByPk"/>
     </resultMap>
 
@@ -16,10 +17,10 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'module_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'role_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'o_level':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'module_id':#{'property':'moduleId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'role_id':#{'property':'roleId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'actions':#{'jdbcType':'CLOB','javaType':'java.util.List'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>

+ 6 - 6
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/UserRoleMapper.xml

@@ -5,9 +5,9 @@
 
 <mapper namespace="org.hsweb.web.dao.role.UserRoleMapper">
     <resultMap id="UserRoleResultMap" type="UserRole">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
-        <result property="user_id" column="user_id" javaType="String" jdbcType="VARCHAR"/>
-        <result property="role_id" column="role_id" javaType="String" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <result property="userId" column="user_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="roleId" column="role_id" javaType="String" jdbcType="VARCHAR"/>
         <collection property="role" column="role_id" jdbcType="VARCHAR" ofType="Role"
                     select="org.hsweb.web.dao.role.RoleMapper.selectByPk"></collection>
     </resultMap>
@@ -16,9 +16,9 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'user_id':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'role_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'user_id':#{'property':'userId','jdbcType':'VARCHAR','javaType':'string'}
+                    ,'role_id':#{'property':'roleId','jdbcType':'VARCHAR','javaType':'string'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>

+ 7 - 6
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/script/DynamicScriptMapper.xml

@@ -5,7 +5,7 @@
 
 <mapper namespace="org.hsweb.web.dao.script.DynamicScriptMapper">
     <resultMap id="DynamicScriptResultMap" type="DynamicScript" >
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR" />
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR" />
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR" />
         <result property="type" column="type" javaType="String" jdbcType="VARCHAR" />
         <result property="content" column="content" javaType="String" jdbcType="VARCHAR" />
@@ -18,7 +18,7 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'type':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'content':#{'jdbcType':'VARCHAR','javaType':'string'}
@@ -32,7 +32,7 @@
 
     <!--表名-->
     <sql id="tableName">
-        <bind name="$tableName" value="'S_SCRIPT'"/>
+        <bind name="$tableName" value="'s_script'"/>
     </sql>
 
     <insert id="insert" parameterType="DynamicScript" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
@@ -41,10 +41,11 @@
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>
 
-    <delete id="delete" parameterType="UserRole">
-        delete from s_user_role where u_id=#{u_id}
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+        delete from s_script where u_id=#{term.primaryKey}
     </delete>
 
+
     <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
@@ -52,7 +53,7 @@
     </update>
 
     <select id="selectByPk" parameterType="string" resultMap="DynamicScriptResultMap">
-        SELECT * FROM S_SCRIPT WHERE u_id=#{u_id}
+        select * from s_script where u_id=#{u_id}
     </select>
 
     <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="DynamicScriptResultMap">

+ 11 - 11
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/user/UserMapper.xml

@@ -5,15 +5,15 @@
 
 <mapper namespace="org.hsweb.web.dao.user.UserMapper">
     <resultMap id="UserResultMap" type="User">
-        <id property="u_id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+        <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
         <result property="username" column="username" javaType="String" jdbcType="VARCHAR"/>
         <result property="password" column="password" javaType="String" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="email" column="email" javaType="String" jdbcType="VARCHAR"/>
         <result property="phone" column="phone" javaType="String" jdbcType="VARCHAR"/>
         <result property="status" column="status" javaType="int" jdbcType="INTEGER"/>
-        <result property="create_date" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
-        <result property="update_date" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="createDate" column="create_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
+        <result property="updateDate" column="update_date" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
         <collection property="userRoles" column="u_id" ofType="UserRole"
                     select="org.hsweb.web.dao.role.UserRoleMapper.selectByUserId"/>
     </resultMap>
@@ -21,15 +21,15 @@
     <sql id="fieldConfig">
         <bind name="$fieldsInfo"
               value="#{
-                    'u_id':#{'jdbcType':'VARCHAR','javaType':'string'}
+                    'u_id':#{'property':'id','jdbcType':'VARCHAR','javaType':'string'}
                     ,'username':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'password':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'name':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'email':#{'jdbcType':'VARCHAR','javaType':'string'}
                     ,'phone':#{'jdbcType':'VARCHAR','javaType':'string'}
-                    ,'status':#{'jdbcType':'INTEGER','javaType':'number'}
-                    ,'create_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
-                    ,'update_date':#{'jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'status':#{'jdbcType':'INTEGER','javaType':'int'}
+                    ,'create_date':#{'property':'createDate','jdbcType':'TIMESTAMP','javaType':'date'}
+                    ,'update_date':#{'property':'updateDate','jdbcType':'TIMESTAMP','javaType':'date'}
                     }"/>
         <bind name="$fields" value="$fieldsInfo.keySet()"/>
     </sql>
@@ -38,18 +38,18 @@
         <bind name="$tableName" value="'s_user'"/>
     </sql>
 
-    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="data.u_id" keyColumn="U_ID">
+    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
         <include refid="fieldConfig"/>
         <include refid="tableName"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>
 
-    <delete id="delete" parameterType="UserRole">
-        delete from s_user where u_id=#{u_id}
+    <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+        delete from s_user where u_id=#{term.primaryKey}
     </delete>
 
     <update id="updatePassword" parameterType="User">
-        update s_user set password=#{password,jdbcType=VARCHAR} where u_id = #{u_id}
+        update s_user set password=#{password,jdbcType=VARCHAR} where u_id = #{id}
     </update>
 
     <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">

+ 12 - 0
hsweb-web-dao-interface/src/main/java/org/hsweb/web/dao/classified/ClassifiedMapper.java

@@ -0,0 +1,12 @@
+package org.hsweb.web.dao.classified;
+
+import org.hsweb.web.dao.GenericMapper;
+import org.hsweb.web.bean.po.classified.Classified;
+
+/**
+* 数据映射接口
+* Created by hsweb-generator 2016-5-14 10:18:41
+*/
+public interface ClassifiedMapper extends GenericMapper<Classified,String> {
+
+}

+ 5 - 0
hsweb-web-service-impl-common/pom.xml

@@ -36,6 +36,11 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.webbuilder</groupId>
+            <artifactId>wb-office</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.codehaus.groovy</groupId>
             <artifactId>groovy-all</artifactId>

+ 3 - 3
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/AbstractServiceImpl.java

@@ -46,9 +46,9 @@ public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po,
     public PK insert(Po data) throws Exception {
         PK primaryKey = null;
         if (data instanceof GenericPo) {
-            if (((GenericPo) data).getU_id() == null)
-                ((GenericPo) data).setU_id(RandomUtil.randomChar());
-            primaryKey = (PK) ((GenericPo) data).getU_id();
+            if (((GenericPo) data).getId() == null)
+                ((GenericPo) data).setId(RandomUtil.randomChar());
+            primaryKey = (PK) ((GenericPo) data).getId();
         }
         tryValidPo(data);
         getMapper().insert(new InsertParam<>(data));

+ 27 - 0
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/classified/ClassifiedServiceImpl.java

@@ -0,0 +1,27 @@
+package org.hsweb.web.service.impl.classified;
+
+import org.hsweb.web.bean.po.classified.Classified;
+import org.hsweb.web.dao.classified.ClassifiedMapper;
+import org.hsweb.web.service.classified.ClassifiedService;
+import org.hsweb.web.service.impl.AbstractServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 数据分类服务类
+ * Created by generator
+ */
+@Service("classifiedService")
+public class ClassifiedServiceImpl extends AbstractServiceImpl<Classified, String> implements ClassifiedService {
+
+    //默认数据映射接口
+    @Resource
+    protected ClassifiedMapper classifiedMapper;
+
+    @Override
+    protected ClassifiedMapper getMapper() {
+        return this.classifiedMapper;
+    }
+
+}

+ 1 - 1
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/config/ConfigServiceImpl.java

@@ -169,7 +169,7 @@ public class ConfigServiceImpl extends AbstractServiceImpl<Config, String> imple
 
     @Override
     public String insert(Config data) throws Exception {
-        Config old = this.selectByPk(data.getU_id());
+        Config old = this.selectByPk(data.getId());
         Assert.isNull(old, "配置已存在,请勿重复添加!");
         return super.insert(data);
     }

+ 1 - 1
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DefaultFormParser.java

@@ -27,7 +27,7 @@ public class DefaultFormParser implements FormParser {
         String meta = form.getMeta();
         TableMetaData metaData = new TableMetaData();
         metaData.setName(form.getName());
-        metaData.setLocation(form.getU_id());
+        metaData.setLocation(form.getId());
         metaData.setComment(form.getRemark());
         JSONObject object = JSON.parseObject(meta);
         object.forEach((id, field) -> {

+ 151 - 11
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DynamicFormServiceImpl.java

@@ -1,6 +1,8 @@
 package org.hsweb.web.service.impl.form;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import org.hsweb.concurrent.lock.annotation.LockName;
 import org.hsweb.concurrent.lock.annotation.ReadLock;
 import org.hsweb.concurrent.lock.annotation.WriteLock;
@@ -9,6 +11,9 @@ import org.hsweb.web.bean.po.GenericPo;
 import org.hsweb.web.bean.po.form.Form;
 import org.hsweb.web.bean.po.history.History;
 import org.hsweb.web.core.Install;
+import org.hsweb.web.core.exception.BusinessException;
+import org.hsweb.web.core.exception.NotFoundException;
+import org.hsweb.web.service.form.DynamicFormDataValidator;
 import org.hsweb.web.service.form.DynamicFormService;
 import org.hsweb.web.service.form.FormService;
 import org.hsweb.web.service.history.HistoryService;
@@ -17,16 +22,22 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
+import org.webbuilder.office.excel.ExcelIO;
+import org.webbuilder.office.excel.config.Header;
 import org.webbuilder.sql.*;
 import org.webbuilder.sql.exception.CreateException;
+import org.webbuilder.sql.exception.TriggerException;
 import org.webbuilder.sql.param.ExecuteCondition;
+import org.webbuilder.sql.trigger.TriggerResult;
+import org.webbuilder.utils.script.engine.DynamicScriptEngine;
+import org.webbuilder.utils.script.engine.DynamicScriptEngineFactory;
+import org.webbuilder.utils.script.engine.ExecuteResult;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.*;
 
 /**
  * Created by zhouhao on 16-4-14.
@@ -48,6 +59,9 @@ public class DynamicFormServiceImpl implements DynamicFormService {
     @Resource
     protected HistoryService historyService;
 
+    @Autowired(required = false)
+    protected List<DynamicFormDataValidator> dynamicFormDataValidator;
+
     protected void initDefaultField(TableMetaData metaData) {
         String dataType;
         switch (Install.getDatabaseType()) {
@@ -60,12 +74,12 @@ public class DynamicFormServiceImpl implements DynamicFormService {
             default:
                 dataType = "varchar(32)";
         }
-        FieldMetaData UID = new FieldMetaData("u_id", String.class, dataType);
-        UID.setPrimaryKey(true);
-        UID.setNotNull(true);
-        UID.setComment("主键");
+        FieldMetaData id = new FieldMetaData("u_id", String.class, dataType);
+        id.setPrimaryKey(true);
+        id.setNotNull(true);
+        id.setComment("主键");
         metaData.attr("primaryKey", "u_id");
-        metaData.addField(UID);
+        metaData.addField(id);
 
     }
 
@@ -106,7 +120,7 @@ public class DynamicFormServiceImpl implements DynamicFormService {
                 dataBase.updateTable(metaData);
             }
         } else {
-            Form lastDeploy = JSON.parseObject(history.getChange_after(), Form.class);
+            Form lastDeploy = JSON.parseObject(history.getChangeAfter(), Form.class);
             TableMetaData lastDeployMetaData = formParser.parse(lastDeploy);
             initDefaultField(lastDeployMetaData);
             //向上发布
@@ -127,7 +141,9 @@ public class DynamicFormServiceImpl implements DynamicFormService {
         Table table = dataBase.getTable(name.toUpperCase());
         if (table == null)
             table = dataBase.getTable(name.toLowerCase());
-        Assert.notNull(table, "表单[" + name + "]不存在");
+        if (table == null) {
+            throw new NotFoundException("表单[" + name + "]不存在");
+        }
         return table;
     }
 
@@ -183,6 +199,29 @@ public class DynamicFormServiceImpl implements DynamicFormService {
         return pk;
     }
 
+    @Override
+    public String saveOrUpdate(String name, Map<String, Object> data) throws Exception {
+        String id = getRepeatDataId(name, data);
+        if (id != null) {
+            update(name, new UpdateMapParam(data).where(getPrimaryKeyName(name), id));
+        } else {
+            id = insert(name, new InsertMapParam(data));
+        }
+        return id;
+    }
+
+    protected String getRepeatDataId(String name, Map<String, Object> data) {
+        if (dynamicFormDataValidator != null) {
+            for (DynamicFormDataValidator validator : dynamicFormDataValidator) {
+                String id = validator.getRepeatDataId(name, data);
+                if (id != null) {
+                    return id;
+                }
+            }
+        }
+        return null;
+    }
+
     @Override
     @ReadLock
     @LockName(value = "'form.lock.'+#name", isExpression = true)
@@ -241,6 +280,107 @@ public class DynamicFormServiceImpl implements DynamicFormService {
         return query.single(proxy);
     }
 
+    @Override
+    @ReadLock
+    @LockName(value = "'form.lock.'+#name", isExpression = true)
+    public void exportExcel(String name, QueryParam param, OutputStream outputStream) throws Exception {
+        List<Object> dataList = select(name, param);
+        Table table = getTableByName(name);
+        TableMetaData metaData = table.getMetaData();
+        List<Header> headers = new LinkedList<>();
+        metaData.getFields().forEach(fieldMetaData -> {
+            ValueWrapper valueWrapper = fieldMetaData.attrWrapper("exportExcel", true);
+            if (valueWrapper.toBoolean()) {
+                String title = fieldMetaData.attrWrapper("excelHeader", fieldMetaData.getComment()).toString();
+                String field = fieldMetaData.getName();
+                headers.add(new Header(title, field));
+            }
+        });
+        if (metaData.triggerSupport("export.excel")) {
+            Map<String, Object> var = new HashMap<>();
+            var.put("dataList", dataList);
+            var.put("headers", headers);
+            metaData.on("export.excel", var);
+        }
+        ExcelIO.write(outputStream, headers, dataList);
+    }
+
+    @Override
+    @ReadLock
+    @LockName(value = "'form.lock.'+#name", isExpression = true)
+    public Map<String, Object> importExcel(String name, InputStream inputStream) throws Exception {
+        Map<String, Object> result = new HashMap<>();
+        long startTime = System.currentTimeMillis();
+        List<Map<String, Object>> excelData;
+        try {
+            excelData = ExcelIO.read2Map(inputStream);
+        } catch (Exception e) {
+            throw new BusinessException("解析excel失败,请确定文件格式正确!", e, 500);
+        }
+        List<Map<String, Object>> dataList = new LinkedList<>();
+        Map<String, String> headerMapper = new HashMap<>();
+        Table table = getTableByName(name);
+        TableMetaData metaData = table.getMetaData();
+        metaData.getFields().forEach(fieldMetaData -> {
+            ValueWrapper valueWrapper = fieldMetaData.attrWrapper("importExcel", true);
+            if (valueWrapper.toBoolean()) {
+                String title = fieldMetaData.attrWrapper("excelHeader", fieldMetaData.getComment()).toString();
+                String field = fieldMetaData.getName();
+                headerMapper.put(title, field);
+            }
+        });
+        if (metaData.triggerSupport("export.import.before")) {
+            Map<String, Object> var = new HashMap<>();
+            var.put("headerMapper", headerMapper);
+            var.put("excelData", excelData);
+            var.put("dataList", dataList);
+            metaData.on("export.excel", var);
+        } else
+            excelData.forEach(data -> {
+                Map<String, Object> newData = new HashMap<>();
+                data.forEach((k, v) -> {
+                    String field = headerMapper.get(k);
+                    if (field != null) {
+                        newData.put(field, v);
+                    } else {
+                        newData.put(k, v);
+                    }
+                });
+                dataList.add(newData);
+            });
+        List<Map<String, Object>> errorMessage = new LinkedList<>();
+        int index = 0, success = 0;
+        for (Map<String, Object> map : dataList) {
+            index++;
+            try {
+                if (metaData.triggerSupport("export.import.each")) {
+                    Map<String, Object> var = new HashMap<>();
+                    var.put("headerMapper", headerMapper);
+                    var.put("excelData", excelData);
+                    var.put("dataList", dataList);
+                    TriggerResult triggerResult = metaData.on("export.excel", var);
+                    if (!triggerResult.isSuccess()) {
+                        throw new TriggerException(triggerResult.getMessage());
+                    }
+                }
+                saveOrUpdate(name, map);
+                success++;
+            } catch (Exception e) {
+                Map<String, Object> errorMsg = new HashMap<>();
+                errorMsg.put("index", index);
+                errorMsg.put("message", e.getMessage());
+                errorMessage.add(errorMsg);
+            }
+        }
+        long endTime = System.currentTimeMillis();
+        result.put("startTime", startTime);
+        result.put("endTime", endTime);
+        result.put("total", dataList.size());
+        result.put("success", success);
+        result.put("errorMessage", errorMessage);
+        return result;
+    }
+
     public static class QueryParamProxy extends org.webbuilder.sql.param.query.QueryParam {
         public QueryParamProxy orderBy(String mode, Set<String> fields) {
             addProperty("order_by", fields);

+ 21 - 21
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormServiceImpl.java

@@ -62,37 +62,37 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
     public String createNewVersion(String oldVersionId) throws Exception {
         Form old = this.selectByPk(oldVersionId);
         Assert.notNull(old, "表单不存在!");
-        old.setU_id(RandomUtil.randomChar());
+        old.setId(RandomUtil.randomChar());
         old.setVersion(old.getVersion() + 1);
-        old.setCreate_date(new Date());
-        old.setUpdate_date(null);
+        old.setCreateDate(new Date());
+        old.setUpdateDate(null);
         old.setRevision(1);
         old.setRelease(0);
         old.setUsing(false);
         getMapper().insert(new InsertParam<>(old));
-        return old.getU_id();
+        return old.getId();
     }
 
     @Override
     public String insert(Form data) throws Exception {
         List<Form> old = this.select(new QueryParam().where("name", data.getName()));
         Assert.isTrue(old.isEmpty(), "表单 [" + data.getName() + "] 已存在!");
-        data.setCreate_date(new Date());
+        data.setCreateDate(new Date());
         data.setVersion(1);
-        if (StringUtils.isNullOrEmpty(data.getU_id()))
-            data.setU_id(RandomUtil.randomChar());
+        if (StringUtils.isNullOrEmpty(data.getId()))
+            data.setId(RandomUtil.randomChar());
         super.insert(data);
-        return data.getU_id();
+        return data.getId();
     }
 
     @Override
-    @CacheEvict(value = {CACHE_KEY}, key = "'form.'+#data.u_id")
+    @CacheEvict(value = {CACHE_KEY}, key = "'form.'+#data.id")
     public int update(Form data) throws Exception {
-        Form old = this.selectByPk(data.getU_id());
+        Form old = this.selectByPk(data.getId());
         Assert.notNull(old, "表单不存在!");
-        data.setUpdate_date(new Date());
+        data.setUpdateDate(new Date());
         data.setRevision(old.getRevision() + 1);
-        UpdateParam<Form> param = new UpdateParam<>(data).excludes("create_date", "release", "version", "using");
+        UpdateParam<Form> param = new UpdateParam<>(data).excludes("createDate", "release", "version", "using");
         return getMapper().update(param);
     }
 
@@ -147,19 +147,19 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
         //先卸载正在使用的表单
         Form using = getMapper().selectUsing(old.getName());
         if (using != null) {
-            this.unDeploy(using.getU_id());
+            this.unDeploy(using.getId());
         }
         //开始发布
         old.setUsing(true);
         dynamicFormService.deploy(old);
         old.setRelease(old.getRevision());//发布修订版本
-        getMapper().update(new UpdateParam<>(old).includes("using", "release").where("u_id", old.getU_id()));
+        getMapper().update(new UpdateParam<>(old).includes("using", "release").where("id", old.getId()));
         //加入发布历史记录
-        History history = History.newInstace("form.deploy." + old.getName());
-        history.setPrimary_key_name("u_id");
-        history.setPrimary_key_value(old.getU_id());
-        history.setChange_before("{}");
-        history.setChange_after(JSON.toJSONString(old));
+        History history = History.newInstance("form.deploy." + old.getName());
+        history.setPrimaryKeyName("id");
+        history.setPrimaryKeyValue(old.getId());
+        history.setChangeBefore("{}");
+        history.setChangeAfter(JSON.toJSONString(old));
         historyService.insert(history);
     }
 
@@ -171,7 +171,7 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
         dynamicFormService.unDeploy(old);
         old.setUsing(false);
         UpdateParam param = new UpdateParam<>(old);
-        param.includes("using").where("u_id", old.getU_id());
+        param.includes("using").where("id", old.getId());
         getMapper().update(param);
     }
 
@@ -180,7 +180,7 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
     public String createDeployHtml(String name) throws Exception {
         History history = historyService.selectLastHistoryByType("form.deploy." + name);
         Assert.notNull(history, "表单不存在");
-        return formParser.parseHtml(JSON.parseObject(history.getChange_after(), Form.class));
+        return formParser.parseHtml(JSON.parseObject(history.getChangeAfter(), Form.class));
     }
 
     @Override

+ 1 - 1
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/history/HistoryServiceImpl.java

@@ -28,7 +28,7 @@ public class HistoryServiceImpl extends AbstractServiceImpl<History, String> imp
         QueryParam queryParam = new QueryParam()
                 .where("type", type)
                 .doPaging(0, 1)
-                .orderBy("create_date").desc();
+                .orderBy("createDate").desc();
         List<History> history = historyMapper.select(queryParam);
         if (history.size() == 1) return history.get(0);
         return null;

+ 0 - 21
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/module/ModuleServiceImpl.java

@@ -27,27 +27,6 @@ public class ModuleServiceImpl extends AbstractServiceImpl<Module, String> imple
         return this.moduleMapper;
     }
 
-    @Override
-    public int update(List<Module> datas) throws Exception {
-        int size = 0;
-        for (Module module : datas) {
-            tryValidPo(module);
-            boolean doUpdate = (this.selectByPk(module.getOld_id()) != null);
-            if (!module.getU_id().equals(module.getOld_id())) {
-                if (doUpdate && this.selectByPk(module.getU_id()) != null) {
-                    throw new BusinessException(String.format("标识:%s已存在", module.getU_id()));
-                }
-            }
-            if (doUpdate) {
-                size += this.update(module);
-            } else {
-                this.insert(module);
-                size++;
-            }
-        }
-        return size;
-    }
-
     @Override
     public List<Module> selectByPid(String pid) throws Exception {
         return this.select(new QueryParam().where("p_id", pid));

+ 37 - 5
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/resource/FileServiceImpl.java

@@ -7,6 +7,7 @@ package org.hsweb.web.service.impl.resource;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.hsweb.web.bean.po.resource.Resources;
 import org.hsweb.web.bean.po.user.User;
+import org.hsweb.web.core.exception.NotFoundException;
 import org.hsweb.web.service.config.ConfigService;
 import org.hsweb.web.service.resource.FileService;
 import org.hsweb.web.service.resource.ResourcesService;
@@ -28,10 +29,41 @@ public class FileServiceImpl implements FileService {
     @Resource
     protected ResourcesService resourcesService;
 
+    public String getFileBasePath() {
+        return configService.get("upload", "basePath", "./upload").trim();
+    }
+
+    @Override
+    public InputStream readResources(String resourceId) throws Exception {
+        Resources resources = resourcesService.selectByPk(resourceId);
+        if (resources == null) throw new NotFoundException("文件不存在");
+        return readResources(resources);
+    }
+
+    @Override
+    public InputStream readResources(Resources resources) throws Exception {
+        String fileBasePath = getFileBasePath();
+        File file = new File(fileBasePath.concat(resources.getPath().concat("/".concat(resources.getMd5()))));
+        if (!file.canRead()) {
+            throw new NotFoundException("文件不存在");
+        }
+        return new FileInputStream(file);
+    }
+
+    @Override
+    public void writeResources(Resources resources, OutputStream outputStream) throws Exception {
+        try (InputStream inputStream = readResources(resources)) {
+            byte b[] = new byte[2048 * 10];
+            while ((inputStream.read(b)) != -1) {
+                outputStream.write(b);
+            }
+        }
+    }
+
     @Transactional(rollbackFor = Throwable.class)
     public Resources saveFile(InputStream is, String fileName) throws Exception {
         //配置中的文件上传根路径
-        String fileBasePath = configService.get("upload", "basePath", "/upload").trim();
+        String fileBasePath = getFileBasePath();
         //文件存储的相对路径,以日期分隔,每天创建一个新的目录
         String filePath = "/file/".concat(DateTimeUtils.format(new Date(), DateTimeUtils.YEAR_MONTH_DAY));
         //文件存储绝对路径
@@ -70,18 +102,18 @@ public class FileServiceImpl implements FileService {
         resources.setStatus(1);
         resources.setPath(filePath);
         resources.setMd5(md5);
-        resources.setCreate_date(new Date());
+        resources.setCreateDate(new Date());
         resources.setType("file");
         resources.setName(fileName);
         try {
             User user = WebUtil.getLoginUser();
             if (user != null) {
-                resources.setCreator_id(user.getU_id());
+                resources.setCreatorId(user.getId());
             } else {
-                resources.setCreator_id("-1");
+                resources.setCreatorId("1");
             }
         } catch (Exception e) {
-            resources.setCreator_id("-1");
+            resources.setCreatorId("1");
         }
 
         resourcesService.insert(resources);

+ 8 - 13
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/resource/ResourcesServiceImpl.java

@@ -2,17 +2,16 @@ package org.hsweb.web.service.impl.resource;
 
 import org.hsweb.web.bean.common.QueryParam;
 import org.hsweb.web.bean.po.resource.Resources;
+import org.hsweb.web.core.utils.RandomUtil;
 import org.hsweb.web.dao.resource.ResourcesMapper;
 import org.hsweb.web.service.config.ConfigService;
 import org.hsweb.web.service.impl.AbstractServiceImpl;
 import org.hsweb.web.service.resource.ResourcesService;
-import org.hsweb.web.core.utils.RandomUtil;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.List;
 
 /**
  * 资源服务类
@@ -50,27 +49,23 @@ public class ResourcesServiceImpl extends AbstractServiceImpl<Resources, String>
     @Cacheable(value = CACHE_KEY, key = "'md5.'+#md5")
     @Transactional(readOnly = true)
     public Resources selectByMd5(String md5) throws Exception {
-        List<Resources> resources = this.select(new QueryParam().where("md5", md5));
-        if (resources != null && resources.size() > 0)
-            return resources.get(0);
-        return null;
+        return this.selectSingle(new QueryParam().where("md5", md5));
     }
 
-
     @Override
     @Transactional(rollbackFor = Throwable.class)
     public String insert(Resources data) throws Exception {
-        data.setU_id(this.newUid(6));//6位随机id
+        data.setId(this.newid(6));//6位随机id
         return super.insert(data);
     }
 
-    public String newUid(int len) throws Exception {
-        String uid = RandomUtil.randomChar(len);
+    public String newid(int len) throws Exception {
+        String id = RandomUtil.randomChar(len);
         for (int i = 0; i < 10; i++) {
-            if (this.selectByPk(uid) == null) {
-                return uid;
+            if (this.selectByPk(id) == null) {
+                return id;
             }
         }  //如果10次存在重复则位数+1
-        return newUid(len + 1);
+        return newid(len + 1);
     }
 }

+ 5 - 5
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/role/RoleServiceImpl.java

@@ -43,8 +43,8 @@ public class RoleServiceImpl extends AbstractServiceImpl<Role, String> implement
         if (roleModule != null && roleModule.size() > 0) {
             //保存角色模块关联
             for (RoleModule module : roleModule) {
-                module.setU_id(RandomUtil.randomChar(6));
-                module.setRole_id(data.getU_id());
+                module.setId(RandomUtil.randomChar(6));
+                module.setRoleId(data.getId());
                 roleModuleMapper.insert(new InsertParam<>(module));
             }
         }
@@ -57,11 +57,11 @@ public class RoleServiceImpl extends AbstractServiceImpl<Role, String> implement
         List<RoleModule> roleModule = data.getModules();
         if (roleModule != null && roleModule.size() > 0) {
             //先删除所有roleModule
-            roleModuleMapper.deleteByRoleId(data.getU_id());
+            roleModuleMapper.deleteByRoleId(data.getId());
             //保存角色模块关联
             for (RoleModule module : roleModule) {
-                module.setU_id(RandomUtil.randomChar(6));
-                module.setRole_id(data.getU_id());
+                module.setId(RandomUtil.randomChar(6));
+                module.setRoleId(data.getId());
                 roleModuleMapper.insert(new InsertParam<>(module));
             }
         }

+ 3 - 3
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/script/DynamicScriptServiceImpl.java

@@ -39,7 +39,7 @@ public class DynamicScriptServiceImpl extends AbstractServiceImpl<DynamicScript,
     }
 
     @Override
-    @CacheEvict(value = CACHE_KEY, key = "'script.'+#data.u_id")
+    @CacheEvict(value = CACHE_KEY, key = "'script.'+#data.id")
     public int update(DynamicScript data) throws Exception {
         int i = super.update(data);
         return i;
@@ -64,7 +64,7 @@ public class DynamicScriptServiceImpl extends AbstractServiceImpl<DynamicScript,
         DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(script.getType());
         try {
             if(engine==null)throw new BusinessException("不支持的脚本语言:"+script.getType());
-            engine.compile(script.getU_id(), script.getContent());
+            engine.compile(script.getId(), script.getContent());
         } catch (Exception e) {
             logger.error("compile error!", e);
         }
@@ -75,7 +75,7 @@ public class DynamicScriptServiceImpl extends AbstractServiceImpl<DynamicScript,
         for (DynamicScript script : list) {
             DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(script.getType());
             if(engine==null)throw new BusinessException("不支持的脚本语言:"+script.getType());
-            engine.compile(script.getU_id(), script.getContent());
+            engine.compile(script.getId(), script.getContent());
         }
     }
 

+ 17 - 17
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/user/UserServiceImpl.java

@@ -51,18 +51,18 @@ public class UserServiceImpl extends AbstractServiceImpl<User, String> implement
     public String insert(User data) throws Exception {
         tryValidPo(data);
         Assert.isNull(selectByUserName(data.getUsername()), "用户已存在!");
-        data.setU_id(RandomUtil.randomChar(6));
-        data.setCreate_date(new Date());
-        data.setUpdate_date(new Date());
+        data.setId(RandomUtil.randomChar(6));
+        data.setCreateDate(new Date());
+        data.setUpdateDate(new Date());
         data.setPassword(MD5.encode(data.getPassword()));
         data.setStatus(1);
         userMapper.insert(new InsertParam<>(data));
-        String id = data.getU_id();
+        String id = data.getId();
         //添加角色关联
         if (data.getUserRoles().size() != 0) {
             for (UserRole userRole : data.getUserRoles()) {
-                userRole.setU_id(RandomUtil.randomChar());
-                userRole.setUser_id(data.getU_id());
+                userRole.setId(RandomUtil.randomChar());
+                userRole.setUserId(data.getId());
                 userRoleMapper.insert(new InsertParam<>(userRole));
             }
         }
@@ -73,21 +73,21 @@ public class UserServiceImpl extends AbstractServiceImpl<User, String> implement
     public int update(User data) throws Exception {
         tryValidPo(data);
         User old = this.selectByUserName(data.getUsername());
-        if (old != null && !old.getU_id().equals(data.getU_id())) {
+        if (old != null && !old.getId().equals(data.getId())) {
             throw new BusinessException("用户名已存在!");
         }
-        data.setUpdate_date(new Date());
+        data.setUpdateDate(new Date());
         if (!"$default".equals(data.getPassword())) {
             data.setPassword(MD5.encode(data.getPassword()));
             userMapper.updatePassword(data);
         }
-        int i = userMapper.update(new UpdateParam<>(data).excludes("status","password","create_date"));
+        int i = userMapper.update(new UpdateParam<>(data).excludes("status","password","createDate"));
         if (data.getUserRoles().size() != 0) {
             //删除所有
-            userRoleMapper.deleteByUserId(data.getU_id());
+            userRoleMapper.deleteByUserId(data.getId());
             for (UserRole userRole : data.getUserRoles()) {
-                userRole.setU_id(RandomUtil.randomChar());
-                userRole.setUser_id(data.getU_id());
+                userRole.setId(RandomUtil.randomChar());
+                userRole.setUserId(data.getId());
                 userRoleMapper.insert(new InsertParam<>(userRole));
             }
         }
@@ -97,18 +97,18 @@ public class UserServiceImpl extends AbstractServiceImpl<User, String> implement
     @Override
     public void initAdminUser(User user) throws Exception {
         QueryParam queryParam = new QueryParam();
-        queryParam.orderBy("sort_index");
+        queryParam.orderBy("sortIndex");
         List<Module> modules = moduleService.select(queryParam);
         Map<Module, Set<String>> roleInfo = new LinkedHashMap<>();
         for (Module module : modules) {
-            roleInfo.put(module, new LinkedHashSet<>(module.getM_optionMap().keySet()));
+            roleInfo.put(module, new LinkedHashSet<>(module.getOptionalMap().keySet()));
         }
         user.setRoleInfo(roleInfo);
     }
 
     @Override
     public void initGuestUser(User user) throws Exception {
-        List<UserRole> userRoles = userRoleMapper.select(new QueryParam().where("role_id", "guest"));
+        List<UserRole> userRoles = userRoleMapper.select(new QueryParam().where("roleId", "guest"));
         user.setUserRoles(userRoles);
         user.initRoleInfo();
     }
@@ -118,7 +118,7 @@ public class UserServiceImpl extends AbstractServiceImpl<User, String> implement
         User user = selectByPk(id);
         if (user == null) throw new NotFoundException("用户不存在!");
         user.setStatus(1);
-        getMapper().update(new UpdateParam<>(user).includes("status").where("u_id", id));
+        getMapper().update(new UpdateParam<>(user).includes("status").where("id", id));
     }
 
     @Override
@@ -126,7 +126,7 @@ public class UserServiceImpl extends AbstractServiceImpl<User, String> implement
         User user = selectByPk(id);
         if (user == null) throw new NotFoundException("用户不存在!");
         user.setStatus(-1);
-        getMapper().update(new UpdateParam<>(user).includes("status").where("u_id", id));
+        getMapper().update(new UpdateParam<>(user).includes("status").where("id", id));
     }
 
     @Override

+ 21 - 16
hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/form/FormServiceImplTest.java

@@ -3,6 +3,7 @@ package org.hsweb.web.service.impl.form;
 import org.hsweb.web.core.authorize.ExpressionScopeBean;
 import org.hsweb.web.bean.po.form.Form;
 import org.hsweb.web.core.exception.BusinessException;
+import org.hsweb.web.service.form.DynamicFormService;
 import org.hsweb.web.service.form.FormService;
 import org.hsweb.web.service.impl.AbstractTestCase;
 import org.hsweb.web.core.utils.RandomUtil;
@@ -17,6 +18,7 @@ import org.webbuilder.sql.param.insert.InsertParam;
 import org.webbuilder.sql.param.query.QueryParam;
 import org.webbuilder.sql.param.update.UpdateParam;
 import org.webbuilder.sql.support.executor.SqlExecutor;
+import org.webbuilder.utils.file.FileUtils;
 
 import javax.annotation.Resource;
 import java.util.Date;
@@ -31,7 +33,8 @@ public class FormServiceImplTest extends AbstractTestCase {
 
     @Resource
     protected FormService formService;
-
+    @Resource
+    private DynamicFormService dynamicFormService;
     @Resource
     protected DataBase dataBase;
 
@@ -47,13 +50,13 @@ public class FormServiceImplTest extends AbstractTestCase {
             "{" +
                     "\"id1\":[" +
                     "{\"key\":\"name\",\"value\":\"u_id\",\"describe\":\"名称\"}," +
-                    "{\"key\":\"comment\",\"value\":\"ID\",\"describe\":\"字段描述\"}," +
+                    "{\"key\":\"comment\",\"value\":\"ID\",\"describe\":\"ID\"}," +
                     "{\"key\":\"javaType\",\"value\":\"string\",\"describe\":\"java类型\"}," +
                     "{\"key\":\"dataType\",\"value\":\"varchar2(32)\",\"describe\":\"数据库类型\"}" +
                     "]" +
                     ",\"id2\":[" +
                     "{\"key\":\"name\",\"value\":\"name\",\"describe\":\"名称\"}," +
-                    "{\"key\":\"comment\",\"value\":\"test\",\"describe\":\"字段描述\"}," +
+                    "{\"key\":\"comment\",\"value\":\"姓名\",\"describe\":\"姓名\"}," +
                     "{\"key\":\"javaType\",\"value\":\"string\",\"describe\":\"java类型\"}," +
                     "{\"key\":\"validator-list\",\"value\":\"[{\\\"validator\\\":\\\"NotNull\\\"}]\",,\"describe\":\"java类型\"}," +
                     "{\"key\":\"dataType\",\"value\":\"varchar2(32)\",\"describe\":\"数据库类型\"}" +
@@ -62,19 +65,19 @@ public class FormServiceImplTest extends AbstractTestCase {
             "{" +
                     "\"id1\":[" +
                     "{\"key\":\"name\",\"value\":\"u_id\",\"describe\":\"名称\"}," +
-                    "{\"key\":\"comment\",\"value\":\"ID\",\"describe\":\"字段描述\"}," +
+                    "{\"key\":\"comment\",\"value\":\"ID\",\"describe\":\"ID\"}," +
                     "{\"key\":\"javaType\",\"value\":\"string\",\"describe\":\"java类型\"}," +
                     "{\"key\":\"dataType\",\"value\":\"varchar2(32)\",\"describe\":\"数据库类型\"}" +
                     "]" +
                     ",\"id2\":[" +
                     "{\"key\":\"name\",\"value\":\"name\",\"describe\":\"名称\"}," +
-                    "{\"key\":\"comment\",\"value\":\"test\",\"describe\":\"字段描述\"}," +
+                    "{\"key\":\"comment\",\"value\":\"姓名\",\"describe\":\"字段描述\"}," +
                     "{\"key\":\"javaType\",\"value\":\"string\",\"describe\":\"java类型\"}," +
                     "{\"key\":\"dataType\",\"value\":\"varchar2(32)\",\"describe\":\"数据库类型\"}" +
                     "]" +
                     ",\"id3\":[" +
                     "{\"key\":\"name\",\"value\":\"sex\",\"describe\":\"名称\"}," +
-                    "{\"key\":\"comment\",\"value\":\"test\",\"describe\":\"性别\"}," +
+                    "{\"key\":\"comment\",\"value\":\"性别\",\"describe\":\"性别\"}," +
                     "{\"key\":\"javaType\",\"value\":\"string\",\"describe\":\"java类型\"}," +
                     "{\"key\":\"dataType\",\"value\":\"varchar2(32)\",\"describe\":\"数据库类型\"}" +
                     "]" +
@@ -85,20 +88,19 @@ public class FormServiceImplTest extends AbstractTestCase {
     public void setup() throws Exception {
         form = new Form();
         form.setName("test_form");
-        form.setCreate_date(new Date());
-        form.setHtml("<input field-id='id1'/><input field-id='id2'/>");
+        form.setCreateDate(new Date());
+        form.setHtml("<input fieldId='id1'/><input fieldId='id2'/>");
         form.setMeta(meta[0]);
-        form.setU_id(RandomUtil.randomChar());
+        form.setId(RandomUtil.randomChar());
         formService.insert(form);
     }
 
     @Test
     public void testDeploy() throws Exception {
-        //部署
-        formService.deploy(form.getU_id());
-            dataBase.getTable("test_form").createInsert()
-                    .insert(new InsertParam().value("u_id", "test").value("name","张三"));
-        dataBase.getTable("test_form").createUpdate().update(new UpdateParam().set("u_id","test2").where("u_id","test"));
+        formService.deploy(form.getId());
+        dataBase.getTable("test_form").createInsert()
+                .insert(new InsertParam().value("u_id", "test").value("name", "张三"));
+        dataBase.getTable("test_form").createUpdate().update(new UpdateParam().set("u_id", "test2").where("u_id", "test"));
 
         Map<String, Object> data = dataBase.getTable("test_form")
                 .createQuery().single(new QueryParam().where("name$LIKE", "张三"));
@@ -106,12 +108,15 @@ public class FormServiceImplTest extends AbstractTestCase {
         Assert.assertEquals("张三", data.get("name"));
         Assert.assertEquals("test2", data.get("u_id"));
         formService.createDeployHtml(form.getName());
-        formService.deploy(form.getU_id());
+        formService.deploy(form.getId());
         formService.createDeployHtml(form.getName());
 
         form.setMeta(meta[1]);
         formService.update(form);
-        formService.deploy(form.getU_id());
+        formService.deploy(form.getId());
+
+        formService.selectLatestList(new org.hsweb.web.bean.common.QueryParam());
+        dynamicFormService.importExcel("test_form", FileUtils.getResourceAsStream("test.xlsx"));
     }
 
 

+ 25 - 7
hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/system/DataBaseManagerServiceImplTest.java

@@ -1,22 +1,28 @@
 package org.hsweb.web.service.impl.system;
 
+import com.alibaba.fastjson.JSON;
+import org.hsweb.web.bean.common.InsertParam;
 import org.hsweb.web.bean.common.QueryParam;
 import org.hsweb.web.bean.common.Term;
+import org.hsweb.web.bean.common.UpdateParam;
 import org.hsweb.web.bean.po.module.Module;
+import org.hsweb.web.bean.po.role.RoleModule;
+import org.hsweb.web.bean.po.user.User;
+import org.hsweb.web.dao.role.RoleMapper;
+import org.hsweb.web.dao.role.RoleModuleMapper;
 import org.hsweb.web.dao.user.UserMapper;
 import org.hsweb.web.service.impl.AbstractTestCase;
 import org.hsweb.web.service.module.ModuleMetaService;
 import org.hsweb.web.service.module.ModuleService;
 import org.hsweb.web.service.system.DataBaseManagerService;
 import org.junit.Test;
+import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
 import org.webbuilder.sql.support.common.CommonSql;
 import org.webbuilder.sql.support.executor.HashMapWrapper;
 import org.webbuilder.sql.support.executor.SqlExecutor;
 
 import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Created by zhouhao on 16-4-21.
@@ -34,11 +40,14 @@ public class DataBaseManagerServiceImplTest extends AbstractTestCase {
     @Resource
     private UserMapper userMapper;
 
+    @Resource
+    private RoleModuleMapper roleModuleMapper;
+
     @Test
     public void test() throws Exception {
         QueryParam queryParam = new QueryParam();
         Term term = queryParam.select("username", "password")
-                .where("create_date$GT", "2015-12-10")
+                .where("createDate$GT", "2015-12-10")
                 .nest();
         term = term.nest("username", "admin").or("username", "test").nest();
         term = term.nest();
@@ -46,14 +55,23 @@ public class DataBaseManagerServiceImplTest extends AbstractTestCase {
         term.nest("status$IN", "2,3,4").and("status$LT", "1");
         term.and("username$EMPTY", true);
         queryParam.orderBy("create_date").desc();
-        System.out.println(queryParam);
+        queryParam.orderBy("status").asc();
         userMapper.select(queryParam);
+        User user = userMapper.selectByPk("admin");
+        user.setId("aaaa");
+        userMapper.insert(new InsertParam<>(user));
+        userMapper.update(new UpdateParam<>(user).includes("username"));
     }
 
     @Test
     public void testGetFieldList() throws Exception {
-        moduleMetaService.selectByKeyAndRoleId("test","userRole");
-
+        RoleModule roleModule = new RoleModule();
+        roleModule.setId("aaa");
+        roleModule.setActions(Arrays.asList("A","B"));
+        roleModule.setModuleId("aaa");
+        roleModuleMapper.insert(new InsertParam<>(roleModule));
+        roleModuleMapper.update(new UpdateParam<>(roleModule).includes("actions"));
+        System.out.println(JSON.toJSONString(roleModuleMapper.select(new QueryParam())));;
     }
 
     @Test

+ 1 - 0
hsweb-web-service-impl-common/src/test/resources/application.yml

@@ -30,3 +30,4 @@ mybatis:
     type-aliases-package: org.hsweb.web.bean.po
     mapper-locations: classpath*:org/hsweb/web/dao/impl/mybatis/mapper/oracle/**/*.xml
     config: classpath:mybatis-config.xml
+    typeHandlersPackage: org.hsweb.web.mybatis.handler

+ 0 - 1
hsweb-web-service-impl-common/src/test/resources/mybatis-config.xml

@@ -50,5 +50,4 @@
         <setting name="aggressiveLazyLoading" value="false"/>
         <setting name="proxyFactory" value="CGLIB"/>
     </settings>
-
 </configuration>

BIN
hsweb-web-service-impl-common/src/test/resources/test.xlsx


+ 13 - 0
hsweb-web-service-interface/src/main/java/org/hsweb/web/service/classified/ClassifiedService.java

@@ -0,0 +1,13 @@
+package org.hsweb.web.service.classified;
+
+import org.hsweb.web.bean.po.classified.Classified;
+import org.hsweb.web.service.GenericService;
+
+/**
+* 服务类
+* Created by generator 
+*/
+public interface ClassifiedService extends GenericService<Classified,String> {
+
+
+}

+ 10 - 0
hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/DynamicFormDataValidator.java

@@ -0,0 +1,10 @@
+package org.hsweb.web.service.form;
+
+import java.util.Map;
+
+/**
+ * Created by zhouhao on 16-5-16.
+ */
+public interface DynamicFormDataValidator {
+    String getRepeatDataId(String tableName, Map<String, Object> data);
+}

+ 8 - 0
hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/DynamicFormService.java

@@ -3,6 +3,8 @@ package org.hsweb.web.service.form;
 import org.hsweb.web.bean.common.*;
 import org.hsweb.web.bean.po.form.Form;
 
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.List;
 import java.util.Map;
 
@@ -25,6 +27,8 @@ public interface DynamicFormService {
 
     String insert(String name, InsertParam<Map<String, Object>> data) throws Exception;
 
+    String saveOrUpdate(String name, Map<String, Object> map) throws Exception;
+
     int delete(String name, DeleteParam param) throws Exception;
 
     boolean deleteByPk(String name, String pk) throws Exception;
@@ -34,4 +38,8 @@ public interface DynamicFormService {
     int updateByPk(String name, String pk, UpdateParam<Map<String, Object>> param) throws Exception;
 
     <T> T selectByPk(String name, Object pk) throws Exception;
+
+    void exportExcel(String name, QueryParam param, OutputStream outputStream) throws Exception;
+
+    Map<String, Object> importExcel(String name, InputStream inputStream) throws Exception;
 }

+ 9 - 0
hsweb-web-service-interface/src/main/java/org/hsweb/web/service/resource/FileService.java

@@ -3,6 +3,7 @@ package org.hsweb.web.service.resource;
 import org.hsweb.web.bean.po.resource.Resources;
 
 import java.io.InputStream;
+import java.io.OutputStream;
 
 /**
  * 文件服务接口,用于对服务器文件进行操作
@@ -19,5 +20,13 @@ public interface FileService {
      */
     Resources saveFile(InputStream is, String fileName) throws Exception;
 
+    InputStream readResources(Resources resources) throws Exception;
+
+    InputStream readResources(String resourceId) throws Exception;
+
+    void writeResources(Resources resources, OutputStream outputStream) throws Exception;
+
+    String getFileBasePath();
+
 
 }

+ 5 - 1
pom.xml

@@ -135,7 +135,11 @@
                 <artifactId>wb-utils</artifactId>
                 <version>${webbuilder.version}</version>
             </dependency>
-
+            <dependency>
+                <groupId>org.webbuilder</groupId>
+                <artifactId>wb-office</artifactId>
+                <version>${webbuilder.version}</version>
+            </dependency>
             <!--<dependency>-->
             <!--<groupId>com.vaadin</groupId>-->
             <!--<artifactId>vaadin-bom</artifactId>-->