package com.hzs.bonus.achieve.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.achieve.CuMemberRange;
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;

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

/**
 *
 */
public interface ICuMemberRangeService extends IService<CuMemberRange> {

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

    /**
     * 更新会员树的累计业绩
     *
     * @param secondTableName 结算日期
     * @param cuMemberTreeMap 树
     * @return: void
     */
    void updateCuMemberSecondRange(String secondTableName, Map<Long, CuMemberRangeExt> cuMemberTreeMap);

    /*
     * @description: 根据会员查询会员上的所有网体, 按照pkParent作为key
     * @param: null null
     **/
    Map<Long, List<CuMemberRangeExt>> queryCuMemberRangeParent(String tableName, List<SaOrderExt> saOrderExtList);

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

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

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

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

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

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

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