blob: 3eecaff893cce3eff55efaad8644382043f4c3fc [file] [log] [blame]
rootcd436562025-05-08 14:09:19 +00001package cheat;
2
Raver5ba779f2025-05-14 12:48:12 +00003import java.util.ArrayList;
4import java.util.List;
5
6import javax.persistence.EntityManager;
Raverf79fdb62025-06-03 06:02:49 +00007import javax.persistence.PersistenceContext;
8import javax.transaction.Transactional;
Raver5ba779f2025-05-14 12:48:12 +00009
10import org.apache.commons.lang3.tuple.Pair;
11
12import com.querydsl.jpa.impl.JPAQueryFactory;
13
14import entity.Appeal;
15import entity.QAppeal;
16import entity.QSeed;
17import entity.User;
18import entity.config;
19
20public class Cheat implements CheatInterfnterface {
21
Raverf79fdb62025-06-03 06:02:49 +000022 @PersistenceContext
23 private EntityManager entityManager;
Raver5ba779f2025-05-14 12:48:12 +000024
25 @Override
Raverf79fdb62025-06-03 06:02:49 +000026 @Transactional
Raver5ba779f2025-05-14 12:48:12 +000027 public boolean AddAppeal(Appeal appeal) {
28 try {
Raverf79fdb62025-06-03 06:02:49 +000029 entityManager.persist(appeal);
Raver5ba779f2025-05-14 12:48:12 +000030 } catch (Exception e) {
31 e.printStackTrace();
32 return false;
33 }
34 return true;
35 }
36
37 @Override
38 public Appeal GetAppeal(String appealid) {
39 try {
Raverf79fdb62025-06-03 06:02:49 +000040 JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
Raver5ba779f2025-05-14 12:48:12 +000041 QAppeal qAppeal = QAppeal.appeal;
42 Appeal appeal = queryFactory
Raverf79fdb62025-06-03 06:02:49 +000043 .selectFrom(qAppeal)
44 .where(qAppeal.appealid.eq(appealid))
45 .fetchOne();
Raver5ba779f2025-05-14 12:48:12 +000046 return appeal;
47 } catch (Exception e) {
48 e.printStackTrace();
49 return null;
50 }
51 }
52
53 @Override
54 public Appeal[] GetAppealList() {
55 try {
Raverf79fdb62025-06-03 06:02:49 +000056 JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
Raver5ba779f2025-05-14 12:48:12 +000057 QAppeal qAppeal = QAppeal.appeal;
58 List<Appeal> appeals = queryFactory
Raverf79fdb62025-06-03 06:02:49 +000059 .selectFrom(qAppeal)
60 .fetch();
Raver5ba779f2025-05-14 12:48:12 +000061 return appeals.toArray(new Appeal[0]);
62 } catch (Exception e) {
63 e.printStackTrace();
64 return null;
65 }
66 }
67
68 @Override
69 public boolean HandleAppeal(String appealid, Integer status) {
70 try {
Raverf79fdb62025-06-03 06:02:49 +000071 Appeal appeal = GetAppeal(appealid);
Raver5ba779f2025-05-14 12:48:12 +000072 if (appeal != null) {
73 appeal.status = status;
Raverf79fdb62025-06-03 06:02:49 +000074 entityManager.merge(appeal);
75 User user = entityManager.find(User.class, appeal.appealuserid);
Raver5ba779f2025-05-14 12:48:12 +000076 if (user != null && user.accountstate != false) {
77 if (status == 1) {
78 user.accountstate = false;
79 }
Raverf79fdb62025-06-03 06:02:49 +000080 entityManager.merge(user);
Raver5ba779f2025-05-14 12:48:12 +000081 }
82 return true;
83 }
84 return false;
85 } catch (Exception e) {
86 e.printStackTrace();
87 return false;
88 }
89 }
90
91 @Override
92 public Pair<String, String>[] GetFakeSeed() {
93 List<Pair<String, String>> fakeSeeds = new ArrayList<>();
94 try {
Raverf79fdb62025-06-03 06:02:49 +000095 JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
Raver5ba779f2025-05-14 12:48:12 +000096 QSeed qSeed = QSeed.seed;
97 List<com.querydsl.core.Tuple> results = queryFactory
Raverf79fdb62025-06-03 06:02:49 +000098 .select(qSeed.seedid, qSeed.seeduserid)
99 .from(qSeed)
100 .where(qSeed.faketime.gt(new config().FakeTime))
101 .fetch();
Raver5ba779f2025-05-14 12:48:12 +0000102 for (com.querydsl.core.Tuple result : results) {
103 String seedid = result.get(qSeed.seedid);
Raverf79fdb62025-06-03 06:02:49 +0000104 String userid = result.get(qSeed.seeduserid);
Raver5ba779f2025-05-14 12:48:12 +0000105 fakeSeeds.add(Pair.of(seedid, userid));
106 }
107 } catch (Exception e) {
108 e.printStackTrace();
109 return null;
110 }
111 return fakeSeeds.toArray(new Pair[0]);
112 }
113
114 @Override
115 public String[] GetPunishedUserList() {
116 List<String> punishedUsers = new ArrayList<>();
117 try {
Raverf79fdb62025-06-03 06:02:49 +0000118 JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
Raver5ba779f2025-05-14 12:48:12 +0000119 entity.QUser qUser = entity.QUser.user;
120 List<String> results = queryFactory
Raverf79fdb62025-06-03 06:02:49 +0000121 .select(qUser.userid)
122 .from(qUser)
123 .where(qUser.accountstate.isTrue())
124 .fetch();
Raver5ba779f2025-05-14 12:48:12 +0000125 for (String userid : results) {
126 punishedUsers.add(userid);
127 }
128 } catch (Exception e) {
129 e.printStackTrace();
130 return null;
131 }
132 return punishedUsers.toArray(new String[0]);
133 }
134
135 @Override
136 public void DetectTrans() {
137 // JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
138 // QSeed qSeed = QSeed.seed;
139 // List<Seed> seeds = queryFactory
140 // .selectFrom(qSeed)
141 // .fetch();
142 // for (Seed seed : seeds) {
143 // QTransRecord qTransRecord = QTransRecord.transRecord;
144 // List<TransRecord> tasks = queryFactory
145 // .selectFrom(qTransRecord)
146 // .where(qTransRecord.seedid.eq(seed.seedid))
147 // .fetch();
148
149 // int n = tasks.size();
150 // if (n == 0) continue;
Raverf79fdb62025-06-03 06:02:49 +0000151
Raver5ba779f2025-05-14 12:48:12 +0000152 // double[] xArr = new double[n];
153 // for (int i = 0; i < n; i++) {
154 // TransRecord t = tasks.get(i);
155 // xArr[i] = Math.max(0, t.upload - t.download);
156 // }
Raverf79fdb62025-06-03 06:02:49 +0000157
Raver5ba779f2025-05-14 12:48:12 +0000158 // double sum = 0;
159 // for (double x : xArr) sum += x;
160 // double mu = sum / n;
Raverf79fdb62025-06-03 06:02:49 +0000161
Raver5ba779f2025-05-14 12:48:12 +0000162 // double sqSum = 0;
163 // for (double x : xArr) sqSum += (x - mu) * (x - mu);
164 // double sigma = Math.sqrt(sqSum / n);
Raverf79fdb62025-06-03 06:02:49 +0000165
Raver5ba779f2025-05-14 12:48:12 +0000166 // for (int i = 0; i < n; i++) {
167 // if (Math.abs(xArr[i] - mu) > 3 * sigma) {
168 // User user = entityManager.find(User.class, tasks.get(i).downloaduserid);
169 // if (user != null) {
170 // user.detectedCount++;
171 // user.lastDetectedTime = new java.util.Date();
172 // entityManager.merge(user);
173 // }
174 // }
175 // }
176 // }
177 }
178
179 @Override
Raverf79fdb62025-06-03 06:02:49 +0000180 public void DetectFakeSeed(){
Raver5ba779f2025-05-14 12:48:12 +0000181 }
182
183 @Override
Raverf79fdb62025-06-03 06:02:49 +0000184 public boolean DetectFakeSeed(String seedid){
Raver5ba779f2025-05-14 12:48:12 +0000185 return false;
186 }
187
188 @Override
Raverf79fdb62025-06-03 06:02:49 +0000189 public void PunishUser(){
190 JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
191 entity.QUser qUser = entity.QUser.user;
192 List<User> users = queryFactory
193 .selectFrom(qUser)
194 .where(qUser.detectedCount.gt(new entity.config().CheatTime)
195 .or(qUser.fakeDetectedCount.gt(new entity.config().FakeTime)))
196 .fetch();
Raver5ba779f2025-05-14 12:48:12 +0000197
Raverf79fdb62025-06-03 06:02:49 +0000198 for (User user : users) {
199 user.accountstate = true;
200 entityManager.merge(user);
Raver5ba779f2025-05-14 12:48:12 +0000201 }
202 }
Raverf79fdb62025-06-03 06:02:49 +0000203}