package com.ytpm.dao;


import com.ytpm.agent.model.YtPlatformBanned;
import com.ytpm.agent.model.YtPlatformDeblocking;
import com.ytpm.agent.view.AgentAppClassView;
import com.ytpm.risk.model.YtRiskConfig;
import com.ytpm.risk.model.YtRiskTemplate;
import com.ytpm.risk.model.YtRiskTemplateLog;
import com.ytpm.risk.param.RiskBannedListParam;
import com.ytpm.risk.param.RiskConfigParam;
import com.ytpm.risk.param.RiskDeblockingListParam;
import com.ytpm.risk.param.RiskRelativeAppParam;
import com.ytpm.risk.param.RiskTemplateLogParam;
import com.ytpm.risk.view.RiskBannedListView;
import com.ytpm.risk.view.RiskConfigListView;
import com.ytpm.risk.view.RiskDeblockingListView;
import com.ytpm.risk.view.RiskTemplateLogView;
import com.ytpm.risk.view.RiskTemplateView;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


@Mapper
public interface RiskMapper {
    /**
     * 根据应用查询 742 风控配置
     */
    RiskTemplateView getByCode(@Param("code")String code);

    /**
     * 新增封禁记录
     */
    void addBannedRecord(YtPlatformBanned banned);

    /**
     * 查询风控配置列表
     */
    List<RiskConfigListView> getRiskConfigList(RiskConfigParam param);

    /**
     * 查询风控记录列表
     */
    List<RiskBannedListView> getBannedList(RiskBannedListParam param);
    /**
     * 查询解封记录列表
     */
    List<RiskDeblockingListView> getDeblockingList(RiskDeblockingListParam param);

    /**
     * 新增解禁记录
     */
    void addDeblockingRecord(YtPlatformDeblocking deblocking);

    /**
     * 查询用户最新的封禁记录
     */
    YtPlatformBanned getLastBanned(@Param("userId") String userId);

    /**
     * 删除关联关系
     */
    void deleteRelatives(@Param("templateId")String templateId);

    /**
     * 关联应用
     */
    void relativeApps(RiskRelativeAppParam param);

    /**
     * 批量新增配置项
     */
    void batchInsertConfig(@Param("configs") List<YtRiskConfig> configs);
    /**
     * 保存风控配置模板
     */
    void saveTemplate(YtRiskTemplate template);
    /**
     * 新增模版关联配置
     */
    void addRelease(@Param("templateId") String templateId, @Param("configIds") List<String> configIds,
                    @Param("operator") String operator, @Param("operatorName") String operatorName);
    /**
     * 查询风控配置模板
     */
    YtRiskTemplate selectOneTemplate(@Param("templateId")String templateId);

    /**
     * 修改配置值
     */
    void updateConfigVal(YtRiskConfig config);

    /**
     * 修改风控模板
     */
    void updateByTempId(YtRiskTemplate newTemp);

    /**
     * 根据应用获取配置类
     */
    List<AgentAppClassView> getAppClazz(@Param("appIds") String appIds);

    /**
     * 风控配置模版详情
     */
    RiskTemplateView getTemplateView(@Param("templateId") String templateId, @Param("channelId")String channelId);

    /**
     * 查询封禁数量统计
     */
    int queryBannedCount(@Param("appIdList") List<String> appIdList, @Param("type") int type);

    /**
     * 根据APP 查询当月的封禁数据
     */
    List<YtPlatformBanned> queryMonthBanned(@Param("appIdList") List<String> appIdList);

    /**
     * 根据模板ID查询模板配置信息
     */
    List<YtRiskConfig> selectRiskConfig(@Param("templateId") String templateId);

    /**
     * 新增模板配置修改记录
     */
    void addRiskTemplateLog(@Param("logs") List<YtRiskTemplateLog> logs);

    /**
     * 查询风控配置修改记录
     */
    List<RiskTemplateLogView> selectTemplateLog(RiskTemplateLogParam param);
}
