膳逸:分页查询用户功能开发文档

概述

本开发文档详细描述了MIS系统中的分页查询用户接口的设计与实现。通过该接口,用户可以根据各种条件查询用户信息,返回符合条件的用户列表,并支持分页显示。

功能需求

  1. 分页查询用户:用户可以通过提交查询条件来分页获取用户信息,包括用户名、姓名、手机号、邮箱等。
  2. 权限控制:确保只有具有特定权限的用户可以访问此接口。

接口详情

分页查询用户接口

接口路径

/mis_user/searchByPage

请求方法

POST

接口描述

该接口用于分页查询用户信息。用户可以通过提交查询条件来获取符合条件的用户列表,并支持分页显示。

POST 分页查询用户

POST /user/searchByPage

Body 请求参数

{
  "id": null,
  "nickName": "",
  "name": "",
  "phone": "",
  "email": "",
  "status": null,
  "order": "",
  "page": 1,
  "length": 10
}

请求参数

名称位置类型必选说明
Tokenheaderstringnone
bodybodyobjectnone
» idbodyintegernone
» nickNamebodystringnone
» namebodystringnone
» phonebodystringnone
» emailbodystringnone
» statusbodyintegernone
» orderbodystringnone
» pagebodyintegernone
» lengthbodyintegernone

返回示例

200 Response

{
  "msg": "string",
  "result": {
    "totalCount": 0,
    "pageSize": 0,
    "totalPage": 0,
    "pageIndex": 0,
    "list": [
      "string"
    ]
  },
  "code": 0
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

状态码 200

名称类型必选约束中文名说明
» msgstringtruenonenone
» resultobjecttruenonenone
»» totalCountintegertruenonenone
»» pageSizeintegertruenonenone
»» totalPageintegertruenonenone
»» pageIndexintegertruenonenone
»» list[string]truenonenone
» codeintegertruenonenone

实现细节

控制器代码

@PostMapping("/searchByPage")
    @SaCheckLogin
    @SaCheckPermission(value = {"ROOT", "USER:SELECT"}, mode = SaMode.OR)
    public R searchByPage(@RequestBody @Valid SearchUserByPageForm form) {
        Map param = BeanUtil.beanToMap(form);
        int page = form.getPage();
        int length = form.getLength();
        int start = (page - 1) * length;
        param.put("start", start);
        PageUtils pageUtils = userService.searchByPage(param);
        return R.ok().put("result", pageUtils);
    }

表单验证类

@Data
public class SearchUserByPageForm {
    private Integer id;

    private String nickName;

    @Pattern(regexp = "^[\\u4e00-\\u9fa5]{1,20}$", message = "name姓名内容不正确")
    private String name;

//    @Pattern(regexp = "^男$|^女$", message = "sex性别格式不正确,只能为男或女")
//    private String sex;

    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "phone手机号格式不正确")
    private String phone;

    @Pattern(regexp = "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$", message = "email邮箱格式不正确")
    private String email;

    // @NotBlank注解只能用在字符串上,如果不是字符串类型,都可以使用@NotNull
//    @NotNull(message = "status状态码不能为空")
    @Range(min = 0, max = 1, message = "status状态码不正确,0无效(逻辑删除),1有效")
    private Integer status;

    @Pattern(regexp = "^ASC$|^DESC$", message = "order排序字段不正确,只能为ASC(升序)或DESC(降序)")
    private String order;

    @NotNull(message = "page页码不能为空")
    @Min(value = 1, message = "page页码不能小于1")
    private Integer page;

    @NotNull(message = "length每页长度不能为空")
    @Range(min = 10, max = 50, message = "length每页长度不正确,最小10,最大50")
    private Integer length;


}

XML

<select id="searchByPage" parameterType="Map" resultType="HashMap">
        SELECT u.nick_name AS nickName,
               u.id,
        ui.name,
        ui.phone,
        ui.email,
        u.status,
        u.create_time AS createTime
        FROM user u
        left JOIN user_info ui ON u.id = ui.user_id
        WHERE 1 = 1
        <if test="nickName != null and nickName != ''">
            AND u.nick_name LIKE CONCAT('%', #{nickName}, '%')
        </if>
        <if test="name != null and name != ''">
            AND ui.name LIKE CONCAT('%', #{name}, '%')
        </if>
        <if test="phone != null and phone != ''">
            AND ui.phone = #{phone}
        </if>
        <if test="email != null and email != ''">
            AND ui.email = #{email}
        </if>
        <if test="status != null ">
            AND u.status = #{status}
        </if>
        <if test="order != null and order != ''">
            ORDER BY u.nick_name ${order}
        </if>
        LIMIT #{length} OFFSET #{start}
    </select>

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值