package com.hzs.bonus.achieve.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.CuMemberRange;
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
import org.apache.ibatis.annotations.Param;

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

/**
 *
 */
public interface CuMemberRangeMapper extends BaseMapper<CuMemberRange> {

    /*
     * @description: 更新极差秒接表，用昨天的结算表
     * @param: null null
     **/
    void mergeMemberSecondRangeByRange(@Param("rangeTableName") String rangeTableName, @Param("secondRangeTableName") String secondRangeTableName,
                                       @Param("pkMember") Long pkMember);

    /*
     * @description: 根据会员查询会员上的所有网体
     * @param: null null
     **/
    List<CuMemberRangeExt> queryCuMemberRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List<?> saOrderExtList);

    /*
     * @description: 根据会员查询会员上的所有网体, 按照pkParent作为key
     * @param: null null
     **/
    List<CuMemberRangeExt> queryCuMemberSecondRangeParent(@Param("rangeTableName") String rangeTableName, @Param("secondTableName") String tableName, @Param("pkMember") Long pkMember);

    /*
     * @description: 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
     * @param: null null
     **/
    List<CuMemberRangeExt> queryCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("pkParent") Long pkParent, @Param("orderDate") Date orderDate);

    /*
     * @description: 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
     * @param: null null
     **/
    List<CuMemberRangeExt> querySecondCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("secondTableName") String secondTableName, @Param("pkParent") Long pkParent);

    /*
     * @description: 批量更新网体
     * @param: null null
     **/
    void mergeCuMemberRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);

    /*
     * @description: 批量更新网体
     * @param: null null
     **/
    void mergeSecondCuMemberRangeExt(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList);

    /**
     * 更新会员树的累计业绩
     *
     * @param secondTableName      结算日期
     * @param cuMemberRangeExtList 树
     * @return: void
     */
    void mergeCuMemberSecondRange(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);

    /*
     * @description: 验证血缘部门 有多少个满足等级
     * @param: null null
     **/
    Integer validateCuMemberPlaceAwards(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList,
                                        @Param("pkRangeAwards") Integer pkRangeAwards, @Param("orderDate") Date orderDate);

    /*
     * @description: 验证血缘部门 有多少个满足等级
     * @param: null null
     **/
    Integer validateSecondCuMemberPlaceAwards(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList,
                                              @Param("pkRangeAwards") Integer pkRangeAwards);
}
