package com.example.his.api.db.dao;

import com.example.his.api.common.utils.PageUtils;
import com.example.his.api.db.pojo.OrderEntity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
* @author lenovo
* @description 针对表【tb_order(订单表)】的数据库操作Mapper
* @createDate 2023-09-10 12:22:37
* @Entity com.example.his.api.db.pojo.OrderEntity
*/
public interface OrderDao {

    // 订单统计数据
    public HashMap searchSummary(Map param);

    // 查询该用户当天未付款订单数量和退款订单数量
    public boolean searchIllegalCountInDay(int customerId);

    // 关闭超过30分钟未付款的订单
    public int closeOrder();

    //微信支付单创建成功之后，应该创建商品快照
    public int orderInsert(OrderEntity orderEntity);

    //更新订单为已付款状态
    public int updatePaymentStatus(Map param);
    //更新订单为已退款状态
    public int updateRefundStatus(String outRefundNo);
    //更新线下退款订单状态
    public int updateOnlineRefundStatus(String outTradeNo);
    //更新订单预约状态
    public int updateAppointmentStatus(Map param);

    // 查询订单列表
    public ArrayList<HashMap> searchFrontOrderByPage(Map param);
    public ArrayList<HashMap> searchMisOrderByPage(Map param);
    // 查询客户订单列表
    public ArrayList<HashMap> searchMisCustomerOrderByPage(Map param);

    // 关闭未支付的订单
    public int closeOrderById(Map param);

    // 删除已关闭的订单
    public int deleteOrderById(int id);

    // 判断客户是否拥有某个订单
    public Integer hasOwnOrder(Map param);

    // 申请退款
    public HashMap applyRefund(Map param);

    // 查询退款流水号
    public String searchOutRefundNo(int id);

    // 更新退款流水号
    public int updateOutRefundNo(Map param);

    // 缓存的WebSocket连接，然后推送消息给前端页面
    public Integer searchCustomerId(String outTradeNo);

    // 查询该订单的体检预约已完成的数量是否等于体检套餐数量
    public HashMap searchOrderIsFinished(String uuid);

}




