From 70150357e64c4ff4a0ed65b1544473ecd3d3ed3b Mon Sep 17 00:00:00 2001 From: forely <1605769034@qq.com> Date: Sun, 18 May 2025 21:13:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=83=A8=E5=88=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E6=94=B9=E6=99=AE=E9=80=9A=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=B8=BA=E6=B8=B8=E6=A0=87=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E7=BB=93=E6=9E=84=EF=BC=8C=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/domain/page/PageRequest.java | 1 + .../common/domain/page/PageResponse.java | 5 +- .../common/domain/page/ScrollPageRequest.java | 14 ++ .../domain/page/ScrollPageResponse.java | 20 +++ .../common/utils/RedisUtil.java | 69 ++++++++- .../common/config/RedisConfig.class | Bin 3210 -> 3210 bytes .../luojia_channel/common/domain/Result.class | Bin 4430 -> 4516 bytes .../domain/UserDTO$UserDTOBuilder.class | Bin 2396 -> 2396 bytes .../common/domain/UserDTO.class | Bin 4399 -> 4399 bytes .../common/domain/page/PageRequest.class | Bin 2493 -> 2493 bytes .../PageResponse$PageResponseBuilder.class | Bin 2902 -> 2990 bytes .../common/domain/page/PageResponse.class | Bin 4829 -> 4907 bytes .../common/interceptor/AuthInterceptor.class | Bin 3391 -> 3391 bytes .../luojia_channel/common/utils/JWTUtil.class | Bin 8158 -> 8158 bytes .../common/utils/PageUtil.class | Bin 4325 -> 4325 bytes .../common/utils/RedisUtil$ZSetItem.class | Bin 3105 -> 3191 bytes .../common/utils/RedisUtil.class | Bin 12326 -> 16562 bytes .../common/utils/UserContext.class | Bin 2621 -> 2621 bytes .../interact/controller/ChatController.java | 47 +++--- .../interact/controller/FollowController.java | 18 ++- .../modules/interact/dto/ChatItemDTO.java | 51 ++++++ .../interact/dto/ChatPageQueryDTO.java | 9 ++ .../modules/interact/service/ChatService.java | 17 ++ .../interact/service/FollowService.java | 6 + .../service/impl/ChatServiceImpl.java | 128 ++++++++++++++++ .../service/impl/FollowServiceImpl.java | 40 ++++- .../modules/message/mapper/MessageMapper.java | 11 ++ .../mq/consumer/NotificationListener.java | 2 +- .../message/server/WebSocketServer.java | 35 +++-- .../message/util/WebSocketContext.java | 43 ++++++ .../post/controller/CommentController.java | 14 +- .../post/controller/PostController.java | 18 +-- .../post/dto/req/CommentPageQueryDTO.java | 9 +- .../modules/post/dto/req/CommentSaveDTO.java | 6 +- .../post/dto/req/PostPageQueryDTO.java | 9 +- .../post/dto/resp/PostBasicInfoDTO.java | 6 + .../modules/post/dto/resp/PostInfoDTO.java | 6 + .../modules/post/mapper/CommentMapper.java | 4 + .../modules/post/mapper/PostMapper.java | 4 + .../modules/post/service/CommentService.java | 7 +- .../modules/post/service/PostService.java | 7 +- .../post/service/impl/CommentServiceImpl.java | 145 ++++++++++++++---- .../post/service/impl/PostServiceImpl.java | 118 ++++++++++++-- .../modules/post/utils/ValidatePostUtil.java | 3 - .../modules/user/mapper/UserMapper.java | 3 + .../src/main/resources/application-local.yaml | 68 ++++---- .../service/src/main/resources/db/data.sql | 22 --- .../src/main/resources/db/luojia_channel.sql | 2 +- .../mapper/message/MessageMapper.xml | 62 ++++++++ .../resources/mapper/post/CommentMapper.xml | 12 ++ .../main/resources/mapper/post/PostMapper.xml | 12 ++ .../main/resources/mapper/user/UserMapper.xml | 8 +- .../target/classes/application-local.yaml | 68 ++++---- ...teUploadDTO$CompleteUploadDTOBuilder.class | Bin 2371 -> 2371 bytes .../modules/file/dto/CompleteUploadDTO.class | Bin 3922 -> 3922 bytes ...UploadChunkDTO$UploadChunkDTOBuilder.class | Bin 2957 -> 3012 bytes .../modules/file/dto/UploadChunkDTO.class | Bin 5147 -> 5202 bytes .../UploadFileDTO$UploadFileDTOBuilder.class | Bin 2228 -> 2283 bytes .../modules/file/dto/UploadFileDTO.class | Bin 3714 -> 3769 bytes .../file/entity/LjFile$LjFileBuilder.class | Bin 3617 -> 3692 bytes .../modules/file/entity/LjFile.class | Bin 7247 -> 7322 bytes .../file/service/impl/FileServiceImpl.class | Bin 16624 -> 16624 bytes .../modules/file/utils/ValidateFileUtil.class | Bin 7693 -> 7693 bytes .../interact/controller/ChatController.class | Bin 2294 -> 2562 bytes .../controller/FollowController.class | Bin 2982 -> 3839 bytes .../modules/interact/entity/Follow.class | Bin 3887 -> 3966 bytes .../interact/service/FollowService.class | Bin 682 -> 1049 bytes .../service/impl/FollowServiceImpl.class | Bin 6429 -> 10377 bytes ...MessageRequest$MessageRequestBuilder.class | Bin 2669 -> 2669 bytes .../modules/message/dto/MessageRequest.class | Bin 5075 -> 5075 bytes ...ssageResponse$MessageResponseBuilder.class | Bin 3222 -> 3301 bytes .../modules/message/dto/MessageResponse.class | Bin 6312 -> 6391 bytes .../modules/message/entity/MessageDO.class | Bin 4775 -> 4854 bytes .../message/mapper/MessageMapper.class | Bin 430 -> 1178 bytes .../mq/AbstractSendProduceTemplate.class | Bin 4052 -> 4052 bytes ...ndExtendDTO$BaseSendExtendDTOBuilder.class | Bin 2552 -> 2552 bytes .../message/mq/BaseSendExtendDTO.class | Bin 4332 -> 4332 bytes ...MessageWrapper$MessageWrapperBuilder.class | Bin 3515 -> 3601 bytes .../modules/message/mq/MessageWrapper.class | Bin 5772 -> 5826 bytes .../mq/consumer/NotificationListener.class | Bin 3452 -> 3517 bytes ...onMessage$NotificationMessageBuilder.class | Bin 2980 -> 2980 bytes .../mq/domain/NotificationMessage.class | Bin 5193 -> 5193 bytes .../message/server/WebSocketServer.class | Bin 7660 -> 8812 bytes .../post/controller/CommentController.class | Bin 4944 -> 5161 bytes .../post/controller/PostController.class | Bin 5496 -> 5696 bytes .../post/dto/req/CommentPageQueryDTO.class | Bin 2701 -> 3883 bytes ...CommentSaveDTO$CommentSaveDTOBuilder.class | Bin 2508 -> 2325 bytes .../modules/post/dto/req/CommentSaveDTO.class | Bin 4812 -> 4310 bytes .../post/dto/req/PostPageQueryDTO.class | Bin 1054 -> 2210 bytes .../modules/post/dto/req/PostSaveDTO.class | Bin 4906 -> 4906 bytes ...CommentInfoDTO$CommentInfoDTOBuilder.class | Bin 4773 -> 4857 bytes .../post/dto/resp/CommentInfoDTO.class | Bin 10411 -> 10495 bytes .../post/dto/resp/PostBasicInfoDTO.class | Bin 7161 -> 7900 bytes .../modules/post/dto/resp/PostInfoDTO.class | Bin 7714 -> 8459 bytes .../post/entity/Comment$CommentBuilder.class | Bin 3516 -> 3591 bytes .../modules/post/entity/Comment.class | Bin 7268 -> 7343 bytes .../post/entity/Post$PostBuilder.class | Bin 4176 -> 4251 bytes .../modules/post/entity/Post.class | Bin 9131 -> 9206 bytes .../modules/post/mapper/CommentMapper.class | Bin 422 -> 745 bytes .../modules/post/mapper/PostMapper.class | Bin 413 -> 733 bytes .../modules/post/service/CommentService.class | Bin 913 -> 1002 bytes .../modules/post/service/PostService.class | Bin 1195 -> 1283 bytes .../service/impl/CommentServiceImpl.class | Bin 19647 -> 19535 bytes .../post/service/impl/PostServiceImpl.class | Bin 16025 -> 17113 bytes .../modules/post/utils/ValidatePostUtil.class | Bin 3661 -> 3573 bytes .../modules/user/dto/UserChangeInfoDTO.class | Bin 5265 -> 5265 bytes .../modules/user/dto/UserLoginDTO.class | Bin 2728 -> 2728 bytes .../modules/user/dto/UserRegisterDTO.class | Bin 4395 -> 4395 bytes .../modules/user/entity/User.class | Bin 9275 -> 9350 bytes .../modules/user/mapper/UserMapper.class | Bin 413 -> 630 bytes .../service/impl/UserLoginServiceImpl.class | Bin 9778 -> 9778 bytes .../user/utils/AnonymousUserUtil.class | Bin 3249 -> 3249 bytes .../modules/user/utils/ValidateUserUtil.class | Bin 7198 -> 7198 bytes .../service/target/classes/db/data.sql | 22 --- .../target/classes/db/luojia_channel.sql | 2 +- .../target/classes/mapper/user/UserMapper.xml | 8 +- 116 files changed, 924 insertions(+), 237 deletions(-) create mode 100644 珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageRequest.java create mode 100644 珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageResponse.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatItemDTO.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatPageQueryDTO.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/ChatService.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/ChatServiceImpl.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/util/WebSocketContext.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/message/MessageMapper.xml create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/CommentMapper.xml create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/PostMapper.xml diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageRequest.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageRequest.java index b060856..5678087 100644 --- a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageRequest.java +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageRequest.java @@ -4,6 +4,7 @@ import lombok.Data; @Data public class PageRequest { + // 普通分页参数 private Long current = 1L; private Long size = 10L; } diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageResponse.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageResponse.java index 6f1793f..e8e8e42 100644 --- a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageResponse.java +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/PageResponse.java @@ -13,8 +13,9 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor public class PageResponse { - private Long current; - private Long size = 10L; + // 普通分页参数 + private Long current; // 当前页数,适用于普通分页 private Long total; + private Long size = 10L; private List records = Collections.emptyList(); } diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageRequest.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageRequest.java new file mode 100644 index 0000000..8ae8784 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageRequest.java @@ -0,0 +1,14 @@ +package com.luojia_channel.common.domain.page; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ScrollPageRequest { + private Long lastVal; // 上次查询的最小值(用于游标分页) + private Integer offset = 0; // 偏移量(用于分页位置标记) + private Long size = 10L; // 每页数量 +} diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageResponse.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageResponse.java new file mode 100644 index 0000000..87031b1 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/page/ScrollPageResponse.java @@ -0,0 +1,20 @@ +package com.luojia_channel.common.domain.page; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +// 滚动分页请求 +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class ScrollPageResponse { + private Long lastVal; // 上次查询的最小值(用于游标分页) + private Integer offset = 0; // 偏移量(用于分页位置标记) + private Long size = 10L; // 每页数量 + private List records; // 数据列表 +} diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/RedisUtil.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/RedisUtil.java index f04f258..2e8da6a 100644 --- a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/RedisUtil.java +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/RedisUtil.java @@ -1,5 +1,9 @@ package com.luojia_channel.common.utils; +import com.luojia_channel.common.domain.page.PageRequest; +import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageRequest; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import lombok.AllArgsConstructor; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -9,10 +13,12 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -42,7 +48,9 @@ public class RedisUtil { return value != null ? type.cast(value) : null; } - public T safeGet(String key, Class type, Supplier cacheLoader, long timeout, TimeUnit timeUnit) { + // 安全地从缓存中取值 + public T safeGet(String key, Class type, Supplier cacheLoader, + long timeout, TimeUnit timeUnit) { T result = get(key, type); if(result != null){ return result; @@ -65,6 +73,42 @@ public class RedisUtil { return get(key, type); } + // 封装基于redis zset的滚动分页查询 + public ScrollPageResponse scrollPageQuery(String key, Class type, + ScrollPageRequest pageRequest, + Function, List> dbFallback) { + long max = pageRequest.getLastVal(); + long offset = pageRequest.getOffset(); + long size = pageRequest.getSize(); + Set> typedTuples = redisTemplate.opsForZSet() + .reverseRangeByScoreWithScores(key, 0, max, offset, size); + if(typedTuples == null || typedTuples.isEmpty()){ + return ScrollPageResponse.builder().build(); + } + // 获取返回的offset与minTime + List ids = new ArrayList<>(); + int returnOffset = 1; + long min = 0; + for (ZSetOperations.TypedTuple tuple : typedTuples) { + Long id = (Long)tuple.getValue(); + ids.add(id); + long lastVal = tuple.getScore().longValue(); + if(lastVal == min){ + returnOffset++; + }else{ + returnOffset = 1; + min = lastVal; + } + } + List dbList = dbFallback.apply(ids); + return ScrollPageResponse.builder() + .records(dbList) + .size(pageRequest.getSize()) + .offset(returnOffset) + .lastVal(min) + .build(); + } + public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value, DEFAULT_TIMEOUT, DEFAULT_TIME_UNIT); } @@ -200,4 +244,27 @@ public class RedisUtil { } + public List> zRevRangeWithScores(String key, long count) { + return zRevRangeWithScores(key, 0, count - 1); + } + + + public List> zRevRangeWithScores(String key, long start, long end) { + Set> tuples = redisTemplate.opsForZSet().reverseRangeWithScores(key, start, end); + return convertTuples(tuples); + } + + + public T zRevMaxValue(String key) { + List> items = zRevRangeWithScores(key, 1); + return items.isEmpty() ? null : items.get(0).getValue(); + } + + + public ZSetItem zRevMaxItem(String key) { + List> items = zRevRangeWithScores(key, 1); + return items.isEmpty() ? null : items.get(0); + } + + } \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/config/RedisConfig.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/config/RedisConfig.class index 658a2e96ea2d913cc01a876cecd52e9debafbb07..10d6bc4e8f70963e63b41786d5aea24f5b1e648c 100644 GIT binary patch delta 73 zcmeB@?2_D|!KuW-kj}`!U6h)VS!|`R&uGQS&&H6+#gN62&CZa+!(hyiJK2)+&}JU4 bOeWC`21bT7hCBua1}-2gpP`VUm_ZT%FDebd delta 74 zcmeB@?2_D|!70ek#*og%kin42&XC2!V9by`*^Bd#AO}M(BLjC)YD#9YmA*cs72{?e cu1qG;GzLb79ELmw1_mx5E1#i|p_oAu05l>E(EtDd diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/Result.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/Result.class index 01b0a6ac9509aa9429948e535fffd7596061d6f5..0292b1afa57c22e5ea3bc2c46c69dc6773ff15a9 100644 GIT binary patch delta 1817 zcmbVN$x;(h6g@8?>7+w|AaM#tBVs9N;XDr@I3Ox2isBqK;(*a2g0tEA1HE>o3l}c5 z6t%F*Dp^@Bbmu3yaN{3Xp8H;tZrZYnGF9EVZ#wtflY3siE_~KxfB8NB5x`bFdSy?j z~aaj>oL*6@|$pn^4;9~vq2UQ$@>EKm*3+)%w;PlWZ= z*no}BceN#Iw!WSnx)*T@v8GgQ6eSzCFk)d;cHMTKS`%r7>h5B(Fx)wmFO>=<3-=V7 zoo`li)WQRWEW@nxBi7iziRcL^Z0572M5-awqK<>W!Zt31C5^=SCGJ-^(^l_*mJvmr^UbzGxa0+Pa;Y3E3QBgzN3PXq2Jj~!fEOz!fj`GD9! z3ZLuK>K$giUN zJcll4Wg=4+y75p&2Xm~CWELRjQtseL>W{R%f%Sqx*vB;CqY)A1x$cP~Got$uJ|f~# zek&|O^CWcHhn*A^{Ma@Bf!&H_QZ14Ev{OOolnY(fh5eJak)uDr{}_(DIrgy*>91%@ zW(?M=0Dns-F&!9nbBGQJ-7;Dwsb8jyOm6Qa=!~g~4dBFI8C%DYoNh+rHSc$+BrG#K zyH(bwW;}^gbd%`VU#XE9Q`5~TCRVx=y!wp;quPPW7^O*^Qs;K-=>Uf%m?u>`Ka-Dr zHZ-d4fkkd36;(%YMrTap9L}-}L%amL7&j1MJ+>jwsEYVGoM#lFo*7(V6!mcwG~sA4 zE)t`_Q4Y2hbAHuiwO1(CnSfYTXf#B*xraqdLqu9XAr|zCzaJ*O!mZ>xsg=1(CSBvU z!&x_9%5zYgF{ksS_UM4;X@kE;-!NUSGGY4QlJ2(%RUTv%Vzw2y%y$^eF$-51Rrx$C zCq;#V(^J=5p4t^xE6zQ{)6%->mbb|AS;%MUd#o78Iw0saL(CMHc8Ph-C^NxJLdeSf izu_8&bZ|ZRM^MBKF2qP;n9ohz;mBrm7x(cHbN&F#&87YT delta 1768 zcma)7OHUJF6g@M2x0KR?AOQ;nNu+2L1rg*8DkuUzK#C}!;uFwNQFiq&nAy8BZge40 zG{Hm-8xt2M{s@;QEZmu>=gv26hfxw2GrjXY&bjB@d*NyAmzv<`U+eDybYNvQxS<7O zj2jDZ5QmI;YKk^_-^G59c|77 zM|n?!2jy^~-FP0T(>jc=fr>~ck0;^gy98b6Hhu;Y-97v&C5T$<<*!7=1a+a0aoEM2 zKtOO27GpmGymZWjp9)qDb#TW^N?<31q`-^|%`5?-$gi~VOMpF^4e+=Lc!GJf8=rzz znLJ>HMLEC|gE%Rayxc-{LKl7qe=4f|NNR6U_L2)a%aqL}Zp$TXTA5=OIm*0KChm}h z+eKV@Va$bM19_l?38Y*K(T)P%mQtzeh?sz$b4kITW_r~~n1VipN^OEdwyZo-242rQ zBr8&cVLsyM2!A!~Mx7v;CpA;JC;1v-5$v)FF5DJ6BWC>@y8(MG@jXN~&k;N7#Ex!@ zZHHFkM;+;(LFTN*F+?3S7~W*X8hon`0Y012UdtQtK`hs7F3Fy_Wc5*qQ?k{tb2z_+ zFe8i&YY6`@qbhB_E)GW7-pV+JaZZ+$Xgnv8gi%FktN(TyWulcv)o58p(J$kuWz`mw zTlsv!k;5MBQmVB$bMP^j<%Z-lc-$|H(Zcj!ISi;HIiHs?Vdk&{Gf1&7bu^+MlU#Fg z;5u=Uk(?#81? z>12NL>}F+$MH)FpT6;reTib$9Ip8(yw`OrOGL~|}HxUq2s%FteH8WM)3p$u0UxozDjH>De=jVDDTnXPScEjPKtye*>=OTIyzPYs{?bppdVYD%>Fiy5=B t%6Foy2%DY9V>QGat~YZ_#|`Jdgqyg<4L>uu&F3DL_!VT7#xfqF{10#!m7xFt diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/UserDTO$UserDTOBuilder.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/UserDTO$UserDTOBuilder.class index c9d7c998436ccac6684027642068a539af08ee5c..6c5d7b18359eba199184c61d60817682422edd62 100644 GIT binary patch delta 72 zcmca3bVq1|Gz&8agW2SdED?hIYz!7$43-R5>afV8-p1agE@l*JA)+;gCc{~z{rrr bP{hE%AjH4~WOFbSGjKALFqAP=Fh~LbQ|S&D delta 72 zcmZ3lv|ecgKbs&w8$&i1Lk>eOJ3}51gB3&m5Mp2gvN;%v88{hA7|Iwb7$gBPJq?fm diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageRequest.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageRequest.class index 0f1b2e9e69443b52eda3ab49e58d67101c23cce5..1a6409bab9bdba70e6aef12bd20ed8ae6cd96a71 100644 GIT binary patch delta 92 zcmdlhyjOU`N@ivb2A|3GEQ*5sYz%%}4E_uO>bRdKU4TQ9SyF9RckH$yN30|OV36~Yk45Wye`0237yLjV8( delta 88 zcmdlhyjOU`N@hWRHU=Lq244n0b_RbQ1|5cg$@iEKF>^2kOv9`46#kSrwqsoEI(3s!C@rL5r=<%83e-tTV#o!Yq|=ymfFB*%7KxIz^TZVX{!%pGFeX38d0^4QYn;x^6mdTOUdOxPHi$60Sp{ zrdCcvH@Q?!iysK*0Sym@-_pt#3(>_|Te=P5F(m43&l8I1vX#CG6|D|Rmh$y9GL~=3 zXv1AAxtK=IN@BkJSy;iPH1fDiNS>%`ui^KQ+D5ugMf#?cz#PM!mp3_uS-fEbbcLZ@ z7`E?h>%JAm{S@B9)db#7;~K6H#C*?qQXP;JC){m|-JclVi}D32DHS7>!HH6iviWWr z3%J2B+vLZhtW}+xN75Y9%r{&aipYKxtP|V_(toW(rZMCUS01*Nkxj9sPNXkuu2@xy zGG!!jGvq3+Zr1d%vmuo5xDkyK!}Oj!P~5aV!H^Hk=*4KMS}m=RPOPjOw4JF)C3f1) zn((Tez%8P#b9bM6(yl{c%p6K$+pN5NhQ}2p@n0UKdD7}qZJ!fI*U=wF5>q@U2J#}i zEzF^AJm4O03L`v<(c}M(Z`h+=PN{0oEiaAG{2q9~dR`1&AEs)yJu%!Zyb3Z!zVu25 zyYxw;yZzu20rlHr_$4wFma6w6@~}OujEWdid%Eq_#k#bg&&6mDzHNaSk~_jTo7%T6 zcui~L8;`ew%JGv}W!M-v6kUW}yb$*AWp?XYr%&67ZO`@{cI9PO%*0Vn;VXQdz`E^N z8w?A5-=sRx$HEC*44T+FuN&<>VfZClwV`5Q;U-rNSNIDRt&iKSQX~LjtRj+ugH`&b z$Eg1p(I3-vLx?hW-92dpWjeh@cb`{wx$g`5zGlXRCxLGnZj5+3&VdBB8Lqxql`iJM zTU@8xZ-V-Nj7GYZL6-)t;`Dx>-V^rb9Ffu8IU=L$le7z+GsOXn1j*?4fOZ#Ywn`_N zl`K93`;8`(xJjcW1i{|wj2#7hfZMck1|%QSDrz7jqdy|!E%Y`~SXUB@H-D$$SDKE3 zTPsN=1h=!m>pqR$vov?;nX>rV(5;V$m^0&t^mx%znT4 zl#>1w7wE~-GxH4d<4eF6FEBS!UshsG35xjhA=WQ&k36=l-%$iC!u&AfA9(XQ-T_`j zJ3m5eC6+c?*74AY5|(IZg8sFmyDJ^pEbh}gNv5pP^CdQEl_T9G{cvt!8sDIT9nAj= Dvns_S literal 2902 zcmcIm>uwuG6#gc0Y{$6Rb?PLgP|`L9JH2cvP@ql%i6IxsDOF;nqWw{g?NKtxddAuv zM=DRkV}MjtsYpBk4~016UEAwRs9p6>O(4fyo47X-px` zkUioj+;O=&aDJ{GiMnBkFH0rOD#K)m=(3f*3KgvmN|y4&G%}Vi z=F4A&6?i5&Zbbp<3=>-$n>5(P~5aV!H^Fyd*&=xtEE-i z6D#WmEoUlHiAU{bO?XvK;1*HWxx3FjY3HFZW)3B>ZB^br7~}GX_-6-cUbMPYJLkmF zHT3C7Sc>PwKvraTggMlW$K2yhVT4CMdj8({hAryFv~-RZHA3}!-~sD-F?4O1s@a!> z;X&bDkje9Rd?b9crG5Kau4`?4~($&?IH3${wwZ>KoeL0A)3Sdk&UO=Zd}yWIB$-LIK3SPA^ZaC5|M z1UR!K7N_qu`cBv)HzK1tHzK1-N4u|g&fFNl zNRW&wIjt_zXpK%XD_MF4_6H3nag%yW2!j2r(|0!Da};P+9FQ#0Y=K%=K}Jg7BIPag z4pCTB5=*!Kr0#bbj)Ge)X-f!hM}gIS8oOp`Zd04G_}S2`J44Kw@yr*_%pCakROZa7 z%(?N**)uZ-5j>SScPeupcSCPKiF$kH%*-}VSSP6cNLX*%NaS&Y)hk^Hg}t4ff>_lH=+goW!)tY zScKVO#@F~5coXOB2&a_{=X5;O;A=b}mI-__pvku#*&M#3Z<6$QNbLu#(=11Olk{U) M#x#D!2DWhdKk|a9761SM diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageResponse.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageResponse.class index 3de0d3dda2430754c4ade95ecc19e2fa09965571..fae755e5982dfced3989a1062a29ce8e55f7c9b3 100644 GIT binary patch literal 4907 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 diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/interceptor/AuthInterceptor.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/interceptor/AuthInterceptor.class index 0f5c82cd68e80253f843366d4207d7a3b226c153..8ee05b1081d9c12c84e88aa35cbcc0119c3123db 100644 GIT binary patch delta 70 zcmdllwO?w(4o-OvhDnSJ98Rf;MX5y!jQng2Q@9wWGE8GLWGV>mlw1P{Y9#>mONB8N7Yiu!R$hcGZQ1~7uiAjT*L1_mx5E1EHuF`hvZ0Az+2 AKmY&$ delta 101 zcmca-f6snHjffyW8)G0BV-RC7J7WkB!!pLu$(uzEsc|rdGcs@|F&=VTU_STS-i zMlv$+7p0~Zr50zzm*i)s=2CWDH{jkr9kh3=9lhKvpzkEMq)_BmhCe B7h(Va diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/utils/PageUtil.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/utils/PageUtil.class index 041869d4c97faaee65e577c8a27f600a79a465b9..49acd38b4c207b0e4b688e5e264c30c00778b6e5 100644 GIT binary patch delta 75 zcmaE=_*8KN6A!xpLmwl9n#Sab+^X{YYzz~)7%~_p@-Vb9v;%pQxfrG}Ol4=7#=|h3 fVa8@*9wx@k{=B8koRb)s8G0G|8G0w56_5Y`oNp1) delta 76 zcmaE=_*8KN6OSN28$%x#LqEd=c7};O43iipZ}#P3Vq_O!n99hYrZIUUw<;e{$#gD; g42Bsz3~dbUoBer9nK^qIm>H%pOkk9VsE=ST_6d~V%`RqJ=CcbkEhG2u%`MCbIE&f&2UD48frdu;)QZP~gU$+~?2n)k z2{|becHosygl8usXu^RvYvQ|MjtQRE8VUKu+$uj>UMyoaoKFe<+xp2(@YKnE&N=BX}b{Eff|I6l8^1m^g;S;`hX=I;y>cs77nA8 zyCX%Oqud2}ZD^;h?j7SQ5JLqSQu2pgnad--{x8I0qz-h#M2e_mL^KqOmt2Neq7_0O z`-P8P8ANEcN|80_%TmJghf27A$U+Dlr)>#XDA(C^m1NV66MlU@J5>|^W>j?*1(mX? zMiFWnmo&vGR$+?|-&6Lmpjbgd18{hC_D@2y=<)N}h7t6#B?gDA4=3ph!9zDr(K6A` z5$vO7AfkzMvfbU8(?WYngqqkK2xagPGgQ5>k{@6^ zr}4K|tPc)DsaFli#u3tdy_zqUAEP*SktQX-xZ=PteB<=89m#%Ir4-U5cS@|^9S5(T82|P6dT;7b(i%uwC-kQH*mfV@W3XUB)f$)Jr!oiY(!7 J;|`{={Wlb9c^d!# delta 1257 zcmZ`(%Tg0j5Ir-QM`kJ}1dAjBMi4}2f(nX);42yhi5L~%50o9Q-0CV-TDoz0KfrQp zxqwo!iiK6W^c&px1uiW%mZxVXW`^kE=JxIB?sNK;U!^xC_uKD{&j3zfdChHTZa3w@ z40dBkt!tioV)Uv_tzhlRU<7;L_vk-$8q;MuiaNmmTx@JP*%%US-rLT`}Pq)hsWc(1uY(EA7++z$aU7y7eusH$$fKJGKIJN363z5Kz+R=0LL1^`2ZZ-8jAZNy9DzZ$ zukB)t?Xw_MfvCbGWGj*xuoB+wZ^AqL=8@Y`%BDuct|*zwEy+ybn3RWR7a2YP@GBo- zuVE>f&i^<_rL|b?gr9JTkR2i?Q!FAIG(@GJcBD85o31N=Q(VDxkYW!OF~cV57)A}p zsT0m8IawCVHH$&YQjP^S`xGTBAQTowq6wie#%ac=@-+a*PODeW&Spe(dJ9nl+d`r= zt}{a^jam5u{T+pPpW}sTjS@}CS4O6Ds3N?X2ru6rtTJ{H##d8r{dRkf!uS)62v#F( zehQN~gR_ipa$stdbhcp(=ZKlY5Q;cY$%vtgr&OV;zPpWPvLmyY6I_0s=Pd)B_1972 z$!)MuSf!>j<8XPh5uC#2x)(Xs{9_MC8n^ETm$lu2TE(Lc3S9qsckE=Yl UaEC8hd>swkWw?9XkcZgu2U_)GrT_o{ diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/utils/RedisUtil.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/utils/RedisUtil.class index 792a00e36b4e470884c36f8e1273c454a041d3f4..6f92bd9cd79de65bdb4d34426a986f072a3dc7e6 100644 GIT binary patch literal 16562 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 literal 12326 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 L-TWSYABF!9-*(49 diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/utils/UserContext.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/utils/UserContext.class index 700abd7b64de7ba270e538d6087f8cf9ac935e1b..c140c14acd1ccc0611610516aaaf889f3f79908d 100644 GIT binary patch delta 184 zcmX}j$qB+x07cOoGYH|MSp>uutiY|J!5CL+oacE)Y$c5d0e9)b7OcXJ`6}6+``|@( zWZ$2fZBfYTv`upOf+~(hH+bviOkYj|K@Hbp6nI9ZIFZv-P{)lwb6E?4_pOzzwV)A~ u!PaEQKFvXJMLR)9(52@;^q68>BRL7I`EjAJqJ-dZs^lha&K!L?X=dA*cf%V{I1 w;)b7{ti7Q2t)r}yppNT5> getChatList(@RequestBody ChatPageQueryDTO chatPageQueryDTO) { + return Result.success(chatService.getChatList(chatPageQueryDTO)); + } - @PostMapping("/sendPrivateMessage") @Operation( - summary = "发送私信", - description = "发送私信给指定用户", - tags = {"聊天模块"} + summary = "历史记录", + description = "传入分页参数,获取与特定用户的完整聊天记录", + tags = {"关注模块"} ) - public String sendPrivateMessage(@RequestParam Long senderId, @RequestBody MessageRequest request) { - try { - webSocketServer.sendPrivateMessage(senderId, request); - return "私信发送成功"; - } catch (Exception e) { - return "私信发送失败: " + e.getMessage(); - } + @GetMapping("/history") + public Result> getChatHistory(@RequestBody ChatPageQueryDTO chatPageQueryDTO) { + return Result.success(chatService.getChatHistory(chatPageQueryDTO)); } } \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/controller/FollowController.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/controller/FollowController.java index 0a96dbe..d033986 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/controller/FollowController.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/controller/FollowController.java @@ -2,7 +2,11 @@ package com.luojia_channel.modules.interact.controller; import com.luojia_channel.common.domain.Result; import com.luojia_channel.common.domain.UserDTO; +import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.modules.interact.service.FollowService; +import com.luojia_channel.modules.post.dto.req.PostPageQueryDTO; +import com.luojia_channel.modules.post.dto.resp.PostBasicInfoDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -39,11 +43,21 @@ public class FollowController { } @GetMapping("/common/{id}") @Operation( - summary = "关注列表", - description = "传入用户id,返回该用户的关注列表", + summary = "共同关注", + description = "传入用户id,返回该与该用户的共同关注", tags = {"关注模块"} ) public Result> followCommons(@PathVariable("id") Long id){ return Result.success(followService.followCommons(id)); } + + @GetMapping("/post") + @Operation( + summary = "关注收件箱", + description = "传入分页参数,查询关注的人的发帖推送", + tags = {"关注模块"} + ) + public Result> queryPostFollow(@RequestBody PostPageQueryDTO postPageQueryDTO){ + return Result.success(followService.queryPostFollow(postPageQueryDTO)); + } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatItemDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatItemDTO.java new file mode 100644 index 0000000..b7e5c6f --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatItemDTO.java @@ -0,0 +1,51 @@ +package com.luojia_channel.modules.interact.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "聊天列表项DTO") +public class ChatItemDTO { + @Schema( + description = "聊天对象的用户ID", + required = true, + example = "123456" + ) + private Long chatUserId; + + @Schema( + description = "聊天对象的头像URL", + example = "https://example.com/avatar.jpg" + ) + private String avatar; + + @Schema( + description = "聊天对象的用户名", + required = true, + example = "张三" + ) + private String username; + + @Schema( + description = "最新消息内容", + required = true, + maxLength = 500, + example = "今天下午开会" + ) + private String latestMessage; + + @Schema( + description = "最新消息时间", + required = true, + example = "2023-10-15T14:30:00" + ) + private LocalDateTime latestTime; +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatPageQueryDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatPageQueryDTO.java new file mode 100644 index 0000000..8bc958c --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/dto/ChatPageQueryDTO.java @@ -0,0 +1,9 @@ +package com.luojia_channel.modules.interact.dto; + +import com.luojia_channel.common.domain.page.ScrollPageRequest; +import lombok.Data; + +@Data +public class ChatPageQueryDTO extends ScrollPageRequest { + private Long chatUserId; +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/ChatService.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/ChatService.java new file mode 100644 index 0000000..d1e679c --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/ChatService.java @@ -0,0 +1,17 @@ +package com.luojia_channel.modules.interact.service; + +import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; +import com.luojia_channel.modules.interact.dto.ChatItemDTO; +import com.luojia_channel.modules.interact.dto.ChatPageQueryDTO; +import com.luojia_channel.modules.message.dto.MessageResponse; +import com.luojia_channel.modules.message.entity.MessageDO; + +import java.util.List; + +public interface ChatService { + + ScrollPageResponse getChatList(ChatPageQueryDTO chatPageQueryDTO); + + ScrollPageResponse getChatHistory(ChatPageQueryDTO chatPageQueryDTO); +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/FollowService.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/FollowService.java index 76ff904..60bea56 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/FollowService.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/FollowService.java @@ -2,7 +2,11 @@ package com.luojia_channel.modules.interact.service; import com.baomidou.mybatisplus.extension.service.IService; import com.luojia_channel.common.domain.UserDTO; +import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.modules.interact.entity.Follow; +import com.luojia_channel.modules.post.dto.req.PostPageQueryDTO; +import com.luojia_channel.modules.post.dto.resp.PostBasicInfoDTO; import java.util.List; @@ -14,4 +18,6 @@ public interface FollowService extends IService { boolean isFollow(Long followUserId); List followCommons(Long id); + + ScrollPageResponse queryPostFollow(PostPageQueryDTO postPageQueryDTO); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/ChatServiceImpl.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/ChatServiceImpl.java new file mode 100644 index 0000000..8a2a3ae --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/ChatServiceImpl.java @@ -0,0 +1,128 @@ +package com.luojia_channel.modules.interact.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.luojia_channel.common.domain.page.ScrollPageResponse; +import com.luojia_channel.common.utils.PageUtil; +import com.luojia_channel.common.utils.RedisUtil; +import com.luojia_channel.common.utils.UserContext; +import com.luojia_channel.modules.interact.dto.ChatItemDTO; +import com.luojia_channel.modules.interact.dto.ChatPageQueryDTO; +import com.luojia_channel.modules.interact.service.ChatService; +import com.luojia_channel.modules.message.dto.MessageResponse; +import com.luojia_channel.modules.message.entity.MessageDO; +import com.luojia_channel.modules.message.mapper.MessageMapper; +import com.luojia_channel.modules.user.entity.User; +import com.luojia_channel.modules.user.mapper.UserMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + + +@Service +@RequiredArgsConstructor +public class ChatServiceImpl implements ChatService { + + private final MessageMapper messageMapper; + private final UserMapper userMapper; + private final RedisUtil redisUtil; + + @Override + public ScrollPageResponse getChatList(ChatPageQueryDTO chatPageQueryDTO) { + /* + Long userId = UserContext.getUserId(); + IPage chatPage = messageMapper.selectChatList(PageUtil.convert(chatPageQueryDTO), userId); + return PageResponse.builder() + .current(chatPage.getCurrent()) + .size(chatPage.getSize()) + .total(chatPage.getTotal()) + .records(chatPage.getRecords()) + .build(); + */ + Long userId = UserContext.getUserId(); + String key = "chat:user_list:" + userId; + + return redisUtil.scrollPageQuery(key, ChatItemDTO.class, chatPageQueryDTO, + (chatUserIds) -> { + List chatItems = new ArrayList<>(); + List latestMessageIds = new ArrayList<>(); + List users = userMapper.selectByIdsOrderByField(chatUserIds); + for(Long chatUserId : chatUserIds){ + String messageKey = "chat:history:" + Math.min(userId, chatUserId) + ":" +Math.max(userId, chatUserId); + // 获取zset中最新的messageId + Long latestMessageId = redisUtil.zRevMaxValue(messageKey); + latestMessageIds.add(latestMessageId); + } + List messageDOS = messageMapper.selectByIdsOrderByField(latestMessageIds); + int i=0; + for(User user : users){ + ChatItemDTO chatItemDTO = ChatItemDTO.builder() + .chatUserId(user.getId()) + .avatar(user.getAvatar()) + .username(user.getUsername()) + .latestMessage(messageDOS.get(i).getContent()) + .latestTime(messageDOS.get(i).getCreateTime()) + .build(); + chatItems.add(chatItemDTO); + i++; + } + + return chatItems; + }); + } + + @Override + public ScrollPageResponse getChatHistory(ChatPageQueryDTO chatPageQueryDTO) { + /* + Long userId = UserContext.getUserId(); + Long chatUserId = chatPageQueryDTO.getChatUserId(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageDO.class) + .eq(MessageDO::getSenderId, userId) + .eq(MessageDO::getReceiverId, chatUserId) + .or() + .eq(MessageDO::getReceiverId, userId) + .eq(MessageDO::getSenderId, chatUserId) + .orderByDesc(MessageDO::getCreateTime); + // 查询的是私信消息 + queryWrapper.eq(MessageDO::getMessageType, 1); + IPage page = messageMapper.selectPage(PageUtil.convert(chatPageQueryDTO), queryWrapper); + User chatUser = userMapper.selectById(chatUserId); + return PageUtil.convert(page, (message) -> { + MessageResponse messageResponse = BeanUtil.copyProperties(message, MessageResponse.class); + if(messageResponse.getSenderId().equals(userId)) { + messageResponse.setSenderAvatar(UserContext.getAvatar()); + messageResponse.setSenderName(UserContext.getUsername()); + }else{ + messageResponse.setSenderAvatar(chatUser.getAvatar()); + messageResponse.setSenderName(chatUser.getUsername()); + } + return messageResponse; + }); + */ + + // 改成滚动分页查询 + Long userId = UserContext.getUserId(); + Long chatUserId = chatPageQueryDTO.getChatUserId(); + String key = "chat:history:" + Math.min(userId, chatUserId) + ":" +Math.max(userId, chatUserId); + return redisUtil.scrollPageQuery(key, MessageResponse.class, chatPageQueryDTO, + (messageIds) -> { + List messageDOS = messageMapper.selectByIdsOrderByField(messageIds); + User chatUser = userMapper.selectById(chatUserId); + List messageResponses = new ArrayList<>(); + for(MessageDO message : messageDOS){ + MessageResponse messageResponse = BeanUtil.copyProperties(message, MessageResponse.class); + if(messageResponse.getSenderId().equals(userId)) { + messageResponse.setSenderAvatar(UserContext.getAvatar()); + messageResponse.setSenderName(UserContext.getUsername()); + }else{ + messageResponse.setSenderAvatar(chatUser.getAvatar()); + messageResponse.setSenderName(chatUser.getUsername()); + } + messageResponses.add(messageResponse); + } + return messageResponses; + }); + } +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/FollowServiceImpl.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/FollowServiceImpl.java index 5fee543..9b1b33f 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/FollowServiceImpl.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/interact/service/impl/FollowServiceImpl.java @@ -3,19 +3,25 @@ package com.luojia_channel.modules.interact.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.luojia_channel.common.domain.UserDTO; +import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; +import com.luojia_channel.common.utils.RedisUtil; import com.luojia_channel.common.utils.UserContext; import com.luojia_channel.modules.interact.entity.Follow; import com.luojia_channel.modules.interact.mapper.FollowMapper; import com.luojia_channel.modules.interact.service.FollowService; +import com.luojia_channel.modules.post.dto.req.PostPageQueryDTO; +import com.luojia_channel.modules.post.dto.resp.PostBasicInfoDTO; +import com.luojia_channel.modules.post.entity.Post; +import com.luojia_channel.modules.post.mapper.PostMapper; +import com.luojia_channel.modules.user.entity.User; import com.luojia_channel.modules.user.mapper.UserMapper; import lombok.RequiredArgsConstructor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.time.LocalDateTime; -import java.util.Collections; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @@ -25,6 +31,9 @@ public class FollowServiceImpl extends ServiceImpl impleme private final FollowMapper followMapper; private final UserMapper userMapper; private final RedisTemplate redisTemplate; + private final RedisUtil redisUtil; + private final PostMapper postMapper; + @Override public void follow(Long followUserId, Boolean isFollow) { Long userId = UserContext.getUserId(); @@ -70,4 +79,29 @@ public class FollowServiceImpl extends ServiceImpl impleme return userDTOS; } + + @Override + public ScrollPageResponse queryPostFollow(PostPageQueryDTO postPageQueryDTO) { + Long userId = UserContext.getUserId(); + String key = "post:follow_of:" + userId; + return redisUtil.scrollPageQuery(key, PostBasicInfoDTO.class, postPageQueryDTO, + (postIds) -> { + List posts = postMapper.selectBatchIds(postIds); + List userIds = posts.stream().map(Post::getUserId).toList(); + List users = userMapper.selectBatchIds(userIds); + Map userMap = users.stream() + .collect(Collectors.toMap(User::getId, user -> user)); + List postBasicInfoDTOS = new ArrayList<>(); + for(Post post : posts){ + User user = userMap.getOrDefault(post.getUserId(), new User()); + PostBasicInfoDTO postBasicInfoDTO = BeanUtil.copyProperties(post, PostBasicInfoDTO.class); + postBasicInfoDTO.setUserName(user.getUsername()); + postBasicInfoDTO.setUserAvatar(user.getAvatar()); + postBasicInfoDTOS.add(postBasicInfoDTO); + } + // 按照发布时间倒序排序 + postBasicInfoDTOS.sort(Comparator.comparing(PostBasicInfoDTO::getCreateTime).reversed()); + return postBasicInfoDTOS; + }); + } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mapper/MessageMapper.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mapper/MessageMapper.java index d33f5f7..092a0ee 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mapper/MessageMapper.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mapper/MessageMapper.java @@ -1,10 +1,21 @@ package com.luojia_channel.modules.message.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.luojia_channel.modules.interact.dto.ChatItemDTO; import com.luojia_channel.modules.message.entity.MessageDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface MessageMapper extends BaseMapper { + /** + * 查询用户的所有聊天对象(带最新消息预览) + */ + IPage selectChatList(IPage page, @Param("userId") Long userId); + + List selectByIdsOrderByField(@Param("ids") List ids); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/consumer/NotificationListener.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/consumer/NotificationListener.java index cf0b89b..d9f297a 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/consumer/NotificationListener.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/consumer/NotificationListener.java @@ -33,7 +33,7 @@ public class NotificationListener { NotificationMessage message = wrapper.getMessage(); MessageRequest request = BeanUtil.copyProperties(message, MessageRequest.class); Integer messageType = message.getMessageType(); - if (messageType != null && messageType == 0) { + if (messageType != null && !messageType.equals(0)) { webSocketServer.sendPrivateMessage(message.getSenderId(), request); } else { webSocketServer.sendSystemNotification(request); diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/server/WebSocketServer.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/server/WebSocketServer.java index 32bcdf8..4813a44 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/server/WebSocketServer.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/server/WebSocketServer.java @@ -2,14 +2,15 @@ package com.luojia_channel.modules.message.server; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; +import com.luojia_channel.common.utils.RedisUtil; import com.luojia_channel.modules.message.dto.MessageRequest; import com.luojia_channel.modules.message.dto.MessageResponse; import com.luojia_channel.modules.message.entity.MessageDO; import com.luojia_channel.modules.message.mapper.MessageMapper; +import com.luojia_channel.modules.message.util.WebSocketContext; import jakarta.websocket.*; import jakarta.websocket.server.PathParam; import jakarta.websocket.server.ServerEndpoint; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -21,11 +22,9 @@ import java.util.concurrent.ConcurrentHashMap; @ServerEndpoint(value = "/connect/{userId}") @Slf4j @Component -@RequiredArgsConstructor public class WebSocketServer { // 存储在线用户会话 private final static Map CLIENTS = new ConcurrentHashMap<>(); - private final MessageMapper messageMapper; @OnOpen public void onOpen(@PathParam("userId") String userId, @@ -60,16 +59,10 @@ public class WebSocketServer { try { // 解析客户端发送的 JSON 消息 MessageRequest request = JSON.parseObject(message, MessageRequest.class); - switch (request.getMessageType()) { - case 0: - sendPrivateMessage(Long.parseLong(senderId), request); - break; - case 1: - sendSystemNotification(request); - break; - default: - log.warn("未知消息类型: {}", request.getMessageType()); + case 0 -> sendSystemNotification(request); + case 1 -> sendPrivateMessage(Long.parseLong(senderId), request); + default -> log.warn("未知消息类型: {}", request.getMessageType()); } } catch (Exception e) { log.error("消息处理失败: {}", e.getMessage()); @@ -83,7 +76,7 @@ public class WebSocketServer { Session receiverSession = CLIENTS.get(receiverId.toString()); // 构建私信响应 MessageResponse response = MessageResponse.builder() - .messageType(0) + .messageType(request.getMessageType()) .content(request.getContent()) .senderId(senderId) .senderName(request.getSenderName()) @@ -99,14 +92,27 @@ public class WebSocketServer { log.info("接收方 [{}] 不在线,消息无法即时送达", receiverId); } MessageDO message = BeanUtil.copyProperties(response, MessageDO.class); + MessageMapper messageMapper = WebSocketContext.getBean(MessageMapper.class); + RedisUtil redisUtil = WebSocketContext.getBean(RedisUtil.class); messageMapper.insert(message); sendMessage(CLIENTS.get(senderId.toString()), JSON.toJSONString(response)); + // 存储消息至redis + if(request.getMessageType().equals(1)){ + String key = "chat:history:" + Math.min(senderId, receiverId) + ":" +Math.max(senderId, receiverId); + redisUtil.zAdd(key, message.getId(), System.currentTimeMillis()); + String chatListKey = "chat:user_list:" + senderId; + redisUtil.zAdd(chatListKey, receiverId, System.currentTimeMillis()); + chatListKey = "chat:user_list:" + receiverId; + redisUtil.zAdd(chatListKey, senderId, System.currentTimeMillis()); + } } // 发送系统通知 public void sendSystemNotification(MessageRequest request) { MessageResponse response = MessageResponse.builder() - .messageType(1) + .senderId(0L) + .receiverId(0L) + .messageType(request.getMessageType()) .content(request.getContent()) .createTime(LocalDateTime.now()) .build(); @@ -115,6 +121,7 @@ public class WebSocketServer { sendMessage(session, JSON.toJSONString(response)); } MessageDO message = BeanUtil.copyProperties(response, MessageDO.class); + MessageMapper messageMapper = WebSocketContext.getBean(MessageMapper.class); messageMapper.insert(message); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/util/WebSocketContext.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/util/WebSocketContext.java new file mode 100644 index 0000000..b187f63 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/util/WebSocketContext.java @@ -0,0 +1,43 @@ +package com.luojia_channel.modules.message.util; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +@Component +public class WebSocketContext implements ApplicationContextAware { + private static ApplicationContext applicationContext; + + @Override + @Autowired + public void setApplicationContext(ApplicationContext inApplicationContext) throws BeansException { + applicationContext = inApplicationContext; + } + + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + public static Object getBean(String name) { + return getApplicationContext().getBean(name); + } + + public static T getBean(Class clazz) { + return getApplicationContext().getBean(clazz); + } + + public static T getBean(String name, Class clazz) { + return getApplicationContext().getBean(name, clazz); + } + + + public static String getActiveProfile() { + String[] activeProfiles = getApplicationContext().getEnvironment().getActiveProfiles(); + if (activeProfiles.length == 0) { + return null; + } + return activeProfiles[0]; + } +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/CommentController.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/CommentController.java index f8ef058..a37f304 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/CommentController.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/CommentController.java @@ -2,6 +2,7 @@ package com.luojia_channel.modules.post.controller; import com.luojia_channel.common.domain.Result; import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.common.utils.UserContext; import com.luojia_channel.modules.post.dto.req.CommentPageQueryDTO; import com.luojia_channel.modules.post.dto.req.CommentSaveDTO; @@ -37,9 +38,8 @@ public class CommentController { @ApiResponse(responseCode = "200", description = "创建成功"), @ApiResponse(responseCode = "500", description = "创建失败,请稍后重试") }) - public Result saveComment(@RequestBody CommentSaveDTO commentSaveDTO) { - commentService.saveComment(commentSaveDTO); - return Result.success(); + public Result saveComment(@RequestBody CommentSaveDTO commentSaveDTO) { + return Result.success(commentService.saveComment(commentSaveDTO)); } // 更新评论 @@ -82,8 +82,8 @@ public class CommentController { @ApiResponse(responseCode = "200", description = "获取成功"), @ApiResponse(responseCode = "500", description = "获取失败,帖子ID不合法") }) - public Result> getCommentsByPostId(@RequestBody CommentPageQueryDTO commentPageQueryDTO) { - PageResponse commentList = commentService.getCommentsByPostId(commentPageQueryDTO); + public Result> getCommentsByPostId(@RequestBody CommentPageQueryDTO commentPageQueryDTO) { + ScrollPageResponse commentList = commentService.getCommentsByPostId(commentPageQueryDTO); return Result.success(commentList); } @@ -98,8 +98,8 @@ public class CommentController { @ApiResponse(responseCode = "200", description = "获取成功"), @ApiResponse(responseCode = "500", description = "获取失败,评论ID不合法") }) - public Result> getReplyById(@RequestBody CommentPageQueryDTO commentPageQueryDTO) { - PageResponse commentInfoDTOList = commentService.getReplyById(commentPageQueryDTO); + public Result> getReplyById(@RequestBody CommentPageQueryDTO commentPageQueryDTO) { + ScrollPageResponse commentInfoDTOList = commentService.getReplyById(commentPageQueryDTO); return Result.success(commentInfoDTOList); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/PostController.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/PostController.java index 8bd6860..30c6bc2 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/PostController.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/PostController.java @@ -3,6 +3,7 @@ package com.luojia_channel.modules.post.controller; import com.luojia_channel.common.domain.Result; import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.modules.post.dto.req.PostSaveDTO; import com.luojia_channel.modules.post.dto.req.PostPageQueryDTO; import com.luojia_channel.modules.post.dto.resp.PostBasicInfoDTO; @@ -34,9 +35,8 @@ public class PostController { @ApiResponse(responseCode = "200", description = "创建成功"), @ApiResponse(responseCode = "500", description = "创建失败,请稍后重试") }) - public Result savePost(@RequestBody PostSaveDTO postSaveDTO) { - postService.savePost(postSaveDTO); - return Result.success(); + public Result savePost(@RequestBody PostSaveDTO postSaveDTO) { + return Result.success(postService.savePost(postSaveDTO)); } // 设置帖子封面 @@ -107,22 +107,22 @@ public class PostController { @ApiResponse(responseCode = "200", description = "获取成功"), @ApiResponse(responseCode = "500", description = "获取失败,请稍后重试") }) - public Result> pagePost(@RequestBody PostPageQueryDTO postPageQueryDTO) { + public Result> pagePost(@RequestBody PostPageQueryDTO postPageQueryDTO) { return Result.success(postService.pagePost(postPageQueryDTO)); } - // 查看自己的帖子 - @GetMapping("/of/me") + // 查看用户的帖子 + @GetMapping("/user") @Operation( - summary = "查看自己的帖子", + summary = "查看用户的帖子", tags = {"帖子模块"} ) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "获取成功"), @ApiResponse(responseCode = "500", description = "获取失败,请稍后重试") }) - public Result> pagePostOfMe(@RequestBody PostPageQueryDTO postPageQueryDTO) { - return Result.success(postService.pagePostOfMe(postPageQueryDTO)); + public Result> pagePostOfUser(@RequestBody PostPageQueryDTO postPageQueryDTO) { + return Result.success(postService.pagePostOfUser(postPageQueryDTO)); } // 点赞帖子 diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.java index 6fe1058..df85dae 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.java @@ -1,15 +1,20 @@ package com.luojia_channel.modules.post.dto.req; import com.luojia_channel.common.domain.page.PageRequest; +import com.luojia_channel.common.domain.page.ScrollPageRequest; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data @Schema(title = "分页查询评论请求DTO") -public class CommentPageQueryDTO extends PageRequest { +public class CommentPageQueryDTO extends ScrollPageRequest { @Schema(title = "帖子ID") private Long postId; @Schema(title = "评论ID") - private Long commentId; + private Long parentCommentId; + + private Boolean orderByTime = true; + + private Boolean orderByHot = false; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentSaveDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentSaveDTO.java index 4a67bc2..8cd5a20 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentSaveDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentSaveDTO.java @@ -34,12 +34,8 @@ public class CommentSaveDTO { private Long postId; @Schema( - description = "该评论的父评论id" + description = "该评论的父评论id,若不是回复则传入空值" ) private Long parentCommentId; - @Schema( - description = "该评论的顶级评论id" - ) - private Long topId; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostPageQueryDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostPageQueryDTO.java index e0a8e68..d2616d9 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostPageQueryDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostPageQueryDTO.java @@ -1,9 +1,14 @@ package com.luojia_channel.modules.post.dto.req; import com.luojia_channel.common.domain.page.PageRequest; +import com.luojia_channel.common.domain.page.ScrollPageRequest; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data -public class PostPageQueryDTO extends PageRequest { - +public class PostPageQueryDTO extends ScrollPageRequest { + @Schema( + description = "想要查看的用户的id,输入空时为自己的id" + ) + private Long userId; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostBasicInfoDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostBasicInfoDTO.java index d5ab265..b1a27bf 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostBasicInfoDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostBasicInfoDTO.java @@ -3,6 +3,8 @@ package com.luojia_channel.modules.post.dto.resp; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDateTime; + @Data @Schema(description = "帖子基本信息") public class PostBasicInfoDTO { @@ -62,4 +64,8 @@ public class PostBasicInfoDTO { description = "匿名情况下用户头像" ) private String userAvatar; + @Schema( + description = "帖子创建时间" + ) + private LocalDateTime createTime; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.java index 4a7963a..6aa07a1 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.java @@ -3,6 +3,8 @@ package com.luojia_channel.modules.post.dto.resp; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDateTime; + @Data @Schema(description = "修改帖子信息") public class PostInfoDTO { @@ -72,4 +74,8 @@ public class PostInfoDTO { description = "匿名情况下用户头像" ) private String userAvatar; + @Schema( + description = "帖子创建时间" + ) + private LocalDateTime createTime; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/CommentMapper.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/CommentMapper.java index af525e2..a8804c4 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/CommentMapper.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/CommentMapper.java @@ -2,7 +2,11 @@ package com.luojia_channel.modules.post.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.luojia_channel.modules.post.entity.Comment; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface CommentMapper extends BaseMapper { + List selectByIdsOrderByField(@Param("ids") List ids); } \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/PostMapper.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/PostMapper.java index d8f4dea..8a0ba62 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/PostMapper.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/PostMapper.java @@ -4,7 +4,11 @@ package com.luojia_channel.modules.post.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.luojia_channel.modules.post.entity.Post; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface PostMapper extends BaseMapper { + List selectByIdsOrderByField(@Param("ids")List ids); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/CommentService.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/CommentService.java index 3bcb599..be5c0a0 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/CommentService.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/CommentService.java @@ -1,6 +1,7 @@ package com.luojia_channel.modules.post.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.modules.post.dto.req.CommentPageQueryDTO; import com.luojia_channel.modules.post.dto.req.CommentSaveDTO; import com.luojia_channel.modules.post.dto.resp.CommentInfoDTO; @@ -12,15 +13,15 @@ import java.util.List; @Service public interface CommentService { - void saveComment(CommentSaveDTO commentSaveDTO); + Long saveComment(CommentSaveDTO commentSaveDTO); void updateComment(CommentSaveDTO commentSaveDTO); void deleteComment(Long id); - PageResponse getCommentsByPostId(CommentPageQueryDTO commentPageQueryDTO); + ScrollPageResponse getCommentsByPostId(CommentPageQueryDTO commentPageQueryDTO); - PageResponse getReplyById(CommentPageQueryDTO commentPageQueryDTO); + ScrollPageResponse getReplyById(CommentPageQueryDTO commentPageQueryDTO); void likeComment(Long id); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/PostService.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/PostService.java index da9b84b..5be7b4e 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/PostService.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/PostService.java @@ -2,6 +2,7 @@ package com.luojia_channel.modules.post.service; import com.baomidou.mybatisplus.extension.service.IService; import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.modules.post.dto.req.PostSaveDTO; import com.luojia_channel.modules.post.dto.req.PostPageQueryDTO; import com.luojia_channel.modules.post.dto.resp.PostBasicInfoDTO; @@ -10,7 +11,7 @@ import com.luojia_channel.modules.post.entity.Post; import org.springframework.web.multipart.MultipartFile; public interface PostService extends IService { - void savePost(PostSaveDTO postSaveDTO); + Long savePost(PostSaveDTO postSaveDTO); String setCover(MultipartFile file); @@ -20,9 +21,9 @@ public interface PostService extends IService { PostInfoDTO getPostDetail(Long id); - PageResponse pagePost(PostPageQueryDTO postPageQueryDTO); + ScrollPageResponse pagePost(PostPageQueryDTO postPageQueryDTO); - PageResponse pagePostOfMe(PostPageQueryDTO postPageQueryDTO); + ScrollPageResponse pagePostOfUser(PostPageQueryDTO postPageQueryDTO); void likePost(Long id); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.java index 548139e..de6dc45 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.common.exception.PostException; import com.luojia_channel.common.exception.UserException; import com.luojia_channel.common.utils.PageUtil; @@ -54,75 +55,102 @@ public class CommentServiceImpl extends ServiceImpl impl @Override @Transactional(rollbackFor = Exception.class) - public void saveComment(CommentSaveDTO commentSaveDTO) { + public Long saveComment(CommentSaveDTO commentSaveDTO) { Long userId = UserContext.getUserId(); - if(userId == null){ + if (userId == null) { throw new UserException("用户未登录"); } validatePostUtil.validateComment(commentSaveDTO); + Comment comment = BeanUtil.copyProperties(commentSaveDTO, Comment.class); - comment.setUserId(UserContext.getUserId()); + comment.setUserId(userId); comment.setCreateTime(LocalDateTime.now()); comment.setUpdateTime(LocalDateTime.now()); - if(!save(comment)){ + if (!save(comment)) { throw new PostException("创建评论失败"); } - Long postId = commentSaveDTO.getPostId(); + // 保存成功后,若为根级评论,设置 topId 为评论 id + if (comment.getParentCommentId() == null) { + comment.setTopId(comment.getId()); + comment.setParentCommentId(0L); + if (!updateById(comment)) { + throw new PostException("更新根级评论 topId 失败"); + } + // 同时,更新帖子的zset列表 + String key = "post:comment_by_time:" + comment.getPostId(); + redisUtil.zAdd(key, comment.getId(), System.currentTimeMillis()); + } + // 帖子的回复数加一 + + Long postId = comment.getPostId(); Post post = postMapper.selectById(postId); if (post == null) { throw new PostException("回复的帖子不存在"); } + post.setCommentCount(post.getCommentCount() + 1); + if(postMapper.updateById(post) <= 0){ + throw new PostException("回复帖子失败"); + } + Long receiveUserId = post.getUserId(); - Long parentCommentId = commentSaveDTO.getParentCommentId(); + Long parentCommentId = comment.getParentCommentId(); // 消息通知,回复帖子 - if(!userId.equals(receiveUserId) && parentCommentId == null) { + if (!userId.equals(receiveUserId) && parentCommentId == 0) { String content = String.format("%s 回复了你的帖子: %s", UserContext.getUsername(), StringUtils.abbreviate(commentSaveDTO.getContent(), 20)); NotificationMessage notificationMessage = NotificationMessage.builder() - .senderId(UserContext.getUserId()) + .senderId(userId) .senderName(UserContext.getUsername()) .senderAvatar(UserContext.getAvatar()) .receiverId(receiveUserId) .content(content) - .messageType(0) + .messageType(2) .build(); notificationProducer.sendMessage(notificationMessage); } - if(parentCommentId != null){ + + if (parentCommentId != 0) { // 是回复的评论 - Comment partentComment = commentMapper.selectById(parentCommentId); - partentComment.setReplyCount(partentComment.getReplyCount() + 1); - int update = commentMapper.updateById(partentComment); - if(update <= 0) { - throw new PostException("回复评论失败"); + Comment parentComment = commentMapper.selectById(parentCommentId); + if (parentComment == null) { + throw new PostException("父评论不存在"); } - Long topId = commentSaveDTO.getTopId(); - // 更新顶级评论回复数 - if(!parentCommentId.equals(topId)){ - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(Comment.class) - .eq(Comment::getId, topId) - .setSql("reply_count = reply_count + 1"); - update = commentMapper.update(null, updateWrapper); - if(update <= 0) { - throw new PostException("回复顶级评论失败"); - } + // 设置顶级评论id + comment.setTopId(parentComment.getTopId()); + updateById(comment); + + // 更新评论的zset回复列表 + String buildKey = String.format("%d_%d", comment.getPostId(), comment.getParentCommentId()); + String key = "comment:reply_by_time:" + buildKey; + + redisUtil.zAdd(key, comment.getId(), System.currentTimeMillis()); + + // 更新顶级评论回复数,当顶级评论与回复评论不同时 + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(Comment.class) + .eq(Comment::getId, comment.getTopId()) + .setSql("reply_count = reply_count + 1"); + int update = commentMapper.update(null, updateWrapper); + if (update <= 0) { + throw new PostException("回复顶级评论失败"); } + // 消息通知,回复评论 String content = String.format("%s 回复了你的评论: %s", UserContext.getUsername(), StringUtils.abbreviate(commentSaveDTO.getContent(), 20)); NotificationMessage notificationMessage = NotificationMessage.builder() - .senderId(UserContext.getUserId()) + .senderId(userId) .senderName(UserContext.getUsername()) .senderAvatar(UserContext.getAvatar()) - .receiverId(partentComment.getUserId()) + .receiverId(parentComment.getUserId()) .content(content) - .messageType(0) + .messageType(2) .build(); notificationProducer.sendMessage(notificationMessage); } + return comment.getId(); } @Override @@ -138,6 +166,7 @@ public class CommentServiceImpl extends ServiceImpl impl } @Override + @Transactional(rollbackFor = Exception.class) public void deleteComment(Long id) { validatePostUtil.validateCommentOwnership(id); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Comment.class) @@ -146,31 +175,83 @@ public class CommentServiceImpl extends ServiceImpl impl if(delete <= 0) { throw new PostException("删除评论失败"); } + Comment comment = commentMapper.selectById(id); + if(comment.getId().equals(comment.getTopId())) { + redisUtil.zRemove("post:comment_by_time:" + comment.getPostId(), comment.getId()); + redisUtil.delete("comment:reply_by_time:" + comment.getTopId()); + }else{ + redisUtil.zRemove("comment:reply_by_time:" + comment.getTopId(), comment.getId()); + } // TODO 如果根评论删除,那么其他评论怎么办,目前做法是删除其下所有的子评论 } // 分页查询一系列根评论 @Override - public PageResponse getCommentsByPostId(CommentPageQueryDTO commentPageQueryDTO) { + public ScrollPageResponse getCommentsByPostId(CommentPageQueryDTO commentPageQueryDTO) { if(commentPageQueryDTO.getPostId() == null || commentPageQueryDTO.getPostId() < 0){ throw new PostException("帖子id不合法"); } + /* LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Comment.class) .eq(Comment::getPostId, commentPageQueryDTO.getPostId()) .eq(Comment::getParentCommentId, 0L) .orderByDesc(Comment::getCreateTime); return getCommentInfoDTOPageResponse(commentPageQueryDTO, queryWrapper); + */ + String key = "post:comment_by_time:" + commentPageQueryDTO.getPostId(); + return redisUtil.scrollPageQuery(key, CommentInfoDTO.class, commentPageQueryDTO, + (commentIds) -> { + List comments = commentMapper.selectByIdsOrderByField(commentIds); + List userIds = new ArrayList<>(); + comments.forEach(comment -> userIds.add(comment.getUserId())); + List users = userMapper.selectBatchIds(userIds); + Map userMap = users.stream() + .collect(Collectors.toMap(User::getId, user -> user)); + List commentInfoDTOS = new ArrayList<>(); + for(Comment comment : comments){ + CommentInfoDTO commentInfoDTO = BeanUtil.copyProperties(comment, CommentInfoDTO.class); + User user = userMap.getOrDefault(comment.getUserId(), new User()); + commentInfoDTO.setUserAvatar(user.getAvatar()); + commentInfoDTO.setUserName(user.getUsername()); + commentInfoDTO.setIsLike(isLikedComment(comment.getId())); + commentInfoDTOS.add(commentInfoDTO); + } + return commentInfoDTOS; + }); } @Override - public PageResponse getReplyById(CommentPageQueryDTO commentPageQueryDTO) { - if(commentPageQueryDTO.getCommentId() == null || commentPageQueryDTO.getCommentId() < 0){ + public ScrollPageResponse getReplyById(CommentPageQueryDTO commentPageQueryDTO) { + if(commentPageQueryDTO.getParentCommentId() == null || commentPageQueryDTO.getParentCommentId() < 0){ throw new PostException("评论id不合法"); } + /* LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Comment.class) .eq(Comment::getTopId, commentPageQueryDTO.getCommentId()) .orderByDesc(Comment::getCreateTime); return getCommentInfoDTOPageResponse(commentPageQueryDTO, queryWrapper); + */ + String buildKey = String.format("%d_%d", commentPageQueryDTO.getPostId(), commentPageQueryDTO.getParentCommentId()); + String key = "comment:reply_by_time:" + buildKey; + return redisUtil.scrollPageQuery(key, CommentInfoDTO.class, commentPageQueryDTO, + (commentIds) -> { + List comments = commentMapper.selectByIdsOrderByField(commentIds); + List userIds = new ArrayList<>(); + comments.forEach(comment -> userIds.add(comment.getUserId())); + List users = userMapper.selectBatchIds(userIds); + Map userMap = users.stream() + .collect(Collectors.toMap(User::getId, user -> user)); + List commentInfoDTOS = new ArrayList<>(); + for(Comment comment : comments){ + CommentInfoDTO commentInfoDTO = BeanUtil.copyProperties(comment, CommentInfoDTO.class); + User user = userMap.getOrDefault(comment.getUserId(), new User()); + commentInfoDTO.setUserAvatar(user.getAvatar()); + commentInfoDTO.setUserName(user.getUsername()); + commentInfoDTO.setIsLike(isLikedComment(comment.getId())); + commentInfoDTOS.add(commentInfoDTO); + } + return commentInfoDTOS; + }); } @Override @@ -208,6 +289,7 @@ public class CommentServiceImpl extends ServiceImpl impl return commentMapper.update(null, updateWrapper) > 0; } + /* 适用于旧版普通分页的转换方法 private PageResponse getCommentInfoDTOPageResponse(CommentPageQueryDTO commentPageQueryDTO, LambdaQueryWrapper queryWrapper) { IPage commentPage = commentMapper.selectPage(PageUtil.convert(commentPageQueryDTO), queryWrapper); List userIds = new ArrayList<>(); @@ -224,6 +306,7 @@ public class CommentServiceImpl extends ServiceImpl impl return commentInfoDTO; }); } + */ private List convertToDTO(List commentList) { List dtos = new ArrayList<>(); diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/PostServiceImpl.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/PostServiceImpl.java index 05b0ade..fb7bebc 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/PostServiceImpl.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/PostServiceImpl.java @@ -6,12 +6,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.domain.page.ScrollPageResponse; import com.luojia_channel.common.exception.PostException; import com.luojia_channel.common.exception.UserException; import com.luojia_channel.common.utils.PageUtil; import com.luojia_channel.common.utils.RedisUtil; import com.luojia_channel.common.utils.UserContext; import com.luojia_channel.modules.file.service.impl.FileServiceImpl; +import com.luojia_channel.modules.interact.entity.Follow; +import com.luojia_channel.modules.interact.mapper.FollowMapper; +import com.luojia_channel.modules.interact.service.impl.FollowServiceImpl; +import com.luojia_channel.modules.message.mq.domain.NotificationMessage; import com.luojia_channel.modules.post.dto.req.PostSaveDTO; import com.luojia_channel.modules.post.dto.req.PostPageQueryDTO; import com.luojia_channel.modules.post.dto.resp.PostBasicInfoDTO; @@ -23,8 +28,10 @@ import com.luojia_channel.modules.post.utils.ValidatePostUtil; import com.luojia_channel.modules.user.entity.User; import com.luojia_channel.modules.user.mapper.UserMapper; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; import java.util.ArrayList; @@ -46,9 +53,12 @@ public class PostServiceImpl extends ServiceImpl implements Po // 匿名用户名与匿名头像 private static final String ANONYMOUS_NAME = "匿名用户"; private static final String ANONYMOUS_AVATAR = ""; + private final FollowMapper followMapper; + private final FollowServiceImpl followService; @Override - public void savePost(PostSaveDTO postSaveDTO) { + @Transactional(rollbackFor = Exception.class) + public Long savePost(PostSaveDTO postSaveDTO) { Long userId = UserContext.getUserId(); if(userId == null){ throw new UserException("用户未登录"); @@ -62,7 +72,21 @@ public class PostServiceImpl extends ServiceImpl implements Po throw new PostException("创建帖子失败"); } redisUtil.delete("post:detail:" + postSaveDTO.getId()); - redisUtil.delete("post:of:user:" + UserContext.getUserId()); + //redisUtil.delete("post:of:user:" + UserContext.getUserId()); + // 非匿名帖子推送给粉丝 + if(post.getStatus().equals(0)){ + List follows = followMapper.selectList(Wrappers.lambdaQuery(Follow.class) + .eq(Follow::getFollowUserId, userId)); + for(Follow follow : follows){ + Long fansId = follow.getUserId(); + String key = "post:follow_of:" + fansId; + redisUtil.zAdd(key, post.getId(), System.currentTimeMillis()); + } + // TODO 消息通知? + } + redisUtil.zAdd("post:time:", post.getId(), System.currentTimeMillis()); + redisUtil.zAdd("post:user:" + userId, post.getId(), System.currentTimeMillis()); + return post.getId(); } @Override @@ -80,23 +104,31 @@ public class PostServiceImpl extends ServiceImpl implements Po if(!updateById(post)){ throw new PostException("更新帖子失败"); } - redisUtil.delete("post:detail:" + postSaveDTO.getId()); - redisUtil.delete("post:of:user:" + UserContext.getUserId()); + // redisUtil.delete("post:detail:" + postSaveDTO.getId()); + // redisUtil.delete("post:of:user:" + UserContext.getUserId()); } @Override public void deletePost(Long id) { validatePostUtil.validatePostOwnership(id); + Long userId = UserContext.getUserId(); int delete = postMapper.deleteById(id); if(delete <= 0){ throw new PostException("删除帖子失败"); } - redisUtil.delete("post:detail:" + id.toString()); - redisUtil.delete("post:of:user:" + UserContext.getUserId()); + // redisUtil.delete("post:detail:" + id.toString()); + // redisUtil.delete("post:of:user:" + UserContext.getUserId()); + redisUtil.delete("post:detail:" + id); + redisUtil.zRemove("post:time:", id); + redisUtil.zRemove("post:user:" + userId, id); } @Override public PostInfoDTO getPostDetail(Long id) { + // TODO + Post oldPost = getById(id); + oldPost.setViewCount(oldPost.getViewCount() + 1); + updateById(oldPost); return redisUtil.safeGet("post:detail:" + id, PostInfoDTO.class, () -> { Post post = getById(id); @@ -119,8 +151,9 @@ public class PostServiceImpl extends ServiceImpl implements Po } @Override - public PageResponse pagePost(PostPageQueryDTO postPageQueryDTO) { + public ScrollPageResponse pagePost(PostPageQueryDTO postPageQueryDTO) { // TODO 目前分页查询直接按照创建时间顺序排序了,未来考虑加入多种规则 + /* 旧版分页逻辑 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Post.class) .orderByDesc(Post::getCreateTime); IPage postPage = postMapper.selectPage(PageUtil.convert(postPageQueryDTO), queryWrapper); @@ -141,27 +174,58 @@ public class PostServiceImpl extends ServiceImpl implements Po } return postBasicInfoDTO; }); + */ + String key = "post:time:"; + return redisUtil.scrollPageQuery(key, PostBasicInfoDTO.class, postPageQueryDTO, + (postIds) -> { + List userIds = new ArrayList<>(); + List posts = postMapper.selectByIdsOrderByField(postIds); + posts.forEach(comment -> userIds.add(comment.getUserId())); + List users = userMapper.selectBatchIds(userIds); + Map userMap = users.stream() + .collect(Collectors.toMap(User::getId, user -> user)); + // 组装用户头像与名称,批量查询只要查一次数据库 + List postBasicInfoDTOS = new ArrayList<>(); + posts.forEach(post -> { + PostBasicInfoDTO postBasicInfoDTO = BeanUtil.copyProperties(post, PostBasicInfoDTO.class); + User user = userMap.getOrDefault(post.getUserId(), new User()); + postBasicInfoDTO.setUserAvatar(user.getAvatar()); + postBasicInfoDTO.setUserName(user.getUsername()); + if (post.getStatus() == 1) { // 匿名帖子 + postBasicInfoDTO.setUserName(ANONYMOUS_NAME); + postBasicInfoDTO.setUserAvatar(ANONYMOUS_AVATAR); + } + postBasicInfoDTOS.add(postBasicInfoDTO); + }); + return postBasicInfoDTOS; + }); } @Override - public PageResponse pagePostOfMe(PostPageQueryDTO postPageQueryDTO) { - Long userId = UserContext.getUserId(); - if(userId == null){ + public ScrollPageResponse pagePostOfUser(PostPageQueryDTO postPageQueryDTO) { + Long myUserId = UserContext.getUserId(); + if(myUserId == null){ throw new UserException("用户未登录"); } + Long userId = postPageQueryDTO.getUserId()==null ? myUserId : postPageQueryDTO.getUserId(); + /* // 构建包含分页信息的缓存键 String cacheKey = "post:of:user:" + userId + ":page:" + postPageQueryDTO.getCurrent() + ":size:" + postPageQueryDTO.getSize(); return redisUtil.safeGet(cacheKey, PageResponse.class, () -> { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Post.class) - .eq(Post::getUserId, userId) - .orderByDesc(Post::getCreateTime); + .eq(Post::getUserId, userId); + // 当查询别人时,不显示匿名帖子 + if(!myUserId.equals(userId)){ + queryWrapper.eq(Post::getStatus, 0); + } + queryWrapper.orderByDesc(Post::getCreateTime); IPage postPage = postMapper.selectPage(PageUtil.convert(postPageQueryDTO), queryWrapper); return PageUtil.convert(postPage, post -> { PostBasicInfoDTO postBasicInfoDTO = BeanUtil.copyProperties(post, PostBasicInfoDTO.class); postBasicInfoDTO.setUserAvatar(UserContext.getAvatar()); postBasicInfoDTO.setUserName(UserContext.getUsername()); - if (post.getStatus() == 1) { // 匿名帖子 + if (post.getStatus() == 1) { // 自己的匿名帖子 postBasicInfoDTO.setUserName(ANONYMOUS_NAME); postBasicInfoDTO.setUserAvatar(ANONYMOUS_AVATAR); } @@ -169,6 +233,34 @@ public class PostServiceImpl extends ServiceImpl implements Po }); }, 60, TimeUnit.MINUTES); + */ + String key = "post:user:" + userId; + return redisUtil.scrollPageQuery(key, PostBasicInfoDTO.class, postPageQueryDTO, + (postIds) -> { + List userIds = new ArrayList<>(); + List posts = postMapper.selectByIdsOrderByField(postIds); + posts.forEach(comment -> userIds.add(comment.getUserId())); + List users = userMapper.selectBatchIds(userIds); + Map userMap = users.stream() + .collect(Collectors.toMap(User::getId, user -> user)); + // 组装用户头像与名称,批量查询只要查一次数据库 + List postBasicInfoDTOS = new ArrayList<>(); + for(Post post : posts){ + PostBasicInfoDTO postBasicInfoDTO = BeanUtil.copyProperties(post, PostBasicInfoDTO.class); + User user = userMap.getOrDefault(post.getUserId(), new User()); + postBasicInfoDTO.setUserAvatar(user.getAvatar()); + postBasicInfoDTO.setUserName(user.getUsername()); + if (post.getStatus() == 1) { // 自己的匿名帖子 + if(!userId.equals(user.getId())){ + continue; + } + postBasicInfoDTO.setUserName(ANONYMOUS_NAME); + postBasicInfoDTO.setUserAvatar(ANONYMOUS_AVATAR); + } + postBasicInfoDTOS.add(postBasicInfoDTO); + } + return postBasicInfoDTOS; + }); } private boolean isLikedPost(Long postId){ diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/utils/ValidatePostUtil.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/utils/ValidatePostUtil.java index aa073e4..aa4c809 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/utils/ValidatePostUtil.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/utils/ValidatePostUtil.java @@ -65,9 +65,6 @@ public class ValidatePostUtil { if(commentSaveDTO.getParentCommentId() != null && commentSaveDTO.getParentCommentId() < 0){ throw new PostException("父评论id不合法"); } - if(commentSaveDTO.getTopId() != null && commentSaveDTO.getTopId() <= 0){ - throw new PostException("顶级评论id不合法"); - } } public void validateCommentOwnership(Long id) { diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/mapper/UserMapper.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/mapper/UserMapper.java index fdd724e..17e4ad1 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/mapper/UserMapper.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/mapper/UserMapper.java @@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.luojia_channel.modules.user.entity.User; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface UserMapper extends BaseMapper { + List selectByIdsOrderByField(List ids); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml index 4fbcddd..c163548 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml @@ -1,36 +1,36 @@ #本地开发环境 - lj: - db: - host: localhost - password: 123456 - redis: - host: localhost - port: 6379 - password: 123456 - rabbitmq: - host: localhost - port: 15672 - username: root - password: 123456 - minio: - endpoint: http://localhost:9000 - accessKey: minioadmin - secretKey: minioadmin +# lj: +# db: +# host: localhost +# password: 123456 +# redis: +# host: localhost +# port: 6379 +# password: 123456 +# rabbitmq: +# host: localhost +# port: 15672 +# username: root +# password: 123456 +# minio: +# endpoint: http://localhost:9000 +# accessKey: minioadmin +# secretKey: minioadmin -#lj: -# db: -# host: 192.168.59.129 -# password: Forely123! -# redis: -# host: 192.168.59.129 -# port: 6379 -# password: Forely123! -# rabbitmq: -# host: 192.168.59.129 -# port: 5672 -# username: admin -# password: Forely123! -# minio: -# endpoint: http://192.168.59.129:9000 -# accessKey: forely -# secretKey: Forely123! +lj: + db: + host: 192.168.59.129 + password: Forely123! + redis: + host: 192.168.59.129 + port: 6379 + password: Forely123! + rabbitmq: + host: 192.168.59.129 + port: 5672 + username: admin + password: Forely123! + minio: + endpoint: http://192.168.59.129:9000 + accessKey: forely + secretKey: Forely123! diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql index 56204a5..e69de29 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql @@ -1,22 +0,0 @@ -INSERT INTO `post` (`title`, `image`, `content`, `status`, `like_count`, `comment_count`, `favorite_count`, `view_count`, `user_id`, `category_id`) -VALUES - ('秋日散步记', 'http://example.com/images/post1.jpg', '今天去公园散步,看到了很多美丽的景色...', 0, 15, 8, 5, 100, 1, 1), - ('美食推荐', 'http://example.com/images/post2.jpg', '这家餐厅的披萨非常好吃,强烈推荐给大家...', 1, 20, 12, 7, 150, 2, 2), - ('旅行计划', 'http://example.com/images/post3.jpg', '计划下个月去云南旅游,期待已久的旅程...', 0, 10, 5, 3, 80, 3, 3), - ('学习心得', 'http://example.com/images/post4.jpg', '最近学到了一个新的编程技巧,感觉很有用...', 0, 25, 18, 10, 200, 4, 4), - ('电影分享', 'http://example.com/images/post5.jpg', '昨晚看了《无间道》,剧情非常精彩...', 1, 30, 20, 12, 250, 5, 5), - ('健身日常', 'http://example.com/images/post6.jpg', '每天坚持锻炼身体,保持健康的生活方式...', 0, 5, 2, 1, 30, 6, 1), - ('宠物趣事', 'http://example.com/images/post7.jpg', '我家的小狗今天做了件搞笑的事情...', 0, 8, 4, 2, 40, 7, 2), - ('读书笔记', 'http://example.com/images/post8.jpg', '最近读了一本书,《活着》让人深思...', 1, 12, 6, 4, 60, 8, 3), - ('科技前沿', 'http://example.com/images/post9.jpg', '最新的AI技术真的太神奇了,改变了我们的生活...', 0, 18, 9, 6, 90, 9, 4), - ('摄影技巧', 'http://example.com/images/post10.jpg', '分享几个摄影小技巧,让你的照片更加出色...', 0, 22, 11, 8, 110, 10, 5), - ('音乐分享', 'http://example.com/images/post11.jpg', '最近发现了一首好听的歌,一起来听听吧...', 1, 7, 3, 2, 50, 1, 1), - ('烹饪食谱', 'http://example.com/images/post12.jpg', '教大家做一道简单的家常菜...', 0, 14, 7, 5, 70, 2, 2), - ('游戏体验', 'http://example.com/images/post13.jpg', '玩了一个新出的游戏,超级好玩...', 0, 21, 10, 7, 120, 3, 3), - ('时尚搭配', 'http://example.com/images/post14.jpg', '分享我的最新穿搭,希望对你有所帮助...', 1, 9, 4, 3, 45, 4, 4), - ('户外运动', 'http://example.com/images/post15.jpg', '周末和朋友们一起去徒步,真的很放松...', 0, 17, 8, 6, 85, 5, 5), - ('艺术欣赏', 'http://example.com/images/post16.jpg', '欣赏了一些印象派画作,感受到了不一样的美...', 0, 11, 5, 2, 60, 6, 1), - ('创业故事', 'http://example.com/images/post17.jpg', '一位朋友刚刚开始了他的创业之旅,很激动人心...', 1, 13, 6, 4, 75, 7, 2), - ('健康饮食', 'http://example.com/images/post18.jpg', '分享一些健康的饮食习惯,让我们一起变得更健康...', 0, 19, 9, 7, 100, 8, 3), - ('科技创新', 'http://example.com/images/post19.jpg', '最新的科技成果真是令人惊叹,未来可期...', 0, 24, 12, 8, 130, 9, 4), - ('心灵感悟', 'http://example.com/images/post20.jpg', '写下了自己的内心感受,希望能够激励更多的人...', 1, 6, 3, 2, 55, 10, 5); \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql index ac2a900..180d95b 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql @@ -157,7 +157,7 @@ CREATE TABLE `view_record` ( DROP TABLE IF EXISTS `message`; CREATE TABLE message ( id BIGINT AUTO_INCREMENT PRIMARY KEY, - message_type TINYINT NOT NULL COMMENT '0-私聊, 1-系统消息', + message_type TINYINT NOT NULL COMMENT '0系统消息,1私信消息,2评论通知', content TEXT NOT NULL, sender_id BIGINT NOT NULL, receiver_id BIGINT NOT NULL, diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/message/MessageMapper.xml b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/message/MessageMapper.xml new file mode 100644 index 0000000..4eb17a5 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/message/MessageMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/CommentMapper.xml b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/CommentMapper.xml new file mode 100644 index 0000000..72368c7 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/CommentMapper.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/PostMapper.xml b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/PostMapper.xml new file mode 100644 index 0000000..26827f9 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/post/PostMapper.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/user/UserMapper.xml b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/user/UserMapper.xml index 52fee41..4bd83c3 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/user/UserMapper.xml +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/mapper/user/UserMapper.xml @@ -2,5 +2,11 @@ - + \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml b/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml index 4fbcddd..c163548 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml +++ b/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml @@ -1,36 +1,36 @@ #本地开发环境 - lj: - db: - host: localhost - password: 123456 - redis: - host: localhost - port: 6379 - password: 123456 - rabbitmq: - host: localhost - port: 15672 - username: root - password: 123456 - minio: - endpoint: http://localhost:9000 - accessKey: minioadmin - secretKey: minioadmin +# lj: +# db: +# host: localhost +# password: 123456 +# redis: +# host: localhost +# port: 6379 +# password: 123456 +# rabbitmq: +# host: localhost +# port: 15672 +# username: root +# password: 123456 +# minio: +# endpoint: http://localhost:9000 +# accessKey: minioadmin +# secretKey: minioadmin -#lj: -# db: -# host: 192.168.59.129 -# password: Forely123! -# redis: -# host: 192.168.59.129 -# port: 6379 -# password: Forely123! -# rabbitmq: -# host: 192.168.59.129 -# port: 5672 -# username: admin -# password: Forely123! -# minio: -# endpoint: http://192.168.59.129:9000 -# accessKey: forely -# secretKey: Forely123! +lj: + db: + host: 192.168.59.129 + password: Forely123! + redis: + host: 192.168.59.129 + port: 6379 + password: Forely123! + rabbitmq: + host: 192.168.59.129 + port: 5672 + username: admin + password: Forely123! + minio: + endpoint: http://192.168.59.129:9000 + accessKey: forely + secretKey: Forely123! diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/dto/CompleteUploadDTO$CompleteUploadDTOBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/dto/CompleteUploadDTO$CompleteUploadDTOBuilder.class index 5fdce66b549f4e9af9275ba8c9e0aa4a737a737c..08e5e9d5d3723555d1c825f7ad358104198761d5 100644 GIT binary patch delta 72 zcmX>sbXaIZE(sbXaIZE{h;P8-ptwNfh%NFYu~{DaeDJ~Rnb)3YXLsIHoYZZMqW_+OUd|JcW$cgm&0zpIVzxQZnm?@-oI5rFsnDs;u~ z)e*MBGg_Xl@l~yKTp+#*hB108h$BI zalCY3XMteuRY{mgyqzU6>%h7qK{|8qSi+JWFhj!j1Hs(kNSM(98ERLzr_aN}dkq9W9LodWXrCZ|PY?m9ie9hmpnyM6iritYhF2b|qSE delta 974 zcma))y-or_6ot<$?k=n(pcofTBqoB0s389TAS$Bx1XdQrm`IFTu!Wua09Nw^zJbKT zgu+B)Wnp4(V`1wf81L*(;j&w7u`~Cc?EUVUnfq$qn#S92=LtX=`)#ABWcw*jN0Gre zgL&3CJ+5AyA2qClrgcJ5%W9lkErvV(6DsjfcKDDEJu7`N4QmG0QP!~`YAd{{z3^|f z#q)Zur^b-s@0!Uk^f=q&*LwLXOIZl+` zQK3d?CZx$nu(s`Cl2+je2qRBx)cFBZn5OK%H-=u!AcP#h2`B5_b%WFc&}E&7dTmyL zR8^G5yI?UCZP-^Jm~&MUCK9)^1ZHj6RwRfs=Z+;T;enYFb{7cdJdT8!9@wxvCNqLK zb6!=#MB+Z?h=er)!JKiBFp;=nCCrJr;LpZvrTaCVDH!#gf_W^+d8*6FN%0ROdD+1j wa8J*zz#o_L!KqlZE0$d5mTfJC723lzkgN1jhEG9Am(Q&p6+%}n*_Pf-PPMt)hZ#&sk)Uk zhyTNxSW?O&u?^eRUxr17ey94wn5zCX){H(i#+lS1rO^>>!9^P`pOJ@VW(=e6?>{VOST{aF^J}f z<4ELK$dSrX!_Q)SEuU8G!fqH)K|7sK@l#$St^Os_hiOaD9;V$XVFmKVPIcIp;GJF- z;d3d{=bl-(L`vwsRahN3F^{W67-rWC*u`-M&2jcQLCfF_fV^6gLr;pHlaw1IX+iON zkYgs0mthDwB@~7YE=f;{n~4+ztqluG(SzcBAn$B?@4;S?I&`mya)~>(xU$C}kLU!K zeW(Qgionf@Oo@P?i=;A3zN8Ah&N|e?8-{P6FJI(nkS`{o{C(IT&V7d#?-f}zlmBs8 zFwGam5Xx@|&yUygXTv8F&+`NNh(ZhHH&UN4@+8fdFUmHE7n4x@0f84~SQ3?3HeH4@ zi6I(5kf!ej60)&GI6L|<$}VY&+E2U3b^=TVQ)3EEXeKQlU*Tq<8@Txs4)UE5E==MO zEfcn442Nl%S=-OiLd$|K+(s)c8QmB}8!ZKQ(1|0othmcn?P$({4dW<92VX|u4K{E= zGjs7XG6-mf9bb@wqqL&nQR`x=y@5Mu(urh3ravrtUr2vN37E6rL3u_)+j6v`{p(#^ z%HTwp0lHg9mrzXCLnTMKEi-So61}u6oadvDmW(0x^Ha1Gc-V6mBk~Vlm}DrDG};)OD0xFuE4 V0arMSWw>d4ca@@C!wuX-@?WKC$Ik!& delta 1804 zcma)++iwg}9LK-2JF~NwuI+a9LfKSWTDy%#6PgO@TD7&b)TLKSdWmXa@HvI zqTlI{Y>2H2^X|Y#Y=Q-~)J43@pZyj5%`Z^&j9P)2Y2K+|Au3}#E4WU+RSP_aF1J}s z+g#C5vWx``B@*I-MA9NGPD64hliW$9R8T3((tx}PpmM(6laaK*Ac?oGyvT$F-i-UI z)23385CH@5WdtpagG5u7&lE#$#;px#lqJE}ETJ3nP;G(W2=pN;^U3H@Ql7Cw773rr z0&+o~Rz0<*aFET@iWr3@OGd$FY)Qv=PnGW>GR~KS#A;~5))ah%@q4Gr_hI@3-)MWoH;c z2bG2}o?<7J4c)kfT~s=HaUHvSPP*_KD>&W4QvHlM zI6&pbR}|tP)iiX98`+JKSP3^L<*1_gUyi6|yz&dtg708|Lh-*3M2n}XF*%uLjNY0= zS5U*yWJ?uo-qD_k=3$uD#)N>!F`5;Ra0p$bX&7X}UEJuzLmDDYE5>CUp;ECNoj6LR z(c&Q;enh|Wp3h$_QqRDU9^k{R{yUy$7bIn2b*xr@wqfO%ZSjK5_Gujv2) diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/dto/UploadFileDTO$UploadFileDTOBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/dto/UploadFileDTO$UploadFileDTOBuilder.class index 0b1c7bf7f640bfe58829eb9dbf10e2f79fc543fb..f24cc7ff0b9e45e065eda2393557569fa8e95a55 100644 GIT binary patch delta 727 zcma))yG{Z@6o&s<*n>qhZ!~f&gzJ8nU05-5!*X~(P!ytxKM0E@!#^Ad! zsz$zSR7&~dtIP9Bi9xLz-^UB$+?_nTl`JVxONy~{DXLIC0ZLNo&tshSqXjck?+g} z|K${_m8nZYlDs^1FpWLX6ao7icn}X*kn>`icmdURwSpMt~>!AfYoj+y*X+pDkn7Y?*W1bKcB_ cut3&Lr!CQ1q&Eu$2=7J+oA983ZR{fQ2e_a==>Px# delta 667 zcma))OHRWu5QcxJb<(CqZPE%+2yJ-;N_e(_cooC~2~GfK;1cu>c*lwhAW=~XsS6ft zkT?ZIMT?98(<55H;YLs)6xTca(a;$6F6mHd1%o47Dn@ axaN42e%O5+&~u5;p^8J~afB28#o8Zczc4QV diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/dto/UploadFileDTO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/dto/UploadFileDTO.class index 55b8640df2c64a579440b55ff286f75aa7e03677..00e35ec118d79bed6d595ccd9fccdbb3978c2e2a 100644 GIT binary patch delta 1401 zcma)6OHUI~7(FxXbjq~In}P^|07|CRDn0>ui6ReqiHKqqN32jDMQJ52NQmy)I9p@l z&V>tz;)4Z=?sVtcKjH$7=gv%kP9(UP-1FW0eP_;hzccf^{BybX{ml1@GR-FFj^RZOF^2r3YRzZ9TAzwV2^EAD=9YS7_u~agMbsP6O7d zBu-m+Q1GvVRs@lSHncOL!;JV#XD+hR$4XJ(>EKITB^*YX$Rdt15*dpA9_ku_jNP() zT;@*DPCyr~Fv=vVMve8lHGlESZe7WNb;s;F^6eFn=N3?LAW=7Z;ITT1HBpI7MxP$u zfVxh!x0fu7s@TqOdJ)$Xu=?v|wjwdebv4+BtAgKrofYcdZE!y_dtwfm2r_T0-zIyZ z{STKtWQR)xnOv0!S;8i?S9@;W78ausfYqHYS22J=PO%72F~lj#y!`}*x#xk7Nn9iH za=!~BL<;)Rj_X7|%%KXSM06}IbA!l_F>;3yRQ=mHq{9Cj=5nBN#SuE-66!^J`cz_8}L$MEPOTbigbN#)sVlYGntYe%rYo_IVSx$R=3F ziDYQ#!)?C7gK9J&M&v~+1>Yf3FlPP;F0W+X``sPqwy{clIz{>ilzc)xmnuHBn`DC9 z$@XCEPpQZelu4{$LJX9IF$(i?E!02atR59^*6TNrtw%PH=k~Q``C7LN1hM%myDA~> zE8AoFS=i8R9|iZAAj5#`?{c4R0J+3Z;Q^7K>lB|j<{9O)MB-kO{#w9eq)_@7S&x)= delta 1358 zcmai!TTc^F6ouE!bULLMpjBIt)U-h&Y1LZ1E3GJ~6&01TVq9lt(#udnn(0~RvcImq&z^pXzKME&{@eHlAcLiKZ%iEw zQ6KW-Fj5L4i^cib(dDI5u{vF@&QVpW#ieRRL3vOtD`~N*54``azSV+VZans)h$jY0 zGWei!{C+(Y8EG3a`sU_iu-i1==FD+}V6k(o^MXS$(a2r7_|G$mK1ba+P5R<0!E?9+-hbiRC;zNk{@BL zJF@FAQDOR*WwNr9%4cRg##LS6q}!45MO?D@t@ywed~F-Pb*(mEPFhQPxjjF)g})8n zY7XL~(!ZRw@?(fd|3Y}*HFbzpi~>6dSgjXh6**kt_3yz7#(DiJFR6^HT+@(13D>Ax zkdCiY>HHqS1eF^Lh~oy8ftT#Hn^Yd;$xgy=c>bc(fM*k8%@>Q=g~&OKx)8RF{_%x# zjh<}2HN9?Br#)%ZhK)O53f(4UqlyXtv%C|QrC(smhH1FP&m>_wecz^1;bqQK`~eO9 zd`s_8xsav3X(}Cgp$A^oTC04w-p<2}l5bcj@d-VA;(P`+a1e0zww0Rox`k{vtyCTN zq2M8vhvOqYvv|%~h#?Bs=GZ-D%wrL~{{g`kfIk2L diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/entity/LjFile$LjFileBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/entity/LjFile$LjFileBuilder.class index b7bf51f568a0399e658f49313d7fa70265538d8b..d2d69f7fa3e067cb787dd2ae3f0c7b903a2a7dbb 100644 GIT binary patch literal 3692 zcmc&%>r&fB6#mv+Y#dPtP$;<(3Zb@1BGQuH9MT3-0(-Q#n*`&CpROZuTIDo-FbP&cI+O*ZjKaM*gm2eP7$L zJde9(-M1r`hvqZKFV=`fUTl(z=Fp)%k%-;yVUL4;feNo04|kz=cCK z8_)L}jF$|I;W9&BB36YZqL5)QrhVBHe47UiL*F$pAysupArF>q33|oA6y78GTEH#A zHymmGsFD|SFe`q|a_{P&8Yo2rrG`kfZ)@li`m-%-}{?V`m+{ zV=4bdrWu$Ra118Jcg2|ULvb^Y8+bp94-CxWW=mcw>*>Z1EH~n7&lslS&Z@L67h^_f ze+MYzKQiz!K4BQCTYG%L_iC1Sg4Z~1%XJ?`;|fzx$G7iW0ksXm12XbKT#3HI)2dmI zV>T22w4jeQXj(;_GAvzNvg^XMzay=va_q`I@*9W~_!{jlH8v0`609^|o(Y8D%^O*~|nJo44?4*WfCDwkE~ShQ-w z51upp6i)`ts9apKJe!8$WX1RQqWy9*b}>qep!6e!{b`IprPFDM1iYI6^#S=6d;t3kf>I993b%I9I_zhYw*-c+aWcw}Jne;1@l+sJE zUm7mW(Nj7Ia`-kqr6MWv89t|X+aI1uJhb8ur^jcgZG4qC8hm03%w8m*o(ki^fwe&()J!2-dXDne^>->(|s_ZSZg!Qlbe#4AZNv~J< y5I9cnY>M74d`X%z_^KrXD-GH-R_L80Tkg|Z#U`Bwh&M<7Lmr_Ak10CeVDujj%MgVC literal 3617 zcmdT{-BQ~|6#kY!8%GoeD3tsWibIV_5NVtKIiw9v3A6?hOi0>ZbcD49fh;l7ni={8 zeS|(nJCjak(wR=Ld)F80^sIIbGSV<6T;*b=-Q%<0IeYe;^U44G_xdjY3wWMG7rHa( zG0=-XhWws&Xqm3%?U?J^d%P|f`tCcPBOWkx7iYHmkwt$7IRlqqFqG?l!*rYeo@4!3 z-?coCyJo|;n=TK{pB$H)+!KyCGOK$_v?{3AV$*SL9x!w{Hd(Bmn5_EVPFb3G$G{-+ z3|R@XW;Hm&P)x5T0!M2O85owD8L9a!aOLiI4U9_fqTMy;XD)^B85loST($2>*;NDA zj?HWy9Yl&Z3{2oALrx;rge96G!*I;{iYNFE4OD!)5yx!h>_tIeXwbA|zF=5-w`Id*xLZ7@lXOX0;j5@IjL`OzR(qUo zxtiY$>Rk3`hD)kL&q+Pnyv9SZ?1w}G`9ZA{X(QMT?B^&evTip|RL z5NL>s<+?RT@NyRG48Q0Iv{6;ju@~6wn=LYG&53SWQ^_)|Igv|iDjjRh6_v=9;tDxC zp@>L+-2E5W41=*kd>T|-D-1c6!a$o#8PphVB_f^{$PAt_+&Ej67)(VSlSE-%)O_WK z0dYJSKBiS4z3ffga>w}Ut~I_~wBwJa z$7iHte3dsEe>8zVp6>rx$M`A-HNIT5`+qGR|4PUBDxWpJT(sj);6d8`Uhf!R)rQ8O zNZ?PU$A7Y8d{t)}e=31LjW5&uFLaErYF6V@9PI z)sel|m(v4Kr&Vf=re C+xR*F diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/entity/LjFile.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/entity/LjFile.class index f5d7a2ef155bc7058b0510e0bfb4c846d84eaea8..016ed9f05796f2dc5e34737932af415a6d01f5cd 100644 GIT binary patch delta 2545 zcma);TW}Lq9LB$sYqOh}q?g1Hnv!WOopgq(Q)f_y%IJ8(k*NcWGv0upZJ~sMrL6+m zje-|cq;SLw7X`0)8KH(&sE!XhKFEtN%sA?U`sSOjI?kxy$%bUJNlhM-{m$9*|Ly;L z=bZoU_sfsns9pMJ{wn}0@x_d`+qq1`gLue`4SsCICV|jMW-`;8&5REBt{WfQIyx-i zoy=q>1_y=&y1M0dEfF?vtY{`>vmX!R5qZ$LSbQU=Tu0=0u0(!|Ym-|Z*K*;Y2WK^$ z!;BZ7seyU%Dm@_&=p*hyI58yu)Cc0j1bZO(uVV}Uck&AK zV=G4FX8*9*CNKGywPlN=w)5)4D0aZX_&^{wVvV3U* zSfKD&zd1lXmiH?`x8e4}obs^7U*349+GPB1_7%jbtb{7m!_sn9^4128gqc+~~V6m028kPLVvAej&75w(b z_#Sj%NqLnz?05rvN_(h+pKO%hY4y6(&c|LnQ7ipa5pNVWs4BX({qdj+OUwCpRq>y! z&F^k7{iR4-`ROYDa$KkK&;QVJT2yV8-w|bvo4#_usHUJwUz^yA9N!QQq(l}^vCoOL z7{b$3F5DqjV;_|pYs9VCPvt>Yr0@)t7h@uUXQ`TS82{oqDj#0MUw9sd0S$Bb2?yAz z<4at|3sipmj9I)$6~J#ei(m+sx~o!I9{QO;3$_!PDb`DDHe|@n^P`aYdR%E(Z~YD!+pglPCZ9z zsd(gUFoFAUKiwP3k48JIZQswCLNpg?P7%bbv`Da~1@JnR1Da^U8+?Kjo%jRCs9gM3 zxQydeZo)6(1eFKlcoQe7y!2%swX*#q*3P%6eE1e?a0uu} t&#O-G2mGDcg%6o8I6HwJd`#6u^(lX!;5=K+^rDA-vl^!}hYOfT>_1E}Dlh;5 delta 2538 zcma);TX0iV6o&tuoRg&IBn?g4gxb=J4ag)zy^PF&PC;ZuabR#z89=2Kxhcg~ph}B+ zP*9PJ1-DmJ1mz}jX-$hG7iV;a7hW7^c#;=<^M&EraYp=i5|WdX6O+s&=ifVfeS7V- z*ILPenZM02uKaucX8>IoA2kNOMuhs=AfCetdEMLW`F*OKt;giB)*{<9Q+8>K<A@!(pqT82ZN)|%X^wS3lK9bSY7J=AS{s#o9w zQpSgI}3>Y-XX1E5Ymny0UT=7Zj5o!8{jI$Vm!2 zNTs0pS&(e0jadc9>nhqk=z5fTrvuT7pauDp$aHPg=0ih8(?xkxdpPfK`Vg-OnuXc9 zXj*pCBqyn{BI#k*u(UftP31rqFI{Dsz+ybEHHX;L{-9<;<2G}Q@e&48>z)|KYU zOIWW8hweQ<*Hr5JlBsd{N2%=jTa!V>vMW?6@q1NfCKP=&wJtcA;K=D-Y=Gs$4^_(# z6Pf3$L2=EzOuh@g&W^WKQI_*RYUis#F~83}JoR?||KVc{5BJZ-CsxAmclSSDEx*z3 zz8Vy}|BAx1ugN))_+y1uP%aqFcA6R#(>7vLrpX?v3f79Y!p*goz&2+iD{oZ=>#(O; zM+s~IuVy@35v}H!Q*c+ovneI8*K)8+Rl$;WSh55*1NSP=(#`dUg{={0Z{RP)*%tQQ zE+?uj7^G_rVk?GNVjd(!FSc^di=Icee|u3`sO5Z5q{cc?=66KC-*RV{ORAKs%13mvNqjyn7#N+JOyQ!k$2|R>7RP~|{?bu7zAO_Hc52#`oW(~>=2P0&MU$^{eI$f5yFR59vC73$t}F-z)gHarSUJtReVgPll~Jvq4Hrf4l>;8B8C~~ z&!_@8$-ft$Q`O)y7UBQ~C-Ne$<34=BNfZAt3%;ZZVmQ5_vD?#LTyoIA^NjNk_iV`%&jDHa%( diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/service/impl/FileServiceImpl.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/service/impl/FileServiceImpl.class index 0543b86e380c36ac1d4ce359b0683b61d7928b03..1f614e4b3094e8072c115a7fc5df5db056ff6905 100644 GIT binary patch delta 110 zcmey+$oQd=aYL$(CI{0hMg~?!eIVpuTEob|o0gfAYL%Q(nwMQ{1r%Dx$iT#?&%v}| za-y!ZAU_+^CN8GUOk3EQw(>BnV%j#jOy|(%8r{1>;u{$lnN~7^$kkwSEtp(Cxxk?T E07Wt#%>V!Z delta 110 zcmey+$oQd=aYL$(AU_+^DlVqgOl#Pg*77i{Vp=zOm(C$g4yFx^46Ka$K*+(giIIUf zEi)(8DmkMxFT2(^b diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/utils/ValidateFileUtil.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/utils/ValidateFileUtil.class index 0c6409ee0a579155497143a05a239ed048a7bfb9..173e9f7e8b776580964143b12539037c7e11b31c 100644 GIT binary patch delta 119 zcmeCR>9yJLP?%qU;T=CKqdpfyC4+9yJLP*{+kjZu$_QJ>L(ozako(TLG_a*D`)egTGe{H%;-Tnv>A5(11ClRpRt zfK=LWG1@ZPu`}B9Fmy9IOg0fcB+S9+#K^##mYI`km7GzUmtAbdxcQst9d=<|23AHB WMpH&}MoUI3Mr#H}M#srdWiKT0i diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/controller/ChatController.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/controller/ChatController.class index 935aabf6c3f0c59a5642c56e31257331ae16d58c..60e4aef7a7ccc9ac3925be5b99068a5138c05ded 100644 GIT binary patch literal 2562 zcmdT`TW{P%6h5=LY_c(FnnFukuBDJ0?Er1*C703!0hKnSBvoE`K(pRq4Sxq>%XdcEYxpp@}12o1Vp+OU91djj1I0z`i zr2?5WTuC6;UKOIW6d{^(EW_XPxHI|Y`JwKPC|AT~37e*c#SEKf(VmXziW}uR%-yW8 zUEZC5X4nyj77cbnD}lC%)oc!go}P(#?hE&bru5kJ%(+_J_0rE9is&Jzsq3>F@f3v zkwy*eNE$YO*RxXGInPoijjl1hm4`Xa22k{rt7U+&u2>GMwI^pU(&RrK0!xO5R`oI{4z_;Ob)VLq3?gv%Yc}MJHJX;b}#OV1CZO zagD&yq;N9S%{qpi`B3F?LO2)b1W(bFVW%sA)3>=CWZ5j*A@I5!Gd;|4f+|fNGQ$#d zU^6RaU2LM~Sk)5_^N&34%6^fa#2J78AFIj2I;ZNV64PL@T`r(SL23T&=9HAK}! z0zK6c8Fh528o9reJP5N7lo0^{^_+ z1Ws&26>fz)M&FKWD5!@jZlI;i!1MU6um?XIumr2G1#Hz|y9u7c-qYCY$M-ROHh10w z()9r1F<6Gj7I7p7&)~fttpP2c#ry7}B|L{w)vp;2zzg{PAhzoWb^u<)e+*uNHhdn$ zRy$7D;X)^Lx$rU^dLM`jhk>HgD`ERpcnvM%1P6{_gWz%ZC}g`Lk+p3P+0m`YjwxiX zmyjK=Kz3p)vVCw87o#}q!-Xl%5}ix1yR+*)kngZp$=A*bREaWQi7*3YzUrU_PNAcs XxH}Bc6W)76jI9{35BsOfT)puZ^)@&3 literal 2294 zcmbtW-A`Oa6#orh7nY^qLPbhNth56CxN2=_yZx}NrKK((vV=bHU}o=*%VqE0S?|m) z@}xW%n`%T86Tf0iV~O>}w6SSTjr#82;X?fOm})`|Y7NvyQI7_ObC%4TPEpR={0(c4yRLA|yv!6Gp-kJ=!sC`UE$M1cI*#zn z#2nX&^(8~=f=H*Nl@mH8ypr%3;>jH#^Fk?}6{e~fo7Xlw$0KM&lYvMS&4@Cb{?AAZ zF(us0q-U477Gu>@8Lsvx=Xr^n4tKL=Qo7k)1)I^*3?Qb&TScLCd|;*#d+3n0@0R}f z?PhuTlRw{GTD|^p`NlT}+8Ek5PPz29B?{V>ZUn7}MbVB9hDcWE^`JWX2SQP$v}aRX zF}kfMqv*s_44rwN6I67I>ua{2BS~rQYQ=CUoKN7n4Oj&G&~0FU6i=gvp=~3&iS)d% zG(*E#+qLz1hT8st8HU*~?*FRO*31~{5;7x*I!W6VS(Vfo46l0a3`0Ae^bfhW;R{1c zN^>hW#tT7OZDT^u$;>48cwSJSQ5s!SMOWK-F=H#6^1tZ1Qgfd=w09yYy{xGUJ~`g> zT^6L5GpYH^wC!e0YTUrqoRmt_F$JGR4D}`M6sdyk)N)(~5} zpp-dLpaI}VKuCrv=JVWJWQbPzUgbVRb4Do3vnwQL=nikL{rtu1hwqnv_;T&j+pE_f z_!q{rluh)}(v9-1?^kc%EPwqO!-36-uh(Q#1y1g|0zs2jU?}k2mo9J|mYGHJ>kgtC zbxYe^NG$2dd|Kwr%fj`GBr@a@Ny(yTi4ogpbNl95dCc!RhEx9{4HX)-gx>#{+wyB` zPILd->s+D;Lr;0-m-6xl;cBma^;7x1A6GwGDKCFZWFMANEA8<@m5!>l0hb~e!DRzi z{P8o&(6=!zY_}wH!mLi3>O>l$2SWO+_&hu_0>dik74Bx}J?TqInJX6Jq5cX+R!FnS zaeA>JwlSX#*;fZxJUsLQhy-_>l&wX)5wFn%2~X28;Wfk`Uw&Zab0t107IdUW^EL}&D+XP2ZJlAG}i>d;H8cTh_b&^dSy?C_EM zFk&rt#*f~|6A!T$xI@P9pG0~>Y6%R8Rm}IJi6(j!J!m1Q1Ee1$eG4LZ4t-=vfH;Ul z^!26Z(O<#o!~ogV;4o<$z>)@`9wE7@hD<=4z)|}3k;yS~FlWIOUcie4_>#hLysU5n zCo9?^oFdB>Kbg}cFr2CUrB{ZWdr3A)=f_?@_yApZNvNrWPsftHrxJ3sY7hh(C%wOW wmcDiL|BCN%z7kIdNf&7S3Vkms4Eb>kBSD%*vVWC+SCOPugrqS{;B|EU4Q!IcSpWb4 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/controller/FollowController.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/controller/FollowController.class index 1179ab3f68e1d84645cd92324add43a0b94fb5de..b27532a79cf55f654ff65c845c31f4003cd0317e 100644 GIT binary patch delta 1263 zcma)**-sNu6vn?hSe5|`7!XZFN<$HfI4S~4p-M#-MOlg~ZU`eWAx!C@h8L?w3=ae} zgFKiRmjuI;&{P(YkQm?m8;nnFfhYe1_1u|KY665z=H8Rmj%?Yl2~2bvYNzgFq#Q64fpDA20o_GNoWlDhg8$t(9s{JgoN zTW;aWHEm7WH&dR?LxSY)^wK?k)+(zWrB{_5A_`$oKv4<~qBt-veBZItA9^ty8VrO3 zlMJQWoA@m2%G5+~euUQLvB~hz-16&Zp~2WJd3zMa8EG6emW`o;H(=ee0SCjc?NzX| zN-bBg?%AZ$<@bC$je5>+byYD zd7{lsgH-!nO4k6Da`N76fu)3cwzrTb&#((7#8YIVI2ng%m$aNDi|;ULA_Q73r03#@ z9>vj`ilZo@okzz|O80n_i89JAr#ML<86*J5=@oDS6}0D359h zR^h^FU9G_x%FGhL_M?{Ps;Hwa5@u4EiFzIJXOdM%j3*7S>v+3$-1I13dIXO{nV1e` z05wE`&hjF9>2qs9jU4Fwe?Td09fI>%bqFSDkHnl9ijo)#bCkkNEpU?}6m_*FSJWUvK8?loqOXi-g;BY|OI*cc@AyXCu7zglwhb<0^U_^ouMZzYdqPQ<0iu=AV@iFEB@Sq7-GbSc_@?y9WVn{rA z@#aH#1AGS)^=rWq6XRjpf4^xvziB^x_a6D>V8BtARmS%b+uujbJxhgW$)uWrD8}ovAYYPaXnQA~- z@Y)2|rSn{M9!Hs&K-EACI%tu9M0|Sb8??+pE5ATC_JiP_fIu)sOWL~{6!8XyLsvNH z7x*F76&b?R6svzI*1i?%T(R-5B8p8q!mL6Yrs&W4Rmrguf-&U*tUx0P{1R&?#x4%c@ef`W1a0sh}BNb`RJ^lhM=~gWO diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/entity/Follow.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/entity/Follow.class index 9f48183afc12f762f8dd50a27a1dc538de1c6509..cb30d4da4a9083f8218320b599dd269019111d05 100644 GIT binary patch delta 1561 zcma)+OHUI~6vzM5*OXxhSfr#98$m=Y2~~VkL9~dVASyyd5FMaAOCg)7I)^{bME=wbI!fzuJ||o(znfx&j4ERbWQp$ zq$C_clZc}-j^Vg~vKeJb3C5K8WUw!pn2t{h5SNtLVzhTcKwW)z*4#Tf6CF#24p~%& zN616`Ng1bbT0rHTG8+xg$H$apWI8!TNlhy8q$*$_4bzHjO*NM7w&RHiy&bo0*tK7- z=3S*Os1lM`6tSf5aZd}nzIX)4UGaD{5soRU8dXI+)LO)ViX6(hZpXUgxXs5xmo#6rv74Vuwi$@1asC2@`1sAzl z5bXjLfHUwB!Wsn|I{9^_l`^_0>w$3rF5xo&-KMpNe*t^p*Gbxl+ndVzc?1Fyp3}u+lu(braSm?F44r zE)(X-gZ1Htp1HQXBbad`O;|-9tQvdLuubW! z7B6v=Iy(Y*jzLNe9?2|jQF5XOQ4CRXA%+eNQxcJ2Yu%>g#w%1~gi;Y+qY8I0;DCg? zTDu(DXGYtf6RiV2Guma@`=3ME>KMIuBBTp2VUZk|fJU}~-bR1qXG6Is+{sXZ1v7O! z=AdAdFej56qhw>O6By?PcI;0ls;AzHCTjK62T_ShN-k#fqhuxZZv#(ZTHl#Fgz2R> zqA&0PRU9=O2RQ0K;qV4d0IM`wo74I___lc+9GFRa%%-2U-Smxdg9g59b6XEs9P?b_ TraHl~fcu zfclId%{Xhs#lymsF)p?=Wabw2*uc`Xmh9Ft`WW954FmJqsuoLXsoB_QW@Roln^1B7 zAp{6hzw#bC^ME3=)H3JoBv%lb97jBZ@zvxm#HUgJ~15rlIe3)VMs^b^!I8b$1a zLi>X1a-eLC9Lpm~Wo}YFd7?dqD!KK*{~$^u_1TqVEmz)tz93y!J~W?vNtR$c%buwnESXB<`} z(Z)?wth)}dc&u5)xp59ZP{1F=4Ks5$zv}<^igRxre9(>e;wTPTmF+M6UQmo>77y6S zRdxeI80MJ-@eU)r%OdLV3OBjuK@=}BN+t2=7cfR8V-PxSQ7LTc9^9rE(YV2qkRV(8#t1UNvh4(#0ez)Wod#CNp1{|R~ z0SRJ4Gcj`Wf7(2M>-j^#@cE zXG$|3QprrP8XA?t93uxlWd9ulk1%by2FoLn3WTDcQOk9VE5cR3h0}n$b@B&HsK|hk r@Yt%2ZVkhO^f5y^hhhEf&e(f`IsV1V?Rl*Af@FhIiwpAeic_r_83aJu zk##UKY$n=VNgU?dfE*@`==s45B~`VTmz_gGD3&_SaHv delta 48 zcmbQqv5J-J)W2Q(7#J9A8ALa7&0(DUi)jrb^W^2su0jk<3<5w2CI%q}VK6NM0ALUb AX8-^I diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/service/impl/FollowServiceImpl.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/interact/service/impl/FollowServiceImpl.class index 274f92ab9eaa3e8b11eca0455de955d25e35fa3d..8b9c27ec9dd394f6fe8026f12a1c53a60cf173c7 100644 GIT binary patch literal 10377 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 A6951J diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/dto/MessageRequest$MessageRequestBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/dto/MessageRequest$MessageRequestBuilder.class index 8fb836bc5e29127c4b435e8712bab9f420d49e3f..281ac1d6671bb76d160e614edbba53e0992e1cfe 100644 GIT binary patch delta 72 zcmaDW@>XPn04p;GgT>@$ths{xYz$Uh4Au-b>XPn0IMKB8-oQGgC&C%JA*Y3gA#+yW#q8ipySXl3%-La)S zKzrNUK1M60N|j1|fId`}GrL2*_HK}cP%mb8&Y3gc`I$54%s>CW`WwI!b_?i3e+~l{ z1~J4idc<4Y_PBpw*Y=NuqZo!By1uI(G4z+pd&9_MIER9TORyL=9oewGraW@_56&U? zec{;+S#NqGv>PG}`GK(OO4^(8d|QMk(ho(ki(YBEUR?wXm&~T!=O=<;yxO*A!&l-! z1Ql(-TNXwz%8+v;aecCJEFrn00@pu?1jj6lV}cf~TTvMP<-q=hLhR|te7 z+?JNqdZsO0*Ln)^_ATBJn*Fwg8=7s!?By0$JkSg8SeV02l6L~ZmDqI~RVSG(kxWm zS0TeMNwELJ{pfZW6Em!4nAvXnIz}6Q%MIOqPb~YsR9v}aw9ZveHumMQ{Y3a8pk%05 z7zS2loswmw>iS}<+1MAsE~kxJTIb9j4_r+f=72hM38_{+U-G=+`jHv+tXP&WT+QgF zP=~Vqj0be3lnBTdC#m_r;9j(UJgFtR1sCt!k>lM>Xe-5s^0hX213~qp<0(AmE+MBDOIQfei9#an8zB!&)xgF zXwwBsi5{@T?#`JaucxPFT+iF3y1k++beoC`v!>hic!`xqhOl112A<~dwJt7IhGN@g z*Kf&VVaJ}w^=6GbN(RpveobbN5sV#N=YE}fUa>0War2~-4q<}Ru~9d=4Ds(1@)`Bf zK&*1l+i{hkBeXWC_XevT4?{t>X)-&sIXq)nNI9G3Lk`;vvuBIa+aPurH>vyeQMJy| zmmUUS_<*P(`hQ6OKHaWUJnGCT9(Caqk6LhwNBuX&qt@HSE0At_)sX&=XlBzY)11YZ zV82IZeN10%B*^4XqHiRC`}mZoqzm*k!Dr}?fGPwSIlFl059AhqBhfx|Lruma21-XJ zj?3pHJ*d$}yYNTwAPfI;&-ihS4ZbEi?H@-a3;#;b`0;re{P7h2R5t$Ap7GqR7>y0}8 z#JjKX9&nbTg$zZ5SSIK`taOBNHR8?VG5zzT{0WV(uu0Sy$>!-%tevmn8|+~EHLBDF A$p8QV literal 3222 zcmd5;>uwuG6#gbRJMNaaNt!eb4XJU#c1xFQfx0OqE@=#oi<&41@dJ(5qhyoyPP99= z)CYh^Ks*LWMU{%g1MpCYGu|m)d$*Al!n9U$(;Swx{T}O6ouPcvT{-blm zeP4KXN4C432Q|X7II3jO#U9T+yhD&DA{lP z6hT!7@P>ss)KB)THfRxq1A6%xS`cnq~7dt#RL7}Eeq?oN%l@4xDxwrhmu%{94Zp* zhIF|1$b711@HWG}^Hng10&eL&dxzntQY@!eb&9D>L1LPI;%CUo6+@boT*?RY)K4V~ zWmFiJJN!h{r0;O`ovV&$7Ao$mkl~mAL#(mPOwEO@La?7MYG#!iC~}8LT#=0`G5zmmW^^s9l3<`q;b9t zf6bAhFxqJ)Enm2s{H{<(vi&U&=olywP%ci~v#I38JLYjO{m#93AIHW=T4!H)C8t~Z zx?{LsI&UJh>sckEiZd({&fuc_ucLE&vKu&J+tn?(ICA6O)e8uvDMGa)L%KrqTT-e} z1^hJH=x}ZZU*@ohtqf}VTt8wc4&1nYPo4-n@)jNSZSE);JY)DZzGKEP0^Q+$o4BFa zkn*H^T1|!>(+n-tgpgwXL(D$nt7^O!2BOA2Z_ibtn#DH5&!eRnkqsG@VpO!j?yMWG z(bHFKqUQs~7<|!0F_0pD(DHy5HdvYXqfUGo)I1)Bf=<&?dK?*i&2TGG__TUv&|p|Q z+m!e`Dn4!!V@=SdouMa@IT&t}G(+z@^q$ZZo6r%PCUnG{2_4a9LPwmL&=FmZ=yK$n z{zS69c6y6V>G-vYysx`4Rj%e4K`Vd2IZs#s*&t!|^ZRlQjG*W8+8rW$+gg z_{-_|SI5SW_TJzxC-ASQ*XP>U_)#Ajd@T&u=SDjI>e%>EPa1qJ4CAlkURwRv#>S8O z+u*M!@IS?8)N;Dfo0#qQbn#CVzOOu|7JZJ(G_KINO5+-hRT^tAP)u)LeSm>t>N)rv z_l=(hHMO=Y5Y}sbyu`b}SzZb$UZznc+zC7ws^LaoSHMGhXUX#yG`_-PlIF=aOMkID MlzAQBU>7U@0#;G%)&Kwi diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/dto/MessageResponse.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/dto/MessageResponse.class index e373231bf739a10e6297bf71e55e4bd7f99de5a7..96c789a47fbb747be1c38888f044638ec7d8f2e1 100644 GIT binary patch delta 2352 zcma);+iw(A9LK+Bc4zP13+;9*Th~^pfkj)}gv3@tU z&7N+))*S!oze|?^+>NjO&;)XFm7cq>^*60Cgib8?V?_ijkrRmT%8%rm`tt+5O>6cI z_6_t3_($^n!`)py0=F)d+d`RyWw>h|d0i1agjI5>r&b)1R|9)xTQD+l)$^w=4~K>m zF&{n&;ZuC($0_Cbx%@f!qx6Kc;*4wzXT9SB8QC1p$o=73V-0b25LgQ@)(v4jHf)AA zgolT)5u13&=Iw|;Lkw|xDew8y-dnJB6CS~%oxE)8M4ojFfx6!`EyN-XA-mBJp=SB=myfX8_+9d{>M?J1i$!t~32g9xvksOGQxByjHH;AxwkMVf}Z4Al`E4%n2k{28W z>W(*j_93?UsWSdkR^(28&D{7tyA#-W)fP%}Vc=8u@jITQ(vicjc%I6~<9ZPlz`BwH)D7ss-;*1#pIE z;5bzfhqzt6h)(QC_K5n@LVCB*;kr0jRZN5Yr@Geo4jq^9AmD6JRvN5M*WlXebS}sG zm`%6wNvw7je#QTGy0rT2>3GjB@)INmxVGD}B*~Mh+tbsnFKU8TTXwY~`FE;Q49Yud zZeCv;tB&{0E&ag!Yf$vbKY|$H(Uo> CCK2rb delta 2358 zcma);+iw(A9LK+BW@mT1v)j_kc592ZEl6N1ZVD;UD%xlwt#ZE?QItYKxyo{>D2_Me zqJVI?UjqUX(*#I`CTK|T!3X1$@kyTe1AOL5!}rXY?#}K`vVAzS-#O>}KIeCS=XZXy zk2`L3#QymI-hBWwapQJuvKgzP?v3M3yd{sA7db7qoXZoEnV(CBvFC)v6`rUcYg+-K=c=gz7d$Ws0G&W8FnbZ z4X#x$)C2C&WK8i)Gwf3{tn|-_C_6*jxt%GjV^3U9z zkG}05KUKot795_29KQ^{(IHa6$2tX zTT1xP<5`V2dYF0DtX8e<>FcmUL+uX`JqybmzFD0TzDuajVMxy%%~R2eo!G@VB}E*A zEKdd|;y--MJ`-s?#%`(*X5k-vLS?bM|BX+n!i?-4?4gQa8*bt=swj@)dpJ}TIE91w z9J{&^!(CpaFW710R|e@zsyH6v4SYqFz$0|yYpO~XxmN6@suE!|;Tx)P*eCbau59t5 zu(K!%A^Pe@L5jNio_xvkXPh;F1wjA+ diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/entity/MessageDO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/entity/MessageDO.class index 1347a1d518e5f12a98883a387750af894a7d6a18..84847aeb007e5d5a9f8390df7bd1e5cd7f82633f 100644 GIT binary patch delta 1794 zcma)-%TH556vn@~ZMpT*(n5tsQ4&Ci78PIdfui^pQ4!w{Pzx4Nu?huzTa0fM(ab^@ zZitC)OpqXGj3Mfhg(j{{j0+b=;~(IPsNZdG;P#Qg;{WAQ zsiJBbL~L|m6Ut?eGEH2NLrS&$r8wk##nWGA8Mer8>fUr$3a)9mjvFd&>Wgp5Z1qE? zfTKJZ4799m@`pl!kcvA31+qi+$|H8S=#tI$(u~dIJ0VcP*b=~2Y?JTo3&WM1F6NZr zx6StoqK`tsc7CQrCN)%1JE9A)13Nj|W&FCE-+U4Zxg!?z66y>7Xa=Pv1J%TkW@Ang zk~5y82lK#GZDW+ zZ=poKi%0>3uMcAT>L99hzU)i&ZW=3Mv>y{;9!wsCc@khX(PT)sVo77};Su;zOIjv= zqK+@Nf*JUNqnxwAhtCL5S+NlVsHd{=&gex0RSKGLAB|KhTF{AORCYYT2^^=IgooUD z0=2WDVGtX*xR%}X7G*d|<-k|uB1q-LcVy!fRT@sqA8A!#qZRydwyfL`vBlFb<9YQ? zwiUgH{W*pCiZS_YVa zc6&uQ_C+`!z0G)x3gc4F^$jAQ;bSaf%w^1HEPai#H%vL=ZwvD+o@;n9Kg5a)kz8Jc i{y*VMrNK*#%OQl(!5KRTR~c7unAND#zYCif+$g!EM1wna^-*E3Wx8#R$5+*kmj}Dz3<)Mz27;f=lv{sRbrm`Jv9xW z7I((X_cg1W)SIo?f(8N4pl`t65DIqtBJF*VUaD}!7mS1ju1XGVr&KLmQiaAfeos52 zb=VEKV8%sUG9oIkzbs7~KTB=KcDI1l8w~n~8v?#?*dI3HhCqq*(NthAZVrV8Muv>I zC4Df}I=6Cf8w9rTYV>0}nj~vRrSMAi8QIYtylLPKz>J;zwkleWX0&j$D}Hx3e@Vwm zXyBz@%aOcBU-}Nlw-g#AK$(kz%CRO6iYAk6YLb0XQWdJx9Lb>uWi14X(nieOy0qrp zYLa6i(j2HVEht9~aw?#}|KeSPjcLr~sY$LykF*D^(84R#Sv*aNJjD{8%`M~-h$UQB z7NrRG%IOsxWT~oPANDJ-XG?Hyjl*e{DGr4&<7=EAZB%#{LbkJ;qG zYiLTbRa!Oy_n4|c(;JT(;7NAwN#P$%&(B#J-+;8O)*sous+(16}L|8WiIzj&M$kQhdQtDjj>t1ddVZ z`NSLes0;|;A&yfSF^s$DrZV9X25^EZ1CQb7r?Z^xW)h7!$w>>|qaHm}R(wMtdZ}#q zjy&{HWujlIu(w9zCDfs^rQ-s{7Eix{=asXrFZ%@3Yl`Hql$`W`?TwGpoNO~r?^4kP zHldCfFC>vQnG!VF5b!b{G%a4xW`Hz3o@06R6_~qdeR*Ieu5!ZJ_s;J@fr{cm|{TLKj#Xgcv(nn%{Y2>yKsKVfWpM4=jbq_ zK+X%;$QfBctMKIdsesOf8XF9S(8GTY-jWjJ-d1s6btfn>0&x_c)vBVsc2}xCnEV+N?4zh}h1T?Qu7tGmy zEpl(xPyNuPgQ z;4qu__-V<$fG@v+*9{)6Ypi-ymd$3z%Cl@j+Pc%;C;tbAA&r2*RElQoN#r#p8fq|KU Z9jK0pfrEh)Omi`C18Ft}Mg|@R1^~E?4O;*J diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/AbstractSendProduceTemplate.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/AbstractSendProduceTemplate.class index 9d10011d3d88b0d6b1fed312189f8a0f12bd183a..cb56f9db092f23896c79818af8bce10fd752cb89 100644 GIT binary patch delta 88 zcmca2e?@-7KQ49whE7I?0FB9wOlp(ucywgCxfqxjdUzPB7^?Z%82Y#v`WYs$Gfd=R rn8Yx7Ge0*I!=Oa@5+)9e%9 delta 81 zcmWN=$q9fk006;_0fi)>KJ&60ORy2~qYZf9B6cC973&clm?wFX`&Du1(RO7aqY diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/BaseSendExtendDTO$BaseSendExtendDTOBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/BaseSendExtendDTO$BaseSendExtendDTOBuilder.class index acad21c1c6a86637c402a7de3adeb657f66e6c7c..e01512b4d88d0e21919f99d7feb573deac19ed41 100644 GIT binary patch delta 51 zcmew%{6l!d0v2Wt2D8a!tf_+hYz!7$43-R5>EG H15OD5Pvs0e delta 51 zcmew%{6l!d0v17jHU={;26F}rb_Pox21N#|$&##xm^m11CNE}5U3{CBh1HaSk->WM H15OD5IzkK4 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/BaseSendExtendDTO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/BaseSendExtendDTO.class index c1f317a86ad82dcb0a580a63bec3979fcf57893a..4a1f3d2a1bf3f583cd2143694a17be127f505b85 100644 GIT binary patch delta 71 zcmaE(_(pMq78^4ML&hX_A3=ULhAb|IY=#_mhFl&7bB4Uh)@+A1`>;22%4RY!GNd!) ZGcYg+F)#ty91H~voD78w#SEnkk^njJ4R!zk delta 72 zcmaE(_(pMq7MmbH8$$*cLncEOJ3}@PgE>RaD%p44PlXcmAHv6zQbIPVOFf!ya aem$0-OFwOa!m@|LTHPhkgo6X9 z=vkw#_ZsfISH@IIzp<8v2GUrzaTO~juE~|_`n&m6|Fp{Lwk~FTbyv@4CR+!IkcPq` zdIKJE{2mVCDw4H4cJW>^SHPa0oXLMvL^M!i)L>Of#{USl$)FEM_?3o$gQGYmF1W$) zIFl!WLOXMkr|ymlF6#Wfrl;*vD+vW;*%cU$kR);g&M~Ic1oITF52~N9KyrdQ7)?Eu z=r_%B1}aN;n%1D1GLamVMY+xdWPbb?84*_n1I9#!j1cuuWv!Q%*P(UxU$j~=FXXAw zjzIqfDk7Sg{`d!s_-`5ZzCc?xvm={H0D0Uawj>`f1ruDAA43Mz^pZNUGQh7rDL1xov$VBYnH~I32N=!#pbn782FVL9U2JdW&3^ XXjgE9Czp2zP{d7c-4^b^cp` delta 1051 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

pvn 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 WQ0d|CP~=GQ=MuB=LWJ!Qzl1;IGlEJ0 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/domain/NotificationMessage$NotificationMessageBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/message/mq/domain/NotificationMessage$NotificationMessageBuilder.class index 87221b378367cdda1b66d6e3185b6d53ac84b634..4b2e8055fb52f8ac7d2938663e7e14f2abc60cad 100644 GIT binary patch delta 52 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 Oj^iRHSgOZFe)50O_qCz` literal 5496 zcmchb`F9gl6vyv$3r$0*MNk&mRJtis_9dk(ElV|}rKxoRrPJg!opv%4W+tr_QQ4$N zDDaDQ0b~(896eAt!f8R}5AZMW4=`!^lmCIo`)13eoiS-S`UB0p{qyeqzWeUu_rIS! z1%T~vrWo=d-vb3cD1;&gwuYoAE5xN zX2l4r5-XFVItC7GY;W;bb$Fo^=6RsZ2hTw{0~HP+SQV8-HY`OsUS!*d5*Khqj}i}s zh@vo1Q(5J-xYICg-_QGC0W75W1nt^SWCr$B1|&JcDlwTCBi%9=B?FS&#}1G#Hj1n9 zF-}(5X7g(=FA#rKpqK0CSb-BGY*3}+{B$ob(v2))V0)#ly``&{gj5`o)*MS?z-gs6>0lxQHQ#*v#b6iUSYEi9D!j!igl)nRFqR z4ni@+BvBz6N3{=XD2LDFXz6Yy6!3K)tf3~GBk+A1pciUktq0cmU_ESLpe*f4-BSz{ z)$t;))-#Y_S=GTn=gjsKH07OrE4rNh3=}j-VLZe?9JOQCnP8`6%h&6&{VYOB5xQQ+bpM-KX18@8ZQUi?P_~s|mfC zi^b^KW}qs-ORO@$MIsoJ``5D)r`S3xY)g#D+8WpwgHtrh$%81y#L(r$FHaKVBZ<40 z(90?pK?a{*PTskZxcU_Xo3czT8!}heT`}I&yn^c#_H#m9y9EB7&2a)8?=u^8@#U|p ztwmXci4v0e7`2zRf#lGo#244_JZz+0mKnRc^&s`|_FuoAPmPXE+!;<>x-fZmI5qku z1FJF}V2NXvo@gUS<3v$+OW{GJK0KRfoonbtA9Z7VXJDyA@`dAXqLg zqq(wuGy~hR-kJ7$&OR0;^T+?eUFSrYsbQMpWMn{&V=^*KtZ;xo4vU%c2#AG-Ke zjNc`&5lfq}v=`g+@VB)3Auu(M!IKB$F!w&z(yFU<8K9Q!SX`AH*AG%Si*7O zhdP{bJAM~p{)<2L_%9E3z)tNuA9msIZmelgpb_>Q0!G1A_u-iRhahh!G-1;l3cLvc z1)8nm0a|Q5IgG3Z)wbX zfii1&h}vPYznz8solN$3HFkV1GVmUqOo1T&EOj;fVn@R_py3-`Hj&lvhj3$t;SXnl ze?JrcgQA|;hdgnCy~b&qLnJ_~hkCUu`9bp;46T7T71 z>yiz;)B-PsD2QouM=f(pme$i7h?yHWIgQ1E=Uw=xiAIkzy40z7P&bBn;wFE87XE=u@qCyT&mf&lL8apVAHqjCI}PylhUC4~ zW58C|JObtc*6P7s50dk3@Lo$eUKAf~H_mAxl)*6^NUJ{9COEGB{X~<|3S8_{EPqA` Sw6kymPU0e`XsE|Pe)=ERfoWg> diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.class index 7e599743f29e1edc244ccaa7fe95785c642d0d41..69d29c3df42732a41da99ce55c21b7172a071a7a 100644 GIT binary patch literal 3883 zcmbtW-ESOM9X;1OvopIM+iN>^vP~#0xW!)E9nwNe*Kug$d@ZcwBsMOjKs(-@cqg8n z+3d_3MdAses!s@B03lTsNDv7HLMxJ1c|h<|B>s<7;eVi%b7y9~v+M1LgtW8syZ4@Z z?(gH=d*@&OeegE`tJu$D1Q`vA0To$+7ixafbUXeH$9k>SusqLpO?EYX&#e1R%kj*X zwQHN3wYKlNmuX(LZ+7e;6v&=(JSRLYkeOfD&O=8|L*BqB41viT*1l!BmbYu3@qO2} zJOORray$0Mb%ELWYYWvwh?N}1F`=PgU=mXTD?>bM`t^=$2WHC;LbD$FX4}4LuF+lF z3#D^cI(GZk*{uzMQNLZc+h=ZVIZaz&`V*ErVqiwDl~2$Y{ZM*w)W9(m8KPXLQWq$s z=2v}hH}dtkffEun(X!fHKXIc{&y(SC17E}w0(#Bz&fV--uE5NEiezKwhFuF+7OqL~ zmkfLva{{?tJG`8%I5nS6QM6_rPva{Z<_#=J>OwDrF&q75Z7esCoQnpQB>mex^0pZKE460YA*bf_an|oKLXRf>VjHvgZ zc_bbjbY~_(4fYozc;8_#8AJQ}CepCT%R(P2>KfY&t=itY)k?~!UcOpcKgWP7+0dPg(rE|j_~MI_|IDi0;kv-<$IOS=>Xs4056`y121ua zS0~XU@>=72j38d~Y`@Ib1-=E}Go|++O3M4t?qRHyiQd!iMAOdje;gV9>vUie2Bxvb zmJv_HS)60*JfAFkF7Pen-IXk0vLzQ#OMk`eUucX#5=y9~=n<(yiFjcRA$n|(XyP-8 zc(n~78XF{<{7fQVcteP$2Z_=-8Xnq3RG3v+gfan;Te!lVI>HV0GhAg~ z1|__SOTr~6U=V?HwFr%$S>tYUN6#lxj9r>85wi>07>tS?k*#g zk;<48bzK=?7xL4TG~9aP4Zby!whAk!l+~!nCkiVKmRK(=-iEe(A76W2_Ls_v94IQu zh%O5s4=tC~XoxkBCh0}BJ9M&~jfS!ZLsSB1ofuxci?J_B@iJ)QReYa;s4UM9XpJ!4 z*YQIJm*Ek+j@M`@IE`oVIxUq2ISPwbHY&;=p?}N{g+&p9g@6zrb7HSOB0FZFb^%?C z(%+T9vME>(IoO+kwSI69KV*PY2F|V>)Z+S3cnaeOW@Tw)8Tc&oIr#wJ00s};SPt>U jG&|%zQBaQrWDnk-*Rjh1olD)|(?E-@Jgu7u&_VHk2mK&r literal 2701 zcmbtW-*XdH6#j0qn@!Vg8wv#?KLjn>rY$Ri0trQ-{EDVf+FJbapts4LX6a_P?B3Mj z)o~mjeR3RM9Gy{KP-I5H;la@tobhk)6{f!XDB`)-&TZFP;Y-4rp~tMa z(hz}UNFB3XTOMafj*Kq!AdMaa856xQ8H!!->Rz?sh`?I$0%=vHXZhlaHAROAS1RC( z4dGusHGhGSl}oA0kS$;4tK4$9yJVF;cd4k3={GT;&gfADX>X~TA?qd+gV@ZFu5kDC zl?HbhhDKuBFDzab6x({cnnQaoh0L|=cI3wN({N#hAZv5Sg-?o(Ge$H*OOe@gv&5qwmmC& zpD!&5-&#Frc|5Qv<1GiPE~+-S<|;K&=LDroTROx!egDT#?|=JA=@bpuZhW}*-CZ@* z!hiWjjk=X4;$VA-p1XMy{+nny-W)@))hS^gj8L6mkx(UsiQF7XYP9k0IV zEn8=WD|{|RmA3Q*>zUrXLDSI%%I>s~HLp6ueO?z*_{7tsP3=@NFi(ZmSp-TVPu7Ib z(5u25ZWXWDw6>@H&Bb=jG7N<4F-zZ^gJ?VKekUn1t^$G@3C}%K@^9C-ca-LxrUf0NWSG{Fng(SiXKf^21^RF^| z7SBWE7=oVTZk1ZaaM|;g8!N?_=20{;%VQhoudawL?(f9>Ta6%QiXf)Ap;Cv1fq`F1*oqRsQ-yThwu`T&Cm)2s6>Sj)K_{W zj5=PWRac5A*6~6MS%+C|RjjJr0&!@g7dp_H`dTI!bsv7Gw@&Xuws=gNY>K-xTda|^ z>Fn4w7!$X#=RIZLRnXKzPK#F3N^n}**ggnn63Ecn6wyo) zmu)1f5>kow8nj1b&`31KNGLG&h@95v31t|9-g0R9Xpfu7t)rGt<4hFw5qhgG(60hk w!QG|2qVw{_+d+R6NxU7X#H)0i>+D7)3If!!7+$B(MXDW8xD4}Hz?;bZ1IW!X3IG5A diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/req/CommentSaveDTO$CommentSaveDTOBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/req/CommentSaveDTO$CommentSaveDTOBuilder.class index e85115d90a2e2c2d6f0dae9e5e9bd2fb71305007..257b14f1b529496c08c8d26104c0f973bfedf70c 100644 GIT binary patch literal 2325 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 DGFN{R literal 4812 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 literal 1054 zcmbVK%Wl&^6g?B$NeJnK&=g96w!k6}V8pJ_f`oXfQc6o(b-@NroKZ8aJ=5CbO8g2R zz^V(_fW!j9mTy9cJF$i6gAJRp&wZS8Uq60*`3m46Zq-nNSAkzgfHK3q(8N5-%&rn| z!lBSwMx0Es(R^THp)}tYJCd){vmp;MnOcVOveL>vV(?n+?Fy<4i)XOJW{^cP<@+YJ zd|(Yvx|6BDE!|X<; zt%~J}K2)h9?#EgiE37h_s2jb=#C@~JUq~$zVda2Q$}~R_k(U`4ajHRvz}TTo7{)fO z2=`XSeo^q`sJB;hheJK{!1#i zQZcnnlO>^iuH2NGCue%s6^8{{PKmAtbShLF%7i8eaYD>lJDW{MvMqEw?-BS%-S4QpL*N~CzoD{vyYmU>M$kW^An%mO ze4bp05DhNjG6^(EV1|TCxI%d~I``^Nj8~|eS;7IMu*qXJ`R)LVn(h;UYdUbnINj6D zP3HlBbOTazx&`~p33i67xJD^%bc+SM?=O#<`WLxhke4X$I_4rxy=6h6&uVVwwpgh=ieNLX^2#2BM4#E^{v%mOhWF-DEeZUY0eGg~vgROLxz2_4-#Lnjtq&UDTbU z9*cUZkI~RJ-{rQ;y-j<0eOpu{qrPd!bL1UH-IIm20qUoL9OW%~i!4Tq6~AV?4S(C= z&nsKp^Mq^H{A$A$pRjB*vpXz!rtOjVIg8G#-+HBA*V5w_P0&TC zssw^dvFg+WqcLr)#KJE774F_QKSi6Hw5UK+FvAJUu$s|GY;X5`-xb`81g}_hRe7Ob z*}KGRLRoBEbX|dY1kMbd6gS-(gVNR|kbP$r*78)O=^V{ibca4p zq>cUrfx64xhFIQUbTRG`omIs`TJ10ra@L}IRAO|j##Qio6)vARatpIia!-bg{*05g zIxAsrl*FwPonEIk{&&Adh8m&_zc4!S7+H+WS@3q9&{=oItmpZXO9yUIb-?v&>;8^C zCp-}#t*S+2|BAEeaoGrvOb@lM_l|G6e84a--T`w@$*+QRui**M>I=z8VZUU3^m#BE7VH2 z3~JWw37T`=3PfKdcB=0C8CDqVqi^%XX+1|3b?w0aKnz$5=s|;$ z%fnEhTpi6kog8g3nn>+6YYRErW_0?^qUhW7e(4dcz3A| zHie;CO<`zNQyBWx6oy7Mg`rbTVdzj(7<$wch9)$Hq2EklXg5w)Pw`a7s!twL8Sl6Y8Qi)^-4Rg{gv!~usmnj% z@dKt^)Jip~MGO^$&ABWo1&VE`g@2Hiv-l6S&9Bec@T*1A{*i3^54X*)8XBW9o_O&tkm(+=%$Q+o(UPPBL0S{n2GEhriP2fEbN8 zp-~sn)fUa4(;76Y61sspsVe03FLdka)JqhP3($G;{vXn;1!p&c6g8xK=I?f?J) literal 4773 zcmd^DTXPge6h58XCUGz!fnc~_63K?kfQTrYAR!1umIO%*A}V%v8#2l4^wvyos`w{9 z_#?Cmiz=-0+46t*7ksq*db&56O;1s4+&3S3w)^av@0>n;&gpOWkH6piMntppe2}`R zyFfi2^->?B;SIjU{g6j5{H3)GQBjQgW`ZbCHyCwK6;}tSp9Tsv=+QgmF?vvuH9u^~ zjetL^tn(-mpA;)SZ#JmS&ORHXekqT?Q&(4wI_k72s$d#ZlQqtp7kUM1^Bd%~kh zdLO1LvEWLq1U12E+&HVS@XNBo!`t?&baPW46=@o71W6fQGaAk8?Ut0G;8Ci0-lGdT z3jNyOMP3uyW8b4oS~#eMb6Z^TSc^aK=n8#^IN^*kp)Ussf@fpgP(kQxNvS{|F}eoT zy&UHtU8Rq827SWl>>>G5UO_M9@3-5MQS=L9=rxEa=r$n~y8vJIkZ*vHfS;;IoN{qGyh?SRje_n4Ta8$j-vmsNlcm4iquHfn1kUg2;_ z`=KjwmB)czTVan{58&g{UQOn=Hn_o^WGHsr#_$87)@Ah}kI@^Hh_R7M)~wCv&Kusa zR&r{t^Tw*#Ej8=7^Jba{ww;Eh&f6GkO~IG-W*Yuz_qc8RztlkI{q9}US2m;4)Sj_X z68%b=jAV2GKs(pI%~RZI%d!zy#GOFb>uB@lH6-Gq)(6O3@TAEubVnZ zhWhBML3%=87wD<(*55Fi*s&5sTXIwQ#+Yf~cX&m~_$8wsvN>iI4d^`{Rl#p2%2IAN z>Lu6fjHKno6`XF4`qPZQ;atcw$H{pfhRcBxrGEO3(eJw=(YmyBYAUGCvhyb`VbarW zN~9M%Oh~T`0n#(Wd(v4e-O-|y<><){xzQ`bTlB0+Oqz4UN76SO8Zyg@jJyS~#&|yD zNg~j$4(4v9Kx>R9ouK3$NP&=+$KS3Bre#i#PJt+O;V$2YCm1a;x`9<6K0n20m*$*~ z4D`~Gfm}K=FiS@UYU#+pEgcy+r6U8YbY!57jtmUZk%1sOGO$DJ@MgNtxt4toLx!IN z`1TfNKHg+nGX0v^&#C%6o;pZ`0Nut@JF8#$jPBqw8$yP#-lgsos02VA?85Z9U-0+| z(=OT#HD**S6qN0`+|vd$+VC#?AzH}8-`6(2Ib(~j7p?w}=KH_DZG4k27Jt;iAIrx- z&^ErwJ&Ql);E(6yA8H%l_w((8fTl`4}zexA<@Xxl5Z+eKuFFN=a^6Tqd+xVs*S$w@{ zt*=Y@_!ry8H@(f`>qRU66)ICt+J7Eo`_JVRzq^h8qx&TO>OlW7ZLWad)pL+oi&tRr zX4=XYcUfMdhp?zy=yUW*-63awrK?Y-U!nQEqJ0?qF%DoH!Z?g^4C5rm8H}?S=P)i} zTz*a0^4q0xX(qSxenF3{{VFavZT~v3{ zYtPiW_x{_u6F`6bxye1+-rbF9xWR?#9?U>gz(1vac70VtedENckuzsZZk#CKnqA*8 zYy6cH1iH$#w*2sL^N@adZYDDu0=Mv*6UD8t!3RHY z6hlYVU{?&c;r5}BaK}*0#hp>y#c=_6^l=8j-82NP4D)CxOfpDB-$P3{$wI@uG?Z8w z=F?DSWmrH%7j#W_YatEY5YY{#@$bsVeYpP`*rHez#bV{l7GsHgA}?INl;3Z|GBpl{ z?|T59kOdjbX=!Z*`QPfquQ${!<&2YU)VME)r0zAwo zN-Q}5tFW5CiJ+@N7x}u4fuPhjuQ=trL6#2WnjI)h2^t&+$piBP1|KR?P8}AXY79ci z?8A8}K_lWI$w=yGCiP57s)>_~pkgzqcY7d-snRk$(vnnaCiQEN6bFsPwH8aIvl&#a zf*SsBt&GBG3sQxdG$f@<*XfIHK+w48hNYZ0UYo~7Y>aLXvjbP81Wm$ZWT@pM9|#&3 zU5&-mrF@?aYfOdn2%2<6Us`P(y&`VIM>TI~S47phG&IX*;$K3nsyy z&|yt!!L(gohZQElp44IgbO;$XlJ+v79Sk}woCJGHgE2t~2`)}A!ID!yUvz#+68~vy zerbAqr+!N5_%btI!ZUc*YJql6m#-amI=_pVkLR%73SXh)C8Z$LbEm!VYiFj;@0P^h zpsjy%_$$+NUqW{x1$4f0lUNeZTl0IQ$;bIdymFI>mp0-B*wrm&xN(2zsqixlM|6AP z>4gjFzOuDxTe1_q*fPXFs2AU;ZA_a?Z@vr{^95o>%oq0C%w-_TQOy3~%-M~IYBOTQ z7Kr0$W`AHqxj2L^e3pTTIEbxOb_^CR*hb~R2(cM0R8BMq8QZB`m?0LSl`0dJC@eWm?*oA7mOVv>vX5+Pwsz@9|5#FN;W4}DAq)F0O&t_A4?YKw{veJL`VepjQ z-%+_6nHwmK{g*MhXZtUu6Km!>;;C#l(FGcCJuxc~iJT*a%7*En7i_^6fssRfW6QLQAZEjwBVKg`@3Z^KRI zy3T1k>3c9JR=u$UM;SOKS$IkG(%qT}NwTk^wy5n$_Nt)8nqA?@b1LQq+6uQuE!-Te zl>_JY9jn#s*9kT2z&Gl;IcEMx@GZWh!Olntd{33h-{ZV~z|XwPqf>&^ z;2aP^MMXS0Lm(jm6N4v+q5>YED2f*z=s#9jRvEvU>1;N$6L(WJnQ!`a|N8aoe%-xY zlQv8W?EAN^9l-hcGX*X|tuCpxjZ-`xe=bYsWMD3C*4sT{`AgrDc|u?3$!*&29plf* z_Tf7}PT>0#{9si2Q9l^iqx%Cp^_4lp(YGru0U z!i8)E_+c3On+A_zxDB_D#~rwHJnq8X^|*)i@{pnG#Q^T5A?Re#Xef*`Xhh#fOE}I# z!~HZAI~g9Jq14H+fQBI$8t>MFGz>>X8A_t#%Ev-HbQN6nc(@)7#>g7*h+df&)*j{f zU3kolL(KRd#~`F(5f;<9gjGuTHvUp~K_<7ry_H(9l>dEvgTY*;^m5Zujq_B?GiWzz zcq7}9Vl;EbG%L`cv&aZAYhVRd^4*(sCFr;5Lo6xNPAW|^BnqY!v{onGP;Yb=`CtZ@z zrJ1+^ZYKxixDgA^kk5=JHv;EvqXk1VG46}WZQ8S2E{uwIW%*oY8 zRti4?HrN_GWx@_51+#Wq1v5T+XZX{~vl0E0@yyze6)Z0f_Kbop>KBU1i@t_wZQ%+Q zjDxMUV2nZ)BV@)XQn3S}MwY~GW6pTZr%nRJFO1_q>&)+;9N(vo6NL}k@fx0U<`*T) zw@xL+FShgXyfeN;;Wcwj89Tdke0=I~Q~c66{yMy1tTKD}%aU|oQ)i^&4~gTi$BRz< z@+A4{q*eIgad_<|D@*MDS0u|nok)S=8z0M5M6KQKWoP_|Zam{}Z4!Nj|IApv@zI6-!c~VD5-=NBuIgDs0Re{WBRQ6B> zWd&|T<(rftS%VpPi>jZr;$pl_RVW>(!8=s_IRKeR!WZuS~^$Di{1R86U6^oGMEuB7`rf zvaz@6=h6oEpx!xgBzl}*%b7R!wkm!3(7{@y8JF>y#%DU8>)J3ITzO8hv~r=!@v`gX zknES;7R>9;=Npi;$#GFP}7^=lIVuL5nTB;gNoz zd|_Ts#@3k`n~Bx>^~0*BTFLrlub#a4${gh}`!9&E8FJ7C=Ra6~52bW@+Tzj)#O0K%tHuBPgYXF-e=)gorqCnvDQ$VIoiLiDiwE#s<1T zA?$0QfutdXrIb(_NTAs;l%)%_bl=aRf7){*6Mpq~PoeaC^WIn^X^4FI(Q`c3efNI% zo44Kj?vvjA@6_u=w1oZ^r5dUYQ$V30g%~w%(2e)i9(l(>eC1%#NmolpD zT(qft>&OsBG2t^N&zjB3mwyl>A8Ua==RKnSN>Njl$(T zh0dqXfZYbBL|fTGCUwnK*W>LSJ^V z8~A?W%Jm9u;L4b!*G={mX2GlROl+YT3Gr#t2ftuukZTR&{q}u8eM~~ zj_CQ3K5GaIj&MswNvADgN-H!(PAUS3XnR;@4dc+vh zd$BWyjC?w0j&pCUUg7wog%@_D`my1KSU7ac2ai8pc#k7Em!C_6cxx4VdDmUY&?T~(B`E&as2KR$Dc2}unR8l-}=hQ zBm1TwIRyFS!P`#0I3?uiokvgZdeD&*)4LBAc04PPi_h;V9D7;H=k-kQeO}1uzn;lh z*Xx*`O?-o4X4rXn&Sz9_@=oxS>C73UrozEj3R64Z-*emhJD;1r>lhz?N8!FV3Onwf z-hO-Gjw2_I-zzN8Fq-RcdggFp`-8|ua^CKGtnlj8^sb{H>^jUSAR?k+z|0zJCdRfH zxedH${AA#naFd=hd0Q$2_K1o8_6~gN!wCyJSMHHicG72;G!JB~u`SkU@-ic9blOr8JBv0Uc2^trh&8lU&moD}Mh-oUa0ii>N|Lp^cj3h$PCCN=f#}J(?cTSz zp~YX+0Gv0~;?>ZUBv|YYsNA$#!sLb@XW}4{O|j9X%u^uJn{0{1C)(b0H&1rXC);si zW|bc5@^r!!TK0&M!&c`@nBWCM#L+lny`%IT?G3`_(KI;_?}?5V2~?TV0hXNbIL-yK zOdAt@k!O%1`y-pe$d7M+kV>Q5j0#V&!ZGP6TEgTME|^PxXcDV+K!+a@w7plY4Tk0w0R98Z+a zW__Y;&cX?|L<%R|*$5?MITuREk=8jjG0K=DyS{f2%Urr+^%`uB_y#Uk0v zPFkZzQp|@qx>x9F+sfU@Xty^dNT3+(N#MkR&2L9Q>O=krEBOn+juuwqPpT@BM;7|lO56nj;Si_Sy^ zR)f zPuByCdqyS84KUzRQE9jl23#sC4PS==cM54(fX`71@b`X$zIip(^x{1H@Cb~Hd zTn)ciRMLDK23#*H4Y$C6D@LW^Rv2)}s5ES+xlrOV2*7Qay(C%;pTVwU#9o3>L$~99 z$Wcb<4#>Pi0MMOu7e4Qn)_d^D_(h|F=rDy3!RRHbuS$eU-iIh&PSjGB2xYzxQByh5 zysAXF3HcDUmJ^*>l?XQ^AEJ(OqI0Se;X36*G`F0nyDAZ`UOq(g%ZVE;h!adA~Xkj_g(yBzbxcLxumJ=_tJe->%^J{LY}`uUEN10 z>>q6H0wIHq2cpPy_rouUS^~jd8i5bcgMRe!+0u)ADd~BmlzxXleba2|Mb?${yirR3 z5IyYI`_|dgi##pq+bih5<4@l)TY8c0CH-j?^gI3O=gyX1oEeh-^a}b%=uyAPnLk^4 zaq>v|1r_wW{5R%Vv!xeDm84Hp(C_x&ISXe?FAh9O&l{yX=ez#&owKDE$EKv`jZ*qO z^qAk=ch8ny9KMpir-B~eyb1c+%?NlEN9mF7u4gG2IMDqTMfOmz_CWWW6j{Bv>nJ6i zCWH&tEXF@A(DM$()WF-+w4an7HE@)^;370F2#BVI)F8)%-lpdL6jy_4$OBrcg#lWs zMbt0{MIkw5VFgK~V{+Q==YGzZL_iUsKc=2PqN+$pc!c#Q|EW)vIw1 zs+XX+TJHg^(i#9-r8TMz9MmX54QitYG^jNJG^jPJO&ruLK}~A22eeLW0cf4psL37j&7Zf;vtXx}BFnuT% z)Xm}S2<@fEQ7pBwCutvwC{%guA$kJ3TIyo=(vy$^_%<|4PeBUOYBoYoLkdxbrRaN* z!jxlu^bDj3J;W09eMoh*i_NEJAw}sZeN6iy#ppHqH$4YQp}*66^aDt7`X~LFo`+PA zI_?Pl5K;pR(Lp)@sgW(D9rOaECe}^&(2J0o+2yEH4?=2TYssKPkXo6AZ){(J)W#<8 zrSHp-+SyLjtUrP@hwVXKc^Fa$-axdS65+^)R3E0uN7Nps8vI4rN7Nz2y8nkrGWhnE z1z&)Fl`doZVyp^3k%K(y_+omCR#E+m1KF*9c^$kD!(=Y|zA|>kzvu-GYU{wG_^d~0 z_cZoi5?JB{@Vv&}5rl7~v3oy-dydjquH|}73vh!Pkd_D!YGGQc1sxOO*>Q@fLD#fQ z3pu9Hj0sULy!y4UV?uySudr)csYM)9WX6QB7hbEhI>&^FmtJ+QX;6zgrs#|bc|drr z(_)SZDL{I~T+>EPaZJjLNpVe^wYXzKPLN)4$28ABq#h6xDMPB3bz#fn!h({hla52G zp(s0>Uct)L(%CFZQ;-6*l>SApLJHEA2!Yoig~$f#$B@D}KlahYocB8*{U<7?iJ@%m!BhAY}A z=mK0!pj0JcArGvGEZ0hKxD;H(`xvB4q{5}>PW_+4)ufLY}Jdtim&hN5iue&oVsycvj+Bhi4<6&By85DcVXnB>b|c`0n6B8ModN kD}Y$z9&eX_iSrKq0)_~B@+&;Qq(7h)h4e>+@Lx&&A6jfncK`qY literal 7161 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 J0sWRz{{{1Tlkfll diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.class index 1d14de0375cfd44e0e015abe48906b7757d3b698..56161c485f1cdd7c271659c21c98b21f3d720481 100644 GIT binary patch literal 8459 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 GlKvk@lehH% literal 7714 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 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Comment$CommentBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Comment$CommentBuilder.class index 38040fcc233e33213e53efac45e2656c1346c742..6f7d7fafc5ada70bb4b7f6407b02ca28a9af4bef 100644 GIT binary patch literal 3591 zcmcgv>r&fB6#mv+46XtMD3pW*LLk9Tiqe!`9g+s81X>4@KuMF#v?J_o5Xf4Ov}T5v z=^i>B zJ-a5V4UdO*U4+u+zI5fGT@tk#ZD-AMx#4+zvu4rl4$r+U4PfYm_l;_uX~3l@Ou^}6x`bgd9YShk{2yZ zMv$^sLzgW~DQK|n1f<#+t>0a-Fr(h}NKx0wtc5vTBUP1vJCbj?HO?@hjg@q;%cA0V z56r8`xp@ou=t`qrHFy>`7#2}UTa%;^$a6@;;r7lt(@rO)m~&yMPX47cY`%SB=B zlR|sRFiQ8E4b=Ef?Pyapf(l=8)i<_G4_i=zbbFnLa+UfW72L8AGL(T+*Fg>Y@QC5Z zzva!-H0*h|y2Nfyo0hD$Crwu!n!Q$?bcu-ej0LxH6unCODYXYO$n!sqdCNP?=35=#{ z0;9Q_z-Vx`Vduzh`td@x7inkHTc(i05!f%0OLyq6au67xpFD^ZsVjGJk4|y-8HMBv zbVWo(B2ZgF~6=e!#|VYpF=4vKd*MouWQ!u&n5Wt>HOC_=GXOa`11+= z2l$doQZ<4Xrp|Buj>7Z8YbxQ_I7jO|tx;Ozv@X!PL~EMXRa)1Na5KHoRdWLUR!!>} zD|l#hen)Lp$t@Dszv}x9wo*xtV|)a>P48lg-X5%yrVQ3vI>1*ER>0Tv>?2#&X_c`> Ur(u%qqyHGbK|i+fEyZWzFK<2ZA^-pY literal 3516 zcmdUxTTdHD6vzL=&EPJW0ELo}KnOJ0Nxd|^*CA+|5b`)GGxR29R(Z7=ZD9fsbe{LT;tF_b~p!8>pmR;se@`c1j-@t>=E zJP3sE)@7~fi^y%rNVy_Vo;q^NvRY;YLl* zyyRe}CDQg9(G>@?T9j+>kW^cv&9|!#=JmIJB^ySv;9wE&ld5VcxDwl5T`)`=V-*eD zimY<~zWvnN+>(QQYe}V_0;#z2Xtz4ZeOcd?2krwAh>&8VR$}NY%NoU0uHpq^vsvF2;Wnp*dbSR&9Ugjm zY=wPl&m+>^%GrXc<8G4LCkdzL&&?ctDAb;;J?0^=3nfA_bStjLy6OCio>^*2G@c*c zzpE1%!>y&WvdFE2N}63VOwjsv?mG#Q?3QeXRk7yjGj?qHDe8%|dQ(Jdol+I$%~dH? zq(a^>PK|N{c#y?9HZu4|U#V{y7TS0(IFtv%HCoIqTjNzF!y|@Y<7Z$e8t6I?YLv|v zDpDRa8>OVVG0CZg+eZzNGX1C6d{bdcaUWPjnfv~hr$lKG4;g;>&jt2v%g2&eTVXfn zY=O|-lMGZBet*ov)?PRV;?L580@^mH}RO!O9&!b3C1dp7y zD}yHtiwVc4`7?tphAXe1O4Z6ZA6Kbd^-#XlHJi#W7(SxW0KGq^caJWZ2^rPKgp4X< zLPljVA)~sOkWpbw$fzJDWK^7Y`f{p0EOU+9`|&f4S^QXGzn;5kG=>&f! zoqw@wzKLhcpGoj%)A^UX=9{}=`LhZBd^&%wYreT>mOr21FVg>fO8j5zns4r`sEuKDKvTYf&lzk|DUC3PZrX7Bm(pD6rTctKbA1%|0zpf*8mirPhLm#NKByGHH$ zF>a<`bdxidQ**{wxMy|#KxtLymLjpb()W_`6<(*Yn4+;CtF2^IK6Ur+w`2u;P47Xn ZVvSk_n=~3D>jvpJ{}G1p7*DZ{=~pQz*zEuS diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Comment.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Comment.class index ebe5d44830ac25a3b8d93028ca3a0ef2df7dd6d6..31431b9a563a1ba2b86dc5e7d7b4a4dae6b077ec 100644 GIT binary patch literal 7343 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 EUq_g5ssI20 literal 4176 zcmd^?-%}h#5XXCt9|y-G1Q0|df)K(1$r?dpIEV>E0_GqXkQk%J<#qxKd%M)`9v1(J ze}oTO6)ROqm4ASLk`I>O*_j-B%vNeCeDh)UW_o)*GuzYC-S^i&ul^*WMf#~gIcmyN zvq3G?%BcImI<`#L^7hP!y9c}yF=}0KJSV!%sA;me(@t&Fo~MFA9b_=NS@El;Tk{Vb z>se*r@;vUERo||;JT#B|FfzFpInjx^iT=2FEY%#><^iLeV`H`Q>2hV?+baqDI|g-8 zH=`EJbUCA*gwj?NI7+R@px#)`saktnOnld%ej&+Md@sVnLiV0PgY-T=B8;r47BcEh z(AJ=~$Afs)4-6U>itVm*$d~<^oc^IfBSLE6JF7s}UwmZHn0V3o+&cCHCpw*S#h{58 zbnNh->-v)h6@|fCYatKTY_YXzgJy)NP_eKLKRA)%>js(hu@DCwFSea3Y%nNy9bsUW z{fgz@Q?KH^e`3&VJf(JID|wziWi)+`(<#s#-4ssnIitTP6Gn>9B{5b*l~<;`+LNb=N;M?{kj_a8J9$sCn79;nrPc$KxBd>Mjqq zEld>J!n=2@z!765Y>xIFkZzUF;m^rvg9RUGCsw=wt$UqE`@X$t1y+?uJizAGlM5)* zTx5xjB=5~txd?Du0n^<60;Xu$6%n10IeD(l;YivdU)qULA10q>g1TcBw)|R9;VX{t zjCPSet_v+p-QZ!giZN2ilJ7@h6j(>{Ov0{KdQ_k-+RoEA;v(-b8b4(_-m!nkO}T`; z+bdQjLiA@Q9@TO&qhicFZ=#s?Wm;hH6dx3xP5ZOQ`Da(^kteYB@Lhu%a-eI zA+?m+=vzj=#^0aFp_7ii$Yw_3EGas19uysw{zO-1J<+SDHK}o$&BVANi3veHcZq>a zS@AqvUzw@mQ9VJ$TJ_ws$co6AYbXYSW!DNrj_c8p*m$14XLLn7lQdK3=|@JF->!u9F z8NW%>;r!?xHN~J3fWpZ6sp&uP_zm40-N7@7>X#}C1!Z*}UqY`%(7Mm?yJ#hi-& z&sOoppmG1b>HJHX`O;4mUkn=g{ptL^%zWu{iZ2F@{6V^(W}kt~eCfZ6KdAAC)A>W0 z`SLC({;66P3Pap%$M;|@n<#u8hwS3B?9Gh zqzMrR7hcoclc^U7aWAM7?Gjoa+5p-R+GVs+v~jenXj5p{&~Ch>&(edUjIRr+@$~_f z)%rHlmso!utaGpZif$3TZT0z-)mvyC>*Z*pA?7@cWplKN-!|;%YqZDo1fw44w&CyM OchpW#=?8j7gZ~0y$yRCr diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Post.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Post.class index e659d75b160c8906303f6e154bfb5a47e7100aaf..3d64655c8b04ccd1e20a6ba0e26e17b86f9bc13b 100644 GIT binary patch delta 3256 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 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/mapper/CommentMapper.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/mapper/CommentMapper.class index 03448b5507e77ae2bf610e0c547115a84a1fd5e3..b36f04a0eee3d52ec6a7943a72e04046e8bc8815 100644 GIT binary patch delta 338 zcmZWlJxc>Y6rA-uHD}cLh1doJt+ukdD40SJPLv4tFS+%yve}c}y+A5U>udc1{s;?y zfWN}l!oMIsqA0}Ty@8o|Gw`0G_c(d|e0~9NgzY+cxZm;0s6psX&T@a@a^<>{Q>{!c z(B98(X-u*T+Q>}%kRHqu0U;+ovb%-M zN?WAI|HA9H!(O{r*`P=2T6^6$>bK>@+A>hkrRAo*taOE>I~oj?)P1JCq(6h4UZn!@ zm`qhaeq>@^U=d4*(BMDB0tv%1&m5XqVQdNrtn#dR)}kM+h4rat1DlKsEN=l{8_Qki delta 64 zcmaFKx{R6Y)W2Q(7#J9A8F(jhwR3U?XQt;RmXsDv-oW@)o`HdxfgLEx#K6J838uLi OxPdeq10w?u0|Nj<9t=bP diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/mapper/PostMapper.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/mapper/PostMapper.class index 9eb62843f23c0b311cf812e7dd30c36ff67cf0c4..33117685fc9c7380627d3ff0522fb7ee8bade4f3 100644 GIT binary patch delta 317 zcmbQse3zB$)W2Q(7#J9A8AK;?wbY9jr{<(4mpD~=rWE@ZrKA=)Rk~%S=AaFpy>gN{cWs004?=R0{wA delta 64 zcmcc1I+vO2)W2Q(7#J9A8F(jhwQzCjU uc)>z^4EzjCFjWFT#ezW0#2^GzEsR@A1kE6z4pFc^F$QrU%?7kZ0*C<_QXyUd delta 184 zcmaFGK9Qa4)W2Q(7#J9A86+lhB~5&5H*u%QWNk)A#^Qk diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/PostService.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/PostService.class index a82b2f1507ff66fe016b5e7c99235ee78498b4c6..f82c73d5586a07f07ee548af7b1724fb5992edf5 100644 GIT binary patch delta 259 zcmZ3@+04at>ff$?3=9mm4Du7XrZT!u{>Z2|@f@dsPgY`CqJBpgOZ?M9i&Kjx+cV#- z=VxGK-~?L7%E-XQz`(-DAiyAq5E23l2{VYG3yCs_F)+b2iUaja05KDTB+vjU+)~nL RW-~AeKsCxR$bt=!0{}MtEo=Y) delta 218 zcmZqXTFuFI>ff$?3=9mm4002>rcN$ow4V5~WAYltKE{HH3-l&uGMP?Z!lcKz7RIq* z_Tl9zNK8)+$S*GOPxDQkJe~P&JqH6L11HcFRz?Oc1_l;J27U$sgpeRuNQglgT}XsM llz|DRQ4FYG9Eh11B!C7;;+B#^Gn;`)0IE@%K?ZDqECBBk9nSy& diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.class index 84bea480aa58509dd92b891e17b4e2c042626aea..d3c76816e03eea7ec202d3f2c7e5fdc11e229e71 100644 GIT binary patch literal 19535 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 bd3ra-o&pB)(Qt-#t37Bv?N$5Ke)9hh0YX<| literal 19647 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 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/impl/PostServiceImpl.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/impl/PostServiceImpl.class index 69b44e295e0785373617cfa23b95ec47c5a2448c..5cfc0b713a4ab216016b5349fc528007f247401b 100644 GIT binary patch literal 17113 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 QvnaUof@VzX(GukUAG&Cv<^TWy literal 16025 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 delta 817 zcmZva$xl;p5XV37b$zdGT3XZ?Y63z`Y$+y+@u0+m!3{03E^!xRsYn%6#9dHP+;Dpy zjM0N9y{I9Ef|#f$O*EMJHz*NLp7eyv{GJ7u^fEKQnaOv)^Zm`&qLHZi=Ev}JpbD$s z{N^k%sb#C5ZOqj0rkgs}wY9Hk^s+-^+UI-OPs8`EFU~3MdOtg9uuNBt(Zpg8%^H=~ zPj98$!!C^q35%^ESEy*WMsVzL&)B2kk3)T<4{wd$d0>(z;bo8Y!By&Oqus+kKN0pn zDR94al(Y#IoiGboBvDvR5${6d03A{}Xni+YwN9(Wj8`3!%2dh0W)5>iyo!!;OuCOt z?7>wSiG&SK$it;c1*x2*%f@+cHVDpq-@Imp6T>MsHHnj=n^V&5B*|%sbSfz03_Un( z>=4dz!XC;3;}m&VQaCZB+a7Y3b83jhBLbl)W~_IU8X8UJU*HcX^%lNZtW|CosUe5ouY1oKHCrI=PhQ@`-P3Lsg#h=os z^OAHj@j5rOMGY-aWNFQ^{B|yx`IkurKEYZkOVr?HmHbFjG_R$YHKIt0xvZ6+S}z?{DdBnWPrTk*1{}VI9WocAmt`;dB;)Ah4_Qv7^EQpm4P^W~`ZQXf@&Q;r9<9aT81AYNwmyqHB diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/dto/UserChangeInfoDTO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/dto/UserChangeInfoDTO.class index b267107eaeee77417e8b6ed34dc7876a05d6b988..89d1e7456e5a662fee37af223d3f14f1591a3971 100644 GIT binary patch delta 64 zcmbQJIZ<;14?8mlL+9j2>~VtpYz*C83_T3J>Hal?G@Q8LWFf#Np TOkiMO-~zHHGE8Qe${+~<;#3XI diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/dto/UserLoginDTO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/dto/UserLoginDTO.class index a446c9e0ca53a37a841be66f1f275cefdc11ed53..b1c90bbc9058d1d2ee977a597898c439a62e9579 100644 GIT binary patch delta 64 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 delta 224 zcmdnwv&m<}3n@WgHIhn;JR*aifWe;%p<}D6ffuk+FjjM0PRuFfcF(F)%SqWC&vHW#DA&W1PS^i9r$o%e*o( diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/utils/AnonymousUserUtil.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/utils/AnonymousUserUtil.class index 99b79711c3237aeed30cfe9c990b4382a54e0dfd..e5ccb7dc308b3e01d15e00f7c3737a1ef167e109 100644 GIT binary patch delta 93 zcmdlexlwXMABO=4Lp>t{M^0&eR%T*6BL_nxBLjD0UVffcX>n?i6(c_zLo*jc3qvbA tLmLl+Bt!e;`5cEfH*ktEOE)nvGSo4E$OeWE1_lN$Aghz1o1vFM5&&d#6_o%0 delta 94 zcmdlexlwXMABP}68$&%8Ljyx2J3|u>gCs-qX%=ttjxA{Y12=hTO*mo-h`LL(L~`l-m9YGK;FxF|)Sco3LySN+oeM2;ZHtGJ4 z_rf3yda>)vEMvihsm07;&O){1Fz*pbla*ji#-i)7HK?j)uA~~mRux$+AN6)}=+IA| t7cD!9n+`XLhYo*G^V)WOgvpYa4LkPybV%u((lw>~Ur#__@Z!yf!WRyjKQ{mX diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/data.sql b/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/data.sql index 56204a5..e69de29 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/data.sql +++ b/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/data.sql @@ -1,22 +0,0 @@ -INSERT INTO `post` (`title`, `image`, `content`, `status`, `like_count`, `comment_count`, `favorite_count`, `view_count`, `user_id`, `category_id`) -VALUES - ('秋日散步记', 'http://example.com/images/post1.jpg', '今天去公园散步,看到了很多美丽的景色...', 0, 15, 8, 5, 100, 1, 1), - ('美食推荐', 'http://example.com/images/post2.jpg', '这家餐厅的披萨非常好吃,强烈推荐给大家...', 1, 20, 12, 7, 150, 2, 2), - ('旅行计划', 'http://example.com/images/post3.jpg', '计划下个月去云南旅游,期待已久的旅程...', 0, 10, 5, 3, 80, 3, 3), - ('学习心得', 'http://example.com/images/post4.jpg', '最近学到了一个新的编程技巧,感觉很有用...', 0, 25, 18, 10, 200, 4, 4), - ('电影分享', 'http://example.com/images/post5.jpg', '昨晚看了《无间道》,剧情非常精彩...', 1, 30, 20, 12, 250, 5, 5), - ('健身日常', 'http://example.com/images/post6.jpg', '每天坚持锻炼身体,保持健康的生活方式...', 0, 5, 2, 1, 30, 6, 1), - ('宠物趣事', 'http://example.com/images/post7.jpg', '我家的小狗今天做了件搞笑的事情...', 0, 8, 4, 2, 40, 7, 2), - ('读书笔记', 'http://example.com/images/post8.jpg', '最近读了一本书,《活着》让人深思...', 1, 12, 6, 4, 60, 8, 3), - ('科技前沿', 'http://example.com/images/post9.jpg', '最新的AI技术真的太神奇了,改变了我们的生活...', 0, 18, 9, 6, 90, 9, 4), - ('摄影技巧', 'http://example.com/images/post10.jpg', '分享几个摄影小技巧,让你的照片更加出色...', 0, 22, 11, 8, 110, 10, 5), - ('音乐分享', 'http://example.com/images/post11.jpg', '最近发现了一首好听的歌,一起来听听吧...', 1, 7, 3, 2, 50, 1, 1), - ('烹饪食谱', 'http://example.com/images/post12.jpg', '教大家做一道简单的家常菜...', 0, 14, 7, 5, 70, 2, 2), - ('游戏体验', 'http://example.com/images/post13.jpg', '玩了一个新出的游戏,超级好玩...', 0, 21, 10, 7, 120, 3, 3), - ('时尚搭配', 'http://example.com/images/post14.jpg', '分享我的最新穿搭,希望对你有所帮助...', 1, 9, 4, 3, 45, 4, 4), - ('户外运动', 'http://example.com/images/post15.jpg', '周末和朋友们一起去徒步,真的很放松...', 0, 17, 8, 6, 85, 5, 5), - ('艺术欣赏', 'http://example.com/images/post16.jpg', '欣赏了一些印象派画作,感受到了不一样的美...', 0, 11, 5, 2, 60, 6, 1), - ('创业故事', 'http://example.com/images/post17.jpg', '一位朋友刚刚开始了他的创业之旅,很激动人心...', 1, 13, 6, 4, 75, 7, 2), - ('健康饮食', 'http://example.com/images/post18.jpg', '分享一些健康的饮食习惯,让我们一起变得更健康...', 0, 19, 9, 7, 100, 8, 3), - ('科技创新', 'http://example.com/images/post19.jpg', '最新的科技成果真是令人惊叹,未来可期...', 0, 24, 12, 8, 130, 9, 4), - ('心灵感悟', 'http://example.com/images/post20.jpg', '写下了自己的内心感受,希望能够激励更多的人...', 1, 6, 3, 2, 55, 10, 5); \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/luojia_channel.sql b/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/luojia_channel.sql index ac2a900..180d95b 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/luojia_channel.sql +++ b/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/luojia_channel.sql @@ -157,7 +157,7 @@ CREATE TABLE `view_record` ( DROP TABLE IF EXISTS `message`; CREATE TABLE message ( id BIGINT AUTO_INCREMENT PRIMARY KEY, - message_type TINYINT NOT NULL COMMENT '0-私聊, 1-系统消息', + message_type TINYINT NOT NULL COMMENT '0系统消息,1私信消息,2评论通知', content TEXT NOT NULL, sender_id BIGINT NOT NULL, receiver_id BIGINT NOT NULL, diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/mapper/user/UserMapper.xml b/珞珈岛-项目相关文件/luojia-island/service/target/classes/mapper/user/UserMapper.xml index 52fee41..4bd83c3 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/target/classes/mapper/user/UserMapper.xml +++ b/珞珈岛-项目相关文件/luojia-island/service/target/classes/mapper/user/UserMapper.xml @@ -2,5 +2,11 @@ - + \ No newline at end of file