package com.ytpm.service;

import com.ytpm.agent.model.YtPlatformBanned;
import com.ytpm.agent.view.AgentUserInfo;
import com.ytpm.app.model.YtDyzUser;
import com.ytpm.general.Result;
import com.ytpm.general.ResultTable;
import com.ytpm.risk.param.RiskBannedListParam;
import com.ytpm.risk.param.RiskBannedParam;
import com.ytpm.risk.param.RiskConfigParam;
import com.ytpm.risk.param.RiskDeblockingListParam;
import com.ytpm.risk.param.RiskRelativeAppParam;
import com.ytpm.risk.param.RiskUserStatusParam;
import com.ytpm.risk.view.RiskBannedListView;
import com.ytpm.risk.view.RiskConfigListView;
import com.ytpm.risk.view.RiskConfigView;
import com.ytpm.risk.view.RiskDeblockingListView;
import com.ytpm.risk.view.RiskTemplateView;

import java.util.Date;
import java.util.List;

public interface RiskService {
    /**
     * 查询配置字段选项
     */
    ResultTable<RiskConfigView> getRiskConfig(String appIds);

    /**
     * 根据业务节点获取字段配置
     */
    ResultTable<RiskConfigView> getFieldConfigByNode(Integer effectNode);
    /**
     * 保存风控配置
     */
    Result<?> saveConfig(RiskConfigParam param);

    /**
     * 锁定用户禁止登入
     */
    Result<?> lockUser(String userId,String appId, AgentUserInfo userInfo);

    /**
     * 封禁用户
     */
    Result<?> banned(RiskBannedParam param);
    /**
     * 查询风控配置列表
     */
    ResultTable<RiskConfigListView> getRiskConfigList(RiskConfigParam param);
    /**
     * 查询风控记录
     */
    ResultTable<RiskBannedListView> bannedList(RiskBannedListParam param);
    /**
     * 查询解封记录
     */
    ResultTable<RiskDeblockingListView> deblockingList(RiskDeblockingListParam param);
    /**
     * 修改用户状态
     */
    Result<?> changeUserStatus(RiskUserStatusParam param);

    /**
     * 风控配置关联应用
     */
    Result<?> relativeApp(RiskRelativeAppParam param);
    /**
     * 启用或关闭风控配置
     */
    Result<?> isEnabledConfig(String templateId, String userId);
    /**
     * 风控配置模板详情
     */
    Result<RiskTemplateView> templateView(String templateId, String channelId);

    /**
     * 修改风控配置模版
     */
    Result<?> updateConfig(RiskConfigParam param);

    /**
     * 登录检查默认风控配置
     */
    Result<?> checkRisk(YtDyzUser dyzUser);

    /**
     * 根据appId查询应用配置模版
     */
    Result<RiskTemplateView> getAppConfig(String appId);

    /**
     * 根据风控编码获取风控配置
     */
    Result<RiskTemplateView> getRiskByCode(String code);

    /**
     * 校验广告的默认风控配置
     */
    Result<?> checkAdRisk(YtDyzUser dyzUser);

    List<YtPlatformBanned> queryBannedRecord(Date startTime,Date endTime,List<String> appIdList);

    List<YtPlatformBanned> queryBannedRecordGroupByUserId(Date startTime,Date endTime,List<String> appIdList);

    /**
     * 批量审核用户
     */
    void batchAudit(List<YtDyzUser> userList);

    /**
     * 增加解禁记录
     */
    void addDeblockingRecord(String userId);

    /**
     * 根据应用获取风控配置
     */
    List<RiskTemplateView> getRiskTemplate(String appId);

    /**
     * 校验注册风控规则
     */
    Result<?> checkRegRisk(YtDyzUser dyzUser);

    /**
     * 校验登录风控配置
     */
    Result<?> checkLoginRisk(YtDyzUser dyzUser);

    /**
     * 校验用户广告风控 766
     */
    Result<?> checkAdRisk766(YtDyzUser dyzUser);
}
