package com.ytpm.service;

import com.ytpm.agent.view.AgentUserInfo;
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;

public interface RiskService {
    /**
     * 锁定用户
     */
    Result<?> lockUser(AgentUserInfo curUser, String userId, String appId);

    /**
     * 封禁用户
     */
    Result<?> banned(RiskBannedParam param,AgentUserInfo curUser);

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

    /**
     * 查询风控记录列表
     */
    ResultTable<RiskBannedListView> bannedList(RiskBannedListParam param);
    /**
     * 查询解封记录
     */
    ResultTable<RiskDeblockingListView> deblockingList(RiskDeblockingListParam param);
    /**
     * 修改用户风控状态
     */
    Result<?> changeUserStatus(RiskUserStatusParam param, AgentUserInfo curUser);
    /**
     * 风控配置关联应用
     */
    Result<?> relativeApp(RiskRelativeAppParam param);
    /**
     * 保存风控配置
     */
    Result<?> saveConfig(RiskConfigParam param);
    /**
     * 修改风控配置模版
     */
    Result<?> updateConfig(RiskConfigParam param);
    /**
     * 查询配置字段选项
     */
    ResultTable<RiskConfigView> getRiskConfig(String appIds);

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

    /**
     * 查询字段配置选项
     */
    ResultTable<RiskConfigView> getFieldConfigByNode(Integer effectNode);

    /**
     * 批量封禁用户
     */
    Result<?> batchBanned(RiskBannedParam param, AgentUserInfo curUser);
    Result<?> batchBannedByIps(RiskBannedParam param,AgentUserInfo curUser);

    /**
     * 批量解禁用户
     */
    Result<?> batchDeblock(RiskDeblockingListParam param, AgentUserInfo curUser);
}
