blob: e67dcb01450028cd012eaa6ece439836f1715c14 [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;
root0dbc9812025-05-19 04:41:57 +000023import entity.Seed;
24import entity.User;
25import entity.UserPT;
26import entity.UserStar;
Raverf79fdb62025-06-03 06:02:49 +000027import entity.config;
root0dbc9812025-05-19 04:41:57 +000028
29public class Database1 implements DataManagerInterface {
Raverf79fdb62025-06-03 06:02:49 +000030 @PersistenceContext
31 private final EntityManager entitymanager;
root678fd3e2025-06-03 14:20:20 +000032
33 public Database1() {
Raverf79fdb62025-06-03 06:02:49 +000034 config cfg = new config();
35 Map<String,Object> props = new HashMap<>();
36 props.put("javax.persistence.jdbc.url",
37 "jdbc:mysql://" + cfg.SqlURL + "/" + cfg.Database);
root678fd3e2025-06-03 14:20:20 +000038 props.put("javax.persistence.jdbc.user", cfg.SqlUsername);
39 props.put("javax.persistence.jdbc.password", cfg.SqlPassword);
Raverf79fdb62025-06-03 06:02:49 +000040 this.entitymanager = Persistence.createEntityManagerFactory("myPersistenceUnit", props).createEntityManager();
root678fd3e2025-06-03 14:20:20 +000041 }
TRM-codingcdfe5482025-06-06 17:31:01 +080042 @Override
43 public String LoginUser(User userinfo){
44 try {
45 // 检查传入的参数是否合法
46 if (userinfo == null || userinfo.password == null) {
47 return null;
48 }
49
50 // 用户名和邮箱应该有且仅有一个不为空
51 boolean hasUsername = userinfo.username != null && !userinfo.username.isEmpty();
52 boolean hasEmail = userinfo.email != null && !userinfo.email.isEmpty();
53
54 // 如果两个都为空或两个都不为空,返回null
55 if ((!hasUsername && !hasEmail) || (hasUsername && hasEmail)) {
56 return null;
57 }
58
59 JPAQuery<User> query = new JPAQuery<>(entitymanager);
60 QUser u = QUser.user;
61 User foundUser = null;
62
63 if (hasUsername) {
64 // 通过用户名和密码查找
65 foundUser = query.select(u)
66 .from(u)
67 .where(u.username.eq(userinfo.username)
68 .and(u.password.eq(userinfo.password)))
69 .fetchOne();
70 } else {
71 // 通过邮箱和密码查找
72 foundUser = query.select(u)
73 .from(u)
74 .where(u.email.eq(userinfo.email)
75 .and(u.password.eq(userinfo.password)))
76 .fetchOne();
77 }
78
79 // 如果找到匹配的用户则返回用户ID,否则返回null
80 return foundUser != null ? foundUser.userid : null;
81
82 } catch (Exception e) {
83 e.printStackTrace();
84 return null;
85 }
86 }
root0dbc9812025-05-19 04:41:57 +000087
88 // 返回状态:0 success,1 邮箱重复,2其他原因
89 @Override
Raverf79fdb62025-06-03 06:02:49 +000090 public int RegisterUser(User userinfo){
91 try{
TRM-codingcdfe5482025-06-06 17:31:01 +080092 // 首先检查该邮箱是否在UserInvite表中被邀请过
93 JPAQuery<String> inviteQuery = new JPAQuery<>(entitymanager);
94 QUserInvite ui = QUserInvite.userInvite;
95 List<String> invitedEmails = inviteQuery.select(ui.inviterEmail).from(ui).fetch();
96
97 // 如果邮箱不在被邀请列表中,拒绝注册
98 if(!invitedEmails.contains(userinfo.email)){
99 return 2; // 未被邀请
100 }
101
102 // 检查邮箱是否已在User表中存在
Raverf79fdb62025-06-03 06:02:49 +0000103 JPAQuery<String> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000104 QUser u = QUser.user;
105 List<String> allEmails = query.select(u.email).from(u).fetch();
106
Raverf79fdb62025-06-03 06:02:49 +0000107 if(allEmails.contains(userinfo.email)){
TRM-codingcdfe5482025-06-06 17:31:01 +0800108 return 1; // 邮箱重复
root0dbc9812025-05-19 04:41:57 +0000109 }
root0dbc9812025-05-19 04:41:57 +0000110
TRM-coding93f7be82025-06-06 22:29:02 +0800111 entitymanager.persist(userinfo);
112 return 0; // 注册成功
113
114 }catch(Exception e){
115 e.printStackTrace();
116 return 3;
117 }
118
root0dbc9812025-05-19 04:41:57 +0000119 }
120
121 // 返回状态:0 success,1 不存在,2其他原因
122 @Override
Raverf79fdb62025-06-03 06:02:49 +0000123 public int UpdateInformation(User userinfo){
root0dbc9812025-05-19 04:41:57 +0000124 try {
125 if (userinfo.userid == null) {
126 return 2; // userid为null直接返回错误
127 }
rhjc6a4ee02025-06-06 00:45:18 +0800128
129 entitymanager.getTransaction().begin();
130
Raverf79fdb62025-06-03 06:02:49 +0000131 JPAQuery<User> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000132 QUser u = QUser.user;
133 User updateUser = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
134
Raverf79fdb62025-06-03 06:02:49 +0000135 if(updateUser == null){
rhjc6a4ee02025-06-06 00:45:18 +0800136 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000137 return 1;
138 }
139 // 只更新需要的字段,避免破坏持久化状态和关联关系
rhjc6a4ee02025-06-06 00:45:18 +0800140 if (userinfo.email != null) updateUser.email = userinfo.email;
141 if (userinfo.username != null) updateUser.username = userinfo.username;
142 if (userinfo.password != null) updateUser.password = userinfo.password;
143 if (userinfo.sex != null) updateUser.sex = userinfo.sex;
144 if (userinfo.school != null) updateUser.school = userinfo.school;
145 if (userinfo.pictureurl != null) updateUser.pictureurl = userinfo.pictureurl;
146 if (userinfo.profile != null) updateUser.profile = userinfo.profile;
root0dbc9812025-05-19 04:41:57 +0000147 updateUser.accountstate = userinfo.accountstate;
148 updateUser.invitetimes = userinfo.invitetimes;
149 // 如有其他字段也一并赋值
Raverf79fdb62025-06-03 06:02:49 +0000150 entitymanager.merge(updateUser);
rhjc6a4ee02025-06-06 00:45:18 +0800151 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000152 return 0;
153 } catch (Exception e) {
154 e.printStackTrace();
rhjc6a4ee02025-06-06 00:45:18 +0800155 if (entitymanager.getTransaction().isActive()) {
156 entitymanager.getTransaction().rollback();
157 }
root0dbc9812025-05-19 04:41:57 +0000158 return 2;
159 }
Raverf79fdb62025-06-03 06:02:49 +0000160
root0dbc9812025-05-19 04:41:57 +0000161 }
162
163 // 返回用户的全部基本信息
164 @Override
Raverf79fdb62025-06-03 06:02:49 +0000165 public User GetInformation(String userid){
166 User user = entitymanager.find(User.class, userid);
167 return user;
root0dbc9812025-05-19 04:41:57 +0000168 }
169
170 //返回用户的全部pt站信息
171 @Override
Raverf79fdb62025-06-03 06:02:49 +0000172 public UserPT GetInformationPT(String userid){
173 UserPT userPT = entitymanager.find(UserPT.class, userid);
174 return userPT;
root0dbc9812025-05-19 04:41:57 +0000175 }
176
177 //返回状态:0 success,1 邮箱重复,2其他原因
178 @Override
Raverf79fdb62025-06-03 06:02:49 +0000179 public int UpdateInformationPT(UserPT userinfo){
180 try{
181 JPAQuery<UserPT> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000182 QUserPT u = QUserPT.userPT;
183 UserPT userPT = query.select(u).from(u).where(u.userid.eq(userinfo.userid)).fetchOne();
Raverf79fdb62025-06-03 06:02:49 +0000184
185 if(userPT == null){
root0dbc9812025-05-19 04:41:57 +0000186 return 1;
187 }
188 userPT = userinfo;
Raverf79fdb62025-06-03 06:02:49 +0000189 entitymanager.merge(userPT);
root0dbc9812025-05-19 04:41:57 +0000190 return 0;
191
Raverf79fdb62025-06-03 06:02:49 +0000192 }catch(Exception e){
root0dbc9812025-05-19 04:41:57 +0000193 e.printStackTrace();
194 return 2;
195 }
196 }
197
198 //返回状态:0 success,1 id重复,2其他原因
199 @Override
Raverf79fdb62025-06-03 06:02:49 +0000200 public int RegisterUserPT(UserPT userinfo){
root0dbc9812025-05-19 04:41:57 +0000201 try {
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) {
206 return 1;
207 }
Raverf79fdb62025-06-03 06:02:49 +0000208 entitymanager.persist(userinfo);
root0dbc9812025-05-19 04:41:57 +0000209 return 0;
210 } catch (Exception e) {
211 e.printStackTrace();
212 return 2;
213 }
214 }
215
216 //返回种子的全部信息
217 @Override
Raverf79fdb62025-06-03 06:02:49 +0000218 public Seed GetSeedInformation(String seedid){
219 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
220 QSeed s = QSeed.seed;
221 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedid)).fetchOne();
222 return seed;
root0dbc9812025-05-19 04:41:57 +0000223 }
224
Raveraae06122025-06-05 08:13:35 +0000225 @Override
226 public Seed[] GetSeedListByTag(String tag){
227 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
228 QSeed s = QSeed.seed;
229 List<Seed> seeds = query.select(s).from(s).where(s.seedtag.eq(tag)).fetch();
230 return seeds.toArray(new Seed[0]);
231 }
232
rhjc6a4ee02025-06-06 00:45:18 +0800233 @Override
234 public Seed[] GetSeedListByUser(String userid){
235 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
236 QSeed s = QSeed.seed;
237 List<Seed> seeds = query.select(s).from(s).where(s.seeduserid.eq(userid)).fetch();
238 return seeds.toArray(new Seed[0]);
239 }
240
241 @Override
242 public int DeleteSeed(String seedid){
243 try {
244 entitymanager.getTransaction().begin();
245 Seed seed = entitymanager.find(Seed.class, seedid);
246 if (seed == null) {
247 entitymanager.getTransaction().rollback();
248 return 1; // 种子不存在
249 }
250 entitymanager.remove(seed);
251 entitymanager.getTransaction().commit();
252 return 0; // 成功删除
253 } catch (Exception e) {
254 e.printStackTrace();
255 if (entitymanager.getTransaction().isActive()) {
256 entitymanager.getTransaction().rollback();
257 }
258 return 2; // 其他错误
259 }
260 }
261
root0dbc9812025-05-19 04:41:57 +0000262 //添加一个新的种子,0成功,其他失败信息待定;
263 @Override
Raverf79fdb62025-06-03 06:02:49 +0000264 public int RegisterSeed(Seed seedinfo){
root0dbc9812025-05-19 04:41:57 +0000265 try {
Raveraae06122025-06-05 08:13:35 +0000266 entitymanager.getTransaction().begin();
Raverf79fdb62025-06-03 06:02:49 +0000267 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000268 QSeed s = QSeed.seed;
269 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedinfo.seedid)).fetchOne();
Raveraae06122025-06-05 08:13:35 +0000270 User user = entitymanager.find(User.class, seedinfo.seeduserid);
271 if (user == null) {
272 entitymanager.getTransaction().rollback();
273 return 2; // 用户不存在
274 }
rhjc6a4ee02025-06-06 00:45:18 +0800275 seedinfo.user = user; // 设置种子的用户关联
root0dbc9812025-05-19 04:41:57 +0000276 if (seed != null) {
Raveraae06122025-06-05 08:13:35 +0000277 entitymanager.getTransaction().rollback();
root0dbc9812025-05-19 04:41:57 +0000278 return 1;
279 }
Raverf79fdb62025-06-03 06:02:49 +0000280 entitymanager.persist(seedinfo);
Raveraae06122025-06-05 08:13:35 +0000281 entitymanager.getTransaction().commit();
root0dbc9812025-05-19 04:41:57 +0000282 return 0;
283 } catch (Exception e) {
284 e.printStackTrace();
Raveraae06122025-06-05 08:13:35 +0000285 if (entitymanager.getTransaction().isActive()) {
286 entitymanager.getTransaction().rollback();
287 }
root0dbc9812025-05-19 04:41:57 +0000288 return 2;
289 }
290 }
291
292 //接收新的种子然后更新其全部属性
293 @Override
Raverf79fdb62025-06-03 06:02:49 +0000294 public int UpdateSeed(Seed seedinfo){
root0dbc9812025-05-19 04:41:57 +0000295 try {
Raverf79fdb62025-06-03 06:02:49 +0000296 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000297 QSeed s = QSeed.seed;
298 Seed seed = query.select(s).from(s).where(s.seedid.eq(seedinfo.seedid)).fetchOne();
299 if (seed == null) {
300 return 1;
301 }
302 seed = seedinfo;
Raverf79fdb62025-06-03 06:02:49 +0000303 entitymanager.merge(seed);
root0dbc9812025-05-19 04:41:57 +0000304 return 0;
305 } catch (Exception e) {
306 e.printStackTrace();
307 return 2;
308 }
309 }
310
311 //传入搜索的关键词或句子,返回搜索到的种子信息(按照公共字符数量排序)
312 @Override
Raverf79fdb62025-06-03 06:02:49 +0000313 public Seed[] SearchSeed(String userQ){
314 JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
315 QSeed s = QSeed.seed;
316 List<Seed> seeds = query.select(s).from(s).fetch();
root0dbc9812025-05-19 04:41:57 +0000317
Raverf79fdb62025-06-03 06:02:49 +0000318 if (seeds == null || userQ == null || userQ.trim().isEmpty()) {
root0dbc9812025-05-19 04:41:57 +0000319 return seeds.toArray(new Seed[0]);
320 }
Raverf79fdb62025-06-03 06:02:49 +0000321
322 String processedQuery = userQ.toLowerCase().trim();
323 Map<Seed, Integer> seedCountMap = new HashMap<>();
324 for(Seed seed : seeds){
325 String title = seed.title.toLowerCase().trim();
326 int count = countCommonCharacter(processedQuery, title);
327 seedCountMap.put(seed, count);
328 }
329 seeds.sort((s1, s2) -> {
330 int count1 = seedCountMap.getOrDefault(s1, 0);
331 int count2 = seedCountMap.getOrDefault(s2, 0);
332 return Integer.compare(count2, count1);
333 });
334
335 return seeds.toArray(new Seed[0]);
root0dbc9812025-05-19 04:41:57 +0000336 }
337
338 //计算字符串公共字符数量
Raverf79fdb62025-06-03 06:02:49 +0000339 private int countCommonCharacter(String str1, String str2){
root0dbc9812025-05-19 04:41:57 +0000340 Map<Character, Integer> map1 = new HashMap<>();
341 Map<Character, Integer> map2 = new HashMap<>();
342
Raverf79fdb62025-06-03 06:02:49 +0000343 for(char c : str1.toCharArray()){
root0dbc9812025-05-19 04:41:57 +0000344 if (!Character.isWhitespace(c)) {
345 map1.put(c, map1.getOrDefault(c, 0) + 1);
346 }
347 }
348
Raverf79fdb62025-06-03 06:02:49 +0000349 for(char c : str2.toCharArray()){
root0dbc9812025-05-19 04:41:57 +0000350 if (!Character.isWhitespace(c)) {
351 map2.put(c, map2.getOrDefault(c, 0) + 1);
352 }
353 }
354
355 int res = 0;
Raverf79fdb62025-06-03 06:02:49 +0000356 for(char c : map1.keySet()){
root0dbc9812025-05-19 04:41:57 +0000357 if (map2.containsKey(c)) {
358 res += Math.min(map1.get(c), map2.get(c));
359 }
Raverf79fdb62025-06-03 06:02:49 +0000360
root0dbc9812025-05-19 04:41:57 +0000361 }
362 return res;
363 }
364
365 //返回状态:0 success,1 重复,2其他原因
366 @Override
Raverf79fdb62025-06-03 06:02:49 +0000367 public int AddNotice(Notice notice){
root0dbc9812025-05-19 04:41:57 +0000368 try {
Raverf79fdb62025-06-03 06:02:49 +0000369 JPAQuery<Notice> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000370 QNotice n = QNotice.notice;
371 Notice checkNotice = query.select(n).from(n).where(n.noticeid.eq(notice.noticeid)).fetchOne();
372 if (checkNotice != null) {
373 return 1;
374 }
Raverf79fdb62025-06-03 06:02:49 +0000375
376 entitymanager.persist(notice);
root0dbc9812025-05-19 04:41:57 +0000377 return 0;
378 } catch (Exception e) {
379 e.printStackTrace();
380 return 2;
381 }
Raverf79fdb62025-06-03 06:02:49 +0000382
root0dbc9812025-05-19 04:41:57 +0000383 }
384
385 //返回状态:0 success,1 不存在,2其他原因
386 @Override
Raverf79fdb62025-06-03 06:02:49 +0000387 public boolean UpdateNotice(Notice notice){
root0dbc9812025-05-19 04:41:57 +0000388 try {
Raverf79fdb62025-06-03 06:02:49 +0000389 Notice oldNotice = entitymanager.find(Notice.class, notice.noticeid);
root0dbc9812025-05-19 04:41:57 +0000390 if (oldNotice == null) {
391 return false;
392 }
393 oldNotice = notice;
Raverf79fdb62025-06-03 06:02:49 +0000394 entitymanager.merge(oldNotice);
root0dbc9812025-05-19 04:41:57 +0000395 return true;
396 } catch (Exception e) {
397 e.printStackTrace();
398 return false;
399 }
400 }
401
402 //删除公告,返回状态:0 success,1 不存在,2其他原因
403 @Override
Raverf79fdb62025-06-03 06:02:49 +0000404 public boolean DeleteNotice(String noticeid){
root0dbc9812025-05-19 04:41:57 +0000405 try {
Raverf79fdb62025-06-03 06:02:49 +0000406 Notice notice = entitymanager.find(Notice.class, noticeid);
root0dbc9812025-05-19 04:41:57 +0000407 if (notice == null) {
408 return false;
409 }
Raverf79fdb62025-06-03 06:02:49 +0000410 entitymanager.remove(notice);
root0dbc9812025-05-19 04:41:57 +0000411 return true;
412 } catch (Exception e) {
413 e.printStackTrace();
414 return false;
415 }
Raverf79fdb62025-06-03 06:02:49 +0000416
root0dbc9812025-05-19 04:41:57 +0000417 }
418
419 //获取用户的剩余邀请次数
Raverf79fdb62025-06-03 06:02:49 +0000420 public int GetUserAvailableInviteTimes(String userid){
root0dbc9812025-05-19 04:41:57 +0000421 try {
Raverf79fdb62025-06-03 06:02:49 +0000422 JPAQuery<Integer> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000423 QUser u = QUser.user;
424 int invite_left = query.select(u.invitetimes).from(u).where(u.userid.eq(userid)).fetchOne();
Raverf79fdb62025-06-03 06:02:49 +0000425
root0dbc9812025-05-19 04:41:57 +0000426 return invite_left;
427 } catch (Exception e) {
428 e.printStackTrace();
429 return -1;
430 }
Raverf79fdb62025-06-03 06:02:49 +0000431
root0dbc9812025-05-19 04:41:57 +0000432 }
433
434 //邀请用户,返回状态:0 success,1 剩余次数不足,2,3其他原因
435 @Override
Raverf79fdb62025-06-03 06:02:49 +0000436 public int InviteUser(String inviterid,String inviteemail){
root0dbc9812025-05-19 04:41:57 +0000437 try {
Raverf79fdb62025-06-03 06:02:49 +0000438 User user = entitymanager.find(User.class, inviterid);
root0dbc9812025-05-19 04:41:57 +0000439 if (user == null || !user.email.equals(inviteemail)) {
440 return 3;
441 }
442 if (user.invitetimes <= 0) {
443 return 1;
444 }
445 user.invitetimes -= 1;
Raverf79fdb62025-06-03 06:02:49 +0000446 entitymanager.merge(user);
root0dbc9812025-05-19 04:41:57 +0000447 return 0;
448 } catch (Exception e) {
449 e.printStackTrace();
450 return 2;
451 }
Raverf79fdb62025-06-03 06:02:49 +0000452
root0dbc9812025-05-19 04:41:57 +0000453 }
454
455 //添加一个收藏,返回状态:0 success,1 不存在,2其他原因
456 @Override
Raverf79fdb62025-06-03 06:02:49 +0000457 public boolean AddCollect(String userid,String seedid){
458 JPAQuery<User> query2 = new JPAQuery<>(entitymanager);
459 QUser u2 = QUser.user;
460 User user = query2.select(u2).from(u2).where(u2.userid.eq(userid)).fetchOne();
461 if (user == null) {
root0dbc9812025-05-19 04:41:57 +0000462 return false;
463 }
Raverf79fdb62025-06-03 06:02:49 +0000464 JPAQuery<Seed> query3 = new JPAQuery<>(entitymanager);
465 QSeed p = QSeed.seed;
466 Seed seed = query3.select(p).from(p).where(p.seedid.eq(seedid)).fetchOne();
467 if (seed == null) {
468 return false;
469 }
470 JPAQuery<String> query = new JPAQuery<>(entitymanager);
471 QUserStar u = QUserStar.userStar;
472 List<String> allSeedId = query.select(u.seedid).from(u).where(u.userid.eq(userid)).fetch();
473
474 if (allSeedId.contains(seedid)) {
475 return false;
476 }
477 UserStar userStar = new UserStar();
478 userStar.userid = userid;
479 userStar.seedid = seedid;
480 entitymanager.persist(userStar);
481 return true;
root0dbc9812025-05-19 04:41:57 +0000482 }
483
484 //删除一个收藏,返回状态:0 success,1 不存在,2其他原因
485 @Override
Raverf79fdb62025-06-03 06:02:49 +0000486 public boolean DeleteCollect(String userid,String seedid){
root0dbc9812025-05-19 04:41:57 +0000487 try {
Raverf79fdb62025-06-03 06:02:49 +0000488 JPAQuery<UserStar> query = new JPAQuery<>(entitymanager);
root0dbc9812025-05-19 04:41:57 +0000489 QUserStar u = QUserStar.userStar;
490 UserStar userStar = query.select(u).from(u).where(u.userid.eq(userid).and(u.seedid.eq(seedid))).fetchOne();
491 if (userStar == null) {
492 return true; // 收藏不存在
493 }
Raverf79fdb62025-06-03 06:02:49 +0000494 entitymanager.remove(userStar);
root0dbc9812025-05-19 04:41:57 +0000495 return true;
496 } catch (Exception e) {
497 e.printStackTrace();
498 return false;
499 }
Raverf79fdb62025-06-03 06:02:49 +0000500
root0dbc9812025-05-19 04:41:57 +0000501 }
502
503 @Override
Raverf79fdb62025-06-03 06:02:49 +0000504 public int AddBegSeed(BegInfo info){
root0dbc9812025-05-19 04:41:57 +0000505 return 0;
506 }
507
508 @Override
Raverf79fdb62025-06-03 06:02:49 +0000509 public int UpdateBegSeed(BegInfo info){
root0dbc9812025-05-19 04:41:57 +0000510 return 0;
511 }
512
513 @Override
Raverf79fdb62025-06-03 06:02:49 +0000514 public int DeleteBegSeed(String begid){
root0dbc9812025-05-19 04:41:57 +0000515 return 0;
516 }
517
518 @Override
Raverf79fdb62025-06-03 06:02:49 +0000519 public int VoteSeed(String begId, String seedId, String userId){
root0dbc9812025-05-19 04:41:57 +0000520 return 0;
521 }
522
523 @Override
Raverf79fdb62025-06-03 06:02:49 +0000524 public int SubmitSeed(String begid,Seed seed){
root0dbc9812025-05-19 04:41:57 +0000525 return 0;
526 }
527
528 @Override
Raverf79fdb62025-06-03 06:02:49 +0000529 public void SettleBeg(){
530
root0dbc9812025-05-19 04:41:57 +0000531 }
532
533 @Override
Raverf79fdb62025-06-03 06:02:49 +0000534 public int AddPost(Post post){
root0dbc9812025-05-19 04:41:57 +0000535 return 0;
536 }
537
538 @Override
Raverf79fdb62025-06-03 06:02:49 +0000539 public int UpdatePost(Post post){
root0dbc9812025-05-19 04:41:57 +0000540 return 0;
541 }
542
543 @Override
Raverf79fdb62025-06-03 06:02:49 +0000544 public int DeletePost(String postid){
root0dbc9812025-05-19 04:41:57 +0000545 return 0;
546 }
547
548 @Override
Raverf79fdb62025-06-03 06:02:49 +0000549 public int AddComment(String postid, String userid, String comment){
root0dbc9812025-05-19 04:41:57 +0000550 return 0;
551 }
552
553 @Override
Raverf79fdb62025-06-03 06:02:49 +0000554 public int DeleteComment(String postid,String commentid){
root0dbc9812025-05-19 04:41:57 +0000555 return 0;
556 }
557
558 @Override
Raverf79fdb62025-06-03 06:02:49 +0000559 public boolean ExchangeMagicToUpload(String userid,int magic)//将魔力值兑换为上传量,返回状态:0 success,1 不存在,2其他原因
root0dbc9812025-05-19 04:41:57 +0000560 {
561 return true;
562 }
Raverf79fdb62025-06-03 06:02:49 +0000563
root0dbc9812025-05-19 04:41:57 +0000564 @Override
Raverf79fdb62025-06-03 06:02:49 +0000565 public boolean ExchangeMagicToDownload(String userid,int magic)
566 {
root0dbc9812025-05-19 04:41:57 +0000567 return true;
568 }//将魔力值兑换为下载量,返回状态:0 success,1 不存在,2其他原因
569
570 @Override
Raverf79fdb62025-06-03 06:02:49 +0000571 public boolean ExchangeMagicToVip(String userid,int magic){
root0dbc9812025-05-19 04:41:57 +0000572 return true;
573 }
574 //将魔力值兑换为VIP次数,返回状态:0 success,1 不存在,2其他原因
575
576 @Override
Raverf79fdb62025-06-03 06:02:49 +0000577 public boolean UploadTransmitProfile(Profile profile){
root0dbc9812025-05-19 04:41:57 +0000578 return true;
579 }
580
581 @Override
Raverf79fdb62025-06-03 06:02:49 +0000582 public Profile GetTransmitProfile(String profileid){
root0dbc9812025-05-19 04:41:57 +0000583 Profile profile = new Profile();
584 return profile;
585 }
586 //获取迁移信息
Raverf79fdb62025-06-03 06:02:49 +0000587
root0dbc9812025-05-19 04:41:57 +0000588 @Override
Raverf79fdb62025-06-03 06:02:49 +0000589 public boolean ExamTransmitProfile(String profileid,boolean result){
root0dbc9812025-05-19 04:41:57 +0000590 return true;
591 }
592 //审核迁移信息,0成功,1失败
593 @Override
Raverf79fdb62025-06-03 06:02:49 +0000594 public Profile[] GetTransmitProfileList(){
root0dbc9812025-05-19 04:41:57 +0000595 return new Profile[0];
596 }
597 //获取所有迁移信息
598
599}
Raverf79fdb62025-06-03 06:02:49 +0000600