package com.hzs.bonus.achieve.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Mapper 接口
 */
public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRange> {

    /**
     * 当天的数据更新为0
     */
    void mergeMemberRetailRangeInit(@Param("rangeTableName") String rangeTableName);

    /**
     * 将昨天的业绩信息迁移到今天
     */
    void mergeMemberRetailRangeByYesterday(@Param("rangeTableName") String rangeTableName,
                                           @Param("yesterdayRangeTableName") String yesterdayRangeTableName,
                                           @Param("isSameMonth") Integer isSameMonth);

    /**
     * 根据会员查询会员上的所有网体
     */
    List<CuMemberRetailRangeExt> queryCuMemberRetailRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List<?> saOrderExtList);

    /**
     * 根据会员查询会员血缘上网体 -- 秒结使用
     */
    List<CuMemberRetailRangeExt> getCuMemberRetailRangeParent(@Param("saOrderExt") SaOrderExt saOrderExt);

    CuMemberRetailRangeExt queryCuMemberRetailRangeByMemberId(@Param("tableName") String tableName, @Param("memberId") Long memberId);

    /**
     * 查询会员信息
     */
    CuMemberRetailRangeExt getMemberRetailRange(@Param("memberId") Long memberId);

    /**
     * 批量更新网体
     */
    void mergeCuMemberRetailRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);

    /**
     * 更新会员激活状态
     *
     * @param rangeTableName
     * @param pkMemberList
     * @return
     */
    int updateMemberEnable(@Param("rangeTableName") String rangeTableName, @Param("pkMemberList") List<Long> pkMemberList);

    /**
     * 当前网体更新极差秒结表
     */
    void mergeMemberSecondRetailRangeByRange(@Param("secondRangeTableName") String secondRangeTableName,
                                             @Param("pkMember") Long pkMember);

    /**
     * 昨天的结算表更新极差秒结状态
     */
    void mergeMemberSecondRetailRangeByRangeEnable(@Param("rangeTableName") String rangeTableName,
                                                   @Param("secondRangeTableName") String secondRangeTableName,
                                                   @Param("pkMember") Long pkMember);


}
