SpringBoot+SSM项目实战 苍穹外卖(09) day9作业

作业要求 用户端历史订单模块 查询历史订单 查询订单详情 取消订单 再来一单 商家端订单管理模块 订单搜索 各个状态的订单数量统计 查询订单详情 接单 拒单 取消订单 派送订单 完成订单 校验收货地址是否超出配送范围 基于百度地图开放平台实现
摘要由CSDN通过智能技术生成

继续上一节的内容,本节是作业课,要求独立完成:用户端历史订单模块、商家端订单管理模块相关业务新功能开发和已有功能优化。

作业要求

1.用户端历史订单模块:

  • 查询历史订单
  • 查询订单详情
  • 取消订单
  • 再来一单

商家端订单管理模块:

  • 订单搜索
  • 各个状态的订单数量统计
  • 查询订单详情
  • 接单
  • 拒单
  • 取消订单
  • 派送订单
  • 完成订单



2.已有功能优化

优化用户下单功能,加入校验逻辑,如果用户的收货地址距离商家门店超出配送范围(配送范围为5公里内),则下单失败。

提示:

​ 1. 基于百度地图开放平台实现
​ 2. 注册账号—>创建应用获取AK(服务端应用)—>调用接口
​ 3.相关接口1,相关接口2
​ 4.商家门店地址可以配置在配置文件中,例如:

sky:
  shop:
    address: 北京市海淀区上地十街10号


实战要求:

根据产品原型进行需求分析和接口设计
根据接口设计进行代码实现
分别通过swagger接口文档和前后端联调进行功能测试





用户端历史订单模块

查询历史订单

请添加图片描述

请添加图片描述

user/OrderController

/**
 * 查询历史订单
 *
 * @param page
 * @param pageSize
 * @param status   订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消
 * @return
 */
@GetMapping("/historyOrders")
@ApiOperation("用户查询历史订单")
public Result<PageResult> page(int page, int pageSize, Integer status) {
    // status可缺省 使用包装类
    log.info("用户历史订单分页查询,page:{},pageSize:{},status:{}", page, pageSize, status);
    PageResult pageResult = orderService.pageQuery(page, pageSize, status);
    return Result.success(pageResult);
}

OrderServiceImpl

/**
 * 查询历史订单
 *
 * @param page
 * @param pageSize
 * @param status   订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消
 * @return
 */
public PageResult pageQuery(int page, int pageSize, Integer status) {
   
    PageHelper.startPage(page,pageSize);
    Long userId = BaseContext.getCurrentId();
    OrdersPageQueryDTO ordersPageQueryDTO = new OrdersPageQueryDTO();
    ordersPageQueryDTO.setStatus(status);
    ordersPageQueryDTO.setUserId(userId);

    Page<Orders> pageResult = orderMapper.pagerQuery(ordersPageQueryDTO);

    // 查找出所有的order之后 还需要根据order的id去order_detail表中查找出相应的订单菜品
    List<OrderVO> records = new ArrayList<>();
    if(pageResult!=null && pageResult.size()>0){
   
        for (Orders order : pageResult) {
   
            Long orderId = order.getId();
            // 查询订单明细
            List<OrderDetail> orderDetailList = orderDetailMapper.getByOrderId(orderId);
            OrderVO orderVO = new OrderVO();
            BeanUtils.copyProperties(order,orderVO);
            orderVO.setOrderDetailList(orderDetailList);
            records.add(orderVO);
        }
    }
    return new PageResult(pageResult.getTotal(),records);
}

OrderMapper

/**
 * 分页条件查询并按下单时间排序
 * @param ordersPageQueryDTO
 */
Page<Orders> pageQuery(OrdersPageQueryDTO ordersPageQueryDTO);

OrderMapper.xml

<select id="pageQuery" resultType="Orders">
    select * from orders
    <where>
        <if test="number != null and number!=''">
            and number like concat('%',#{number},'%')
        </if>
        <if test="phone != null and phone!=''">
            and phone like concat('%',#{phone},'%')
        </if>
        <if test="userId != null">
            and user_id = #{userId}
        </if>
        <if test="status != null">
            and status = #{status}
        </if>
        <if test="beginTime != null">
            and order_time &gt;= #{beginTime}
        </if>
        <if test="endTime != null">
            and order_time &lt;= #{endTime}
        </if>
    </where>
    order by order_time desc
</select>

OrderDetailMapper

/**
 * 根据订单id查询订单明细
 * @param orderId
 * @return
 */
@Select("select * from order_detail where order_id = #{orderId}")
List<OrderDetail> getByOrderId(Long orderId);

测试:

请添加图片描述




查询订单详情

请添加图片描述

请添加图片描述

user/OrderController

/**
 * 查询订单详情
 *
 * @param id 订单id
 * @return
 */
@GetMapping("/orderDetail/{id}")
@ApiOperation("用户查询订单详情")
public Result<OrderVO> details(@PathVariable Long id) {
   
    log.info("用户查询订单详情,订单id:{}", id);
    OrderVO orderVO = orderService.details(id);
    return Result.success(orderVO);
}

OrderServiceImpl

/**
 * 查询订单详情
 *
 * @param id 订单id
 * @return
 */
public OrderVO details(Long id) {
   
    Orders orders = orderMapper.getById(id); // 根据订单id查询订单
    OrderVO orderVO = new OrderVO();
    BeanUtils.copyProperties(orders,orderVO);
    // 查询该订单对应的菜品/套餐明细
    List<OrderDetail> orderDetailList = orderDetailMapper.getByOrderId(id);
    orderVO.setOrderDetailList(orderDetailList);
    return orderVO;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值