content: package com.sky.mapper;
  
  import com.github.pagehelper.Page;
  import com.sky.dto.GoodsSalesDTO;
  import com.sky.dto.OrdersPageQueryDTO;
  import com.sky.entity.Orders;
  import org.apache.ibatis.annotations.Mapper;
  import org.apache.ibatis.annotations.Select;
  import org.apache.ibatis.annotations.Update;
  
  import java.time.LocalDateTime;
  import java.util.List;
  import java.util.Map;
  
  /**
   * @version 1.0
   * @Author Imak
   * @Date 2024/8/12 15:10
   * @注释
   */
  @Mapper
  public interface OrderMapper {
      /**
       * 插入订单数据
       * @param order
       */
      void insert(Orders order);
  
      /**
       * 根据订单号和用户id查询订单
       * @param orderNumber
       * @param userId
       */
      @Select("select * from orders where number = #{orderNumber} and user_id= #{userId}")
      Orders getByNumberAndUserId(String orderNumber, Long userId);
  
      /**
       * 修改订单信息
       * @param orders
       */
      void update(Orders orders);
  
      /**
       * 根据orderNumber获取id
       * @param orderNumber
       * @return
       */
      @Select("select * from orders where number=#{orderNumber}")
      Long getOrderId(String orderNumber);
  
  
      /**
       * 分页查询
       * @param ordersPageQueryDTO
       * @return
       */
      Page<Orders> pageQuery(OrdersPageQueryDTO ordersPageQueryDTO);
  
      /**
       * 根据id查询订单
       * @param id
       */
      @Select("select * from orders where id=#{id}")
      Orders getById(Long id);
  
      /**
       * 各个状态的订单数量
       * @param status
       * @return
       */
      @Select("select count(id) from orders where status=#{status}")
      Integer countStatus(Integer status);
  
      /**
       * 根据状态和下单时间查询订单
       * @param status
       * @param orderTime
       */
      @Select("select * from orders where status = #{status} and order_time < #{orderTime}")
      List<Orders> getByStatusAndOrdertimeLT(Integer status, LocalDateTime orderTime);
  
      /**
       * 根据动态条件统计营业额
       * @param map
       * @return
       */
      Double sumByMap(Map map);
  
      /**
       * 动态查询订单数量
       * @param map
       * @return
       */
      Integer countByMap(Map map);
  
      /**
       * 动态查询销量
       * @param begin
       * @param end
       * @return
       */
      List<GoodsSalesDTO> getSalesTop10(LocalDateTime begin, LocalDateTime end);
  }
  