- 视频:【黑马程序员】Java 项目实战《瑞吉外卖》,轻松掌握 SpringBoot + MybatisPlus 开发核心技术
- 资料:2022 最新版 Java学习 路线图>第 5 阶段一 企业级项目实战>7.黑马程序员 瑞吉外卖平台实战开发(提取码:dor4)
上一篇:学习【瑞吉外卖⑦】SpringBoot单体项目:https://blog.csdn.net/yanzhaohanwei/article/details/125245214
http://localhost:8080/backend/index.html
请求网址:http://localhost:8080/order/page?page=1&pageSize=10
请求方式:GET
字符串参数:page=1&pageSize=10
但是前面我们已经有 public R
这个方法了,所以很明显参数不只这俩。
这个时候我们需要查看 resources
下的 backend/index.html
中的部分代码
{
id: '6',
name: '订单明细',
url: 'page/order/list.html',
icon: 'icon-order'
}
接着查看 resources
目录下的 backend/page/order/list.html
methods: {
async init() {
getOrderDetailPage({
page: this.page,
pageSize: this.pageSize,
number: this.input || undefined,
beginTime: this.beginTime || undefined,
endTime: this.endTime || undefined
}).then(res => {
if (String(res.code) === '1') {
this.tableData = res.data.records || []
this.counts = res.data.total
}
}).catch(err => {
this.$message.error('请求出错了:' + err)
})
},
显然,有五个参数:page,pageSize,number,beginTime,endTime。
很明显这里涉及到了两张表的字段,所以我们这里要用到 Dto 类。
此处代码源自博客 《Java项目实战 | 瑞吉外卖Day06 | 功能补充》:https://www.cnblogs.com/KizunaAI/p/16281559.html#管理端订单明细
com/itheima/reggie/controller/OrderController.java
/**
* 订单的分页查询
*
* @param page
* @param pageSize
* @param number
* @param beginTime
* @param endTime
* @return
*/
@GetMapping("/page")
public R<Page> page(int page, int pageSize, String number, String beginTime, String endTime) {
//构造分页构造器
Page<Orders> ordersPageInfo = new Page<>(page, pageSize);
Page<OrdersDto> ordersDtoPageInfo = new Page<>();
//构造条件构造器
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
//根据 number 进行模糊查询
queryWrapper.like(!StringUtils.isEmpty(number), Orders::getNumber, number);
//根据 Datetime 进行时间范围查询
if (beginTime != null && endTime != null) {
queryWrapper.ge(Orders::getOrderTime, beginTime);//ge :大于等于 >=
queryWrapper.le(Orders::getOrderTime, endTime);//le :小于等于 <=
}
//添加排序条件
queryWrapper.orderByDesc(Orders::getOrderTime);
//进行分页查询
orderService.page(ordersPageInfo, queryWrapper);
//对象拷贝
BeanUtils.copyProperties(ordersPageInfo, ordersDtoPageInfo, "records");
List<Orders> records = ordersPageInfo.getRecords();
List<OrdersDto> list = records.stream().map((item) -> {
OrdersDto ordersDto = new OrdersDto();
BeanUtils.copyProperties(item, ordersDto);
//此处相当于是给 userName 赋值 consignee_userId
String consignee = item.getConsignee();
String name = consignee + "_" + item.getUserId();
ordersDto.setUserName(name);
return ordersDto;
}).collect(Collectors.toList());
ordersDtoPageInfo.setRecords(list);
return R.success(ordersDtoPageInfo);
}
resources
目录下 的 backend/page/order/list.html
的部分代码为
点击界面的 “派送” 按钮后,出现下面的情况。
http://localhost:8080/backend/index.html
请求网址:http://localhost:8080/order
请求方式:PUT
请求内容:{"status":3,"id":"1538460744050278402"}
在开发代码之前,需要梳理一下整个程序的执行过程
com/itheima/reggie/controller/OrderController.java
/**
* 后台修改订单状态
*
* @param orders
* @return
*/
@PutMapping
public R<String> status(@RequestBody Orders orders) {
Long orderId = orders.getId();
Integer status = orders.getStatus();
if(orderId == null || status==null){
return R.error("传入信息不合法");
}
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Orders::getId, orderId);
Orders one = orderService.getOne(queryWrapper);
one.setStatus(status);
orderService.updateById(one);
return R.success("派送成功");
}
status:1.待付款,2.待派送,3.已派送,4.已完成,5.已取消
数据库中的表:orders
【瑞吉外卖 | SpringBoot 项目】的初步开发至此结束。