package cn.ysk.cashier.mybatis.mapper;

import cn.ysk.cashier.pojo.order.TbCashierCart;
import cn.ysk.cashier.vo.CarVO;
import cn.ysk.cashier.vo.PendingCountVO;
import cn.ysk.cashier.vo.TbCashierCartVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface TbCashierCartMapper extends BaseMapper<TbCashierCart> {


    @Select("select table_id tableId,user_id userId, shop_Id as shopId,master_id as masterId,uuid,\n" +
            "        TRIM(TRAILING ', ' FROM GROUP_CONCAT(name ORDER BY id SEPARATOR ', ')) AS productName,\n" +
            "        pending_at as pendingAt,\n" +
            "        ifnull(sum(total_amount),0) as totalAmount\n" +
            "        from tb_cashier_cart where table_id is not null and shop_id = #{shopId} and status = 'refund' group by shop_Id, master_id order by trade_day desc")
    List<CarVO> selectCar(@Param("shopId") Integer shopId);

    @Select("select a.id orderId,b.pending_at pendingAt, sum(b.total_amount) totalAmount, count(b.id) totalCount, sum(b.total_number) totalNumber, a.remark from tb_order_info a " +
            "JOIN tb_cashier_cart b on a.id=b.order_id " +
            "where a.shop_id=#{shopId} and a.`status`='pending' and a.table_id=#{tableId} and a.trade_day=#{day}" +
            "GROUP BY a.id ORDER BY a.id desc ")
    List<PendingCountVO> countPending(@Param("shopId") Integer shopId, @Param("tableId") String tableId, @Param("day") String day);

    @Select("select a.*, b.spec_snap from tb_cashier_cart as a left join tb_product_sku as b on a.sku_id=b.id where a.shop_id=#{shopId} and a.status='refund';")
    List<TbCashierCartVO> selectPending(Integer shopId);
}
