blob: 0689e6973bce5c83f0ceece23b0417ae91c9063a [file] [log] [blame]
rootcd436562025-05-08 14:09:19 +00001package database;
2
root0dbc9812025-05-19 04:41:57 +00003import java.util.HashMap;
4import java.util.List;
5import java.util.Map;
6
7import javax.persistence.EntityManager;
Raverf79fdb62025-06-03 06:02:49 +00008import javax.persistence.PersistenceContext;
root678fd3e2025-06-03 14:20:20 +00009import javax.persistence.Persistence;
root0dbc9812025-05-19 04:41:57 +000010
11import com.querydsl.jpa.impl.JPAQuery;
12
13import entity.BegInfo;
14import entity.Notice;
15import entity.Post;
16import entity.Profile;
17import entity.QNotice;
18import entity.QSeed;
19import entity.QUser;
20import entity.QUserPT;
21import entity.QUserStar;
TRM-codingcdfe5482025-06-06 17:31:01 +080022import entity.QUserInvite;
rhj46f62c42025-06-06 23:24:10 +080023import entity.QPost;
root0dbc9812025-05-19 04:41:57 +000024import entity.Seed;
25import entity.User;
26import entity.UserPT;
27import entity.UserStar;
Raverf79fdb62025-06-03 06:02:49 +000028import entity.config;
rhj5b69b7e2025-06-07 01:28:08 +080029import entity.PostReply;
30import entity.QPostReply;
root0dbc9812025-05-19 04:41:57 +000031
32public class Database1 implements DataManagerInterface {
Raverf79fdb62025-06-03 06:02:49 +000033 @PersistenceContext
34 private final EntityManager entitymanager;
root678fd3e2025-06-03 14:20:20 +000035
36 public Database1() {
Raverf79fdb62025-06-03 06:02:49 +000037 config cfg = new config();
38 Map<String,Object> props = new HashMap<>();
39 props.put("javax.persistence.jdbc.url",
40 "jdbc:mysql://" + cfg.SqlURL + "/" + cfg.Database);
root678fd3e2025-06-03 14:20:20 +000041 props.put("javax.persistence.jdbc.user", cfg.SqlUsername);
42 props.put("javax.persistence.jdbc.password", cfg.SqlPassword);
Raverf79fdb62025-06-03 06:02:49 +000043 this.entitymanager = Persistence.createEntityManagerFactory("myPersistenceUnit", props).createEntityManager();
root678fd3e2025-06-03 14:20:20 +000044 }
TRM-codingcdfe5482025-06-06 17:31:01 +080045 @Override
46 public String LoginUser(User userinfo){
47 try {
48 // 检查传入的参数是否合法
49 if (userinfo == null || userinfo.password == null) {
50 return null;
51 }
52
TRM-codingcdfe5482025-06-06 17:31:01 +080053 boolean hasEmail = userinfo.email != null && !userinfo.email.isEmpty();
54
55 // 如果两个都为空或两个都不为空,返回null
rhj46f62c42025-06-06 23:24:10 +080056 if (!hasEmail) {
TRM-codingcdfe5482025-06-06 17:31:01 +080057 return null;
58 }
59
60 JPAQuery<User> query = new JPAQuery<>(entitymanager);
61 QUser u = QUser.user;
62 User foundUser = null;
63
rhj46f62c42025-06-06 23:24:10 +080064
65 // 通过邮箱和密码查找
66 foundUser = query.select(u)
67 .from(u)
68 .where(u.email.eq(userinfo.email)
69 .and(u.password.eq(userinfo.password)))
70 .fetchOne();
TRM-codingcdfe5482025-06-06 17:31:01 +080071
72 // 如果找到匹配的用户则返回用户ID,否则返回null
73 return foundUser != null ? foundUser.userid : null;
74
75 } catch (Exception e) {
76 e.printStackTrace();
77 return null;
78 }
79 }
root0dbc9812025-05-19 04:41:57 +000080
81 // 返回状态:0 success,1 邮箱重复,2其他原因
82 @Override
Raverf79fdb62025-06-03 06:02:49 +000083 public int RegisterUser(User userinfo){
84 try{
TRM-codingcdfe5482025-06-06 17:31:01 +080085 // 首先检查该邮箱是否在UserInvite表中被邀请过
86 JPAQuery<String> inviteQuery = new JPAQuery<>(entitymanager);
87 QUserInvite ui = QUserInvite.userInvite;
88 List<String> invitedEmails = inviteQuery.select(ui.inviterEmail).from(ui).fetch();
89
90 // 如果邮箱不在被邀请列表中,拒绝注册
91 if(!invitedEmails.contains(userinfo.email)){
92 return 2; // 未被邀请
93 }
94
95 // 检查邮箱是否已在User表中存在
Raverf79fdb62025-06-03 06:02:49 +000096 JPAQuery<String> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +000097 QUser u = QUser.user;
98 List<String> allEmails = query.select(u.email).from(u).fetch();
99
Raverf79fdb62025-06-03 06:02:49 +0000100 if(allEmails.contains(userinfo.email)){
TRM-codingcdfe5482025-06-06 17:31:01 +0800101 return 1; // 邮箱重复
root0dbc9812025-05-19 04:41:57 +0000102 }
root0dbc9812025-05-19 04:41:57 +0000103
rhj46f62c42025-06-06 23:24:10 +0800104 entitymanager.getTransaction().begin();
105 entitymanager.persist(userinfo);
106 entitymanager.getTransaction().commit();
107 return 0; // 注册成功
TRM-coding93f7be82025-06-06 22:29:02 +0800108
rhj46f62c42025-06-06 23:24:10 +0800109 }catch(Exception e){
110 e.printStackTrace();
111 if (entitymanager.getTransaction().isActive()) {
112 entitymanager.getTransaction().rollback();
113 }
114 return 4;
115 }
TRM-coding93f7be82025-06-06 22:29:02 +0800116
root0dbc9812025-05-19 04:41:57 +0000117 }
118
119 // 返回状态:0 success,1 不存在,2其他原因
120 @Override
Raverf79fdb62025-06-03 06:02:49 +0000121 public int UpdateInformation(User userinfo){
root0dbc9812025-05-19 04:41:57 +0000122 try {
123 if (userinfo.userid == null) {
124 return 2; // userid为null直接返回错误
125 }
rhjc6a4ee02025-06-06 00:45:18 +0800126
127 entitymanager.getTransaction().begin();
128
Raverf79fdb62025-06-03 06:02:49 +0000129 JPAQuery<User> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000130 QUser u = QUser.user;
131 User updateUser = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
132
Raverf79fdb62025-06-03 06:02:49 +0000133 if(updateUser == null){
rhjc6a4ee02025-06-06 00:45:18 +0800134 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000135 return 1;
136 }
137 // 只更新需要的字段,避免破坏持久化状态和关联关系
rhjc6a4ee02025-06-06 00:45:18 +0800138 if (userinfo.email != null) updateUser.email = userinfo.email;
139 if (userinfo.username != null) updateUser.username = userinfo.username;
140 if (userinfo.password != null) updateUser.password = userinfo.password;
141 if (userinfo.sex != null) updateUser.sex = userinfo.sex;
142 if (userinfo.school != null) updateUser.school = userinfo.school;
143 if (userinfo.pictureurl != null) updateUser.pictureurl = userinfo.pictureurl;
144 if (userinfo.profile != null) updateUser.profile = userinfo.profile;
root0dbc9812025-05-19 04:41:57 +0000145 updateUser.accountstate = userinfo.accountstate;
146 updateUser.invitetimes = userinfo.invitetimes;
147 // 如有其他字段也一并赋值
Raverf79fdb62025-06-03 06:02:49 +0000148 entitymanager.merge(updateUser);
rhjc6a4ee02025-06-06 00:45:18 +0800149 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000150 return 0;
151 } catch (Exception e) {
152 e.printStackTrace();
rhjc6a4ee02025-06-06 00:45:18 +0800153 if (entitymanager.getTransaction().isActive()) {
154 entitymanager.getTransaction().rollback();
155 }
root0dbc9812025-05-19 04:41:57 +0000156 return 2;
157 }
Raverf79fdb62025-06-03 06:02:49 +0000158
root0dbc9812025-05-19 04:41:57 +0000159 }
160
161 // 返回用户的全部基本信息
162 @Override
Raverf79fdb62025-06-03 06:02:49 +0000163 public User GetInformation(String userid){
164 User user = entitymanager.find(User.class, userid);
165 return user;
root0dbc9812025-05-19 04:41:57 +0000166 }
167
168 //返回用户的全部pt站信息
169 @Override
Raverf79fdb62025-06-03 06:02:49 +0000170 public UserPT GetInformationPT(String userid){
171 UserPT userPT = entitymanager.find(UserPT.class, userid);
172 return userPT;
root0dbc9812025-05-19 04:41:57 +0000173 }
174
175 //返回状态:0 success,1 邮箱重复,2其他原因
176 @Override
Raverf79fdb62025-06-03 06:02:49 +0000177 public int UpdateInformationPT(UserPT userinfo){
178 try{
179 JPAQuery<UserPT> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000180 QUserPT u = QUserPT.userPT;
181 UserPT userPT = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
Raverf79fdb62025-06-03 06:02:49 +0000182
183 if(userPT == null){
root0dbc9812025-05-19 04:41:57 +0000184 return 1;
185 }
186 userPT = userinfo;
Raverf79fdb62025-06-03 06:02:49 +0000187 entitymanager.merge(userPT);
root0dbc9812025-05-19 04:41:57 +0000188 return 0;
189
Raverf79fdb62025-06-03 06:02:49 +0000190 }catch(Exception e){
root0dbc9812025-05-19 04:41:57 +0000191 e.printStackTrace();
192 return 2;
193 }
194 }
195
196 //返回状态:0 success,1 id重复,2其他原因
197 @Override
Raverf79fdb62025-06-03 06:02:49 +0000198 public int RegisterUserPT(UserPT userinfo){
root0dbc9812025-05-19 04:41:57 +0000199 try {
rhj46f62c42025-06-06 23:24:10 +0800200 entitymanager.getTransaction().begin();
201
Raverf79fdb62025-06-03 06:02:49 +0000202 JPAQuery<UserPT> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000203 QUserPT u = QUserPT.userPT;
204 UserPT checkUserPT = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
205 if (checkUserPT != null) {
rhj46f62c42025-06-06 23:24:10 +0800206 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000207 return 1;
208 }
rhj46f62c42025-06-06 23:24:10 +0800209
Raverf79fdb62025-06-03 06:02:49 +0000210 entitymanager.persist(userinfo);
rhj46f62c42025-06-06 23:24:10 +0800211 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000212 return 0;
213 } catch (Exception e) {
214 e.printStackTrace();
rhj46f62c42025-06-06 23:24:10 +0800215 if (entitymanager.getTransaction().isActive()) {
216 entitymanager.getTransaction().rollback();
217 }
root0dbc9812025-05-19 04:41:57 +0000218 return 2;
219 }
220 }
221
222 //返回种子的全部信息
223 @Override
Raverf79fdb62025-06-03 06:02:49 +0000224 public Seed GetSeedInformation(String seedid){
225 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
226 QSeed s = QSeed.seed;
227 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedid)).fetchOne();
228 return seed;
root0dbc9812025-05-19 04:41:57 +0000229 }
230
Raveraae06122025-06-05 08:13:35 +0000231 @Override
232 public Seed[] GetSeedListByTag(String tag){
233 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
234 QSeed s = QSeed.seed;
235 List<Seed> seeds = query.select(s).from(s).where(s.seedtag.eq(tag)).fetch();
236 return seeds.toArray(new Seed[0]);
237 }
238
rhjc6a4ee02025-06-06 00:45:18 +0800239 @Override
240 public Seed[] GetSeedListByUser(String userid){
241 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
242 QSeed s = QSeed.seed;
243 List<Seed> seeds = query.select(s).from(s).where(s.seeduserid.eq(userid)).fetch();
244 return seeds.toArray(new Seed[0]);
245 }
246
247 @Override
248 public int DeleteSeed(String seedid){
249 try {
250 entitymanager.getTransaction().begin();
251 Seed seed = entitymanager.find(Seed.class, seedid);
252 if (seed == null) {
253 entitymanager.getTransaction().rollback();
254 return 1; // 种子不存在
255 }
256 entitymanager.remove(seed);
257 entitymanager.getTransaction().commit();
258 return 0; // 成功删除
259 } catch (Exception e) {
260 e.printStackTrace();
261 if (entitymanager.getTransaction().isActive()) {
262 entitymanager.getTransaction().rollback();
263 }
264 return 2; // 其他错误
265 }
266 }
267
root0dbc9812025-05-19 04:41:57 +0000268 //添加一个新的种子,0成功,其他失败信息待定;
269 @Override
Raverf79fdb62025-06-03 06:02:49 +0000270 public int RegisterSeed(Seed seedinfo){
root0dbc9812025-05-19 04:41:57 +0000271 try {
Raveraae06122025-06-05 08:13:35 +0000272 entitymanager.getTransaction().begin();
Raverf79fdb62025-06-03 06:02:49 +0000273 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000274 QSeed s = QSeed.seed;
275 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedinfo.seedid)).fetchOne();
Raveraae06122025-06-05 08:13:35 +0000276 User user = entitymanager.find(User.class, seedinfo.seeduserid);
277 if (user == null) {
278 entitymanager.getTransaction().rollback();
279 return 2; // 用户不存在
280 }
rhjc6a4ee02025-06-06 00:45:18 +0800281 seedinfo.user = user; // 设置种子的用户关联
root0dbc9812025-05-19 04:41:57 +0000282 if (seed != null) {
Raveraae06122025-06-05 08:13:35 +0000283 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000284 return 1;
285 }
Raverf79fdb62025-06-03 06:02:49 +0000286 entitymanager.persist(seedinfo);
Raveraae06122025-06-05 08:13:35 +0000287 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000288 return 0;
289 } catch (Exception e) {
290 e.printStackTrace();
Raveraae06122025-06-05 08:13:35 +0000291 if (entitymanager.getTransaction().isActive()) {
292 entitymanager.getTransaction().rollback();
293 }
root0dbc9812025-05-19 04:41:57 +0000294 return 2;
295 }
296 }
297
298 //接收新的种子然后更新其全部属性
299 @Override
Raverf79fdb62025-06-03 06:02:49 +0000300 public int UpdateSeed(Seed seedinfo){
root0dbc9812025-05-19 04:41:57 +0000301 try {
Raverf79fdb62025-06-03 06:02:49 +0000302 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000303 QSeed s = QSeed.seed;
304 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedinfo.seedid)).fetchOne();
305 if (seed == null) {
306 return 1;
307 }
308 seed = seedinfo;
Raverf79fdb62025-06-03 06:02:49 +0000309 entitymanager.merge(seed);
root0dbc9812025-05-19 04:41:57 +0000310 return 0;
311 } catch (Exception e) {
312 e.printStackTrace();
313 return 2;
314 }
315 }
316
317 //传入搜索的关键词或句子,返回搜索到的种子信息(按照公共字符数量排序)
318 @Override
Raverf79fdb62025-06-03 06:02:49 +0000319 public Seed[] SearchSeed(String userQ){
320 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
321 QSeed s = QSeed.seed;
322 List<Seed> seeds = query.select(s).from(s).fetch();
root0dbc9812025-05-19 04:41:57 +0000323
Raverf79fdb62025-06-03 06:02:49 +0000324 if (seeds == null || userQ == null || userQ.trim().isEmpty()) {
root0dbc9812025-05-19 04:41:57 +0000325 return seeds.toArray(new Seed[0]);
326 }
Raverf79fdb62025-06-03 06:02:49 +0000327
328 String processedQuery = userQ.toLowerCase().trim();
329 Map<Seed, Integer> seedCountMap = new HashMap<>();
330 for(Seed seed : seeds){
331 String title = seed.title.toLowerCase().trim();
332 int count = countCommonCharacter(processedQuery, title);
333 seedCountMap.put(seed, count);
334 }
335 seeds.sort((s1, s2) -> {
336 int count1 = seedCountMap.getOrDefault(s1, 0);
337 int count2 = seedCountMap.getOrDefault(s2, 0);
338 return Integer.compare(count2, count1);
339 });
340
341 return seeds.toArray(new Seed[0]);
root0dbc9812025-05-19 04:41:57 +0000342 }
343
344 //计算字符串公共字符数量
Raverf79fdb62025-06-03 06:02:49 +0000345 private int countCommonCharacter(String str1, String str2){
root0dbc9812025-05-19 04:41:57 +0000346 Map<Character, Integer> map1 = new HashMap<>();
347 Map<Character, Integer> map2 = new HashMap<>();
348
Raverf79fdb62025-06-03 06:02:49 +0000349 for(char c : str1.toCharArray()){
root0dbc9812025-05-19 04:41:57 +0000350 if (!Character.isWhitespace(c)) {
351 map1.put(c, map1.getOrDefault(c, 0) + 1);
352 }
353 }
354
Raverf79fdb62025-06-03 06:02:49 +0000355 for(char c : str2.toCharArray()){
root0dbc9812025-05-19 04:41:57 +0000356 if (!Character.isWhitespace(c)) {
357 map2.put(c, map2.getOrDefault(c, 0) + 1);
358 }
359 }
360
361 int res = 0;
Raverf79fdb62025-06-03 06:02:49 +0000362 for(char c : map1.keySet()){
root0dbc9812025-05-19 04:41:57 +0000363 if (map2.containsKey(c)) {
364 res += Math.min(map1.get(c), map2.get(c));
365 }
Raverf79fdb62025-06-03 06:02:49 +0000366
root0dbc9812025-05-19 04:41:57 +0000367 }
368 return res;
369 }
370
371 //返回状态:0 success,1 重复,2其他原因
372 @Override
Raverf79fdb62025-06-03 06:02:49 +0000373 public int AddNotice(Notice notice){
root0dbc9812025-05-19 04:41:57 +0000374 try {
Raverf79fdb62025-06-03 06:02:49 +0000375 JPAQuery<Notice> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000376 QNotice n = QNotice.notice;
377 Notice checkNotice = query.select(n).from(n).where(n.noticeid.eq(notice.noticeid)).fetchOne();
378 if (checkNotice != null) {
379 return 1;
380 }
Raverf79fdb62025-06-03 06:02:49 +0000381
382 entitymanager.persist(notice);
root0dbc9812025-05-19 04:41:57 +0000383 return 0;
384 } catch (Exception e) {
385 e.printStackTrace();
386 return 2;
387 }
Raverf79fdb62025-06-03 06:02:49 +0000388
root0dbc9812025-05-19 04:41:57 +0000389 }
390
391 //返回状态:0 success,1 不存在,2其他原因
392 @Override
Raverf79fdb62025-06-03 06:02:49 +0000393 public boolean UpdateNotice(Notice notice){
root0dbc9812025-05-19 04:41:57 +0000394 try {
Raverf79fdb62025-06-03 06:02:49 +0000395 Notice oldNotice = entitymanager.find(Notice.class, notice.noticeid);
root0dbc9812025-05-19 04:41:57 +0000396 if (oldNotice == null) {
397 return false;
398 }
399 oldNotice = notice;
Raverf79fdb62025-06-03 06:02:49 +0000400 entitymanager.merge(oldNotice);
root0dbc9812025-05-19 04:41:57 +0000401 return true;
402 } catch (Exception e) {
403 e.printStackTrace();
404 return false;
405 }
406 }
407
408 //删除公告,返回状态:0 success,1 不存在,2其他原因
409 @Override
Raverf79fdb62025-06-03 06:02:49 +0000410 public boolean DeleteNotice(String noticeid){
root0dbc9812025-05-19 04:41:57 +0000411 try {
Raverf79fdb62025-06-03 06:02:49 +0000412 Notice notice = entitymanager.find(Notice.class, noticeid);
root0dbc9812025-05-19 04:41:57 +0000413 if (notice == null) {
414 return false;
415 }
Raverf79fdb62025-06-03 06:02:49 +0000416 entitymanager.remove(notice);
root0dbc9812025-05-19 04:41:57 +0000417 return true;
418 } catch (Exception e) {
419 e.printStackTrace();
420 return false;
421 }
Raverf79fdb62025-06-03 06:02:49 +0000422
root0dbc9812025-05-19 04:41:57 +0000423 }
424
425 //获取用户的剩余邀请次数
Raverf79fdb62025-06-03 06:02:49 +0000426 public int GetUserAvailableInviteTimes(String userid){
root0dbc9812025-05-19 04:41:57 +0000427 try {
Raverf79fdb62025-06-03 06:02:49 +0000428 JPAQuery<Integer> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000429 QUser u = QUser.user;
430 int invite_left = query.select(u.invitetimes).from(u).where(u.userid.eq(userid)).fetchOne();
Raverf79fdb62025-06-03 06:02:49 +0000431
root0dbc9812025-05-19 04:41:57 +0000432 return invite_left;
433 } catch (Exception e) {
434 e.printStackTrace();
435 return -1;
436 }
Raverf79fdb62025-06-03 06:02:49 +0000437
root0dbc9812025-05-19 04:41:57 +0000438 }
439
440 //邀请用户,返回状态:0 success,1 剩余次数不足,2,3其他原因
441 @Override
Raverf79fdb62025-06-03 06:02:49 +0000442 public int InviteUser(String inviterid,String inviteemail){
root0dbc9812025-05-19 04:41:57 +0000443 try {
Raverf79fdb62025-06-03 06:02:49 +0000444 User user = entitymanager.find(User.class, inviterid);
root0dbc9812025-05-19 04:41:57 +0000445 if (user == null || !user.email.equals(inviteemail)) {
446 return 3;
447 }
448 if (user.invitetimes <= 0) {
449 return 1;
450 }
451 user.invitetimes -= 1;
Raverf79fdb62025-06-03 06:02:49 +0000452 entitymanager.merge(user);
root0dbc9812025-05-19 04:41:57 +0000453 return 0;
454 } catch (Exception e) {
455 e.printStackTrace();
456 return 2;
457 }
Raverf79fdb62025-06-03 06:02:49 +0000458
root0dbc9812025-05-19 04:41:57 +0000459 }
460
461 //添加一个收藏,返回状态:0 success,1 不存在,2其他原因
462 @Override
Raverf79fdb62025-06-03 06:02:49 +0000463 public boolean AddCollect(String userid,String seedid){
464 JPAQuery<User> query2 = new JPAQuery<>(entitymanager);
465 QUser u2 = QUser.user;
466 User user = query2.select(u2).from(u2).where(u2.userid.eq(userid)).fetchOne();
467 if (user == null) {
root0dbc9812025-05-19 04:41:57 +0000468 return false;
469 }
Raverf79fdb62025-06-03 06:02:49 +0000470 JPAQuery<Seed> query3 = new JPAQuery<>(entitymanager);
471 QSeed p = QSeed.seed;
472 Seed seed = query3.select(p).from(p).where(p.seedid.eq(seedid)).fetchOne();
473 if (seed == null) {
474 return false;
475 }
476 JPAQuery<String> query = new JPAQuery<>(entitymanager);
477 QUserStar u = QUserStar.userStar;
478 List<String> allSeedId = query.select(u.seedid).from(u).where(u.userid.eq(userid)).fetch();
479
480 if (allSeedId.contains(seedid)) {
481 return false;
482 }
483 UserStar userStar = new UserStar();
484 userStar.userid = userid;
485 userStar.seedid = seedid;
486 entitymanager.persist(userStar);
487 return true;
root0dbc9812025-05-19 04:41:57 +0000488 }
489
490 //删除一个收藏,返回状态:0 success,1 不存在,2其他原因
491 @Override
Raverf79fdb62025-06-03 06:02:49 +0000492 public boolean DeleteCollect(String userid,String seedid){
root0dbc9812025-05-19 04:41:57 +0000493 try {
Raverf79fdb62025-06-03 06:02:49 +0000494 JPAQuery<UserStar> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000495 QUserStar u = QUserStar.userStar;
496 UserStar userStar = query.select(u).from(u).where(u.userid.eq(userid).and(u.seedid.eq(seedid))).fetchOne();
497 if (userStar == null) {
498 return true; // 收藏不存在
499 }
Raverf79fdb62025-06-03 06:02:49 +0000500 entitymanager.remove(userStar);
root0dbc9812025-05-19 04:41:57 +0000501 return true;
502 } catch (Exception e) {
503 e.printStackTrace();
504 return false;
505 }
Raverf79fdb62025-06-03 06:02:49 +0000506
root0dbc9812025-05-19 04:41:57 +0000507 }
508
509 @Override
Raverf79fdb62025-06-03 06:02:49 +0000510 public int AddBegSeed(BegInfo info){
root0dbc9812025-05-19 04:41:57 +0000511 return 0;
512 }
513
514 @Override
Raverf79fdb62025-06-03 06:02:49 +0000515 public int UpdateBegSeed(BegInfo info){
root0dbc9812025-05-19 04:41:57 +0000516 return 0;
517 }
518
519 @Override
Raverf79fdb62025-06-03 06:02:49 +0000520 public int DeleteBegSeed(String begid){
root0dbc9812025-05-19 04:41:57 +0000521 return 0;
522 }
523
524 @Override
Raverf79fdb62025-06-03 06:02:49 +0000525 public int VoteSeed(String begId, String seedId, String userId){
root0dbc9812025-05-19 04:41:57 +0000526 return 0;
527 }
528
529 @Override
Raverf79fdb62025-06-03 06:02:49 +0000530 public int SubmitSeed(String begid,Seed seed){
root0dbc9812025-05-19 04:41:57 +0000531 return 0;
532 }
533
534 @Override
Raverf79fdb62025-06-03 06:02:49 +0000535 public void SettleBeg(){
536
root0dbc9812025-05-19 04:41:57 +0000537 }
538
539 @Override
Raverf79fdb62025-06-03 06:02:49 +0000540 public int AddPost(Post post){
root0dbc9812025-05-19 04:41:57 +0000541 return 0;
542 }
543
544 @Override
Raverf79fdb62025-06-03 06:02:49 +0000545 public int UpdatePost(Post post){
root0dbc9812025-05-19 04:41:57 +0000546 return 0;
547 }
548
549 @Override
Raverf79fdb62025-06-03 06:02:49 +0000550 public int DeletePost(String postid){
root0dbc9812025-05-19 04:41:57 +0000551 return 0;
552 }
553
554 @Override
Raverf79fdb62025-06-03 06:02:49 +0000555 public int AddComment(String postid, String userid, String comment){
root0dbc9812025-05-19 04:41:57 +0000556 return 0;
557 }
558
559 @Override
Raverf79fdb62025-06-03 06:02:49 +0000560 public int DeleteComment(String postid,String commentid){
root0dbc9812025-05-19 04:41:57 +0000561 return 0;
562 }
563
564 @Override
Raverf79fdb62025-06-03 06:02:49 +0000565 public boolean ExchangeMagicToUpload(String userid,int magic)//将魔力值兑换为上传量,返回状态:0 success,1 不存在,2其他原因
root0dbc9812025-05-19 04:41:57 +0000566 {
567 return true;
568 }
Raverf79fdb62025-06-03 06:02:49 +0000569
root0dbc9812025-05-19 04:41:57 +0000570 @Override
Raverf79fdb62025-06-03 06:02:49 +0000571 public boolean ExchangeMagicToDownload(String userid,int magic)
572 {
root0dbc9812025-05-19 04:41:57 +0000573 return true;
574 }//将魔力值兑换为下载量,返回状态:0 success,1 不存在,2其他原因
575
576 @Override
Raverf79fdb62025-06-03 06:02:49 +0000577 public boolean ExchangeMagicToVip(String userid,int magic){
root0dbc9812025-05-19 04:41:57 +0000578 return true;
579 }
580 //将魔力值兑换为VIP次数,返回状态:0 success,1 不存在,2其他原因
581
582 @Override
Raverf79fdb62025-06-03 06:02:49 +0000583 public boolean UploadTransmitProfile(Profile profile){
root0dbc9812025-05-19 04:41:57 +0000584 return true;
585 }
586
587 @Override
Raverf79fdb62025-06-03 06:02:49 +0000588 public Profile GetTransmitProfile(String profileid){
root0dbc9812025-05-19 04:41:57 +0000589 Profile profile = new Profile();
590 return profile;
591 }
592 //获取迁移信息
Raverf79fdb62025-06-03 06:02:49 +0000593
root0dbc9812025-05-19 04:41:57 +0000594 @Override
Raverf79fdb62025-06-03 06:02:49 +0000595 public boolean ExamTransmitProfile(String profileid,boolean result){
root0dbc9812025-05-19 04:41:57 +0000596 return true;
597 }
598 //审核迁移信息,0成功,1失败
599 @Override
Raverf79fdb62025-06-03 06:02:49 +0000600 public Profile[] GetTransmitProfileList(){
root0dbc9812025-05-19 04:41:57 +0000601 return new Profile[0];
602 }
603 //获取所有迁移信息
604
rhj46f62c42025-06-06 23:24:10 +0800605 @Override
606 public Post[] GetPostList() {
607 JPAQuery<Post> query = new JPAQuery<>(entitymanager);
608 QPost p = QPost.post;
609 List<Post> posts = query.select(p).from(p).fetch();
610 return posts.toArray(new Post[0]);
611 }
612
rhj5b69b7e2025-06-07 01:28:08 +0800613 @Override
614 public Post GetPost(String postid) {
615 JPAQuery<Post> query = new JPAQuery<>(entitymanager);
616 QPost p = QPost.post;
617 Post post = query.select(p).from(p).where(p.postid.eq(postid)).fetchOne();
618 return post;
619 }
620
621 @Override
622 public PostReply[] GetPostReplyList(String postid) {
623 JPAQuery<PostReply> query = new JPAQuery<>(entitymanager);
624 QPostReply p = QPostReply.postReply;
625 List<PostReply> replies = query.select(p).from(p).where(p.postid.eq(postid)).fetch();
626 return replies.toArray(new PostReply[0]);
627 }
root0dbc9812025-05-19 04:41:57 +0000628}
Raverf79fdb62025-06-03 06:02:49 +0000629