package com.hzs.report.member.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.report.member.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 会员信息-奖衔升级记录 Mapper 接口
 */
public interface CuMemberAwardsStatMapper extends BaseMapper<CuMemberAwards> {

    /**
     * 真实业绩新增奖衔查询
     **/
    List<CuMemberAwardsStatVO> selectCuMemberAwardsList(CuMemberAwardsStatVO cuMemberAwardsStatVO);

    /**
     * 奖衔晋升列表
     **/
    List<AwardPromotionVO> awardPromotionList(AwardPromotionVO awardPromotionVO);

    /**
     * 会员业绩数据查询
     **/
    List<MemberAchieveVO> memberAchieveList(MemberAchieveVO memberAchieveVO);

    /**
     * 个人统计
     **/
    List<PersonStatVO> selectPersonStatList(PersonStatVO personStatVO);

    /**
     * 真实奖衔分析
     **/
    List<CuMemberAwardsAnalysisVO> selectCuMemberAwardsAnalysisList(CuMemberAwardsAnalysisVO cuMemberAwardsAnalysisVO);

    /**
     * 查询会员左右区累计真实业绩
     **/
    List<CuMemberAwardsAnalysisVO> selectAwardsAnalysisList(@Param("list") List<CuMemberAwardsAnalysisVO> list);

    /**
     * 查询全部伞下血缘业绩
     **/
    List<BloodRemoveSameVO> bloodRemoveSameAllList(@Param("brs") BloodRemoveSameVO bloodList,
                                                   @Param("startDate") String startDate,
                                                   @Param("endDate") String endDate,
                                                   @Param("orderTypeList") List<Integer> orderTypeList,
                                                   @Param("pkAwardsList") List<Integer> pkAwardsList
    );

    /**
     * 查询会员推荐伞下业绩(历史)
     **/
    List<BloodRemoveSameVO> bloodSameAllListHistory(@Param("bloodList") List<BloodRemoveSameVO> bloodList,
                                                    @Param("periodEnd") Integer periodEnd,
                                                    @Param("periodSta") Integer periodSta,
                                                    @Param("achieveTableNameEnd") String achieveTableNameEnd,
                                                    @Param("achieveTableNameSta") String achieveTableNameSta,
                                                    @Param("settleTableNameSta") String settleTableNameSta,
                                                    @Param("settleTableNameEnd") String settleTableNameEnd,
                                                    @Param("orderType") Integer orderType
    );

    List<BloodRemoveSameVO> bloodRemoveSameMemberAchieveNew(@Param("bloodList") List<BloodRemoveSameVO> bloodList,
                                                            @Param("periodEnd") Integer periodEnd,
                                                            @Param("periodSta") Integer periodSta,
                                                            @Param("achieveTableNameEnd") String achieveTableNameEnd,
                                                            @Param("achieveTableNameSta") String achieveTableNameSta,
                                                            @Param("settleTableNameSta") String settleTableNameSta,
                                                            @Param("settleTableNameEnd") String settleTableNameEnd,
                                                            @Param("orderType") Integer orderType,
                                                            @Param("pkCountry") Integer pkCountry,
                                                            @Param("pkAwardsList") List<Integer> pkAwardsList
    );

    /**
     * 根据奖衔查询所有会员
     **/
    List<BloodRemoveSameVO> queryAwardAchieList(BloodRemoveSameVO bloodRemoveSameVO);

    /**
     * 根据奖衔查询会员（历史）
     **/
    List<BloodRemoveSameVO> queryAwardAchieListHistory(BloodRemoveSameVO bloodRemoveSameVO);

    /**
     * 真实奖衔分析详情（穿透页面接口）
     **/
    List<CuMemberAwardsAnalysisVO> selectCuMemberAwardsAnalysisDetailsList(CuMemberAwardsAnalysisVO cuMemberAwardsAnalysisVO);

    List<RevenueDetailsVO> selectRevenueDetailsList(RevenueDetailsVO revenueDetailsVO);

    /**
     * 个人统计业绩查询
     **/
    List<PersonStatVO> selectPersonPvList(@Param("perList") List<PersonStatVO> perList);

    /**
     * 直推统计
     **/
    List<DirectPushVO> selectDirectPushStatList(DirectPushVO directPushVO);

    /**
     * 直推数据列表
     **/
    List<DirectPushDataVO> selectDirectPushDataList(@Param("dpdVO") DirectPushDataVO dpdVO);

    /**
     * 直推数据详情
     **/
    List<DirectPushDataVO> selectDirectPushDataDetails(DirectPushDataVO dpdVO);

    /**
     * 会员订单分布统计
     **/
    List<OrderScatterVO> memberOrderScatter(OrderScatterVO orderScatterVO);

    /**
     * 根据奖衔级别查询奖衔
     **/
    List<Integer> awardsLevellist(@Param("pkAwardsList") List<Integer> pkAwardsList, @Param("pkCountry") Integer pkCountry);

    /**
     * 安置血缘查询-左右区人数
     **/
    List<ResettleBloodVO> lrMemberCountList(ResettleBloodVO resettleBloodVO);

    /**
     * 安置血缘查询-左右血缘人数
     **/
    List<ResettleBloodVO> lrbMemberCountList(ResettleBloodVO resettleBloodVO);

    /**
     * 安置血缘查询-左右区人数详情列表
     **/
    List<ResettleBloodVO> lrMemberDetailsList(ResettleBloodVO resettleBloodVO);

    /**
     * 安置血缘查询-左右区血缘人数详情列表
     **/
    List<ResettleBloodVO> lrbMemberDetailsList(ResettleBloodVO resettleBloodVO);

    /**
     * 个人复购统计
     **/
    List<PersonRepurchaseVO> personRepurchaseList(PersonRepurchaseVO prVO);

    /**
     * 安置业绩统计-查询会员
     **/
    List<PositStatVO> positStatList(PositStatVO psVO);

    /**
     * 安置业绩统计-查询左右区业绩
     **/
    List<PositStatVO> positStatAchieve(@Param("psVO") PositStatVO psVO);

    /**
     * 查询伞下直推产品列表
     **/
    List<UmbrellaBelowProductVO> umbrellaBelowProductList(@Param("ubpVO") UmbrellaBelowProductVO ubpVO);

    /**
     * 伞下直推产品去重
     **/
    List<UmbrellaBelowRepeatVO> umbrellaBelowRepeatList(@Param("ubrVO") UmbrellaBelowRepeatVO ubrVO);

    /**
     * 伞下直推产品统计
     **/
    List<StatProductVO> statProductList(@Param("sptVO") StatProductVO sptVO);

    /**
     * 会员户籍数据查询
     **/
    List<DomicileDataVO> domicileDataList(@Param("ddVO") DomicileDataVO ddVO);

    /**
     * 地区业绩统计
     **/
    List<AreaAchieveStatVO> areaAchieveStat(AreaAchieveStatVO areaAchieveStatVO);

    /**
     * 系统业绩统计
     **/
    List<VertexAchieveStatVO> vertexAchieveStat(VertexAchieveStatVO vertexAchieveStatVO);

}
