package shop.alien.second.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.second.SecondRiskControlRecord;
import shop.alien.entity.second.vo.SecondRiskControlRecordVo;
import shop.alien.entity.second.vo.SecondRiskRecordVo;

import java.util.List;

/**
 * 风控服务接口
 */
public interface RiskControlService extends IService<SecondRiskControlRecord> {
    
    /**
     * 记录风控数据
     *
     * @param userId     用户ID
     * @param ruleType   规则类型 1:洗钱嫌疑 2:账号异常 3:交易欺诈 4:异常发布
     * @param ruleName   规则名称
     * @param businessId 业务ID
     * @param detailInfo 详细信息（JSON格式）
     */
    void recordRiskControlData(Integer userId,
                               Integer ruleType,
                               String ruleName,
                               String businessId,
                               String detailInfo);

    /**
     * 获取相同类型的风控数据
     *
     * @param ruleType   规则类型
     * @param businessId 业务ID
     * @return 相同类型的风控数据列表
     */
    List<SecondRiskControlRecord> getSameTypeRiskControlRecords(Integer ruleType, String businessId);

    /**
     * 发送封禁通知
     */
    void sendNotice(Integer userId);

    /**
     * 获取相同类型的风控数据
     *
     * @param vo
     * @return 查询风控列表
     */
    IPage<SecondRiskControlRecordVo> queryRiskControlRecords(SecondRiskControlRecordVo vo);

    /**
     * 账号封禁详细查询
     */
    SecondRiskRecordVo queryRiskControlRecordsDetail(SecondRiskRecordVo vo) throws Exception;

    /**
     * 账号封禁处理
     */
    boolean accountBan(SecondRiskRecordVo vo) throws Exception;

}