package cheat;
import org.apache.commons.lang3.tuple.Pair;
import object.Appeal;
public interface CheatInterfnterface{
    public Pair<String,String>[] GetFeakSeed();//返回做假种的列表，<seedid,userid>
    public void DetectFeakSeed();//检测所有种子是否为假种，并将检测结果写入数据表
    public void DetectTrans();//检测所有种子是存在伪造上传量下载量
    public boolean DetectTransSeed(String seedid);//检测单个种子是否存在伪造上传量下载量
    public boolean DetectFeakSeed(String seedid);//检测单个用户是否存在假种
    public void PunishUser();//扫描数据库中的可疑表，标记可疑用户
    public boolean DetectUser(String userid);//检测单个用户是否存在可疑行为,每次登录的时候进行检查
    public String[] GetPunishedUserList();//获取所有可疑用户的列表

    public boolean AddAppeal(Appeal appeal);//数据库中写入一个申诉请求
    public Appeal GetAppeal(String appealid);//获取某个申诉
    public Appeal[] GetAppealList();//获取所有申诉列表

    public boolean RevokePunish(String userid);//撤销某个用户的惩罚

}
