package com.hzs.activity.other.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.base.vo.DeptMemberVO;
import com.hzs.activity.base.vo.TourismActivitVO;
import com.hzs.common.domain.activity.other.AcOtherPriceData;
import com.hzs.common.domain.activity.other.ext.AcOtherPriceConfigExt;

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

/**
 * 活动其它奖励数据 服务类
 *
 * @author hzs
 * @since 2024-01-17
 */
public interface IAcOtherPriceDataService extends IService<AcOtherPriceData> {

    /**
     * 处理其它奖项数据（只有结束期间）
     *
     * @param config    活动配置
     * @param endPeriod 结束期间ID
     * @return
     */
    int handleOtherPriceDataOnlyEnd(AcOtherPriceConfigExt config, Integer endPeriod);

    /**
     * 处理其它奖项数据（开始 + 结束期间）
     *
     * @param config      活动配置
     * @param startPeriod 开始期间ID
     * @param endPeriod   结束期间ID
     * @return
     */
    int handleOtherPriceDataAll(AcOtherPriceConfigExt config, Integer startPeriod, Integer endPeriod);

    /**
     * 清除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(Long pkBaseConfig, Long pkMember);

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

}
