diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/pojo/CustomConditions.java b/win-framework/win-common/src/main/java/com/win/framework/common/pojo/CustomConditions.java new file mode 100644 index 00000000..1f86d9a9 --- /dev/null +++ b/win-framework/win-common/src/main/java/com/win/framework/common/pojo/CustomConditions.java @@ -0,0 +1,32 @@ +package com.win.framework.common.pojo; + +import lombok.Data; + +import java.util.List; + +@Data +public class CustomConditions extends PageParam { + + /** + * 自定义条件 + */ + private List filters; + + @Data + public static class Condition { + + /** + * 类型,==,!=,>,<,>=,<=,like,in,notIn,betweeen,isNull,isNotNull + */ + private String action; + /** + * 字段 + */ + private String column; + /** + * 值 + */ + private String value; + } + +} diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/pojo/PageParam.java b/win-framework/win-common/src/main/java/com/win/framework/common/pojo/PageParam.java index 73fa5bbb..11237725 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/pojo/PageParam.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/pojo/PageParam.java @@ -1,5 +1,6 @@ package com.win.framework.common.pojo; +import com.google.common.base.CaseFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -26,4 +27,38 @@ public class PageParam implements Serializable { @Max(value = 100, message = "每页条数最大值为 100") private Integer pageSize = PAGE_SIZE; + /** + * 顺序 - 升序 + */ + public static final String ORDER_ASC = "ASC"; + + /** + * 顺序 - 降序 + */ + public static final String ORDER_DESC = "DESC"; + + /** + * 字段 + */ + @Schema(description = "排序属性", requiredMode = Schema.RequiredMode.REQUIRED, example = "userName") + private String sort = "create_time"; + + /** + * 顺序 + */ + @Schema(description = "排序类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "DESC") + private String by = "DESC"; + + public void setSort(String sort) { + if(sort != null) { + this.sort = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort); + } + } + + public void setBy(String by) { + if(by != null) { + this.by = by.toUpperCase(); + } + } + } diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/pojo/SortingField.java b/win-framework/win-common/src/main/java/com/win/framework/common/pojo/SortingField.java deleted file mode 100644 index 41787e43..00000000 --- a/win-framework/win-common/src/main/java/com/win/framework/common/pojo/SortingField.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.win.framework.common.pojo; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * 排序字段 DTO - * - * 类名加了 ing 的原因是,避免和 ES SortField 重名。 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class SortingField implements Serializable { - - /** - * 顺序 - 升序 - */ - public static final String ORDER_ASC = "asc"; - /** - * 顺序 - 降序 - */ - public static final String ORDER_DESC = "desc"; - - /** - * 字段 - */ - private String field; - /** - * 顺序 - */ - private String order; - -} diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/MyBatisUtils.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/MyBatisUtils.java index 6c64e693..3baa48bd 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/MyBatisUtils.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/MyBatisUtils.java @@ -1,21 +1,18 @@ package com.win.framework.mybatis.core.util; -import cn.hutool.core.collection.CollectionUtil; -import com.win.framework.common.pojo.PageParam; -import com.win.framework.common.pojo.SortingField; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.win.framework.common.pojo.PageParam; import net.sf.jsqlparser.expression.Alias; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; -import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; /** * MyBatis 工具类 @@ -25,17 +22,13 @@ public class MyBatisUtils { private static final String MYSQL_ESCAPE_CHARACTER = "`"; public static Page buildPage(PageParam pageParam) { - return buildPage(pageParam, null); - } - - public static Page buildPage(PageParam pageParam, Collection sortingFields) { // 页码 + 数量 Page page = new Page<>(pageParam.getPageNo(), pageParam.getPageSize()); // 排序字段 - if (!CollectionUtil.isEmpty(sortingFields)) { - page.addOrder(sortingFields.stream().map(sortingField -> SortingField.ORDER_ASC.equals(sortingField.getOrder()) ? - OrderItem.asc(sortingField.getField()) : OrderItem.desc(sortingField.getField())) - .collect(Collectors.toList())); + if (!StringUtils.isEmpty(pageParam.getBy()) && !StringUtils.isEmpty(pageParam.getSort())) { + page.addOrder(PageParam.ORDER_ASC.equals(pageParam.getBy()) ? OrderItem.asc(pageParam.getSort()) : OrderItem.desc(pageParam.getSort())); + } else { + page.addOrder(OrderItem.desc("create_time")); } return page; } diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java index d0d29f20..bbc77931 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java @@ -2,9 +2,8 @@ package com.win.framework.mybatis.core.util; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.base.CaseFormat; +import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.util.collection.CollectionUtils; -import com.win.framework.mybatis.core.vo.ConditionVo; -import com.win.framework.mybatis.core.vo.FilterVo; import org.apache.commons.lang3.StringUtils; /** @@ -14,59 +13,58 @@ public class QueryWrapperUtils { /** * 根据参数动态组装QueryWrapper - * @param conditionVo filters {column: "userName", action: "==", value: "wenyin"} sorting userName DESC + * @param customConditions filters {column: "userName", action: "==", value: "wenyin"} sorting userName DESC * @param * @return */ - public static QueryWrapper structure(ConditionVo conditionVo) { + public static QueryWrapper structure(CustomConditions customConditions) { QueryWrapper queryWrapper = new QueryWrapper<>(); - String sorting = conditionVo.getSort(); + String sorting = customConditions.getSort(); if(StringUtils.isEmpty(sorting)) { - sorting = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sorting); - if(StringUtils.equalsIgnoreCase(conditionVo.getBy(), "DESC")) { + if(CustomConditions.ORDER_DESC.equals(customConditions.getBy())) { queryWrapper.orderByDesc(sorting); } else { queryWrapper.orderByAsc(sorting); } } - if(CollectionUtils.isAnyEmpty(conditionVo.getFilters())) { + if(CollectionUtils.isAnyEmpty(customConditions.getFilters())) { return queryWrapper; } - for(FilterVo filterVo : conditionVo.getFilters()) { - String column = filterVo.getColumn(); + for(CustomConditions.Condition condition : customConditions.getFilters()) { + String column = condition.getColumn(); column = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column); - switch (filterVo.getAction()) { + switch (condition.getAction()) { case "==" : - queryWrapper.eq(column, filterVo.getValue()); + queryWrapper.eq(column, condition.getValue()); break; case "!=" : - queryWrapper.ne(column, filterVo.getValue()); + queryWrapper.ne(column, condition.getValue()); break; case ">" : - queryWrapper.gt(column, filterVo.getValue()); + queryWrapper.gt(column, condition.getValue()); break; case "<" : - queryWrapper.lt(column, filterVo.getValue()); + queryWrapper.lt(column, condition.getValue()); break; case ">=" : - queryWrapper.ge(column, filterVo.getValue()); + queryWrapper.ge(column, condition.getValue()); break; case "<=" : - queryWrapper.le(column, filterVo.getValue()); + queryWrapper.le(column, condition.getValue()); break; case "like" : - queryWrapper.like(column, filterVo.getValue()); + queryWrapper.like(column, condition.getValue()); break; case "in" : - queryWrapper.in(column, filterVo.getValue()); + queryWrapper.in(column, condition.getValue()); break; case "notin" : - queryWrapper.notIn(column, filterVo.getValue()); + queryWrapper.notIn(column, condition.getValue()); break; case "betweeen" : - String[] strs = filterVo.getValue().split(","); + String[] strs = condition.getValue().split(","); if(strs.length != 2) { - continue; + break; } queryWrapper.between(column, strs[0], strs[1]); break; diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/ConditionVo.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/ConditionVo.java deleted file mode 100644 index 3308def5..00000000 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/ConditionVo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.win.framework.mybatis.core.vo; - -import com.win.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.util.List; - -/** - * 自定义查询条件 - */ -@Schema(description = "自定义查询条件") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ConditionVo extends PageParam { - - /** - * 排序字段 - */ - private String sort; - - /** - * 正序倒序 - */ - private String by; - - /** - * 检索字段 - */ - private List filters; - -} diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/FilterVo.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/FilterVo.java deleted file mode 100644 index a65f56d4..00000000 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/FilterVo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.win.framework.mybatis.core.vo; - -import lombok.Data; - -@Data -public class FilterVo { - - /** - * 类型,==,!=,>,<,>=,<=,like,in,notIn,betweeen,isNull,isNotNull - */ - private String action; - /** - * 字段 - */ - private String column; - /** - * 值 - */ - private String value; - -} diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/package-info.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/package-info.java deleted file mode 100644 index bf3f1ec0..00000000 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 使用 MyBatis Plus 提升使用 MyBatis 的开发效率 - */ -package com.win.framework.mybatis;