package com.hzs.member.detail.mapper;

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

import java.util.List;

/**
 * 会员信息-奖衔升级记录 Mapper 接口
 *
 * @author hzs
 * @since 2022-08-31
 */
public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {

    /**
     * 插入临时表，将奖衔更新数据插入临时表，用于批量更新
     *
     * @param cuMemberAwardsList 奖衔狗升级会员
     * @return: Integer
     * @Author: sui q
     * @Date: 2022/11/5 10:48
     */
    Integer insertTmpCuMemberAward(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList);

    /**
     * 批量更新会员奖衔记录，此方法用于奖金结算，批量更新为删除状态，留存奖衔降级记录
     *
     * @param cuMemberAwardsList 更新的人
     * @param period             期间
     * @return: Integer
     * @Author: sui q
     * @Date: 2022/11/5 16:04
     */
    Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList, @Param("period") Integer period);

    /**
     * 查询会员最后一条奖衔升级记录
     *
     * @param cuMemberAwardsList 奖衔升级记录
     * @return: List<CuMemberAwards>
     * @Author: sui q
     * @Date: 2022/11/5 15:28
     */
    List<CuMemberAwards> queryLastCuMemberAwards(@Param("cuMemberAwardsList") List<?> cuMemberAwardsList);

    /**
     * 删除自动升级的奖衔升级记录
     *
     * @param period 期间
     * @return: Integer
     * @Author: sui q
     * @Date: 2023/2/23 11:15
     */
    Integer deleteCuMemberAwards(@Param("period") Integer period);

    /**
     * 批量插入奖衔记录
     *
     * @param cuMemberAwardsList 需要插入的奖衔列表
     * @return: Integer
     * @Author: sui q
     * @Date: 2022/11/5 16:55
     */
    Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList);

    /**
     * 查询手动升级的最新一条
     *
     * @param pkMember  会员ID
     * @param pkCountry 所属国家
     * @return
     */
    CuMemberAwardsExt queryLastManualAwards(@Param("pkMember") Long pkMember, @Param("pkCountry") Integer pkCountry);

}
