diff --git a/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java b/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java index 8d2db55..e64900f 100644 --- a/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java +++ b/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java @@ -2,6 +2,7 @@ package cc.yunxi.common.domain; import cc.yunxi.common.domain.function.SFunction; import cc.yunxi.common.utils.LambdaUtil; +import cc.yunxi.common.utils.ObjTypeUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.annotation.TableField; @@ -10,14 +11,13 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import lombok.experimental.Accessors; import javax.validation.constraints.Min; import java.io.Serializable; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.stream.Collectors; @@ -27,7 +27,7 @@ import java.util.stream.Collectors; @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) -public class PageQuery { +public class PageQuery { public static final Integer DEFAULT_PAGE_SIZE = 20; public static final Integer DEFAULT_PAGE_NUM = 1; @ApiModelProperty(value = "页码", required = false, example = "1") @@ -39,18 +39,44 @@ public class PageQuery { private Integer pageSize = DEFAULT_PAGE_SIZE; @ApiModelProperty(value = "排序规则", required = false) + @Setter(AccessLevel.NONE) private LinkedHashSet sortingFields; + @ApiModelProperty(value = "设置排序字段", hidden = true) + @Setter(AccessLevel.NONE) + private List orderItems = new ArrayList<>(10); - // 忽略构建排序 - public Page getPage() { - return Page.of(pageNo, pageSize); + + // 添加排序规则 + public PageQuery addOrderItem(SFunction orderByFuc) { + return this.addOrderItem(orderByFuc, true); + } + + public PageQuery addOrderItem(SFunction orderByFuc, boolean isAsc) { + OrderItem orderItem = new OrderItem(); + Class clazz = LambdaUtil.getClazz(orderByFuc); + String fieldName = LambdaUtil.getFieldName(orderByFuc); + try { + Field field = clazz.getDeclaredField(fieldName); + TableField annotation = field.getAnnotation(TableField.class); + if (annotation != null) { + orderItem.setColumn(annotation.value()); + } else { + String column = StringUtils.camelToUnderline(fieldName); + orderItem.setColumn(column); + } + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } + orderItem.setAsc(isAsc); + return this; } // 构建分页排序 - public Page buildPage(Class clazz, OrderItem... orderItems) { + public Page buildPage() { Page page = Page.of(pageNo, pageSize); - // 前端排序规则 + Class classT = ObjTypeUtil.getClassT(this, 0); + // 前端传入排序规则 if (!CollectionUtil.isEmpty(sortingFields)) { // 防sql注入,字段判断 List orderItemList = sortingFields.stream().filter(sortingField -> { @@ -59,7 +85,7 @@ public class PageQuery { if (StrUtil.isBlank(field)) { return false; } - clazz.getDeclaredField(field); + classT.getDeclaredField(field); return true; } catch (NoSuchFieldException e) { return false; @@ -72,48 +98,20 @@ public class PageQuery { }).collect(Collectors.toList()); page.addOrder(orderItemList); } - // 手动指定排序规则 - if (orderItems != null && orderItems.length > 0) { - for (OrderItem orderItem : orderItems) { - page.addOrder(orderItem); - } + // 设置指定排序规则 + for (OrderItem orderItem : orderItems) { + page.addOrder(orderItem); } return page; } - public Page buildPageByDefaultOrder(Class clazz, String defaultSortBy, boolean isAsc) { - OrderItem orderItem = new OrderItem(); - orderItem.setAsc(isAsc); - orderItem.setColumn(StringUtils.camelToUnderline(defaultSortBy)); - return buildPage(clazz, orderItem); - } - - - public Page buildPageByDefaultOrder(SFunction defaultSortByFuc, boolean isAsc) { - OrderItem orderItem = new OrderItem(); - Class clazz = LambdaUtil.getClazz(defaultSortByFuc); - String fieldName = LambdaUtil.getFieldName(defaultSortByFuc); - try { - Field field = clazz.getDeclaredField(fieldName); - TableField annotation = field.getAnnotation(TableField.class); - if (annotation != null) { - orderItem.setColumn(annotation.value()); - } else { - String column = StringUtils.camelToUnderline(fieldName); - orderItem.setColumn(column); - } - } catch (NoSuchFieldException e) { - throw new RuntimeException(e); - } - orderItem.setAsc(isAsc); - return buildPage(clazz, orderItem); - } - @Data @ApiModel(description = "排序规则") public static class SortingField implements Serializable { + private static final long serialVersionUID = -1; + /** * 顺序 - 升序 */ diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java b/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java index 72c5de2..cab9818 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java @@ -1,8 +1,8 @@ package cc.yunxi.domain.query; import cc.yunxi.common.domain.PageQuery; +import cc.yunxi.domain.po.ClientAccountDetail; import cc.yunxi.enums.BalanceChangeTypeEnum; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -13,7 +13,7 @@ import java.time.LocalDateTime; @EqualsAndHashCode(callSuper = true) @Data @ApiModel(value = "ClientAccountQuery", description = "散户余额明细查询条件") -public class ClientAccountQuery extends PageQuery { +public class ClientAccountQuery extends PageQuery { @ApiModelProperty(value = "散户ID", hidden = true, example = "1763507031581421570") private String clientId; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientQuery.java b/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientQuery.java index 5f951f9..b947b5a 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientQuery.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientQuery.java @@ -1,6 +1,7 @@ package cc.yunxi.domain.query; import cc.yunxi.common.domain.PageQuery; +import cc.yunxi.domain.po.Client; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,7 +10,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) @Data @ApiModel(value = "ClientQuery", description = "散户查询条件") -public class ClientQuery extends PageQuery { +public class ClientQuery extends PageQuery { @ApiModelProperty("联系电话") private String mobilePhone; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleOrderQuery.java b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleOrderQuery.java index f09a121..235b662 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleOrderQuery.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleOrderQuery.java @@ -2,6 +2,7 @@ package cc.yunxi.domain.query; import cc.yunxi.common.domain.PageQuery; import cc.yunxi.domain.dto.LocationDTO; +import cc.yunxi.domain.po.RecycleOrder; import cc.yunxi.enums.OrderStatusEnum; import cc.yunxi.enums.UserTypeEnum; import io.swagger.annotations.ApiModel; @@ -14,7 +15,7 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @ApiModel(value = "RecycleOrderQuery", description = "回收订单查询条件") -public class RecycleOrderQuery extends PageQuery { +public class RecycleOrderQuery extends PageQuery { @ApiModelProperty(value = "订单编号", required = false, example = "1234567890") private String id; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java index 802e3ee..483eeed 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java @@ -2,6 +2,7 @@ package cc.yunxi.domain.query; import cc.yunxi.common.domain.PageQuery; import cc.yunxi.domain.dto.LocationDTO; +import cc.yunxi.domain.po.RecycleStation; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,7 +12,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) @Data @ApiModel(value = "RecycleStationQuery", description = "回收站查询条件") -public class RecycleStationQuery extends PageQuery { +public class RecycleStationQuery extends PageQuery { @ApiModelProperty(value = "回收站id", required = false, example = "519071906947663877") private String stationId; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecyclerQuery.java b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecyclerQuery.java index 8719f58..9c89e13 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecyclerQuery.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecyclerQuery.java @@ -1,6 +1,7 @@ package cc.yunxi.domain.query; import cc.yunxi.common.domain.PageQuery; +import cc.yunxi.domain.po.Recycler; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,7 +10,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) @Data @ApiModel(value = "RecycleQuery", description = "回收员查询条件") -public class RecyclerQuery extends PageQuery { +public class RecyclerQuery extends PageQuery { @ApiModelProperty("所属回收站") private String stationId; diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java index b1fe9c0..a6d46e2 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java @@ -45,14 +45,10 @@ public class ClientServiceImpl extends ServiceImpl impleme @Override public Page queryClientByPage(ClientQuery clientQuery) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.lambda() - .eq(StrUtil.isNotEmpty(clientQuery.getMobilePhone()), Client::getMobilePhone, clientQuery.getMobilePhone()); -// Page recyclerPage = page( -// recyclerQuery.buildPageByDefaultOrder(Recycler.class, "goodTotal", true), wrapper); - Page clientPage = this.page( - clientQuery.buildPageByDefaultOrder(Client::getCreatorTime, true), wrapper); - return clientPage; + LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); + wrapperX.eqIfPresent(Client::getMobilePhone, clientQuery.getMobilePhone()); + Page pageDO = clientQuery.addOrderItem(Client::getCreatorTime).buildPage(); + return this.page(pageDO, wrapperX); } @Override @@ -106,9 +102,8 @@ public class ClientServiceImpl extends ServiceImpl impleme .eqIfPresent(ClientAccountDetail::getChangeType, clientAccountQuery.getChangeType()) .betweenIfPresent(ClientAccountDetail::getCreatorTime, clientAccountQuery.getDateRange()) .orderByDesc(ClientAccountDetail::getCreatorTime); - Page clientAccountDetailPage = accountDetailMapper.selectPage( - clientAccountQuery.getPage(), wrapperX); - return clientAccountDetailPage; + Page pageDO = clientAccountQuery.addOrderItem(ClientAccountDetail::getCreatorTime).buildPage(); + return accountDetailMapper.selectPage(pageDO, wrapperX); } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java index ec6143b..ebcb7a0 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java @@ -68,9 +68,8 @@ public class RecycleOrderServiceImpl extends ServiceImpl recycleOrderPage = page( - recycleOrderQuery.buildPageByDefaultOrder(RecycleOrder::getCreatorTime, true), wrapper); - return recycleOrderPage; + Page pageDO = recycleOrderQuery.addOrderItem(RecycleOrder::getCreatorTime).buildPage(); + return page(pageDO, wrapper); } public RecycleOrder getOrderById(String id) { diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java index 93a98ac..604dbd5 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java @@ -1,6 +1,8 @@ package cc.yunxi.service.impl; +import cc.yunxi.common.domain.LambdaQueryWrapperX; import cc.yunxi.common.exception.BizIllegalException; +import cc.yunxi.domain.po.Client; import cc.yunxi.domain.po.RecycleOrder; import cc.yunxi.domain.po.RecycleStation; import cc.yunxi.domain.query.RecycleOrderQuery; @@ -34,13 +36,10 @@ public class RecycleStationServiceImpl extends ServiceImpl queryStationByPage(RecycleStationQuery recycleStationQuery) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StrUtil.isNotEmpty(recycleStationQuery.getStationName()), - RecycleStation::getStationName, recycleStationQuery.getStationName()); -// Page page = recycleStationQuery.buildPage(RecycleStation.class); - Page page = recycleStationQuery.buildPageByDefaultOrder(RecycleStation::getCreatorTime, false); - Page recycleStationPage = recycleStationMapper.queryStationByPage(recycleStationQuery.getLocation(), page, wrapper); - return recycleStationPage; + LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); + wrapperX.eqIfPresent(RecycleStation::getStationName, recycleStationQuery.getStationName()); + Page pageDO = recycleStationQuery.addOrderItem(RecycleStation::getCreatorTime, false).buildPage(); + return recycleStationMapper.queryStationByPage(recycleStationQuery.getLocation(), pageDO, wrapperX); } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java index fcffe53..f49aaaf 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java @@ -1,9 +1,11 @@ package cc.yunxi.service.impl; +import cc.yunxi.common.domain.LambdaQueryWrapperX; import cc.yunxi.common.exception.BizIllegalException; import cc.yunxi.common.exception.DbException; import cc.yunxi.common.utils.BeanUtils; import cc.yunxi.domain.po.Client; +import cc.yunxi.domain.po.ClientAccountDetail; import cc.yunxi.domain.po.Recycler; import cc.yunxi.domain.query.RecyclerQuery; import cc.yunxi.domain.vo.client.ClientUpdateVO; @@ -33,16 +35,12 @@ public class RecyclerServiceImpl extends ServiceImpl i @Override public Page queryRecyclerByPage(RecyclerQuery recyclerQuery) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.lambda() - .eq(StrUtil.isNotEmpty(recyclerQuery.getStationId()), Recycler::getStationId, recyclerQuery.getStationId()) - .eq(StrUtil.isNotEmpty(recyclerQuery.getMobilePhone()), Recycler::getMobilePhone, recyclerQuery.getMobilePhone()) - .like(StrUtil.isNotEmpty(recyclerQuery.getStaffsName()), Recycler::getStaffsName, recyclerQuery.getStaffsName()); -// Page recyclerPage = page( -// recyclerQuery.buildPageByDefaultOrder(Recycler.class, "goodTotal", true), wrapper); - Page recyclerPage = page( - recyclerQuery.buildPageByDefaultOrder(Recycler::getOrderTotal, true), wrapper); - return recyclerPage; + LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); + wrapperX.eqIfPresent(Recycler::getStationId, recyclerQuery.getStationId()) + .eqIfPresent(Recycler::getMobilePhone, recyclerQuery.getMobilePhone()) + .likeIfPresent(Recycler::getStaffsName, recyclerQuery.getStaffsName()); + Page pageDO = recyclerQuery.addOrderItem(Recycler::getOrderTotal, true).buildPage(); + return page(pageDO, wrapperX); } @Override