瑞吉外卖订单明细功能补全

一、订单明细后台显示功能补全

需求分析

当小程序点击支付订单后,管理端中订单明细模块可以显示出支付后的订单。

交互过程

通过浏览器进行订单明细的查询,当我们点击订单明细后,可以看到也是分页查询的基本操作

代码实现

订单明细其实也是一个分页查询的功能实现,使用了MyBatis-Plus的QueryWrapper类来构建数据库查询条件。构建查询条件的一部分,

  1. queryWrapper.like(number!=null, Orders::getNumber, number);: 这行代码检查变量number是否不为null。如果number不为空,则添加一个条件,使得查询结果中Orders表的number字段包含number变量的值。

  2. queryWrapper.gt(StringUtils.isNotBlank(beginTime), Orders::getOrderTime, beginTime);: 这行代码首先使用StringUtils.isNotBlank方法检查beginTime变量是否不为空且不只包含空白字符。如果beginTime不为空,那么添加一个条件,使得查询结果中Orders表的orderTime字段的值大于beginTime

  3. queryWrapper.lt(StringUtils.isNotBlank(endTime), Orders::getOrderTime, endTime);: 这行代码与上一行类似,但是它检查的是endTime。如果endTime不为空,那么添加一个条件,使得查询结果中Orders表的orderTime字段的值小于endTime

Orders::getNumberOrders::getOrderTime 是方法引用,它们分别引用了Orders实体类中获取numberorderTime字段值的方法。

QueryWrapper是一个动态SQL生成器,它允许你以一种声明式的方式构建复杂的查询条件,而不需要手动编写SQL语句。这种方式可以提高代码的可读性和可维护性。

分页查询基本步骤离不开这几个操作:

1、构造分页构造器

Page<A> pageInfo = new Page<>(page,pageSize)

2、构造条件构造器

LambdaQueryWrapper<A> queryWrapper = new LambdaQueryWrapper<>();

3、添加过滤条件

4、添加排序条件

queryWrapper.XX(A::XX);

5、执行分页查询

 .page(pageInfo,queryWrapper)

二、订单明细修改功能补全

需求分析

当订单派送完成后,点击派送按钮修改订单状态

交互过程

代码实现

  1. public R<String> orderStatusChange(@RequestBody Map<String,String> map):定义了一个名为orderStatusChange的处理方法,它接受一个Map<String, String>类型的请求体参数,并且返回一个R<String>类型的对象。R可能是一个自定义的响应实体类,用于封装响应的数据和状态信息。

  2. String id = map.get("id");:从请求体的Map中获取键为"id"的值,并将其赋值给变量id

  3. Long orderId = Long.parseLong(id);:将获取到的id字符串转换为Long类型,并赋值给变量orderId。这里假设id是订单的唯一标识符。

  4. Integer status = Integer.parseInt(map.get("status"));:从请求体的Map中获取键为"status"的值,并将其转换为Integer类型,赋值给变量status。这里假设status是要修改的订单状态。

  5. if(orderId == null || status == null){:检查orderIdstatus是否为null。如果任何一个为null,则返回一个错误响应。

  6. return R.error("该用户无订单");:如果orderIdstatusnull,则返回一个包含错误信息的R对象。

  7. Orders orders = ordersService.getById(orderId);:调用ordersServicegetById方法,根据orderId查询订单数据。

  8. orders.setStatus(status);:将查询到的订单对象的status属性设置为从请求体中获取的新状态。

  9. ordersService.updateById(orders);:调用ordersServiceupdateById方法,更新数据库中的订单状态。

  10. return R.success("订单状态修改成功");:如果订单状态修改成功,则返回一个包含成功信息的R对象。

三、用户端订单查看功能补全

需求分析

当用户支付订单成功后,点击订单按钮可以查看订单明细

交互过程

代码实现

这段代码是一个Spring框架中的RESTful API端点的实现,使用了@GetMapping注解来定义一个GET请求的处理器。代码实现了用户订单的分页查询功能,并且将查询结果封装到一个分页对象中返回。

   首先将HTTP GET请求映射到下面的处理方法。定义了一个名为page的处理方法,它接受两个整数参数pagepageSize,分别代表请求的页码和每页的记录数,返回一个R<Page>类型的对象。R可能是一个自定义的响应实体类,Page是MyBatis-Plus的分页结果类。创建一个Orders类型对象的分页对象pageInfo,初始化页码和每页大小。OrdersDto类型对象的分页对象pageDto,用于存储转换后的分页数据。

   然后创建一个条件查询对象queryWrapper,用于构建查询条件。添加一个查询条件,筛选出用户ID等于当前登录用户ID的订单。添加一个排序条件,根据订单的更新时间降序排列。调用ordersServicepage方法,传入分页对象和查询条件,执行分页查询。获取分页查询结果中的记录列表。使用Java 8的流(Stream)对查询结果进行处理,将每个Orders对象转换为OrdersDto对象,并为OrdersDto对象的orderDetails属性赋值。使用Apache Commons BeanUtils库的copyProperties方法,将Orders对象的属性复制到OrdersDto对象。为OrdersDto对象的orderDetails属性赋值,即设置订单明细列表。将pageInfo的属性复制到pageDto,除了records属性。设置pageDtorecords属性为转换后的订单明细DTO列表。

   最后返回一个包含分页数据的R对象,表示操作成功。

  这段代码实现了分页查询用户订单的功能,并且对查询结果进行了转换和封装,最终返回给客户端。代码中使用了MyBatis-Plus的分页功能和Lambda表达式来构建查询条件,以及Java 8的流操作来处理集合数据。此外,还使用了Apache Commons BeanUtils库来简化对象属性的复制过程。

四、用户端再来一单功能补全

需求分析

当用户支付完成订单后想再来一单时,可以在订单查看那点击再来一单。

交互过程

代码实现

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值