diff --git a/src/main/java/com/laker/admin/framework/model/PageVO.java b/src/main/java/com/laker/admin/framework/model/PageVO.java new file mode 100644 index 0000000000000000000000000000000000000000..843c8d30ae79ad97dd59e50e832544c281796098 --- /dev/null +++ b/src/main/java/com/laker/admin/framework/model/PageVO.java @@ -0,0 +1,62 @@ +package com.laker.admin.framework.model; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * 查询参数 + */ +@Data +public class PageVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 每页显示条数,默认 10 + */ + @ApiModelProperty(value = "每页显示条数,默认 10") + private long size = 10; + /** + * 当前页,默认1,第一页 + */ + @ApiModelProperty(value = "当前页,默认1,第一页") + private long current = 1; + + /** + * 排序字段信息 + * 排序字段和排序类型 + * create_time desc,user_no asc. + */ + @ApiModelProperty(value = "排序字段和排序类型,例如:create_time desc,user_no asc.") + private String orderBy; + + + public Page toPage() { + Page page = new Page(); + page.setCurrent(current); + page.setSize(size); + if (StrUtil.isNotBlank(orderBy)) { + List orders = new ArrayList<>(); + String[] orderItems = StrUtil.split(orderBy, ","); + for (String orderItemStr : orderItems) { + String[] orderAndSort = StrUtil.split(orderItemStr, " "); + if (CollUtil.size(orderAndSort) != 2) { + continue; + } + String order = orderAndSort[0]; + String sort = orderAndSort[1]; + orders.add(new OrderItem(order, StrUtil.equalsIgnoreCase("ASC", sort))); + } + page.setOrders(orders); + } + return page; + } +} diff --git a/src/main/java/com/laker/admin/module/sys/controller/SysUserController.java b/src/main/java/com/laker/admin/module/sys/controller/SysUserController.java index a9909016c5d503c891634ab5bd4bfb12817644f1..ef417f3b121c2db0f0f800e0c8c4f840894882cd 100644 --- a/src/main/java/com/laker/admin/module/sys/controller/SysUserController.java +++ b/src/main/java/com/laker/admin/module/sys/controller/SysUserController.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.laker.admin.config.LakerConfig; import com.laker.admin.framework.aop.Metrics; import com.laker.admin.framework.model.PageResponse; +import com.laker.admin.framework.model.PageVO; import com.laker.admin.framework.model.Response; import com.laker.admin.module.sys.entity.SysRole; import com.laker.admin.module.sys.entity.SysUser; import com.laker.admin.module.sys.entity.SysUserRole; import com.laker.admin.module.sys.pojo.FlowAssigneVo; import com.laker.admin.module.sys.pojo.PwdQo; +import com.laker.admin.module.sys.pojo.UserDto; import com.laker.admin.module.sys.service.ISysRoleService; import com.laker.admin.module.sys.service.ISysUserRoleService; import com.laker.admin.module.sys.service.ISysUserService; @@ -70,6 +72,14 @@ public class SysUserController { return PageResponse.ok(pageList.getRecords(), pageList.getTotal()); } + @GetMapping("/pageComplexAll") + @ApiOperation(value = "复杂分页查询示例") + public PageResponse pageComplexAll(PageVO page, UserDto userDto) { + Page roadPage = page.toPage(); + Page pageList = sysUserService.page(roadPage, userDto.queryWrapper()); + return PageResponse.ok(pageList.getRecords(), pageList.getTotal()); + } + @GetMapping("/getAll") @ApiOperation(value = "获取所有用户") diff --git a/src/main/java/com/laker/admin/module/sys/pojo/UserDto.java b/src/main/java/com/laker/admin/module/sys/pojo/UserDto.java new file mode 100644 index 0000000000000000000000000000000000000000..49903c9a84aa6945168466ec0990e3357b820ed9 --- /dev/null +++ b/src/main/java/com/laker/admin/module/sys/pojo/UserDto.java @@ -0,0 +1,26 @@ +package com.laker.admin.module.sys.pojo; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.lang.StringUtils; + +@Data +public class UserDto { + @ApiModelProperty(value = "用户昵称") + private String nickName; + @ApiModelProperty(value = "性别") + private Integer sex; + @ApiModelProperty(value = "关键字") + private String keyword; + + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotEmpty(nickName), "nick_name", nickName); + queryWrapper.eq(sex != null, "sex", sex); + queryWrapper.and(StringUtils.isNotEmpty(keyword), + likeQueryWrapper -> likeQueryWrapper.like("user_name", keyword) + .or().like("nick_name", keyword)); + return queryWrapper; + } +} \ No newline at end of file