文章目录
概要
接口分析
一个典型的带过滤条件的分页查询,非常简单。按照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层


780

被折叠的 条评论
为什么被折叠?



