package com.hzs.sale.order.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.sale.ext.SaOrderChargeLogExt;
import com.hzs.common.domain.sale.order.SaOrderChargeLog;
import com.hzs.sale.order.param.SaOrderChargeLogParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单修改记录 Mapper 接口
 *
 * @author hzs
 * @since 2023-02-01
 */
public interface SaOrderChargeLogMapper extends BaseMapper<SaOrderChargeLog> {

    /**
     * 查询订单以及修改次数
     *
     * @param pkOrderList 订单ID列表
     * @param pkCountry   所属国家
     * @return
     */
    List<SaOrderChargeLogExt> queryOrderAndLogCount(@Param("pkOrderList") List<Long> pkOrderList,
                                                    @Param("pkCountry") Integer pkCountry);

    /**
     * 根据类型和编号查询数据
     *
     * @param chargeType   业务类型
     * @param businessCode 修改记录编号
     * @param pkCountry    所属国家
     * @return
     */
    List<SaOrderChargeLogExt> queryDataByTypeAndCode(@Param("chargeType") Integer chargeType,
                                                     @Param("businessCode") String businessCode,
                                                     @Param("pkCountry") Integer pkCountry);

    /**
     * 订单审批是否进行中
     *
     * @param typeList      业务类型列表
     * @param orderCodeList 订单编号列表
     * @param pkCountry     所属国家
     * @return
     */
    int checkOrderApprovalExist(@Param("typeList") List<Integer> typeList,
                                @Param("orderCodeList") List<String> orderCodeList,
                                @Param("pkCountry") Integer pkCountry);

    /**
     * 订单审批是否进行中
     *
     * @param typeList      业务类型列表
     * @param orderCodeList 订单编号列表
     * @param pkCountry     所属国家
     * @return
     */
    int checkOrderApprovalExistRemoveBusinessCode(@Param("typeList") List<Integer> typeList,
                                @Param("orderCodeList") List<String> orderCodeList,
                                @Param("pkCountry") Integer pkCountry, @Param("businessCode") String businessCode);

    /**
     * 查询撤单列表
     * @return
     */
    List<SaOrderChargeLogExt> selectByOrderCharge(SaOrderChargeLogParam orderChargeLogParam);

    /**
     * 撤单列表
     * @param orderChargeLogParam
     * @return
     */
    List<SaOrderChargeLogExt> cancellationList(SaOrderChargeLogParam orderChargeLogParam);
}
