package com.hzs.activity.other.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.activity.base.vo.DeptMemberVO;
import com.hzs.activity.base.vo.TourismActivitVO;
import com.hzs.common.domain.activity.other.AcOtherPriceData;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 活动其它奖励数据 Mapper 接口
 *
 * @author hzs
 * @since 2024-01-17
 */
public interface AcOtherPriceDataMapper extends BaseMapper<AcOtherPriceData> {

    /**
     * 处理其它奖项数据（只有结束期间）
     *
     * @param endPeriod    结束期间ID
     * @param pkBaseConfig 活动ID
     * @param pkCountry    所属国家
     * @return
     */
    int handleOtherPriceDataOnlyEnd(@Param("endPeriod") Integer endPeriod,
                                    @Param("pkBaseConfig") Long pkBaseConfig,
                                    @Param("pkCountry") Integer pkCountry);

    /**
     * 处理其它奖项数据（开始 + 结束期间）
     *
     * @param startPeriod  开始期间ID
     * @param endPeriod    结束期间ID
     * @param pkBaseConfig 活动ID
     * @param pkCountry    所属国家
     * @return
     */
    int handleOtherPriceDataAll(@Param("startPeriod") Integer startPeriod,
                                @Param("endPeriod") Integer endPeriod,
                                @Param("pkBaseConfig") Long pkBaseConfig,
                                @Param("pkCountry") Integer pkCountry);

    /**
     * 清除7天前逻辑删除的数据（物理）
     *
     * @return
     */
    int clearOldData();

    /**
     * @description: 旅游奖数据查询
     * @author: zhang jing
     * @date: 2024/1/18 14:15
     * @param: [taVO]
     * @return: java.util.List<com.hzs.activity.base.vo.TourismActivitVO>
     **/
    List<TourismActivitVO> tourismList(TourismActivitVO taVO);

    /**
     * @description: 查询部门业绩
     * @author: zhang jing
     * @date: 2024/1/18 15:14
     * @param: [deptMemberVO]
     * @return: java.util.List<com.hzs.activity.base.vo.DeptMemberVO>
     **/
    List<DeptMemberVO> tourismDeptList(DeptMemberVO deptMemberVO);

    /**
     * 查询会员活动数据
     *
     * @param pkBaseConfig 活动ID
     * @param pkMember     会员ID
     * @return
     */
    List<AcOtherPriceData> queryMemberOtherData(@Param("pkBaseConfig") Long pkBaseConfig, @Param("pkMember") Long pkMember);

    /**
     * 查询会员直推业绩
     *
     * @param pkMember  会员ID
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return
     */
    BigDecimal queryOrderAchieve(@Param("pkMember") Long pkMember,
                                 @Param("startDate") Date startDate,
                                 @Param("endDate") Date endDate);

}
