list = getBaseMapper().selectByMap(columnMap);
- if (list == null) {
- return null;
- }
- return convertor.apply(list);
- }
-
- /**
- * 根据 Wrapper,查询一条记录
- * 结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
- *
- * @param kClass vo类型
- * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
- */
- default K getVoOne(Wrapper queryWrapper, Class kClass) {
- return BeanUtil.toBean(getOne(queryWrapper, true), kClass);
- }
-
- /**
- * 根据 Wrapper,查询一条记录
- * 结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
- *
- * @param convertor 转换函数
- * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
- */
- default K getVoOne(Wrapper queryWrapper, Function convertor) {
- return convertor.apply(getOne(queryWrapper, true));
- }
-
- /**
- * 查询列表
- *
- * @param kClass vo类型
- * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
- */
- default List listVo(Wrapper queryWrapper, Class kClass) {
- List list = getBaseMapper().selectList(queryWrapper);
- if (list == null) {
- return null;
- }
- return list.stream()
- .map(any -> BeanUtil.toBean(any, kClass))
- .collect(Collectors.toList());
- }
-
- /**
- * 查询列表
- *
- * @param convertor 转换函数
- * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
- */
- default List listVo(Wrapper queryWrapper, Function, List> convertor) {
- List list = getBaseMapper().selectList(queryWrapper);
- if (list == null) {
- return null;
- }
- return convertor.apply(list);
- }
-
- /**
- * 查询所有
- *
- * @param kClass vo类型
- * @see Wrappers#emptyWrapper()
- */
- default List listVo(Class kClass) {
- return listVo(Wrappers.emptyWrapper(), kClass);
- }
-
- /**
- * 查询所有
- *
- * @param convertor 转换函数
- * @see Wrappers#emptyWrapper()
- */
- default List listVo(Function, List> convertor) {
- return listVo(Wrappers.emptyWrapper(), convertor);
- }
-
- /**
- * 翻页查询
- *
- * @param page 翻页对象
- * @param queryWrapper 实体对象封装操作类
- */
- default PagePlus pageVo(PagePlus page, Wrapper queryWrapper, Class kClass) {
- PagePlus result = getBaseMapper().selectPage(page, queryWrapper);
- List volist = result.getRecords().stream()
- .map(any -> BeanUtil.toBean(any, kClass))
- .collect(Collectors.toList());
- result.setRecordsVo(volist);
- return result;
- }
-
- /**
- * 翻页查询
- *
- * @param page 翻页对象
- * @param queryWrapper 实体对象封装操作类
- * @param convertor 转换函数
- */
- default PagePlus pageVo(PagePlus page, Wrapper queryWrapper,
- Function, List> convertor) {
- PagePlus result = getBaseMapper().selectPage(page, queryWrapper);
- return result.setRecordsVo(convertor.apply(result.getRecords()));
- }
-
- /**
- * 无条件翻页查询
- *
- * @param page 翻页对象
- */
- default PagePlus pageVo(PagePlus page, Class kClass) {
- return pageVo(page, Wrappers.emptyWrapper(), kClass);
- }
-
- /**
- * 无条件翻页查询
- *
- * @param page 翻页对象
- * @param convertor 转换函数
- */
- default PagePlus pageVo(PagePlus page, Function, List> convertor) {
- return pageVo(page, Wrappers.emptyWrapper(), convertor);
- }
-
- @Override
- default boolean saveBatch(Collection entityList) {
- return saveBatch(entityList, DEFAULT_BATCH_SIZE);
+ default K getVoById(Serializable id) {
+ return getVoById(id, new CopyOptions());
}
- @Override
- default boolean saveOrUpdateBatch(Collection entityList) {
- return saveOrUpdateBatch(entityList, DEFAULT_BATCH_SIZE);
+ /**
+ * @param convertor 自定义转换器
+ */
+ default K getVoById(Serializable id, Function convertor) {
+ return convertor.apply(getById(id));
}
- @Override
- default boolean updateBatchById(Collection entityList) {
- return updateBatchById(entityList, DEFAULT_BATCH_SIZE);
+ /**
+ * @param idList id列表
+ * @param copyOptions copy条件
+ * @return K对象
+ */
+ List listVoByIds(Collection extends Serializable> idList, CopyOptions copyOptions);
+
+ default List listVoByIds(Collection extends Serializable> idList) {
+ return listVoByIds(idList, new CopyOptions());
+ }
+
+ /**
+ * @param convertor 自定义转换器
+ */
+ default List listVoByIds(Collection extends Serializable> idList,
+ Function, List> convertor) {
+ List list = getBaseMapper().selectBatchIds(idList);
+ if (list == null) {
+ return null;
+ }
+ return convertor.apply(list);
+ }
+
+ /**
+ * @param columnMap 表字段 map 对象
+ * @param copyOptions copy条件
+ * @return K对象
+ */
+ List listVoByMap(Map columnMap, CopyOptions copyOptions);
+
+ default List listVoByMap(Map columnMap) {
+ return listVoByMap(columnMap, new CopyOptions());
+ }
+
+ /**
+ * @param convertor 自定义转换器
+ */
+ default List listVoByMap(Map columnMap,
+ Function, List> convertor) {
+ List list = getBaseMapper().selectByMap(columnMap);
+ if (list == null) {
+ return null;
+ }
+ return convertor.apply(list);
+ }
+
+ /**
+ * @param queryWrapper 查询条件
+ * @param copyOptions copy条件
+ * @return K对象
+ */
+ K getVoOne(Wrapper queryWrapper, CopyOptions copyOptions);
+
+ default K getVoOne(Wrapper queryWrapper) {
+ return getVoOne(queryWrapper, new CopyOptions());
+ }
+
+ /**
+ * @param convertor 自定义转换器
+ */
+ default K getVoOne(Wrapper queryWrapper, Function convertor) {
+ return convertor.apply(getOne(queryWrapper, true));
+ }
+
+ /**
+ * @param queryWrapper 查询条件
+ * @param copyOptions copy条件
+ * @return K对象
+ */
+ List listVo(Wrapper queryWrapper, CopyOptions copyOptions);
+
+ default List listVo(Wrapper queryWrapper) {
+ return listVo(queryWrapper, new CopyOptions());
+ }
+
+ /**
+ * @param convertor 自定义转换器
+ */
+ default List listVo(Wrapper queryWrapper, Function, List> convertor) {
+ List list = getBaseMapper().selectList(queryWrapper);
+ if (list == null) {
+ return null;
+ }
+ return convertor.apply(list);
+ }
+
+ default List listVo() {
+ return listVo(Wrappers.emptyWrapper());
+ }
+
+ /**
+ * @param convertor 自定义转换器
+ */
+ default List listVo(Function, List> convertor) {
+ return listVo(Wrappers.emptyWrapper(), convertor);
+ }
+
+ /**
+ * @param page 分页对象
+ * @param queryWrapper 查询条件
+ * @param copyOptions copy条件
+ * @return K对象
+ */
+ PagePlus pageVo(PagePlus page, Wrapper queryWrapper, CopyOptions copyOptions);
+
+ default PagePlus pageVo(PagePlus page, Wrapper queryWrapper) {
+ return pageVo(page, queryWrapper, new CopyOptions());
+ }
+
+ /**
+ * @param convertor 自定义转换器
+ */
+ default PagePlus pageVo(PagePlus page, Wrapper queryWrapper,
+ Function, List> convertor) {
+ PagePlus result = getBaseMapper().selectPage(page, queryWrapper);
+ return result.setRecordsVo(convertor.apply(result.getRecords()));
+ }
+
+ default PagePlus pageVo(PagePlus page) {
+ return pageVo(page, Wrappers.emptyWrapper());
+ }
+
+ /**
+ * @param convertor 自定义转换器
+ */
+ default PagePlus pageVo(PagePlus page, Function, List> convertor) {
+ return pageVo(page, Wrappers.emptyWrapper(), convertor);
}
boolean saveAll(Collection entityList);
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
index fb0998b7..e00076e0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
@@ -1,12 +1,19 @@
package com.ruoyi.common.core.mybatisplus.core;
+import cn.hutool.core.bean.copier.CopyOptions;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.utils.BeanCopyUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ResolvableType;
+import java.io.Serializable;
import java.util.Collection;
+import java.util.List;
+import java.util.Map;
/**
* IServicePlus 实现类
@@ -15,7 +22,7 @@ import java.util.Collection;
*/
@Slf4j
@SuppressWarnings("unchecked")
-public class ServicePlusImpl, T> extends ServiceImpl implements IServicePlus {
+public class ServicePlusImpl, T, K> extends ServiceImpl implements IServicePlus {
@Autowired
protected M baseMapper;
@@ -35,6 +42,12 @@ public class ServicePlusImpl, T> extends ServiceImpl
protected Class mapperClass = currentMapperClass();
+ protected Class voClass = currentVoClass();
+
+ public Class getVoClass() {
+ return voClass;
+ }
+
@Override
protected Class currentMapperClass() {
return (Class) this.getResolvableType().as(ServicePlusImpl.class).getGeneric(0).getType();
@@ -45,6 +58,10 @@ public class ServicePlusImpl, T> extends ServiceImpl
return (Class) this.getResolvableType().as(ServicePlusImpl.class).getGeneric(1).getType();
}
+ protected Class currentVoClass() {
+ return (Class) this.getResolvableType().as(ServicePlusImpl.class).getGeneric(2).getType();
+ }
+
@Override
protected ResolvableType getResolvableType() {
return ResolvableType.forClass(ClassUtils.getUserClass(getClass()));
@@ -76,6 +93,25 @@ public class ServicePlusImpl, T> extends ServiceImpl
return super.updateBatchById(entityList, batchSize);
}
+ /**
+ * 单sql批量插入( 全量填充 无视数据库默认值 )
+ * 适用于无脑插入
+ */
+ @Override
+ public boolean saveBatch(Collection entityList) {
+ return saveBatch(entityList, DEFAULT_BATCH_SIZE);
+ }
+
+ @Override
+ public boolean saveOrUpdateBatch(Collection entityList) {
+ return saveOrUpdateBatch(entityList, DEFAULT_BATCH_SIZE);
+ }
+
+ @Override
+ public boolean updateBatchById(Collection entityList) {
+ return updateBatchById(entityList, DEFAULT_BATCH_SIZE);
+ }
+
/**
* 单sql批量插入( 全量填充 无视数据库默认值 )
* 适用于无脑插入
@@ -85,4 +121,83 @@ public class ServicePlusImpl, T> extends ServiceImpl
return baseMapper.insertAll(entityList) == entityList.size();
}
+ /**
+ * 根据 ID 查询
+ *
+ * @param id 主键ID
+ */
+ @Override
+ public K getVoById(Serializable id, CopyOptions copyOptions) {
+ T t = getBaseMapper().selectById(id);
+ return BeanCopyUtils.oneCopy(t, copyOptions, voClass);
+ }
+
+ /**
+ * 查询(根据ID 批量查询)
+ *
+ * @param idList 主键ID列表
+ */
+ @Override
+ public List listVoByIds(Collection extends Serializable> idList, CopyOptions copyOptions) {
+ List list = getBaseMapper().selectBatchIds(idList);
+ if (list == null) {
+ return null;
+ }
+ return BeanCopyUtils.listCopy(list, copyOptions, voClass);
+ }
+
+ /**
+ * 查询(根据 columnMap 条件)
+ *
+ * @param columnMap 表字段 map 对象
+ */
+ @Override
+ public List listVoByMap(Map columnMap, CopyOptions copyOptions) {
+ List list = getBaseMapper().selectByMap(columnMap);
+ if (list == null) {
+ return null;
+ }
+ return BeanCopyUtils.listCopy(list, copyOptions, voClass);
+ }
+
+ /**
+ * 根据 Wrapper,查询一条记录
+ * 结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
+ *
+ * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
+ */
+ @Override
+ public K getVoOne(Wrapper queryWrapper, CopyOptions copyOptions) {
+ T t = getOne(queryWrapper, true);
+ return BeanCopyUtils.oneCopy(t, copyOptions, voClass);
+ }
+
+ /**
+ * 查询列表
+ *
+ * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
+ */
+ @Override
+ public List listVo(Wrapper queryWrapper, CopyOptions copyOptions) {
+ List list = getBaseMapper().selectList(queryWrapper);
+ if (list == null) {
+ return null;
+ }
+ return BeanCopyUtils.listCopy(list, copyOptions, voClass);
+ }
+
+ /**
+ * 翻页查询
+ *
+ * @param page 翻页对象
+ * @param queryWrapper 实体对象封装操作类
+ */
+ @Override
+ public PagePlus pageVo(PagePlus page, Wrapper queryWrapper, CopyOptions copyOptions) {
+ PagePlus result = getBaseMapper().selectPage(page, queryWrapper);
+ List volist = BeanCopyUtils.listCopy(result.getRecords(), copyOptions, voClass);
+ result.setRecordsVo(volist);
+ return result;
+ }
+
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/validate/AddGroup.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/validate/AddGroup.java
new file mode 100644
index 00000000..e1934e1e
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/validate/AddGroup.java
@@ -0,0 +1,9 @@
+package com.ruoyi.common.core.validate;
+
+/**
+ * 校验分组 add
+ *
+ * @author Lion Li
+ */
+public interface AddGroup {
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/validate/EditGroup.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/validate/EditGroup.java
new file mode 100644
index 00000000..3c6ca7f8
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/validate/EditGroup.java
@@ -0,0 +1,9 @@
+package com.ruoyi.common.core.validate;
+
+/**
+ * 校验分组 edit
+ *
+ * @author Lion Li
+ */
+public interface EditGroup {
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
new file mode 100644
index 00000000..bea09f8b
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
@@ -0,0 +1,55 @@
+package com.ruoyi.common.utils;
+
+import cn.hutool.core.bean.copier.BeanCopier;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.util.ReflectUtil;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * bean深拷贝工具
+ *
+ * @author Lion Li
+ */
+public class BeanCopyUtils {
+
+ /**
+ * 单对象基于class创建拷贝
+ *
+ * @param source 数据来源实体
+ * @param copyOptions copy条件
+ * @param desc 描述对象 转换后的对象
+ * @return desc
+ */
+ public static V oneCopy(T source, CopyOptions copyOptions, Class desc) {
+ V v = ReflectUtil.newInstanceIfPossible(desc);
+ return oneCopy(source, copyOptions, v);
+ }
+
+ /**
+ * 单对象基于对象创建拷贝
+ *
+ * @param source 数据来源实体
+ * @param copyOptions copy条件
+ * @param desc 转换后的对象
+ * @return desc
+ */
+ public static V oneCopy(T source, CopyOptions copyOptions, V desc) {
+ return BeanCopier.create(source, desc, copyOptions).copy();
+ }
+
+ /**
+ * 列表对象基于class创建拷贝
+ *
+ * @param sourceList 数据来源实体列表
+ * @param copyOptions copy条件
+ * @param desc 描述对象 转换后的对象
+ * @return desc
+ */
+ public static List listCopy(List sourceList, CopyOptions copyOptions, Class desc) {
+ return sourceList.stream()
+ .map(source -> oneCopy(source, copyOptions, desc))
+ .collect(Collectors.toList());
+ }
+}
diff --git a/ruoyi-demo/pom.xml b/ruoyi-demo/pom.xml
index dcc2684d..1066d2f6 100644
--- a/ruoyi-demo/pom.xml
+++ b/ruoyi-demo/pom.xml
@@ -5,7 +5,7 @@
ruoyi-vue-plus
com.ruoyi
- 2.5.2
+ 2.6.0
4.0.0
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoAddBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoAddBo.java
deleted file mode 100644
index 10520aed..00000000
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoAddBo.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.ruoyi.demo.bo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import java.util.Date;
-
-
-/**
- * 测试单表添加对象 test_demo
- *
- * @author Lion Li
- * @date 2021-05-30
- */
-@Data
-@ApiModel("测试单表添加对象")
-public class TestDemoAddBo {
-
- /** 部门id */
- @ApiModelProperty("部门id")
- private Long deptId;
-
- /** 用户id */
- @ApiModelProperty("用户id")
- private Long userId;
-
- /** 排序号 */
- @ApiModelProperty("排序号")
- private Long orderNum;
-
- /** key键 */
- @ApiModelProperty("key键")
- @NotBlank(message = "key键不能为空")
- private String testKey;
-
- /** 值 */
- @ApiModelProperty("值")
- @NotBlank(message = "值不能为空")
- private String value;
-
- /** 创建时间 */
- @ApiModelProperty("创建时间")
- private Date createTime;
-
-}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoEditBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoEditBo.java
deleted file mode 100644
index 639443b0..00000000
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoEditBo.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.ruoyi.demo.bo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-
-
-/**
- * 测试单表编辑对象 test_demo
- *
- * @author Lion Li
- * @date 2021-05-30
- */
-@Data
-@ApiModel("测试单表编辑对象")
-public class TestDemoEditBo {
-
-
- /** 主键 */
- @ApiModelProperty("主键")
- private Long id;
-
-
- /** 部门id */
- @ApiModelProperty("部门id")
- private Long deptId;
-
-
- /** 用户id */
- @ApiModelProperty("用户id")
- private Long userId;
-
-
- /** 排序号 */
- @ApiModelProperty("排序号")
- private Long orderNum;
-
-
- /** key键 */
- @ApiModelProperty("key键")
- @NotBlank(message = "key键不能为空")
- private String testKey;
-
-
- /** 值 */
- @ApiModelProperty("值")
- @NotBlank(message = "值不能为空")
- private String value;
-
-}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoQueryBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoQueryBo.java
deleted file mode 100644
index ca2bb5a3..00000000
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoQueryBo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ruoyi.demo.bo;
-
-import com.ruoyi.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 测试单表分页查询对象 test_demo
- *
- * @author Lion Li
- * @date 2021-05-30
- */
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel("测试单表分页查询对象")
-public class TestDemoQueryBo extends BaseEntity {
-
- /** 分页大小 */
- @ApiModelProperty("分页大小")
- private Integer pageSize;
- /** 当前页数 */
- @ApiModelProperty("当前页数")
- private Integer pageNum;
- /** 排序列 */
- @ApiModelProperty("排序列")
- private String orderByColumn;
- /** 排序的方向desc或者asc */
- @ApiModelProperty(value = "排序的方向", example = "asc,desc")
- private String isAsc;
-
-
- /** key键 */
- @ApiModelProperty("key键")
- private String testKey;
- /** 值 */
- @ApiModelProperty("值")
- private String value;
-
-}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeAddBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeAddBo.java
deleted file mode 100644
index a9a4b5e3..00000000
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeAddBo.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.ruoyi.demo.bo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import java.util.Date;
-import javax.validation.constraints.*;
-
-
-
-/**
- * 测试树表添加对象 test_tree
- *
- * @author Lion Li
- * @date 2021-05-30
- */
-@Data
-@ApiModel("测试树表添加对象")
-public class TestTreeAddBo {
-
- /** 父id */
- @ApiModelProperty("父id")
- private Long parentId;
-
- /** 部门id */
- @ApiModelProperty("部门id")
- private Long deptId;
-
- /** 用户id */
- @ApiModelProperty("用户id")
- private Long userId;
-
- /** 树节点名 */
- @ApiModelProperty("树节点名")
- @NotBlank(message = "树节点名不能为空")
- private String treeName;
-
-}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeEditBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeEditBo.java
deleted file mode 100644
index e3d359d0..00000000
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeEditBo.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.ruoyi.demo.bo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import java.util.Date;
-import javax.validation.constraints.*;
-
-
-/**
- * 测试树表编辑对象 test_tree
- *
- * @author Lion Li
- * @date 2021-05-30
- */
-@Data
-@ApiModel("测试树表编辑对象")
-public class TestTreeEditBo {
-
-
- /** 主键 */
- @ApiModelProperty("主键")
- private Long id;
-
-
- /** 父id */
- @ApiModelProperty("父id")
- private Long parentId;
-
-
- /** 部门id */
- @ApiModelProperty("部门id")
- private Long deptId;
-
-
- /** 用户id */
- @ApiModelProperty("用户id")
- private Long userId;
-
-
- /** 树节点名 */
- @ApiModelProperty("树节点名")
- @NotBlank(message = "树节点名不能为空")
- private String treeName;
-
-}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeQueryBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeQueryBo.java
deleted file mode 100644
index 3ed482b3..00000000
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestTreeQueryBo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ruoyi.demo.bo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.Date;
-
-import com.ruoyi.common.core.domain.BaseEntity;
-
-/**
- * 测试树表分页查询对象 test_tree
- *
- * @author Lion Li
- * @date 2021-05-30
- */
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel("测试树表分页查询对象")
-public class TestTreeQueryBo extends BaseEntity {
-
- /** 分页大小 */
- @ApiModelProperty("分页大小")
- private Integer pageSize;
- /** 当前页数 */
- @ApiModelProperty("当前页数")
- private Integer pageNum;
- /** 排序列 */
- @ApiModelProperty("排序列")
- private String orderByColumn;
- /** 排序的方向desc或者asc */
- @ApiModelProperty(value = "排序的方向", example = "asc,desc")
- private String isAsc;
-
-
- /** 树节点名 */
- @ApiModelProperty("树节点名")
- private String treeName;
-
-}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
index 2ac99d66..ade20f8d 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
@@ -1,16 +1,17 @@
package com.ruoyi.demo.controller;
import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.demo.bo.TestDemoAddBo;
-import com.ruoyi.demo.bo.TestDemoEditBo;
-import com.ruoyi.demo.bo.TestDemoQueryBo;
+import com.ruoyi.demo.domain.bo.TestDemoBo;
+import com.ruoyi.demo.domain.vo.TestDemoVo;
import com.ruoyi.demo.service.ITestDemoService;
-import com.ruoyi.demo.vo.TestDemoVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -28,8 +29,9 @@ import java.util.List;
* 测试单表Controller
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
+@Validated
@Api(value = "测试单表控制器", tags = {"测试单表管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@@ -44,18 +46,28 @@ public class TestDemoController extends BaseController {
@ApiOperation("查询测试单表列表")
@PreAuthorize("@ss.hasPermi('demo:demo:list')")
@GetMapping("/list")
- public TableDataInfo list(@Validated TestDemoQueryBo bo) {
+ public TableDataInfo list(@Validated TestDemoBo bo) {
return iTestDemoService.queryPageList(bo);
}
- /**
+ /**
+ * 自定义分页查询
+ */
+ @ApiOperation("自定义分页查询")
+ @PreAuthorize("@ss.hasPermi('demo:demo:list')")
+ @GetMapping("/page")
+ public TableDataInfo page(@Validated TestDemoBo bo) {
+ return iTestDemoService.customPageList(bo);
+ }
+
+ /**
* 导出测试单表列表
*/
@ApiOperation("导出测试单表列表")
@PreAuthorize("@ss.hasPermi('demo:demo:export')")
@Log(title = "测试单表", businessType = BusinessType.EXPORT)
@GetMapping("/export")
- public AjaxResult export(@Validated TestDemoQueryBo bo) {
+ public AjaxResult export(@Validated TestDemoBo bo) {
List list = iTestDemoService.queryList(bo);
ExcelUtil util = new ExcelUtil(TestDemoVo.class);
return util.exportExcel(list, "测试单表");
@@ -78,9 +90,10 @@ public class TestDemoController extends BaseController {
@ApiOperation("新增测试单表")
@PreAuthorize("@ss.hasPermi('demo:demo:add')")
@Log(title = "测试单表", businessType = BusinessType.INSERT)
+ @RepeatSubmit
@PostMapping()
- public AjaxResult add(@Validated @RequestBody TestDemoAddBo bo) {
- return toAjax(iTestDemoService.insertByAddBo(bo) ? 1 : 0);
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody TestDemoBo bo) {
+ return toAjax(iTestDemoService.insertByBo(bo) ? 1 : 0);
}
/**
@@ -89,9 +102,10 @@ public class TestDemoController extends BaseController {
@ApiOperation("修改测试单表")
@PreAuthorize("@ss.hasPermi('demo:demo:edit')")
@Log(title = "测试单表", businessType = BusinessType.UPDATE)
+ @RepeatSubmit
@PutMapping()
- public AjaxResult edit(@Validated @RequestBody TestDemoEditBo bo) {
- return toAjax(iTestDemoService.updateByEditBo(bo) ? 1 : 0);
+ public AjaxResult edit(@Validated(EditGroup.class) @RequestBody TestDemoBo bo) {
+ return toAjax(iTestDemoService.updateByBo(bo) ? 1 : 0);
}
/**
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java
index 54f1027e..8cab868c 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java
@@ -1,15 +1,16 @@
package com.ruoyi.demo.controller;
import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.demo.bo.TestTreeAddBo;
-import com.ruoyi.demo.bo.TestTreeEditBo;
-import com.ruoyi.demo.bo.TestTreeQueryBo;
+import com.ruoyi.demo.domain.bo.TestTreeBo;
+import com.ruoyi.demo.domain.vo.TestTreeVo;
import com.ruoyi.demo.service.ITestTreeService;
-import com.ruoyi.demo.vo.TestTreeVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -27,8 +28,9 @@ import java.util.List;
* 测试树表Controller
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
+@Validated
@Api(value = "测试树表控制器", tags = {"测试树表管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@@ -43,8 +45,9 @@ public class TestTreeController extends BaseController {
@ApiOperation("查询测试树表列表")
@PreAuthorize("@ss.hasPermi('demo:tree:list')")
@GetMapping("/list")
- public AjaxResult> list(@Validated TestTreeQueryBo bo) {
- return AjaxResult.success(iTestTreeService.queryList(bo));
+ public AjaxResult> list(@Validated TestTreeBo bo) {
+ List list = iTestTreeService.queryList(bo);
+ return AjaxResult.success(list);
}
/**
@@ -54,7 +57,7 @@ public class TestTreeController extends BaseController {
@PreAuthorize("@ss.hasPermi('demo:tree:export')")
@Log(title = "测试树表", businessType = BusinessType.EXPORT)
@GetMapping("/export")
- public AjaxResult export(@Validated TestTreeQueryBo bo) {
+ public AjaxResult export(@Validated TestTreeBo bo) {
List list = iTestTreeService.queryList(bo);
ExcelUtil util = new ExcelUtil(TestTreeVo.class);
return util.exportExcel(list, "测试树表");
@@ -77,9 +80,10 @@ public class TestTreeController extends BaseController {
@ApiOperation("新增测试树表")
@PreAuthorize("@ss.hasPermi('demo:tree:add')")
@Log(title = "测试树表", businessType = BusinessType.INSERT)
+ @RepeatSubmit
@PostMapping()
- public AjaxResult add(@Validated @RequestBody TestTreeAddBo bo) {
- return toAjax(iTestTreeService.insertByAddBo(bo) ? 1 : 0);
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody TestTreeBo bo) {
+ return toAjax(iTestTreeService.insertByBo(bo) ? 1 : 0);
}
/**
@@ -88,9 +92,10 @@ public class TestTreeController extends BaseController {
@ApiOperation("修改测试树表")
@PreAuthorize("@ss.hasPermi('demo:tree:edit')")
@Log(title = "测试树表", businessType = BusinessType.UPDATE)
+ @RepeatSubmit
@PutMapping()
- public AjaxResult edit(@Validated @RequestBody TestTreeEditBo bo) {
- return toAjax(iTestTreeService.updateByEditBo(bo) ? 1 : 0);
+ public AjaxResult edit(@Validated(EditGroup.class) @RequestBody TestTreeBo bo) {
+ return toAjax(iTestTreeService.updateByBo(bo) ? 1 : 0);
}
/**
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java
index 26f652a9..13fdc240 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java
@@ -14,7 +14,7 @@ import java.util.Date;
* 测试单表对象 test_demo
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
@Data
@NoArgsConstructor
@@ -32,43 +32,66 @@ public class TestDemo implements Serializable {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
- /** 部门id */
+ /**
+ * 部门id
+ */
private Long deptId;
- /** 用户id */
+ /**
+ * 用户id
+ */
private Long userId;
- /** 排序号 */
- @OrderBy(isDesc = false, sort = 1)
+ /**
+ * 排序号
+ */
+ @OrderBy(isDesc = false, sort = 1)
private Long orderNum;
- /** key键 */
+ /**
+ * key键
+ */
private String testKey;
- /** 值 */
+ /**
+ * 值
+ */
private String value;
- /** 版本 */
+ /**
+ * 版本
+ */
@Version
private Long version;
- /** 创建时间 */
+ /**
+ * 创建时间
+ */
@TableField(fill = FieldFill.INSERT)
private Date createTime;
- /** 创建人 */
+ /**
+ * 创建人
+ */
@TableField(fill = FieldFill.INSERT)
private String createBy;
- /** 更新时间 */
+ /**
+ * 更新时间
+ */
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
- /** 更新人 */
+ /**
+ * 更新人
+ */
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
- /** 删除标志 */
+ /**
+ * 删除标志
+ */
+ @TableLogic
private Long delFlag;
}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java
index b9bd2ba6..799a6d41 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java
@@ -1,8 +1,6 @@
package com.ruoyi.demo.domain;
import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@@ -14,7 +12,7 @@ import java.util.Date;
* 测试树表对象 test_tree
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
@Data
@NoArgsConstructor
@@ -25,44 +23,65 @@ public class TestTree implements Serializable {
private static final long serialVersionUID=1L;
- /** 主键 */
+ /**
+ * 主键
+ */
@TableId(value = "id")
- @JsonSerialize(using = ToStringSerializer.class)
private Long id;
- /** 父id */
+ /**
+ * 父id
+ */
private Long parentId;
- /** 部门id */
+ /**
+ * 部门id
+ */
private Long deptId;
- /** 用户id */
+ /**
+ * 用户id
+ */
private Long userId;
- /** 树节点名 */
+ /**
+ * 树节点名
+ */
private String treeName;
- /** 版本 */
+ /**
+ * 版本
+ */
@Version
private Long version;
- /** 创建时间 */
+ /**
+ * 创建时间
+ */
@TableField(fill = FieldFill.INSERT)
private Date createTime;
- /** 创建人 */
+ /**
+ * 创建人
+ */
@TableField(fill = FieldFill.INSERT)
private String createBy;
- /** 更新时间 */
+ /**
+ * 更新时间
+ */
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
- /** 更新人 */
+ /**
+ * 更新人
+ */
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
- /** 删除标志 */
+ /**
+ * 删除标志
+ */
@TableLogic
private Long delFlag;
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoBo.java
new file mode 100644
index 00000000..46018b10
--- /dev/null
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoBo.java
@@ -0,0 +1,94 @@
+package com.ruoyi.demo.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 测试单表业务对象 test_demo
+ *
+ * @author Lion Li
+ * @date 2021-07-26
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("测试单表业务对象")
+public class TestDemoBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @ApiModelProperty("主键")
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 部门id
+ */
+ @ApiModelProperty("部门id")
+ @NotNull(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 用户id
+ */
+ @ApiModelProperty("用户id")
+ @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
+ /**
+ * 排序号
+ */
+ @ApiModelProperty("排序号")
+ @NotNull(message = "排序号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long orderNum;
+
+ /**
+ * key键
+ */
+ @ApiModelProperty("key键")
+ @NotBlank(message = "key键不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String testKey;
+
+ /**
+ * 值
+ */
+ @ApiModelProperty("值")
+ @NotBlank(message = "值不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String value;
+
+
+ /**
+ * 分页大小
+ */
+ @ApiModelProperty("分页大小")
+ private Integer pageSize;
+
+ /**
+ * 当前页数
+ */
+ @ApiModelProperty("当前页数")
+ private Integer pageNum;
+
+ /**
+ * 排序列
+ */
+ @ApiModelProperty("排序列")
+ private String orderByColumn;
+
+ /**
+ * 排序的方向desc或者asc
+ */
+ @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+ private String isAsc;
+
+}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestTreeBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestTreeBo.java
new file mode 100644
index 00000000..2dfe1ff0
--- /dev/null
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestTreeBo.java
@@ -0,0 +1,79 @@
+package com.ruoyi.demo.domain.bo;
+
+import com.ruoyi.common.core.domain.TreeEntity;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 测试树表业务对象 test_tree
+ *
+ * @author Lion Li
+ * @date 2021-07-26
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("测试树表业务对象")
+public class TestTreeBo extends TreeEntity {
+
+ /**
+ * 主键
+ */
+ @ApiModelProperty("主键")
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 部门id
+ */
+ @ApiModelProperty("部门id")
+ @NotNull(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 用户id
+ */
+ @ApiModelProperty("用户id")
+ @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
+ /**
+ * 树节点名
+ */
+ @ApiModelProperty("树节点名")
+ @NotBlank(message = "树节点名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String treeName;
+
+
+ /**
+ * 分页大小
+ */
+ @ApiModelProperty("分页大小")
+ private Integer pageSize;
+
+ /**
+ * 当前页数
+ */
+ @ApiModelProperty("当前页数")
+ private Integer pageNum;
+
+ /**
+ * 排序列
+ */
+ @ApiModelProperty("排序列")
+ private String orderByColumn;
+
+ /**
+ * 排序的方向desc或者asc
+ */
+ @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+ private String isAsc;
+
+}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestDemoVo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java
similarity index 67%
rename from ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestDemoVo.java
rename to ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java
index d1eb8bf6..9ab4ba95 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestDemoVo.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java
@@ -1,12 +1,9 @@
-package com.ruoyi.demo.vo;
+package com.ruoyi.demo.domain.vo;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-
import java.util.Date;
@@ -15,7 +12,7 @@ import java.util.Date;
* 测试单表视图对象 test_demo
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
@Data
@ApiModel("测试单表视图对象")
@@ -24,57 +21,70 @@ public class TestDemoVo {
private static final long serialVersionUID = 1L;
/**
- * 主键
- * 如果是自定义id 或者 雪花id
- * 需要增加序列化为字符串注解 因为Long到前端会失真
- */
+ * 主键
+ */
@ApiModelProperty("主键")
- @JsonSerialize(using = ToStringSerializer.class)
private Long id;
- /** 部门id */
+ /**
+ * 部门id
+ */
@Excel(name = "部门id")
@ApiModelProperty("部门id")
private Long deptId;
- /** 用户id */
+ /**
+ * 用户id
+ */
@Excel(name = "用户id")
@ApiModelProperty("用户id")
private Long userId;
- /** 排序号 */
+ /**
+ * 排序号
+ */
@Excel(name = "排序号")
@ApiModelProperty("排序号")
private Long orderNum;
- /** key键 */
+ /**
+ * key键
+ */
@Excel(name = "key键")
@ApiModelProperty("key键")
private String testKey;
- /** 值 */
+ /**
+ * 值
+ */
@Excel(name = "值")
@ApiModelProperty("值")
private String value;
- /** 创建时间 */
+ /**
+ * 创建时间
+ */
@Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd")
-// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
- /** 创建人 */
+ /**
+ * 创建人
+ */
@Excel(name = "创建人")
@ApiModelProperty("创建人")
private String createBy;
- /** 更新时间 */
+ /**
+ * 更新时间
+ */
@Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd")
-// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
- /** 更新人 */
+ /**
+ * 更新人
+ */
@Excel(name = "更新人")
@ApiModelProperty("更新人")
private String updateBy;
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestTreeVo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestTreeVo.java
similarity index 67%
rename from ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestTreeVo.java
rename to ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestTreeVo.java
index c6ea5587..a299c4a4 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestTreeVo.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestTreeVo.java
@@ -1,13 +1,9 @@
-package com.ruoyi.demo.vo;
+package com.ruoyi.demo.domain.vo;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-
import java.util.Date;
@@ -16,7 +12,7 @@ import java.util.Date;
* 测试树表视图对象 test_tree
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
@Data
@ApiModel("测试树表视图对象")
@@ -24,34 +20,44 @@ public class TestTreeVo {
private static final long serialVersionUID = 1L;
- /** 主键 */
+ /**
+ * 主键
+ */
@ApiModelProperty("主键")
- @JsonSerialize(using = ToStringSerializer.class)
private Long id;
- /** 父id */
+ /**
+ * 父id
+ */
@Excel(name = "父id")
@ApiModelProperty("父id")
private Long parentId;
- /** 部门id */
+ /**
+ * 部门id
+ */
@Excel(name = "部门id")
@ApiModelProperty("部门id")
private Long deptId;
- /** 用户id */
+ /**
+ * 用户id
+ */
@Excel(name = "用户id")
@ApiModelProperty("用户id")
private Long userId;
- /** 树节点名 */
+ /**
+ * 树节点名
+ */
@Excel(name = "树节点名")
@ApiModelProperty("树节点名")
private String treeName;
- /** 创建时间 */
+ /**
+ * 创建时间
+ */
@Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
index aceaf6d8..efbbffc4 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
@@ -1,18 +1,24 @@
package com.ruoyi.demo.mapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.demo.domain.TestDemo;
+import com.ruoyi.demo.domain.vo.TestDemoVo;
import org.apache.ibatis.annotations.CacheNamespace;
+import org.apache.ibatis.annotations.Param;
/**
* 测试单表Mapper接口
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface TestDemoMapper extends BaseMapperPlus {
+ Page customPageList(@Param("page") Page page, @Param("ew") Wrapper wrapper);
+
}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
index 20a3e9be..05b0153b 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
@@ -7,9 +7,8 @@ import com.ruoyi.demo.domain.TestTree;
* 测试树表Mapper接口
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
-//@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface TestTreeMapper extends BaseMapperPlus {
}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java
index c011325a..eb4f21be 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java
@@ -1,10 +1,8 @@
package com.ruoyi.demo.service;
import com.ruoyi.demo.domain.TestDemo;
-import com.ruoyi.demo.vo.TestDemoVo;
-import com.ruoyi.demo.bo.TestDemoQueryBo;
-import com.ruoyi.demo.bo.TestDemoAddBo;
-import com.ruoyi.demo.bo.TestDemoEditBo;
+import com.ruoyi.demo.domain.vo.TestDemoVo;
+import com.ruoyi.demo.domain.bo.TestDemoBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -15,9 +13,9 @@ import java.util.List;
* 测试单表Service接口
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
-public interface ITestDemoService extends IServicePlus {
+public interface ITestDemoService extends IServicePlus {
/**
* 查询单个
@@ -28,25 +26,31 @@ public interface ITestDemoService extends IServicePlus {
/**
* 查询列表
*/
- TableDataInfo queryPageList(TestDemoQueryBo bo);
+ TableDataInfo queryPageList(TestDemoBo bo);
+
/**
+ * 自定义分页查询
+ */
+ TableDataInfo customPageList(TestDemoBo bo);
+
+ /**
* 查询列表
*/
- List queryList(TestDemoQueryBo bo);
+ List queryList(TestDemoBo bo);
/**
* 根据新增业务对象插入测试单表
* @param bo 测试单表新增业务对象
* @return
*/
- Boolean insertByAddBo(TestDemoAddBo bo);
+ Boolean insertByBo(TestDemoBo bo);
/**
* 根据编辑业务对象修改测试单表
* @param bo 测试单表编辑业务对象
* @return
*/
- Boolean updateByEditBo(TestDemoEditBo bo);
+ Boolean updateByBo(TestDemoBo bo);
/**
* 校验并删除数据
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java
index 6f7be37c..9b8acb9c 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java
@@ -1,11 +1,9 @@
package com.ruoyi.demo.service;
-import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
-import com.ruoyi.demo.bo.TestTreeAddBo;
-import com.ruoyi.demo.bo.TestTreeEditBo;
-import com.ruoyi.demo.bo.TestTreeQueryBo;
import com.ruoyi.demo.domain.TestTree;
-import com.ruoyi.demo.vo.TestTreeVo;
+import com.ruoyi.demo.domain.vo.TestTreeVo;
+import com.ruoyi.demo.domain.bo.TestTreeBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import java.util.Collection;
import java.util.List;
@@ -14,9 +12,9 @@ import java.util.List;
* 测试树表Service接口
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
-public interface ITestTreeService extends IServicePlus {
+public interface ITestTreeService extends IServicePlus {
/**
* 查询单个
* @return
@@ -26,21 +24,21 @@ public interface ITestTreeService extends IServicePlus {
/**
* 查询列表
*/
- List queryList(TestTreeQueryBo bo);
+ List queryList(TestTreeBo bo);
/**
* 根据新增业务对象插入测试树表
* @param bo 测试树表新增业务对象
* @return
*/
- Boolean insertByAddBo(TestTreeAddBo bo);
+ Boolean insertByBo(TestTreeBo bo);
/**
* 根据编辑业务对象修改测试树表
* @param bo 测试树表编辑业务对象
* @return
*/
- Boolean updateByEditBo(TestTreeEditBo bo);
+ Boolean updateByBo(TestTreeBo bo);
/**
* 校验并删除数据
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
index 4d35efe0..81893dff 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
@@ -4,18 +4,17 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.PageUtils;
-import com.ruoyi.demo.bo.TestDemoAddBo;
-import com.ruoyi.demo.bo.TestDemoEditBo;
-import com.ruoyi.demo.bo.TestDemoQueryBo;
import com.ruoyi.demo.domain.TestDemo;
+import com.ruoyi.demo.domain.bo.TestDemoBo;
+import com.ruoyi.demo.domain.vo.TestDemoVo;
import com.ruoyi.demo.mapper.TestDemoMapper;
import com.ruoyi.demo.service.ITestDemoService;
-import com.ruoyi.demo.vo.TestDemoVo;
import org.springframework.stereotype.Service;
import java.util.Collection;
@@ -26,30 +25,40 @@ import java.util.Map;
* 测试单表Service业务层处理
*
* @author Lion Li
- * @date 2021-05-30
+ * @date 2021-07-26
*/
@Service
-public class TestDemoServiceImpl extends ServicePlusImpl implements ITestDemoService {
+public class TestDemoServiceImpl extends ServicePlusImpl implements ITestDemoService {
@Override
public TestDemoVo queryById(Long id) {
- return getVoById(id, TestDemoVo.class);
+ return getVoById(id);
}
@DataScope(isUser = true)
@Override
- public TableDataInfo queryPageList(TestDemoQueryBo bo) {
- PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), TestDemoVo.class);
+ public TableDataInfo queryPageList(TestDemoBo bo) {
+ PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+ return PageUtils.buildDataInfo(result);
+ }
+
+ /**
+ * 自定义分页查询
+ */
+ @DataScope(isUser = true)
+ @Override
+ public TableDataInfo customPageList(TestDemoBo bo) {
+ Page result = baseMapper.customPageList(PageUtils.buildPage(), buildQueryWrapper(bo));
return PageUtils.buildDataInfo(result);
}
@DataScope(isUser = true)
@Override
- public List queryList(TestDemoQueryBo bo) {
- return listVo(buildQueryWrapper(bo), TestDemoVo.class);
+ public List queryList(TestDemoBo bo) {
+ return listVo(buildQueryWrapper(bo));
}
- private LambdaQueryWrapper buildQueryWrapper(TestDemoQueryBo bo) {
+ private LambdaQueryWrapper buildQueryWrapper(TestDemoBo bo) {
Map params = bo.getParams();
Object dataScope = params.get("dataScope");
LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
@@ -63,14 +72,14 @@ public class TestDemoServiceImpl extends ServicePlusImpl implements ITestTreeService {
+public class TestTreeServiceImpl extends ServicePlusImpl implements ITestTreeService {
@Override
public TestTreeVo queryById(Long id) {
- return getVoById(id, TestTreeVo.class);
+ return getVoById(id);
}
// @DataSource(DataSourceType.SLAVE) // 切换从库查询
@DataScope(isUser = true)
@Override
- public List queryList(TestTreeQueryBo bo) {
- return listVo(buildQueryWrapper(bo), TestTreeVo.class);
+ public List queryList(TestTreeBo bo) {
+ return listVo(buildQueryWrapper(bo));
}
- private LambdaQueryWrapper buildQueryWrapper(TestTreeQueryBo bo) {
+ private LambdaQueryWrapper buildQueryWrapper(TestTreeBo bo) {
Map params = bo.getParams();
Object dataScope = params.get("dataScope");
LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
@@ -53,14 +51,14 @@ public class TestTreeServiceImpl extends ServicePlusImpl
+
-
\ No newline at end of file
+
diff --git a/ruoyi-extend/pom.xml b/ruoyi-extend/pom.xml
index 46a8cfc7..4df48bab 100644
--- a/ruoyi-extend/pom.xml
+++ b/ruoyi-extend/pom.xml
@@ -5,7 +5,7 @@
ruoyi-vue-plus
com.ruoyi
- 2.5.2
+ 2.6.0
4.0.0
ruoyi-extend
diff --git a/ruoyi-extend/ruoyi-monitor-admin/pom.xml b/ruoyi-extend/ruoyi-monitor-admin/pom.xml
index b09375a0..9aca296c 100644
--- a/ruoyi-extend/ruoyi-monitor-admin/pom.xml
+++ b/ruoyi-extend/ruoyi-monitor-admin/pom.xml
@@ -5,7 +5,7 @@
ruoyi-extend
com.ruoyi
- 2.5.2
+ 2.6.0
4.0.0
jar
diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml
index 16b46e9a..41e8ca43 100644
--- a/ruoyi-framework/pom.xml
+++ b/ruoyi-framework/pom.xml
@@ -5,7 +5,7 @@
ruoyi-vue-plus
com.ruoyi
- 2.5.2
+ 2.6.0
4.0.0
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 239825f0..3aa6d180 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -65,7 +65,7 @@ public class SysLoginService
// 验证码开关
if (captchaOnOff)
{
- validateCapcha(username, code, uuid, request);
+ validateCaptcha(username, code, uuid, request);
}
// 用户验证
Authentication authentication = null;
@@ -103,7 +103,7 @@ public class SysLoginService
* @param uuid 唯一标识
* @return 结果
*/
- public void validateCapcha(String username, String code, String uuid, HttpServletRequest request) {
+ public void validateCaptcha(String username, String code, String uuid, HttpServletRequest request) {
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
String captcha = redisCache.getCacheObject(verifyKey);
redisCache.deleteObject(verifyKey);
diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml
index 8510c9fa..5535bd77 100644
--- a/ruoyi-generator/pom.xml
+++ b/ruoyi-generator/pom.xml
@@ -5,7 +5,7 @@
ruoyi-vue-plus
com.ruoyi
- 2.5.2
+ 2.6.0
4.0.0
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
index 44baf825..40f0738c 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
@@ -1,7 +1,7 @@
package com.ruoyi.generator.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.generator.domain.GenTableColumn;
import com.ruoyi.generator.mapper.GenTableColumnMapper;
import org.springframework.stereotype.Service;
@@ -15,7 +15,7 @@ import java.util.List;
* @author ruoyi
*/
@Service
-public class GenTableColumnServiceImpl extends ServicePlusImpl implements IGenTableColumnService {
+public class GenTableColumnServiceImpl extends ServiceImpl implements IGenTableColumnService {
/**
* 查询业务字段列表
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
index 9eceadf0..bece86a9 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -6,9 +6,9 @@ import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.GenConstants;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.CustomException;
import com.ruoyi.common.utils.JsonUtils;
@@ -35,7 +35,10 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
-import java.util.*;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -47,7 +50,7 @@ import java.util.zip.ZipOutputStream;
*/
@Slf4j
@Service
-public class GenTableServiceImpl extends ServicePlusImpl implements IGenTableService {
+public class GenTableServiceImpl extends ServiceImpl implements IGenTableService {
@Autowired
private GenTableColumnMapper genTableColumnMapper;
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
index 38d38540..e0111e5d 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
@@ -1,6 +1,6 @@
package com.ruoyi.generator.service;
-import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.generator.domain.GenTableColumn;
import java.util.List;
@@ -10,7 +10,7 @@ import java.util.List;
*
* @author ruoyi
*/
-public interface IGenTableColumnService extends IServicePlus {
+public interface IGenTableColumnService extends IService {
/**
* 查询业务字段列表
*
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
index a44dd5e2..9903ecaf 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
@@ -1,6 +1,6 @@
package com.ruoyi.generator.service;
-import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.generator.domain.GenTable;
@@ -12,7 +12,7 @@ import java.util.Map;
*
* @author ruoyi
*/
-public interface IGenTableService extends IServicePlus {
+public interface IGenTableService extends IService {
TableDataInfo selectPageGenTableList(GenTable genTable);
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
index 76073c79..641cf1d1 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
@@ -132,9 +132,7 @@ public class VelocityUtils
List templates = new ArrayList();
templates.add("vm/java/domain.java.vm");
templates.add("vm/java/vo.java.vm");
- templates.add("vm/java/queryBo.java.vm");
- templates.add("vm/java/addBo.java.vm");
- templates.add("vm/java/editBo.java.vm");
+ templates.add("vm/java/bo.java.vm");
templates.add("vm/java/mapper.java.vm");
templates.add("vm/java/service.java.vm");
templates.add("vm/java/serviceImpl.java.vm");
@@ -184,20 +182,12 @@ public class VelocityUtils
}
if (template.contains("vo.java.vm"))
{
- fileName = StrUtil.format("{}/vo/{}Vo.java", javaPath, className);
- }
- if (template.contains("queryBo.java.vm"))
- {
- fileName = StrUtil.format("{}/bo/{}QueryBo.java", javaPath, className);
- }
- if (template.contains("addBo.java.vm"))
- {
- fileName = StrUtil.format("{}/bo/{}AddBo.java", javaPath, className);
- }
- if (template.contains("editBo.java.vm"))
- {
- fileName = StrUtil.format("{}/bo/{}EditBo.java", javaPath, className);
+ fileName = StrUtil.format("{}/domain/vo/{}Vo.java", javaPath, className);
}
+ if (template.contains("bo.java.vm"))
+ {
+ fileName = StrUtil.format("{}/domain/bo/{}Bo.java", javaPath, className);
+ }
if (template.contains("sub-domain.java.vm") && StrUtil.equals(GenConstants.TPL_SUB, genTable.getTplCategory()))
{
fileName = StrUtil.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
diff --git a/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm b/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm
deleted file mode 100644
index 82d08627..00000000
--- a/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm
+++ /dev/null
@@ -1,45 +0,0 @@
-package ${packageName}.bo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import java.util.Date;
-import javax.validation.constraints.*;
-
-
-#foreach ($import in $importList)
-import ${import};
-#end
-
-/**
- * ${functionName}添加对象 ${tableName}
- *
- * @author ${author}
- * @date ${datetime}
- */
-@Data
-@ApiModel("${functionName}添加对象")
-public class ${ClassName}AddBo {
-
-#foreach ($column in $columns)
-#if($column.isInsert && $column.isPk!=1)
-
- /** $column.columnComment */
- @ApiModelProperty("$column.columnComment")
-#if($column.isRequired==1)
-#if($column.javaType == 'String')
- @NotBlank(message = "$column.columnComment不能为空")
-#else
- @NotNull(message = "$column.columnComment不能为空")
-#end
-#end
- private $column.javaType $column.javaField;
-#end
-#end
-#if($table.sub)
-
- /** $table.subTable.functionName信息 */
- @ApiModelProperty("$table.subTable.functionName")
- private List<${subClassName}> ${subclassName}List;
-#end
-}
diff --git a/ruoyi-generator/src/main/resources/vm/java/bo.java.vm b/ruoyi-generator/src/main/resources/vm/java/bo.java.vm
new file mode 100644
index 00000000..40174d5c
--- /dev/null
+++ b/ruoyi-generator/src/main/resources/vm/java/bo.java.vm
@@ -0,0 +1,88 @@
+package ${packageName}.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+#foreach ($import in $importList)
+import ${import};
+#end
+#if($table.crud || $table.sub)
+import com.ruoyi.common.core.domain.BaseEntity;
+#elseif($table.tree)
+import com.ruoyi.common.core.domain.TreeEntity;
+#end
+
+/**
+ * ${functionName}业务对象 ${tableName}
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+#if($table.crud || $table.sub)
+#set($Entity="BaseEntity")
+#elseif($table.tree)
+#set($Entity="TreeEntity")
+#end
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("${functionName}业务对象")
+public class ${ClassName}Bo extends ${Entity} {
+
+#foreach ($column in $columns)
+#if(!$table.isSuperColumn($column.javaField) && ($column.query || $column.isInsert || $column.isEdit))
+ /**
+ * $column.columnComment
+ */
+ @ApiModelProperty("$column.columnComment")
+#if($column.isInsert && $column.isEdit)
+#set($Group="AddGroup.class, EditGroup.class")
+#elseif($column.isInsert)
+#set($Group="AddGroup.class")
+#elseif($column.isEdit)
+#set($Group="EditGroup.class")
+#end
+#if($column.isRequired == 1)
+#if($column.javaType == 'String')
+ @NotBlank(message = "$column.columnComment不能为空", groups = { $Group })
+#else
+ @NotNull(message = "$column.columnComment不能为空", groups = { $Group })
+#end
+#end
+ private $column.javaType $column.javaField;
+
+#end
+#end
+
+ /**
+ * 分页大小
+ */
+ @ApiModelProperty("分页大小")
+ private Integer pageSize;
+
+ /**
+ * 当前页数
+ */
+ @ApiModelProperty("当前页数")
+ private Integer pageNum;
+
+ /**
+ * 排序列
+ */
+ @ApiModelProperty("排序列")
+ private String orderByColumn;
+
+ /**
+ * 排序的方向desc或者asc
+ */
+ @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+ private String isAsc;
+
+}
diff --git a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
index a87c6cdd..ba29e201 100644
--- a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
@@ -13,11 +13,11 @@ import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
-import ${packageName}.vo.${ClassName}Vo;
-import ${packageName}.bo.${ClassName}QueryBo;
-import ${packageName}.bo.${ClassName}AddBo;
-import ${packageName}.bo.${ClassName}EditBo;
+import ${packageName}.domain.vo.${ClassName}Vo;
+import ${packageName}.domain.bo.${ClassName}Bo;
import ${packageName}.service.I${ClassName}Service;
import com.ruoyi.common.utils.poi.ExcelUtil;
#if($table.crud || $table.sub)
@@ -49,11 +49,11 @@ public class ${ClassName}Controller extends BaseController {
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
@GetMapping("/list")
#if($table.crud || $table.sub)
- public TableDataInfo<${ClassName}Vo> list(@Validated ${ClassName}QueryBo bo) {
+ public TableDataInfo<${ClassName}Vo> list(@Validated ${ClassName}Bo bo) {
return i${ClassName}Service.queryPageList(bo);
}
#elseif($table.tree)
- public AjaxResult> list(@Validated ${ClassName}QueryBo bo) {
+ public AjaxResult> list(@Validated ${ClassName}Bo bo) {
List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo);
return AjaxResult.success(list);
}
@@ -66,7 +66,7 @@ public class ${ClassName}Controller extends BaseController {
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
@Log(title = "${functionName}", businessType = BusinessType.EXPORT)
@GetMapping("/export")
- public AjaxResult<${ClassName}Vo> export(@Validated ${ClassName}QueryBo bo) {
+ public AjaxResult<${ClassName}Vo> export(@Validated ${ClassName}Bo bo) {
List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo);
ExcelUtil<${ClassName}Vo> util = new ExcelUtil<${ClassName}Vo>(${ClassName}Vo.class);
return util.exportExcel(list, "${functionName}");
@@ -91,8 +91,8 @@ public class ${ClassName}Controller extends BaseController {
@Log(title = "${functionName}", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
- public AjaxResult add(@Validated @RequestBody ${ClassName}AddBo bo) {
- return toAjax(i${ClassName}Service.insertByAddBo(bo) ? 1 : 0);
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody ${ClassName}Bo bo) {
+ return toAjax(i${ClassName}Service.insertByBo(bo) ? 1 : 0);
}
/**
@@ -103,8 +103,8 @@ public class ${ClassName}Controller extends BaseController {
@Log(title = "${functionName}", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
- public AjaxResult