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 接口
 *
 * @author hzs
 * @since 2022-08-31
 */
public interface CuMemberAwardsStatMapper extends BaseMapper<CuMemberAwards> {


    /**
     * @description: 真实业绩新增奖衔查询
     * @author: zhang jing
     * @date: 2023/8/24 17:55
     * @param: [cuMemberAwardsVO]
     * @return: java.util.List<com.hzs.member.detail.vo.CuMemberAwardsVO>
     **/
    List<CuMemberAwardsStatVO> selectCuMemberAwardsList(CuMemberAwardsStatVO cuMemberAwardsStatVO);

    /**
     * @description: 奖衔晋升列表
     * @author: zhang jing
     * @date: 2024/1/2 10:37
     * @param: [awardPromotionVO]
     * @return: java.util.List<com.hzs.report.member.vo.AwardPromotionVO>
     **/
    List<AwardPromotionVO> awardPromotionList(AwardPromotionVO awardPromotionVO);

    /**
     * @description: 会员业绩数据查询
     * @author: zhang jing
     * @date: 2024/1/4 14:32
     * @param: [memberAchieveVO]
     * @return: java.util.List<com.hzs.report.member.vo.MemberAchieveVO>
     **/
    List<MemberAchieveVO> memberAchieveList(MemberAchieveVO memberAchieveVO);

    /**
     * @description: 个人统计
     * @author: zhang jing
     * @date: 2023/9/1 10:37
     * @param: [personStatVO]
     * @return: java.util.List<com.hzs.report.member.vo.PersonStatVO>
     **/
    List<PersonStatVO> selectPersonStatList(PersonStatVO personStatVO);

    /**
     * @description: 真实奖衔分析
     * @author: zhang jing
     * @date: 2023/8/26 16:01
     * @param: [cuMemberAwardsAnalysisVO]
     * @return: java.util.List<com.hzs.report.member.vo.CuMemberAwardsAnalysisVO>
     **/
    List<CuMemberAwardsAnalysisVO> selectCuMemberAwardsAnalysisList(CuMemberAwardsAnalysisVO cuMemberAwardsAnalysisVO);

    /**
     * @description: 查询会员结算等级升级记录
     * @author: zhang jing
     * @date: 2025/3/3 16:01
     * @param: [cuMemberGradeRecordVO]
     * @return: java.util.List<com.hzs.report.member.vo.CuMemberGradeRecordVO>
     **/
    List<CuMemberGradeRecordVO> querMemberGradeRecordList(CuMemberGradeRecordVO cuMemberGradeRecordVO);

    /**
     * @description:查询会员左右区累计真实业绩
     * @author: zhang jing
     * @date: 2024/8/20 9:59
     * @param: [cuMemberAwardsAnalysisVO]
     * @return: java.util.List<com.hzs.report.member.vo.CuMemberAwardsAnalysisVO>
     **/
    List<CuMemberAwardsAnalysisVO> selectAwardsAnalysisList(@Param("list") List<CuMemberAwardsAnalysisVO> list);

    /**
     * @description: 查询全部伞下血缘业绩
     * @author: zhang jing
     * @date: 2023/10/14 16:05
     * @param: [bloodList]
     * @return: java.util.List<com.hzs.report.member.vo.BloodRemoveSameVO>
     **/
    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
    );

    /**
     * @description: 查询会员推荐伞下业绩(历史)
     * @author: zhang jing
     * @date: 2024/5/15 14:03
     * @param: [bloodList, periodEnd, periodSta, achieveTableNameEnd, achieveTableNameSta, settleTableNameSta, settleTableNameEnd, orderType]
     * @return: java.util.List<com.hzs.report.member.vo.BloodRemoveSameVO>
     **/
    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


    );

    /**
     * @description: 根据奖衔查询所有会员
     * @author: zhang jing
     * @date: 2023/10/11 14:06
     * @param: [bloodRemoveSameVO]
     * @return: java.util.List<com.hzs.report.member.vo.BloodRemoveSameVO>
     **/
    List<BloodRemoveSameVO> queryAwardAchieList(BloodRemoveSameVO bloodRemoveSameVO);

    /**
     * @description: 根据奖衔查询会员（历史）
     * @author: zhang jing
     * @date: 2024/5/17 14:14
     * @param: [bloodRemoveSameVO]
     * @return: java.util.List<com.hzs.report.member.vo.BloodRemoveSameVO>
     **/
    List<BloodRemoveSameVO> queryAwardAchieListHistory(BloodRemoveSameVO bloodRemoveSameVO);


    /**
     * @description: 真实奖衔分析详情（穿透页面接口）
     * @author: zhang jing
     * @date: 2023/9/26 14:27
     * @param: [cuMemberAwardsAnalysisVO]
     * @return: java.util.List<com.hzs.report.member.vo.CuMemberAwardsAnalysisVO>
     **/
    List<CuMemberAwardsAnalysisVO> selectCuMemberAwardsAnalysisDetailsList(CuMemberAwardsAnalysisVO cuMemberAwardsAnalysisVO);


    List<RevenueDetailsVO> selectRevenueDetailsList(RevenueDetailsVO revenueDetailsVO);

    /**
     * @description: 复购bv统计-业绩，考核记录
     * @author: zhang jing
     * @date: 2023/8/29 15:31
     * @param: [repurchasePVStatVO]
     * @return: java.util.List<com.hzs.report.member.vo.RepurchasePVStatVO>
     **/
    List<RepurchasePVStatVO> selectRepurchasePVStatList(RepurchasePVStatVO repurchasePVStatVO);

    /**
     * @description: 商城BV统计
     * @author: zhang jing
     * @date: 2023/8/30 10:52
     * @param: [mallPVStatVO]
     * @return: java.util.List<com.hzs.report.member.vo.RepurchasePVStatVO>
     **/
    List<MallPVStatVO> selectMallPVStatList(MallPVStatVO mallPVStatVO);

    /**
     * @description: 个人统计业绩查询
     * @author: zhang jing
     * @date: 2023/9/1 11:04
     * @param: [personStatVO]
     * @return: java.util.List<com.hzs.report.member.vo.PersonStatVO>
     **/
    List<PersonStatVO> selectPersonPvList(@Param("perList") List<PersonStatVO> perList);

    /**
     * @description: 直推统计
     * @author: zhang jing
     * @date: 2023/9/4 11:46
     * @param: [directPushVO]
     * @return: java.util.List<com.hzs.report.member.vo.DirectPushVO>
     **/
    List<DirectPushVO> selectDirectPushStatList(DirectPushVO directPushVO);

    /**
     * @description: 三方直推统计
     * @author: zhang jing
     * @date: 2023/10/25 16:16
     * @param: [directPushVO]
     * @return: java.util.List<com.hzs.report.member.vo.DirectPushVO>
     **/
    List<DirectPushVO> selectThreeDirectPushStatList(DirectPushVO directPushVO);

    /**
     * @description: 直推数据列表
     * @author: zhang jing
     * @date: 2023/12/18 17:15
     * @param: [dpdVO]
     * @return: java.util.List<com.hzs.report.member.vo.DirectPushDataVO>
     **/
    List<DirectPushDataVO> selectDirectPushDataList(@Param("dpdVO") DirectPushDataVO dpdVO);

    /**
     * @description: 直推数据详情
     * @author: zhang jing
     * @date: 2023/12/20 14:36
     * @param: [dpdVO]
     * @return: java.util.List<com.hzs.report.member.vo.DirectPushDataVO>
     **/
    List<DirectPushDataVO> selectDirectPushDataDetails(DirectPushDataVO dpdVO);


    /**
     * @description: 会员订单分布统计
     * @author: zhang jing
     * @date: 2023/9/20 14:47
     * @param: [orderScatterVO]
     * @return: java.util.List<com.hzs.report.member.vo.OrderScatterVO>
     **/
    List<OrderScatterVO> memberOrderScatter(OrderScatterVO orderScatterVO);


    /**
     * @description: 三方会员订单分布统计
     * @author: zhang jing
     * @date: 2023/10/25 16:30
     * @param: [orderScatterVO]
     * @return: java.util.List<com.hzs.report.member.vo.OrderScatterVO>
     **/
    List<OrderScatterVO> memberThreeOrderScatter(OrderScatterVO orderScatterVO);


    /**
     * @description: 根据奖衔级别查询奖衔
     * @author: zhang jing
     * @date: 2023/10/17 11:17
     * @param: [pkAwardsList]
     * @return: java.util.List<java.lang.Integer>
     **/
    List<Integer> awardsLevellist(@Param("pkAwardsList") List<Integer> pkAwardsList, @Param("pkCountry") Integer pkCountry);

    /**
     * @description: 安置血缘查询-左右区人数
     * @author: zhang jing
     * @date: 2023/12/6 15:49
     * @param: [resettleBloodVOVO]
     * @return: java.util.List<com.hzs.report.member.vo.ResettleBloodVOVO>
     **/
    List<ResettleBloodVO> lrMemberCountList(ResettleBloodVO resettleBloodVO);

    /**
     * @description: 安置血缘查询-左右血缘人数
     * @author: zhang jing
     * @date: 2023/12/7 9:45
     * @param: [resettleBloodVOVO]
     * @return: java.util.List<com.hzs.report.member.vo.ResettleBloodVOVO>
     **/
    List<ResettleBloodVO> lrbMemberCountList(ResettleBloodVO resettleBloodVO);

    /**
     * @description: 安置血缘查询-左右区人数详情列表
     * @author: zhang jing
     * @date: 2023/12/7 11:34
     * @param: [resettleBloodVO]
     * @return: java.util.List<com.hzs.report.member.vo.ResettleBloodVO>
     **/
    List<ResettleBloodVO> lrMemberDetailsList(ResettleBloodVO resettleBloodVO);

    /**
     * @description: 安置血缘查询-左右区血缘人数详情列表
     * @author: zhang jing
     * @date: 2023/12/7 11:35
     * @param: [resettleBloodVO]
     * @return: java.util.List<com.hzs.report.member.vo.ResettleBloodVO>
     **/
    List<ResettleBloodVO> lrbMemberDetailsList(ResettleBloodVO resettleBloodVO);

    /**
     * @description: 个人复购统计
     * @author: zhang jing
     * @date: 2024/1/25 15:07
     * @param: [prVO]
     * @return: java.util.List<com.hzs.report.member.vo.PersonRepurchaseVO>
     **/
    List<PersonRepurchaseVO> personRepurchaseList(PersonRepurchaseVO prVO);

    /**
     * @description: 安置业绩统计-查询会员
     * @author: zhang jing
     * @date: 2024/1/25 15:36
     * @param: [psVO]
     * @return: java.util.List<com.hzs.report.member.vo.PositStatVO>
     **/
    List<PositStatVO> positStatList(PositStatVO psVO);

    /**
     * @description:安置业绩统计-查询左右区业绩
     * @author: zhang jing
     * @date: 2024/1/26 11:53
     * @param: [psVO]
     * @return: java.util.List<com.hzs.report.member.vo.PositStatVO>
     **/
    List<PositStatVO> positStatAchieve(@Param("psVO") PositStatVO psVO);

    /**
     * @description: 查询伞下直推产品列表
     * @author: zhang jing
     * @date: 2024/2/23 16:31
     * @param: [ubpVO]
     * @return: java.util.List<com.hzs.report.member.vo.UmbrellaBelowProductVO>
     **/
    List<UmbrellaBelowProductVO> umbrellaBelowProductList(@Param("ubpVO") UmbrellaBelowProductVO ubpVO);

    /**
     * @description: 伞下直推产品去重
     * @author: zhang jing
     * @date: 2024/2/24 14:46
     * @param: [ubrVO]
     * @return: java.util.List<com.hzs.report.member.vo.UmbrellaBelowRepeatVO>
     **/
    List<UmbrellaBelowRepeatVO> umbrellaBelowRepeatList(@Param("ubrVO") UmbrellaBelowRepeatVO ubrVO);

    /**
     * @description: 伞下直推产品统计
     * @author: zhang jing
     * @date: 2024/2/25 11:05
     * @param: [sptVO]
     * @return: java.util.List<com.hzs.report.member.vo.StatProductVO>
     **/
    List<StatProductVO> statProductList(@Param("sptVO") StatProductVO sptVO);

    /**
     * @description: 会员户籍数据查询
     * @author: zhang jing
     * @date: 2024/3/11 11:39
     * @param: [ddVO]
     * @return: java.util.List<com.hzs.report.member.vo.DomicileDataVO>
     **/
    List<DomicileDataVO> domicileDataList(@Param("ddVO") DomicileDataVO ddVO);

    /**
     * @description: 地区业绩统计
     * @author: zhang jing
     * @date: 2024/5/6 16:13
     * @param: [areaAchieveStatVO]
     * @return: java.util.List<com.hzs.report.member.vo.OrderScatterVO>
     **/
    List<AreaAchieveStatVO> areaAchieveStat(AreaAchieveStatVO areaAchieveStatVO);

    /**
     * @description: 系统业绩统计
     * @author: zhang jing
     * @date: 2024/6/18 14:29
     * @param: [vertexAchieveStatVO]
     * @return: java.util.List<com.hzs.report.member.vo.VertexAchieveStatVO>
     **/
    List<VertexAchieveStatVO> vertexAchieveStat(VertexAchieveStatVO vertexAchieveStatVO);

    /**
     * @description: 月度职级名单查询
     * @author: zhang jing
     * @date: 2024/6/24 15:22
     * @param: [mjlvo]
     * @return: java.util.List<com.hzs.report.member.vo.MonthlyJobLevelVo>
     **/
    List<MonthlyJobLevelVo> monthlyJobLevelList(MonthlyJobLevelVo mjlvo);


    /**
     * @description: 查询收益区域数据
     * @author: zhang jing
     * @date: 2025/1/10 16:28
     * @param: [revenueAreaVO]
     * @return: java.util.List<com.hzs.report.member.vo.RevenueAreaVO>
     **/
    List<RevenueAreaVO> revenueAreaList(RevenueAreaVO revenueAreaVO);




}
