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.myUser.MchActPercentVO;
import com.kxs.stat.api.vo.myUser.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
     */
    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月
     */
    List<TrendTimesVO> getUserActListByDayOrMonth(@Param("times") List<Integer> 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查询广电激活
     */
    Integer getActivityStatByGdOrPos(@Param("userId")Long userId,  @Param("times") List<String> times, @Param("type") int type);

    /**
     * 创客详情-激活商户占比 按日和月查询
     *
     * @param userId 用户 ID
     * @param times  次
     * @param dateType   类型 0月 1天
     * @param totalType   类型 1团队 0个人
     * @return {@link List}<{@link MchActPercentVO}>
     */
    List<MchActPercentVO> getMchActTimePercent(@Param("userId") Long userId, @Param("times") List<Integer> times, @Param("dateType") Integer dateType, @Param("totalType") Integer totalType);

    /**
     * 创客详情-激活商户趋势图 按日和月查询
     *
     * @param userId 用户 ID
     * @param times  次
     * @param dateType   类型 0月 1天
     * @param totalType   类型 1团队 0个人
     * @return {@link List}<{@link TrendTimesVO}>
     */
    List<TrendTimesVO> getAddActMchTrend(@Param("userId") Long userId, @Param("times") List<Integer> times, @Param("dateType") Integer dateType, @Param("totalType") Integer totalType);

    /**
     * 获取日/月的激活数量
     *
     * @param userId    用户 ID
     * @param date    日期
     * @param totalType 类型  0个人 1团队
     * @return {@link Integer}
     */
    Integer getUserActByDayOrMonthCount(@Param("userId") Long userId, @Param("date") Integer date,  @Param("totalType") Integer totalType);
}

