blob: 030abdded839d8de707aec455af6eb2ba9da2c42 [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;
root0dbc9812025-05-19 04:41:57 +000029
30public class Database1 implements DataManagerInterface {
Raverf79fdb62025-06-03 06:02:49 +000031 @PersistenceContext
32 private final EntityManager entitymanager;
root678fd3e2025-06-03 14:20:20 +000033
34 public Database1() {
Raverf79fdb62025-06-03 06:02:49 +000035 config cfg = new config();
36 Map<String,Object> props = new HashMap<>();
37 props.put("javax.persistence.jdbc.url",
38 "jdbc:mysql://" + cfg.SqlURL + "/" + cfg.Database);
root678fd3e2025-06-03 14:20:20 +000039 props.put("javax.persistence.jdbc.user", cfg.SqlUsername);
40 props.put("javax.persistence.jdbc.password", cfg.SqlPassword);
Raverf79fdb62025-06-03 06:02:49 +000041 this.entitymanager = Persistence.createEntityManagerFactory("myPersistenceUnit", props).createEntityManager();
root678fd3e2025-06-03 14:20:20 +000042 }
TRM-codingcdfe5482025-06-06 17:31:01 +080043 @Override
44 public String LoginUser(User userinfo){
45 try {
46 // 检查传入的参数是否合法
47 if (userinfo == null || userinfo.password == null) {
48 return null;
49 }
50
TRM-codingcdfe5482025-06-06 17:31:01 +080051 boolean hasEmail = userinfo.email != null && !userinfo.email.isEmpty();
52
53 // 如果两个都为空或两个都不为空,返回null
rhj46f62c42025-06-06 23:24:10 +080054 if (!hasEmail) {
TRM-codingcdfe5482025-06-06 17:31:01 +080055 return null;
56 }
57
58 JPAQuery<User> query = new JPAQuery<>(entitymanager);
59 QUser u = QUser.user;
60 User foundUser = null;
61
rhj46f62c42025-06-06 23:24:10 +080062
63 // 通过邮箱和密码查找
64 foundUser = query.select(u)
65 .from(u)
66 .where(u.email.eq(userinfo.email)
67 .and(u.password.eq(userinfo.password)))
68 .fetchOne();
TRM-codingcdfe5482025-06-06 17:31:01 +080069
70 // 如果找到匹配的用户则返回用户ID,否则返回null
71 return foundUser != null ? foundUser.userid : null;
72
73 } catch (Exception e) {
74 e.printStackTrace();
75 return null;
76 }
77 }
root0dbc9812025-05-19 04:41:57 +000078
79 // 返回状态:0 success,1 邮箱重复,2其他原因
80 @Override
Raverf79fdb62025-06-03 06:02:49 +000081 public int RegisterUser(User userinfo){
82 try{
TRM-codingcdfe5482025-06-06 17:31:01 +080083 // 首先检查该邮箱是否在UserInvite表中被邀请过
84 JPAQuery<String> inviteQuery = new JPAQuery<>(entitymanager);
85 QUserInvite ui = QUserInvite.userInvite;
86 List<String> invitedEmails = inviteQuery.select(ui.inviterEmail).from(ui).fetch();
87
88 // 如果邮箱不在被邀请列表中,拒绝注册
89 if(!invitedEmails.contains(userinfo.email)){
90 return 2; // 未被邀请
91 }
92
93 // 检查邮箱是否已在User表中存在
Raverf79fdb62025-06-03 06:02:49 +000094 JPAQuery<String> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +000095 QUser u = QUser.user;
96 List<String> allEmails = query.select(u.email).from(u).fetch();
97
Raverf79fdb62025-06-03 06:02:49 +000098 if(allEmails.contains(userinfo.email)){
TRM-codingcdfe5482025-06-06 17:31:01 +080099 return 1; // 邮箱重复
root0dbc9812025-05-19 04:41:57 +0000100 }
root0dbc9812025-05-19 04:41:57 +0000101
rhj46f62c42025-06-06 23:24:10 +0800102 entitymanager.getTransaction().begin();
103 entitymanager.persist(userinfo);
104 entitymanager.getTransaction().commit();
105 return 0; // 注册成功
TRM-coding93f7be82025-06-06 22:29:02 +0800106
rhj46f62c42025-06-06 23:24:10 +0800107 }catch(Exception e){
108 e.printStackTrace();
109 if (entitymanager.getTransaction().isActive()) {
110 entitymanager.getTransaction().rollback();
111 }
112 return 4;
113 }
TRM-coding93f7be82025-06-06 22:29:02 +0800114
root0dbc9812025-05-19 04:41:57 +0000115 }
116
117 // 返回状态:0 success,1 不存在,2其他原因
118 @Override
Raverf79fdb62025-06-03 06:02:49 +0000119 public int UpdateInformation(User userinfo){
root0dbc9812025-05-19 04:41:57 +0000120 try {
121 if (userinfo.userid == null) {
122 return 2; // userid为null直接返回错误
123 }
rhjc6a4ee02025-06-06 00:45:18 +0800124
125 entitymanager.getTransaction().begin();
126
Raverf79fdb62025-06-03 06:02:49 +0000127 JPAQuery<User> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000128 QUser u = QUser.user;
129 User updateUser = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
130
Raverf79fdb62025-06-03 06:02:49 +0000131 if(updateUser == null){
rhjc6a4ee02025-06-06 00:45:18 +0800132 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000133 return 1;
134 }
135 // 只更新需要的字段,避免破坏持久化状态和关联关系
rhjc6a4ee02025-06-06 00:45:18 +0800136 if (userinfo.email != null) updateUser.email = userinfo.email;
137 if (userinfo.username != null) updateUser.username = userinfo.username;
138 if (userinfo.password != null) updateUser.password = userinfo.password;
139 if (userinfo.sex != null) updateUser.sex = userinfo.sex;
140 if (userinfo.school != null) updateUser.school = userinfo.school;
141 if (userinfo.pictureurl != null) updateUser.pictureurl = userinfo.pictureurl;
142 if (userinfo.profile != null) updateUser.profile = userinfo.profile;
root0dbc9812025-05-19 04:41:57 +0000143 updateUser.accountstate = userinfo.accountstate;
144 updateUser.invitetimes = userinfo.invitetimes;
145 // 如有其他字段也一并赋值
Raverf79fdb62025-06-03 06:02:49 +0000146 entitymanager.merge(updateUser);
rhjc6a4ee02025-06-06 00:45:18 +0800147 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000148 return 0;
149 } catch (Exception e) {
150 e.printStackTrace();
rhjc6a4ee02025-06-06 00:45:18 +0800151 if (entitymanager.getTransaction().isActive()) {
152 entitymanager.getTransaction().rollback();
153 }
root0dbc9812025-05-19 04:41:57 +0000154 return 2;
155 }
Raverf79fdb62025-06-03 06:02:49 +0000156
root0dbc9812025-05-19 04:41:57 +0000157 }
158
159 // 返回用户的全部基本信息
160 @Override
Raverf79fdb62025-06-03 06:02:49 +0000161 public User GetInformation(String userid){
162 User user = entitymanager.find(User.class, userid);
163 return user;
root0dbc9812025-05-19 04:41:57 +0000164 }
165
166 //返回用户的全部pt站信息
167 @Override
Raverf79fdb62025-06-03 06:02:49 +0000168 public UserPT GetInformationPT(String userid){
169 UserPT userPT = entitymanager.find(UserPT.class, userid);
170 return userPT;
root0dbc9812025-05-19 04:41:57 +0000171 }
172
173 //返回状态:0 success,1 邮箱重复,2其他原因
174 @Override
Raverf79fdb62025-06-03 06:02:49 +0000175 public int UpdateInformationPT(UserPT userinfo){
176 try{
177 JPAQuery<UserPT> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000178 QUserPT u = QUserPT.userPT;
179 UserPT userPT = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
Raverf79fdb62025-06-03 06:02:49 +0000180
181 if(userPT == null){
root0dbc9812025-05-19 04:41:57 +0000182 return 1;
183 }
184 userPT = userinfo;
Raverf79fdb62025-06-03 06:02:49 +0000185 entitymanager.merge(userPT);
root0dbc9812025-05-19 04:41:57 +0000186 return 0;
187
Raverf79fdb62025-06-03 06:02:49 +0000188 }catch(Exception e){
root0dbc9812025-05-19 04:41:57 +0000189 e.printStackTrace();
190 return 2;
191 }
192 }
193
194 //返回状态:0 success,1 id重复,2其他原因
195 @Override
Raverf79fdb62025-06-03 06:02:49 +0000196 public int RegisterUserPT(UserPT userinfo){
root0dbc9812025-05-19 04:41:57 +0000197 try {
rhj46f62c42025-06-06 23:24:10 +0800198 entitymanager.getTransaction().begin();
199
Raverf79fdb62025-06-03 06:02:49 +0000200 JPAQuery<UserPT> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000201 QUserPT u = QUserPT.userPT;
202 UserPT checkUserPT = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
203 if (checkUserPT != null) {
rhj46f62c42025-06-06 23:24:10 +0800204 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000205 return 1;
206 }
rhj46f62c42025-06-06 23:24:10 +0800207
Raverf79fdb62025-06-03 06:02:49 +0000208 entitymanager.persist(userinfo);
rhj46f62c42025-06-06 23:24:10 +0800209 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000210 return 0;
211 } catch (Exception e) {
212 e.printStackTrace();
rhj46f62c42025-06-06 23:24:10 +0800213 if (entitymanager.getTransaction().isActive()) {
214 entitymanager.getTransaction().rollback();
215 }
root0dbc9812025-05-19 04:41:57 +0000216 return 2;
217 }
218 }
219
220 //返回种子的全部信息
221 @Override
Raverf79fdb62025-06-03 06:02:49 +0000222 public Seed GetSeedInformation(String seedid){
223 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
224 QSeed s = QSeed.seed;
225 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedid)).fetchOne();
226 return seed;
root0dbc9812025-05-19 04:41:57 +0000227 }
228
Raveraae06122025-06-05 08:13:35 +0000229 @Override
230 public Seed[] GetSeedListByTag(String tag){
231 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
232 QSeed s = QSeed.seed;
233 List<Seed> seeds = query.select(s).from(s).where(s.seedtag.eq(tag)).fetch();
234 return seeds.toArray(new Seed[0]);
235 }
236
rhjc6a4ee02025-06-06 00:45:18 +0800237 @Override
238 public Seed[] GetSeedListByUser(String userid){
239 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
240 QSeed s = QSeed.seed;
241 List<Seed> seeds = query.select(s).from(s).where(s.seeduserid.eq(userid)).fetch();
242 return seeds.toArray(new Seed[0]);
243 }
244
245 @Override
246 public int DeleteSeed(String seedid){
247 try {
248 entitymanager.getTransaction().begin();
249 Seed seed = entitymanager.find(Seed.class, seedid);
250 if (seed == null) {
251 entitymanager.getTransaction().rollback();
252 return 1; // 种子不存在
253 }
254 entitymanager.remove(seed);
255 entitymanager.getTransaction().commit();
256 return 0; // 成功删除
257 } catch (Exception e) {
258 e.printStackTrace();
259 if (entitymanager.getTransaction().isActive()) {
260 entitymanager.getTransaction().rollback();
261 }
262 return 2; // 其他错误
263 }
264 }
265
root0dbc9812025-05-19 04:41:57 +0000266 //添加一个新的种子,0成功,其他失败信息待定;
267 @Override
Raverf79fdb62025-06-03 06:02:49 +0000268 public int RegisterSeed(Seed seedinfo){
root0dbc9812025-05-19 04:41:57 +0000269 try {
Raveraae06122025-06-05 08:13:35 +0000270 entitymanager.getTransaction().begin();
Raverf79fdb62025-06-03 06:02:49 +0000271 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000272 QSeed s = QSeed.seed;
273 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedinfo.seedid)).fetchOne();
Raveraae06122025-06-05 08:13:35 +0000274 User user = entitymanager.find(User.class, seedinfo.seeduserid);
275 if (user == null) {
276 entitymanager.getTransaction().rollback();
277 return 2; // 用户不存在
278 }
rhjc6a4ee02025-06-06 00:45:18 +0800279 seedinfo.user = user; // 设置种子的用户关联
root0dbc9812025-05-19 04:41:57 +0000280 if (seed != null) {
Raveraae06122025-06-05 08:13:35 +0000281 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000282 return 1;
283 }
Raverf79fdb62025-06-03 06:02:49 +0000284 entitymanager.persist(seedinfo);
Raveraae06122025-06-05 08:13:35 +0000285 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000286 return 0;
287 } catch (Exception e) {
288 e.printStackTrace();
Raveraae06122025-06-05 08:13:35 +0000289 if (entitymanager.getTransaction().isActive()) {
290 entitymanager.getTransaction().rollback();
291 }
root0dbc9812025-05-19 04:41:57 +0000292 return 2;
293 }
294 }
295
296 //接收新的种子然后更新其全部属性
297 @Override
Raverf79fdb62025-06-03 06:02:49 +0000298 public int UpdateSeed(Seed seedinfo){
root0dbc9812025-05-19 04:41:57 +0000299 try {
Raverf79fdb62025-06-03 06:02:49 +0000300 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000301 QSeed s = QSeed.seed;
302 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedinfo.seedid)).fetchOne();
303 if (seed == null) {
304 return 1;
305 }
306 seed = seedinfo;
Raverf79fdb62025-06-03 06:02:49 +0000307 entitymanager.merge(seed);
root0dbc9812025-05-19 04:41:57 +0000308 return 0;
309 } catch (Exception e) {
310 e.printStackTrace();
311 return 2;
312 }
313 }
314
315 //传入搜索的关键词或句子,返回搜索到的种子信息(按照公共字符数量排序)
316 @Override
Raverf79fdb62025-06-03 06:02:49 +0000317 public Seed[] SearchSeed(String userQ){
318 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
319 QSeed s = QSeed.seed;
320 List<Seed> seeds = query.select(s).from(s).fetch();
root0dbc9812025-05-19 04:41:57 +0000321
Raverf79fdb62025-06-03 06:02:49 +0000322 if (seeds == null || userQ == null || userQ.trim().isEmpty()) {
root0dbc9812025-05-19 04:41:57 +0000323 return seeds.toArray(new Seed[0]);
324 }
Raverf79fdb62025-06-03 06:02:49 +0000325
326 String processedQuery = userQ.toLowerCase().trim();
327 Map<Seed, Integer> seedCountMap = new HashMap<>();
328 for(Seed seed : seeds){
329 String title = seed.title.toLowerCase().trim();
330 int count = countCommonCharacter(processedQuery, title);
331 seedCountMap.put(seed, count);
332 }
333 seeds.sort((s1, s2) -> {
334 int count1 = seedCountMap.getOrDefault(s1, 0);
335 int count2 = seedCountMap.getOrDefault(s2, 0);
336 return Integer.compare(count2, count1);
337 });
338
339 return seeds.toArray(new Seed[0]);
root0dbc9812025-05-19 04:41:57 +0000340 }
341
342 //计算字符串公共字符数量
Raverf79fdb62025-06-03 06:02:49 +0000343 private int countCommonCharacter(String str1, String str2){
root0dbc9812025-05-19 04:41:57 +0000344 Map<Character, Integer> map1 = new HashMap<>();
345 Map<Character, Integer> map2 = new HashMap<>();
346
Raverf79fdb62025-06-03 06:02:49 +0000347 for(char c : str1.toCharArray()){
root0dbc9812025-05-19 04:41:57 +0000348 if (!Character.isWhitespace(c)) {
349 map1.put(c, map1.getOrDefault(c, 0) + 1);
350 }
351 }
352
Raverf79fdb62025-06-03 06:02:49 +0000353 for(char c : str2.toCharArray()){
root0dbc9812025-05-19 04:41:57 +0000354 if (!Character.isWhitespace(c)) {
355 map2.put(c, map2.getOrDefault(c, 0) + 1);
356 }
357 }
358
359 int res = 0;
Raverf79fdb62025-06-03 06:02:49 +0000360 for(char c : map1.keySet()){
root0dbc9812025-05-19 04:41:57 +0000361 if (map2.containsKey(c)) {
362 res += Math.min(map1.get(c), map2.get(c));
363 }
Raverf79fdb62025-06-03 06:02:49 +0000364
root0dbc9812025-05-19 04:41:57 +0000365 }
366 return res;
367 }
368
369 //返回状态:0 success,1 重复,2其他原因
370 @Override
Raverf79fdb62025-06-03 06:02:49 +0000371 public int AddNotice(Notice notice){
root0dbc9812025-05-19 04:41:57 +0000372 try {
Raverf79fdb62025-06-03 06:02:49 +0000373 JPAQuery<Notice> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000374 QNotice n = QNotice.notice;
375 Notice checkNotice = query.select(n).from(n).where(n.noticeid.eq(notice.noticeid)).fetchOne();
376 if (checkNotice != null) {
377 return 1;
378 }
Raverf79fdb62025-06-03 06:02:49 +0000379
380 entitymanager.persist(notice);
root0dbc9812025-05-19 04:41:57 +0000381 return 0;
382 } catch (Exception e) {
383 e.printStackTrace();
384 return 2;
385 }
Raverf79fdb62025-06-03 06:02:49 +0000386
root0dbc9812025-05-19 04:41:57 +0000387 }
388
389 //返回状态:0 success,1 不存在,2其他原因
390 @Override
Raverf79fdb62025-06-03 06:02:49 +0000391 public boolean UpdateNotice(Notice notice){
root0dbc9812025-05-19 04:41:57 +0000392 try {
Raverf79fdb62025-06-03 06:02:49 +0000393 Notice oldNotice = entitymanager.find(Notice.class, notice.noticeid);
root0dbc9812025-05-19 04:41:57 +0000394 if (oldNotice == null) {
395 return false;
396 }
397 oldNotice = notice;
Raverf79fdb62025-06-03 06:02:49 +0000398 entitymanager.merge(oldNotice);
root0dbc9812025-05-19 04:41:57 +0000399 return true;
400 } catch (Exception e) {
401 e.printStackTrace();
402 return false;
403 }
404 }
405
406 //删除公告,返回状态:0 success,1 不存在,2其他原因
407 @Override
Raverf79fdb62025-06-03 06:02:49 +0000408 public boolean DeleteNotice(String noticeid){
root0dbc9812025-05-19 04:41:57 +0000409 try {
Raverf79fdb62025-06-03 06:02:49 +0000410 Notice notice = entitymanager.find(Notice.class, noticeid);
root0dbc9812025-05-19 04:41:57 +0000411 if (notice == null) {
412 return false;
413 }
Raverf79fdb62025-06-03 06:02:49 +0000414 entitymanager.remove(notice);
root0dbc9812025-05-19 04:41:57 +0000415 return true;
416 } catch (Exception e) {
417 e.printStackTrace();
418 return false;
419 }
Raverf79fdb62025-06-03 06:02:49 +0000420
root0dbc9812025-05-19 04:41:57 +0000421 }
422
423 //获取用户的剩余邀请次数
Raverf79fdb62025-06-03 06:02:49 +0000424 public int GetUserAvailableInviteTimes(String userid){
root0dbc9812025-05-19 04:41:57 +0000425 try {
Raverf79fdb62025-06-03 06:02:49 +0000426 JPAQuery<Integer> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000427 QUser u = QUser.user;
428 int invite_left = query.select(u.invitetimes).from(u).where(u.userid.eq(userid)).fetchOne();
Raverf79fdb62025-06-03 06:02:49 +0000429
root0dbc9812025-05-19 04:41:57 +0000430 return invite_left;
431 } catch (Exception e) {
432 e.printStackTrace();
433 return -1;
434 }
Raverf79fdb62025-06-03 06:02:49 +0000435
root0dbc9812025-05-19 04:41:57 +0000436 }
437
438 //邀请用户,返回状态:0 success,1 剩余次数不足,2,3其他原因
439 @Override
Raverf79fdb62025-06-03 06:02:49 +0000440 public int InviteUser(String inviterid,String inviteemail){
root0dbc9812025-05-19 04:41:57 +0000441 try {
Raverf79fdb62025-06-03 06:02:49 +0000442 User user = entitymanager.find(User.class, inviterid);
root0dbc9812025-05-19 04:41:57 +0000443 if (user == null || !user.email.equals(inviteemail)) {
444 return 3;
445 }
446 if (user.invitetimes <= 0) {
447 return 1;
448 }
449 user.invitetimes -= 1;
Raverf79fdb62025-06-03 06:02:49 +0000450 entitymanager.merge(user);
root0dbc9812025-05-19 04:41:57 +0000451 return 0;
452 } catch (Exception e) {
453 e.printStackTrace();
454 return 2;
455 }
Raverf79fdb62025-06-03 06:02:49 +0000456
root0dbc9812025-05-19 04:41:57 +0000457 }
458
459 //添加一个收藏,返回状态:0 success,1 不存在,2其他原因
460 @Override
Raverf79fdb62025-06-03 06:02:49 +0000461 public boolean AddCollect(String userid,String seedid){
462 JPAQuery<User> query2 = new JPAQuery<>(entitymanager);
463 QUser u2 = QUser.user;
464 User user = query2.select(u2).from(u2).where(u2.userid.eq(userid)).fetchOne();
465 if (user == null) {
root0dbc9812025-05-19 04:41:57 +0000466 return false;
467 }
Raverf79fdb62025-06-03 06:02:49 +0000468 JPAQuery<Seed> query3 = new JPAQuery<>(entitymanager);
469 QSeed p = QSeed.seed;
470 Seed seed = query3.select(p).from(p).where(p.seedid.eq(seedid)).fetchOne();
471 if (seed == null) {
472 return false;
473 }
474 JPAQuery<String> query = new JPAQuery<>(entitymanager);
475 QUserStar u = QUserStar.userStar;
476 List<String> allSeedId = query.select(u.seedid).from(u).where(u.userid.eq(userid)).fetch();
477
478 if (allSeedId.contains(seedid)) {
479 return false;
480 }
481 UserStar userStar = new UserStar();
482 userStar.userid = userid;
483 userStar.seedid = seedid;
484 entitymanager.persist(userStar);
485 return true;
root0dbc9812025-05-19 04:41:57 +0000486 }
487
488 //删除一个收藏,返回状态:0 success,1 不存在,2其他原因
489 @Override
Raverf79fdb62025-06-03 06:02:49 +0000490 public boolean DeleteCollect(String userid,String seedid){
root0dbc9812025-05-19 04:41:57 +0000491 try {
Raverf79fdb62025-06-03 06:02:49 +0000492 JPAQuery<UserStar> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000493 QUserStar u = QUserStar.userStar;
494 UserStar userStar = query.select(u).from(u).where(u.userid.eq(userid).and(u.seedid.eq(seedid))).fetchOne();
495 if (userStar == null) {
496 return true; // 收藏不存在
497 }
Raverf79fdb62025-06-03 06:02:49 +0000498 entitymanager.remove(userStar);
root0dbc9812025-05-19 04:41:57 +0000499 return true;
500 } catch (Exception e) {
501 e.printStackTrace();
502 return false;
503 }
Raverf79fdb62025-06-03 06:02:49 +0000504
root0dbc9812025-05-19 04:41:57 +0000505 }
506
507 @Override
Raverf79fdb62025-06-03 06:02:49 +0000508 public int AddBegSeed(BegInfo info){
root0dbc9812025-05-19 04:41:57 +0000509 return 0;
510 }
511
512 @Override
Raverf79fdb62025-06-03 06:02:49 +0000513 public int UpdateBegSeed(BegInfo info){
root0dbc9812025-05-19 04:41:57 +0000514 return 0;
515 }
516
517 @Override
Raverf79fdb62025-06-03 06:02:49 +0000518 public int DeleteBegSeed(String begid){
root0dbc9812025-05-19 04:41:57 +0000519 return 0;
520 }
521
522 @Override
Raverf79fdb62025-06-03 06:02:49 +0000523 public int VoteSeed(String begId, String seedId, String userId){
root0dbc9812025-05-19 04:41:57 +0000524 return 0;
525 }
526
527 @Override
Raverf79fdb62025-06-03 06:02:49 +0000528 public int SubmitSeed(String begid,Seed seed){
root0dbc9812025-05-19 04:41:57 +0000529 return 0;
530 }
531
532 @Override
Raverf79fdb62025-06-03 06:02:49 +0000533 public void SettleBeg(){
534
root0dbc9812025-05-19 04:41:57 +0000535 }
536
537 @Override
Raverf79fdb62025-06-03 06:02:49 +0000538 public int AddPost(Post post){
root0dbc9812025-05-19 04:41:57 +0000539 return 0;
540 }
541
542 @Override
Raverf79fdb62025-06-03 06:02:49 +0000543 public int UpdatePost(Post post){
root0dbc9812025-05-19 04:41:57 +0000544 return 0;
545 }
546
547 @Override
Raverf79fdb62025-06-03 06:02:49 +0000548 public int DeletePost(String postid){
root0dbc9812025-05-19 04:41:57 +0000549 return 0;
550 }
551
552 @Override
Raverf79fdb62025-06-03 06:02:49 +0000553 public int AddComment(String postid, String userid, String comment){
root0dbc9812025-05-19 04:41:57 +0000554 return 0;
555 }
556
557 @Override
Raverf79fdb62025-06-03 06:02:49 +0000558 public int DeleteComment(String postid,String commentid){
root0dbc9812025-05-19 04:41:57 +0000559 return 0;
560 }
561
562 @Override
Raverf79fdb62025-06-03 06:02:49 +0000563 public boolean ExchangeMagicToUpload(String userid,int magic)//将魔力值兑换为上传量,返回状态:0 success,1 不存在,2其他原因
root0dbc9812025-05-19 04:41:57 +0000564 {
565 return true;
566 }
Raverf79fdb62025-06-03 06:02:49 +0000567
root0dbc9812025-05-19 04:41:57 +0000568 @Override
Raverf79fdb62025-06-03 06:02:49 +0000569 public boolean ExchangeMagicToDownload(String userid,int magic)
570 {
root0dbc9812025-05-19 04:41:57 +0000571 return true;
572 }//将魔力值兑换为下载量,返回状态:0 success,1 不存在,2其他原因
573
574 @Override
Raverf79fdb62025-06-03 06:02:49 +0000575 public boolean ExchangeMagicToVip(String userid,int magic){
root0dbc9812025-05-19 04:41:57 +0000576 return true;
577 }
578 //将魔力值兑换为VIP次数,返回状态:0 success,1 不存在,2其他原因
579
580 @Override
Raverf79fdb62025-06-03 06:02:49 +0000581 public boolean UploadTransmitProfile(Profile profile){
root0dbc9812025-05-19 04:41:57 +0000582 return true;
583 }
584
585 @Override
Raverf79fdb62025-06-03 06:02:49 +0000586 public Profile GetTransmitProfile(String profileid){
root0dbc9812025-05-19 04:41:57 +0000587 Profile profile = new Profile();
588 return profile;
589 }
590 //获取迁移信息
Raverf79fdb62025-06-03 06:02:49 +0000591
root0dbc9812025-05-19 04:41:57 +0000592 @Override
Raverf79fdb62025-06-03 06:02:49 +0000593 public boolean ExamTransmitProfile(String profileid,boolean result){
root0dbc9812025-05-19 04:41:57 +0000594 return true;
595 }
596 //审核迁移信息,0成功,1失败
597 @Override
Raverf79fdb62025-06-03 06:02:49 +0000598 public Profile[] GetTransmitProfileList(){
root0dbc9812025-05-19 04:41:57 +0000599 return new Profile[0];
600 }
601 //获取所有迁移信息
602
rhj46f62c42025-06-06 23:24:10 +0800603 @Override
604 public Post[] GetPostList() {
605 JPAQuery<Post> query = new JPAQuery<>(entitymanager);
606 QPost p = QPost.post;
607 List<Post> posts = query.select(p).from(p).fetch();
608 return posts.toArray(new Post[0]);
609 }
610
root0dbc9812025-05-19 04:41:57 +0000611}
Raverf79fdb62025-06-03 06:02:49 +0000612