package com.kxs.stat.biz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kxs.stat.api.model.KxsUserActTrade;
import com.kxs.stat.api.vo.statUser.PercentVO;
import com.kxs.stat.api.vo.statUser.TrendTimesVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.cursor.Cursor;

import java.util.List;

/**
 * 创客激活统计表(KxsUserActTrade)表数据库访问层
 *
 * @author 系统
 * @since 2024-05-07 17:25:05
 */
@Mapper
public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {

    /**
     * 流式查询广电卡交易额
     *
     * @param thisMoth 月份
     * @return {@link Cursor}<{@link KxsUserActTrade}>
     */
    Cursor<KxsUserActTrade> getUserTradeMonthList(String thisMoth);

    /**
     * 获取传入日期团队激活商户,根据品牌分组
     * @param times 传入日期
     * @param userId 用户id
     * @return
     */
    List<PercentVO> getUserTradeTotal(@Param("times") List<String> times, @Param("userId") Long userId,@Param("type") Integer type,@Param("totalType") Integer totalType);

    /**
     * 查询用户激活量   全部或根据品牌分组   获取半年或近七天
     * @param times 查询日期集合
     * @param userId 用户id
     * @param brandId 是否根据品牌分组  否传null
     * @param type 根据月份或者根据日查询  1日  2月
     * @return
     */
    List<TrendTimesVO> getUserActListByDayOrMonth(@Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId, @Param("type") Integer type, @Param("totalType") Integer totalType);

    /**
     * 查询指定日期个人激活数量,
     * @param userId 用户Id
     * @param times 指定日
     * @param type 1 查询pos激活  2查询广电激活
     * @return
     */
    Integer getActivityStatByGdOrPos(@Param("userId")Long userId,  @Param("times") List<String> times, @Param("type") int type);
    /**
     * 查询来客吧指定日期个人激活数量,
     * @param userId 用户Id
     * @param times 指定日
     * @return
     */
    Integer getActivityStatByLkb(@Param("userId")Long userId,@Param("times") List<String> times);


    /**
     * 查询来客吧指定日期个人或团队激活数量以及日期
     * @param userId 用户Id
     * @param times 指定日
     * @param totalType 0个人  1团队
     * @return
     */
    List<TrendTimesVO> getActivityStatByLkbList(@Param("userId")Long userId,@Param("times") List<String> times,@Param("totalType")Integer totalType);

    /**
     * 获取全部激活
     * @param userId
     * @param totalType 0个人  1团队
     * @param type 1 pos 2广电
     * @param toMonth 1获取传入月份激活  2获取非传入月份激活  3 获取全部
     * @param month 月份 toMonth = 3 可传null
     * @return
     */
    Integer getUserActListByAll(@Param("userId") Long userId, @Param("totalType")  Integer totalType, @Param("type") Integer type,@Param("toMonth") Integer toMonth, @Param("month") Integer month);
}

