package com.hzs.member.detail.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.detail.CuMemberAssessDetail;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 考核业绩变化明细表 Mapper 接口
 * </p>
 *
 * @author hzs
 * @since 2022-10-28
 */
public interface CuMemberAssessDetailMapper extends BaseMapper<CuMemberAssessDetail> {

    /*
     * @description: 根据期间删除会员考核记录
     * @author: sui q
     * @date: 2023/5/25 10:52
     * @param: null null
     **/
    void deleteCuMemberAssessDetailByPeriod(@Param("tableName") String tableName, @Param("period") Integer period);

    /*
     * @description: 每月考试将订单插入会员考核明细
     * @author: sui q
     * @date: 2023/5/25 11:36
     * @param: null null
     **/
    void insertCuMemberAssesDetailByOrder(@Param("tableName") String tableName, @Param("period") Integer period,
                                          @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 插入考核记录
     * @param tableName 表名
     * @param period 期间
     * @param cuMemberList 需要重新考核的会员
     * @param assessType 类型
     * @return: void
     * @Author: sui q
     * @Date: 2022/11/9 15:56
     */
    void insertCuMemberAssessDetailByPeriod(@Param("tableName") String tableName, @Param("period") Integer period,
                                            @Param("cuMemberList") List<?> cuMemberList, @Param("assessType") Integer assessType);

    /**
     * 新增或修改会员考核明细表，根据期间，重算就是修改
     * @param tableName 来源表
     * @param period 期间
    * @return: Integer
    * @Author: sui q
    * @Date: 2022/11/8 11:21
    */
    Integer updateCuMemberAssessDetailByPeriod(@Param("tableName") String tableName, @Param("period") Integer period);

    /**
     * 批量删除会员考核明细
     * @param revokeDetailList 退单的明细数据
    * @return: Integer
    * @Author: sui q
    * @Date: 2022/11/9 15:37
    */
    Integer updateCuMemberAssessDetailByRevoke(@Param("revokeDetailList") List<?> revokeDetailList);
}
