package cn.com.ctop.common.module.achievements.mapper;

import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 设计人员绩效
 *
 * @author: zian Y
 * @date: 2022-09-28
 * @cersion: V1.0
 */
public interface DesignerMapper {

    /**
     * 查询设计人员基础信息
     *
     * @param userIdList 用户id
     * @param departName 部门名称
     * @return
     */
    List<JSONObject> getDesignerUserInfo(@Param("roleCodes") List<String> roleCodes, @Param("userIdList") Set<String> userIdList, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime);


    /**
     * 获取爆款视频数量
     *
     * @param userId
     * @param roleName  角色名称
     * @param mediaType 1-头条 2-快手
     * @param startTime 当前年份
     * @param endTime   当前月份
     * @return
     */
    JSONObject getHotVideoData(@Param("userId") String userId,  @Param("roleName") String roleName,@Param("mediaType") Integer mediaType, @Param("month1") Map<String, Integer> month1, @Param("month2") Map<String, Integer> month2, @Param("month3") Map<String, Integer> month3);


    /**
     * 设计人员绩效-头条
     *
     * @param userId
     * @param startTime
     * @param endTime
     * @return
     */
    List<JSONObject> getDesignerAchievementsBytedance(@Param("userId") String userId,
                                                      @Param("startTime") Integer startTime,
                                                      @Param("endTime") Integer endTime);


    List<JSONObject> getDesignerAchievementsKuaishou(@Param("userId") String userId,
                                                     @Param("startTime") Integer startTime,
                                                     @Param("endTime") Integer endTime);


    /**
     * 查询设计 本季度 头条  季度消耗汇总
     *
     * @param userId
     * @return
     */
    List<JSONObject> getDesignerBytedanceQuaterCost(@Param("userId") String userId, @Param("startTime") Integer startTime,
                                                    @Param("endTime") Integer endTime);

    /**
     * 查询设计 本季度 快手季度消耗汇总
     *
     * @param userId
     * @return
     */
    List<JSONObject> getDesignerKuaishouQuaterCost(@Param("userId") String userId, @Param("startTime") Integer startTime,
                                                   @Param("endTime") Integer endTime);

    /**
     * 管理消耗
     *
     * @param userId
     * @param startTime
     * @param endTime
     * @return
     */
    List<JSONObject> getDesignerManagerLeaderCost(@Param("userId") String userId, @Param("startTime") Integer startTime,
                                                  @Param("endTime") Integer endTime);

    /**
     * 查询人员离职时间
     *
     * @param userId
     * @return
     */
    JSONObject getUserFrozenInfo(@Param("userId") String userId);

    /**
     * 查询人员 当前季度爆款素材数量
     *
     * @param userId
     * @return
     */
    JSONObject getUserHotMaterialQuarter(@Param("userId") String userId, @Param("startTime") Integer startTime,
                                         @Param("endTime") Integer endTime);

    /**
     * 绩效- 用户信息修改
     *
     * @return
     */
    void updateUserHappyProbability(@Param("userId") String userId,
                                    @Param("openScreenNum") String openScreenNum,
                                    @Param("paySalary") String paySalary,
                                    @Param("remarks") String remarks);


    /**
     * 根据角色查询人员
     *
     * @param roleName
     * @return
     */
    List<JSONObject> getUserByRoleName(@Param("roleName") String roleName);


    List<JSONObject> getQuarterDesignerAchievementsByTedance(@Param("userId") String userId, @Param("month1") Map<String, Integer> month1, @Param("month2") Map<String, Integer> month2, @Param("month3") Map<String, Integer> month3);

    List<JSONObject> getQuarterDesignerAchievementsByKuaishou(@Param("userId") String userId, @Param("month1") Map<String, Integer> month1, @Param("month2") Map<String, Integer> month2, @Param("month3") Map<String, Integer> month3);
}
