当前位置: 首页 > article >正文

苍穹外卖 管理端订单分页查询

        OrderController

/**
     * 订单分页查询
     *
     * @param ordersPageQueryDTO
     * @return
     */
    @GetMapping("/conditionSearch")
    @ApiOperation("订单分页查询")
    public Result<PageResult> conditionSearch(OrdersPageQueryDTO ordersPageQueryDTO) {
        PageResult pageResult = orderService.conditionSearch(ordersPageQueryDTO);
        // 封装PageResult响应
        return Result.success(pageResult);
    }

        OrderService

/**
     * 订单分页查询
     *
     * @param ordersPageQueryDTO
     * @return
     */
    @Override
    public PageResult conditionSearch(OrdersPageQueryDTO ordersPageQueryDTO) {
        // 使用PageHelper分页插件辅助分页
        PageHelper.startPage(ordersPageQueryDTO.getPage(), ordersPageQueryDTO.getPageSize());
        Page<Orders> page = orderMapper.pageQuery(ordersPageQueryDTO);
        // 部分订单状态,需要额外返回订单菜品信息,所以说将Orders对象转化为OrderVO
        List<OrderVO> orderVOList = getOrderVOList(page);
        return new PageResult(page.getTotal(), orderVOList);
    }

    private List<OrderVO> getOrderVOList(Page<Orders> page) {
        // 需要返回订单菜品信息,自定义OrderVO响应结果
        List<OrderVO> orderVOList = new ArrayList<>();
        // 这是分页查询出来的所有的Orders订单信息,
        List<Orders> ordersList = page.getResult();
        // 先确保分页查询有结果
        if (!CollectionUtils.isEmpty(ordersList)) {
            for (Orders orders : ordersList) {
                // 将Orders对象封装为对应的OrderVO对象

                // 将Orders中和OrderVO相同的字段复制到OrderVO中
                OrderVO orderVO = new OrderVO();
                BeanUtils.copyProperties(orders, orderVO);
                // 将菜品详细信息封装为一个字符串
                String orderDishes = getOrderDishesStr(orders);
                // 将订单菜品信息封装到orderVO中,并添加到orderVOList返回
                orderVO.setOrderDishes(orderDishes);
                orderVOList.add(orderVO);
            }
        }
    return orderVOList;
    }

    /**
     * 根据订单id获取菜品信息字符串
     *
     * @param orders
     * @return
     */
    private String getOrderDishesStr(Orders orders) {
        // 查询菜品的详情信息(订单中的菜品和数量)
        List<OrderDetail> orderDetailList = orderDetailMapper.getByOrderId(orders.getId());
        // 将每一条订单菜品信息拼接为字符串(如:宫保鸡丁 * 3)
        List<String> orderDishList = orderDetailList.stream().map(x -> {
            String orderDish = x.getName() + " * " + x.getNumber() + ";";
            return orderDish;
        }).collect(Collectors.toList());

        // 将该订单对应的所有菜品信息拼接在一起返回
        // 将orderDishList中的元素以空字符串("")作为连接符连接成一个字符串。
        return String.join("", orderDishList);
    }

        OrderMapper

 <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>

 

 


http://www.kler.cn/a/384313.html

相关文章:

  • PDF多功能工具箱 PDF Shaper v14.6
  • Linux挖矿病毒(kswapd0进程使cpu爆满)
  • 【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
  • OpenAI大事记;GPT到ChatGPT参数量进化
  • vue3+vite搭建脚手架项目使用eletron打包成桌面应用+可以热更新
  • MySQL数据库中的视图
  • 【Android】Service
  • 在数据抓取的时候,短效IP比长效IP有哪些优势?
  • ESP32 gptimer通用定时器初始化报错:assert failed: timer_ll_set_clock_prescale
  • 【数字图像处理+MATLAB】对图片进行伽马校正(Gamma Correction):使用 imadjust 函数进行伽马变换
  • 由中文乱码引来的一系列学习——Qt
  • 『Django』初识前后端分离
  • 【CentOS】中的Firewalld:全面介绍与实战应用(上)
  • 基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解
  • JavaFx -- chapter06(UDPSocket)
  • unplugin-auto-import 库作用
  • ubuntu22.04 安装ffmpeg
  • 【数据集】【YOLO】【目标检测】道路垃圾识别数据集 8805 张,垃圾堆放识别数据集,YOLO垃圾识别算法实战训练教程!
  • 《TCP/IP网络编程》学习笔记 | Chapter 4:基于TCP的服务器端/客户端(2)
  • Nextjs14记录
  • 文件系统和日志管理 附实验:远程访问第一台虚拟机日志
  • Java:网络原理-TCP/IP
  • TARE-PLANNER学习记录
  • Chat GPT英文学术写作指令
  • HTML第二次作业
  • 力姆泰克电动缸助力农业机械装备,提高农机的自动化水平