package com.hzs.bonus.base.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.vertex.BdVertexBonus;

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

/**
 * 会员 服务类
 */
public interface ICuMemberService extends IService<CuMember> {

    /**
     * 根据会员编号获取会员信息（查库）
     *
     * @param memberCode
     * @return
     */
    CuMemberExt getMemberByCode(String memberCode);

    /**
     * 更新会员奖衔根据临时表 -- 日结
     */
    void updateCuMemberRetailRangeByPeriod(Integer period);

    /**
     * 更新会员奖衔根据临时表
     *
     * @param cuMemberAwardsList 修改奖衔的会员
     */
    void updateCuMemberRetailRangeByList(List<CuMemberAwards> cuMemberAwardsList, Integer period);

    /**
     * 更新会员奖衔根据临时表
     *
     * @param cuMemberGradeList 修改奖衔的会员
     */
    void updateCuMemberMinGradeByList(List<CuMemberGrade> cuMemberGradeList, Integer period);

    /**
     * 更新会员奖衔根据临时表
     *
     * @param cuMemberAwardsList 修改奖衔的会员
     */
    void updateCuMemberMinAwardsByList(List<CuMemberAwards> cuMemberAwardsList, Integer period);

    /**
     * 根据等级更新会员等级
     */
    void updateCuMemberGradeByPeriod(Integer period);

    /**
     * 查询会员等级
     */
    void updateCuMemberLevel(Date startDate, Date endDate);

    /**
     * 更新会员的等级（会员表）
     */
    void updateCuMemberGradeByList(List<CuMemberGrade> cuMemberGradeList, Integer period);

    /**
     * 更新会员奖衔根据临时表
     */
    void updateBackCuMemberRetailRangeAward(Integer period);

    /**
     * 更新会员奖衔根据临时表
     */
    void updateCuMemberRetailRangeAwardByDate(Date settleDate);

    /**
     * 初始化会员奖衔表
     */
    void updateCuMemberRetailRangeInitAward();

    /**
     * 查询可以获得分红的会员人数
     */
    List<CuMember> queryCuMemberShareTotal(Integer pkCountry);

    /**
     * 查询体系奖项列表
     *
     * @param pkMember
     * @return
     */
    List<BdVertexBonus> listVertexBonus(Long pkMember);

}
