苍穹外卖学习笔记(二十二)

news/2024/10/16 20:17:58 标签: 学习, 笔记, windows, java, spring

文章目录

  • 商家端订单管理模块:
    • 订单搜索
      • OrderController
      • OrderService
      • OrderServiceImpl
    • 各个状态的订单数量统计
      • OrderController
      • OrderService
      • OrderServiceImpl
      • orderMapper
    • 查询订单详情
      • OrderController
    • 接单
      • OrderController
      • OrderServiceImpl

商家端订单管理模块:

订单搜索

OrderController

java">/**
     * 订单搜索
     */
    @GetMapping("/conditionSearch")
    @ApiOperation(value = "订单搜索")
    public Result<PageResult> conditionSearch(OrdersPageQueryDTO ordersPageQueryDTO) {
        PageResult pageResult = orderService.conditionSearch(ordersPageQueryDTO);
        return Result.success(pageResult);
    }

OrderService

java">    /**
     * 订单搜索
     */
    PageResult conditionSearch(OrdersPageQueryDTO ordersPageQueryDTO);

OrderServiceImpl

java">    /**
     * 订单搜索
     */
    @Override
    public PageResult conditionSearch(OrdersPageQueryDTO ordersPageQueryDTO) {
        Page<Orders> page = new Page<>(ordersPageQueryDTO.getPage(), ordersPageQueryDTO.getPageSize());
        LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
        if (ordersPageQueryDTO.getStatus() != null) {
            queryWrapper.eq(Orders::getStatus, ordersPageQueryDTO.getStatus());
        }
        if (ordersPageQueryDTO.getNumber() != null && !ordersPageQueryDTO.getNumber().isEmpty()) {
            queryWrapper.like(Orders::getNumber, ordersPageQueryDTO.getNumber());
        }
        if (ordersPageQueryDTO.getPhone() != null && !ordersPageQueryDTO.getPhone().isEmpty()) {
            queryWrapper.like(Orders::getPhone, ordersPageQueryDTO.getPhone());
        }
        if (ordersPageQueryDTO.getBeginTime() != null) {
            queryWrapper.ge(Orders::getOrderTime, ordersPageQueryDTO.getBeginTime());
        }
        if (ordersPageQueryDTO.getEndTime() != null) {
            queryWrapper.le(Orders::getOrderTime, ordersPageQueryDTO.getEndTime());
        }
        Page<Orders> ordersPage = orderMapper.selectPage(page, queryWrapper);
        // 部分订单状态,需要额外返回订单菜品信息,将Orders转化为OrderVO
        List<OrderVO> orderVOList = getOrderVOList(ordersPage);
        return new PageResult(page.getTotal(), orderVOList);
    }
    /**
     * 将Orders转化为OrderVO
     */
    private List<OrderVO> getOrderVOList(Page<Orders> page) {
        // 需要返回订单菜品信息,自定义OrderVO响应结果
        List<OrderVO> orderVOList = new ArrayList<>();

        List<Orders> ordersList = page.getRecords();
        if (!CollectionUtils.isEmpty(ordersList)) {
            for (Orders orders : ordersList) {
                // 将共同字段复制到OrderVO
                OrderVO orderVO = new OrderVO();
                BeanUtils.copyProperties(orders, orderVO);
                String orderDishes = getOrderDishesStr(orders);
                // 将订单菜品信息封装到orderVO中,并添加到orderVOList
                orderVO.setOrderDishes(orderDishes);
                orderVOList.add(orderVO);
            }
        }
        return orderVOList;
    }

    /**
     * 根据订单id获取菜品信息字符串
     */
    private String getOrderDishesStr(Orders orders) {
        // 查询订单菜品详情信息(订单中的菜品和数量)
        LambdaQueryWrapper<OrderDetail> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(OrderDetail::getOrderId, orders.getId());
        List<OrderDetail> orderDetailList = orderDetailMapper.selectList(queryWrapper);

        // 将每一条订单菜品信息拼接为字符串(格式:宫保鸡丁*3;)
        List<String> orderDishList = orderDetailList.stream().map(x -> {
            String orderDish = x.getName() + "*" + x.getNumber() + ";";
            return orderDish;
        }).toList();
        // 将该订单对应的所有菜品信息拼接在一起
        return String.join("", orderDishList);
    }

各个状态的订单数量统计

OrderController

java">    /**
     * 各个状态的订单数量统计
     */
    @GetMapping("/statistics")
    @ApiOperation("各个状态的订单数量统计")
    public Result<OrderStatisticsVO> statistics() {
        OrderStatisticsVO orderStatisticsVO = orderService.statistics();
        return Result.success(orderStatisticsVO);
    }

OrderService

java">    /**
     * 各个状态的订单数量统计
     */
    OrderStatisticsVO statistics();

OrderServiceImpl

java">    /**
     * 各个状态的订单数量统计
     */
    @Override
    public OrderStatisticsVO statistics() {
        // 根据状态,分别查询出待接单、待派送、派送中的订单数量
        Integer toBeConfirmed = orderMapper.countStatus(Orders.TO_BE_CONFIRMED);
        Integer confirmed = orderMapper.countStatus(Orders.CONFIRMED);
        Integer deliveryInProgress = orderMapper.countStatus(Orders.DELIVERY_IN_PROGRESS);

        // 将查询出的数据封装到orderStatisticsVO中响应
        OrderStatisticsVO orderStatisticsVO = new OrderStatisticsVO();
        orderStatisticsVO.setToBeConfirmed(toBeConfirmed);
        orderStatisticsVO.setConfirmed(confirmed);
        orderStatisticsVO.setDeliveryInProgress(deliveryInProgress);
        return orderStatisticsVO;
    }

orderMapper

java">    /**
     * 统计订单状态
     */
    @Select("select count(id) from orders where status = #{status}")
    Integer countStatus(Integer toBeConfirmed);

查询订单详情

OrderController

java">    /**
     * 订单详情
     */
    @GetMapping("/details/{id}")
    @ApiOperation("订单详情")
    public Result<OrderVO> details(@PathVariable Long id) {
        OrderVO orderVO = orderService.details(id);
        return Result.success(orderVO);
    }

接单

OrderController

java"> /**
     * 接单
     */
    @PutMapping("/confirm")
    @ApiOperation("接单")
    public Result confirm(@RequestBody OrdersConfirmDTO ordersConfirmDTO) {
        orderService.confirm(ordersConfirmDTO);
        return Result.success();
    }
### OrderService
```java
    /**
     * 接单
     */
    void confirm(OrdersConfirmDTO ordersConfirmDTO);

OrderServiceImpl

java">     /**
     * 接单
     */
    @Override
    public void confirm(OrdersConfirmDTO ordersConfirmDTO) {
        Orders orders = Orders.builder()
                .id(ordersConfirmDTO.getId())
                .status(Orders.CONFIRMED)
                .build();
        orderMapper.updateById(orders);
    }

http://www.niftyadmin.cn/n/5708477.html

相关文章

一键生成单页PPT的AI!这4个人工智能工具一定要知道!

现在大家对AI生成PPT软件应该并不陌生了&#xff0c;这类AI软件非常强大和智能&#xff0c;只需要输入一个PPT主题&#xff0c;AI生成PPT软件就会快速生成一份包含10页面的PPT。 基于AI生成一份PPT后&#xff0c;如果想在此基础上添加一个或多个页面&#xff0c;是否可以快速生…

中国成功破解加密货币常用算法?量子计算机对加密货币的安全威胁!

近日&#xff0c;有报道称中国研究人员利用量子计算机成功破解了几种常用的加密算法&#xff0c;这一消息引发了广泛关注&#xff0c;尤其是在加密货币领域。量子计算的快速发展不仅可能颠覆传统计算机的计算能力&#xff0c;还可能为加密货币的未来带来巨大不确定性。 要理解量…

2024年10月19日(星期六)反骑古莲村

2024年9月19日 (星期六&#xff09;反骑古莲村&#xff0c;早8:30到9:00&#xff0c;大观公园门口集合&#xff0c;9:00准时出发【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:大观公园门口集合 &#xff0c;家住东&#xff0c;西&#xff0c;…

在linux环境下修改可运行jar包配置并重新打包

在linux环境下修改可运行jar包配置并重新打包步骤&#xff1a; 1&#xff09;mkdir xxx 2&#xff09;mv XXX.jar XXX 3&#xff09;jar xvf XXX.jar 4&#xff09;mv XXX.jar ../ 5&#xff09;vi XXXXX.properties 6&#xff09;jar cvfM0 XXX.jar ./META_INF/MANIFAST.MF .…

JVM第一章

第一章 1、JVM的整体架构 2、Java代码的执行流程 解释执行&#xff1a;就是逐行执行 编译执行&#xff1a;就是将热点代码的字节码&#xff0c;二次编译成机器码&#xff0c;缓存到方法区后下次直接调用 3、JVM的架构模型 Java 编译器输入的指令流基本上是基于一种基于栈的…

防范数据泄露,守护安全存储新时代

在这个信息爆炸的时代&#xff0c;数据安全已经成为我们生活中不可或缺的一部分。无论是个人隐私、企业机密还是国家机密&#xff0c;数据的安全存储和传输都是我们最关注的问题。数据泄露、黑客攻击、隐私侵犯...这些词汇听起来就让人不寒而栗。想象一下&#xff0c;这时候一个…

从监控到优化:掌握磁盘 I/O 性能工具的使用

在当代计算机体系结构中&#xff0c;磁盘I/O性能是决定应用程序响应时间和系统综合效能的关键因素。通过对磁盘I/O性能实施细致的监控与优化策略&#xff0c;能够大幅度增强系统的运行效率与性能表现。本篇文章旨在推介一系列广泛采用的磁盘I/O性能分析工具&#xff0c;并通过具…

Mac中安装以及配置adb环境

一、adb介绍 Android 调试桥 (Android Debug Bridge) 是一种功能多样的命令行工具&#xff0c;可让您与设备进行通信。adb 命令可用于执行各种设备操作&#xff0c;例如安装和调试应用。adb 提供对 Unix shell&#xff08;可用来在设备上运行各种命令&#xff09;的访问权限。…