分页查询优惠券

文章目录

概要

接口分析

一个典型的带过滤条件的分页查询,非常简单。按照Restful风格设计即可,我们关注的点有两个:

  • 请求参数

  • 返回值格式

请求参数包含两部分,一个是分页参数,另一个是过滤条件,包含:

  • 优惠券的折扣类型

  • 优惠券状态

  • 优惠券名称关键字

而返回值则如列表中字段所属,需要特别注意的有两点:

  • 优惠券规则:这里是对优惠规则的描述,而数据库中保存的是具体的优惠金额;这里我们不组装描述返回,仅仅返回优惠金额信息,由前端自己组织展示即可。

  • 使用范围:这里无需展示真正的限定范围,只要告诉前端有没有限定范围即可

其它字段没什么特殊的,此处不再赘述了。

需求分析以及接口设计

技术细节

1.Controller层

@ApiOperation("分页查询优惠券接口")
@GetMapping("/page")
public PageDTO<CouponPageVO> queryCouponByPage(CouponQuery query){
    return couponService.queryCouponByPage(query);
}

2.Service层:

@Override
public PageDTO<CouponPageVO> queryCouponByPage(CouponQuery query) {
    Integer status = query.getStatus();
    String name = query.getName();
    Integer type = query.getType();
    // 1.分页查询
    Page<Coupon> page = lambdaQuery()
            .eq(type != null, Coupon::getDiscountType, type)
            .eq(status != null, Coupon::getStatus, status)
            .like(StringUtils.isNotBlank(name), Coupon::getName, name)
            .page(query.toMpPageDefaultSortByCreateTimeDesc());
    // 2.处理VO
    List<Coupon> records = page.getRecords();
    if (CollUtils.isEmpty(records)) {
        return PageDTO.empty(page);
    }
    List<CouponPageVO> list = BeanUtils.copyList(records, CouponPageVO.class);
    // 3.返回
    return PageDTO.of(page, list);
}

3.Mapper层

效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值