分页查询优惠券
文章目录
-
- 概要
- 整体架构流程
- 技术细节
- 小结
概要
接口分析
一个典型的带过滤条件的分页查询,非常简单。按照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.处理VOList<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层