From 1c2a2ef67eb54daf2f83f9ad2161a51626fef6ce Mon Sep 17 00:00:00 2001 From: forely <1605769034@qq.com> Date: Thu, 8 May 2025 21:34:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=83=A8=E5=88=86=E8=A1=A8?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=B8=8E=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E4=B8=8D=E5=B8=A6=E8=AF=84=E8=AE=BA=E7=9A=84=E5=B8=96?= =?UTF-8?q?=E5=AD=90=E7=9A=84=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../luojia-island/.idea/dataSources.xml | 17 +-- .../luojia-island/.idea/sqldialects.xml | 2 +- .../common/config/WebMvcConfig.java | 4 +- .../luojia_channel/common/domain/UserDTO.java | 1 + .../common/dto/CreatePostDTO.java | 12 -- .../common/exception/PostException.java | 7 + .../common/utils/UserContext.java | 11 +- .../common/config/MybatisConfig.class | Bin 1321 -> 1201 bytes .../common/config/RedisConfig.class | Bin 3210 -> 3210 bytes .../common/config/WebMvcConfig.class | Bin 1556 -> 1577 bytes .../common/constants/RedisConstant.class | Bin 483 -> 557 bytes .../luojia_channel/common/domain/Result.class | Bin 4201 -> 4287 bytes .../domain/UserDTO$UserDTOBuilder.class | Bin 2207 -> 2396 bytes .../common/domain/UserDTO.class | Bin 3899 -> 4399 bytes .../common/domain/page/PageRequest.class | Bin 0 -> 2493 bytes .../PageResponse$PageResponseBuilder.class | Bin 0 -> 2990 bytes .../common/domain/page/PageResponse.class | Bin 0 -> 4907 bytes .../common/exception/PostException.class | Bin 0 -> 487 bytes .../common/interceptor/AuthInterceptor.class | Bin 3391 -> 3391 bytes .../luojia_channel/common/utils/JWTUtil.class | Bin 8056 -> 8056 bytes .../common/utils/PageUtil.class | Bin 0 -> 4325 bytes .../common/utils/RedisUtil$ZSetItem.class | Bin 3105 -> 3191 bytes .../common/utils/RedisUtil.class | Bin 10429 -> 12326 bytes .../common/utils/UserContext.class | Bin 2490 -> 2663 bytes .../luojia-island/pom.xml | 5 + .../modules/file/dto/UploadFileDTO.java | 2 + .../modules/file/service/FileService.java | 2 + .../file/service/impl/FileServiceImpl.java | 81 +++++++++++- .../modules/file/utils/ValidateFileUtil.java | 9 ++ .../post/controller/CommentController.java | 64 +++++++++ .../post/controller/PostController.java | 48 +++---- .../post/dto/req/CommentPageQueryDTO.java | 9 ++ .../{PostCreateDTO.java => PostSaveDTO.java} | 5 +- .../modules/post/dto/req/PostUpdateDTO.java | 10 -- .../modules/post/dto/resp/CommentInfoDTO.java | 26 ++++ .../post/dto/resp/PostBasicInfoDTO.java | 9 +- .../modules/post/dto/resp/PostInfoDTO.java | 22 ++++ .../modules/post/entity/Comment.java | 26 ++++ .../modules/post/entity/Post.java | 9 +- .../modules/post/mapper/CommentMapper.java | 8 ++ .../modules/post/service/CommentService.java | 21 +++ .../modules/post/service/PostService.java | 18 +++ .../post/service/impl/CommentServiceImpl.java | 124 ++++++++++++++++++ .../post/service/impl/PostServiceImpl.java | 87 +++++++++++- .../modules/post/utils/ValidatePostUtil.java | 45 +++++++ .../user/controller/UserInfoController.java | 10 +- .../modules/user/service/UserInfoService.java | 2 +- .../service/impl/UserInfoServiceImpl.java | 31 +---- .../service/src/main/resources/db/data.sql | 22 ++++ .../src/main/resources/db/luojia_channel.sql | 9 +- .../target/classes/application-local.yaml | 41 ++++-- ...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 3479 -> 3534 bytes .../file/entity/LjFile$LjFileBuilder.class | Bin 3617 -> 3692 bytes .../modules/file/entity/LjFile.class | Bin 7247 -> 7322 bytes .../modules/file/service/FileService.class | Bin 847 -> 970 bytes .../file/service/impl/FileServiceImpl.class | Bin 13955 -> 16624 bytes .../modules/file/utils/ValidateFileUtil.class | Bin 7413 -> 7693 bytes .../post/controller/PostController.class | Bin 0 -> 4047 bytes .../post/dto/req/PostPageQueryDTO.class | Bin 0 -> 1054 bytes .../modules/post/dto/req/PostSaveDTO.class | Bin 0 -> 3915 bytes .../post/dto/resp/PostBasicInfoDTO.class | Bin 0 -> 4456 bytes .../post/entity/Post$PostBuilder.class | Bin 0 -> 4251 bytes .../modules/post/entity/Post.class | Bin 0 -> 9206 bytes .../modules/post/mapper/PostMapper.class | Bin 0 -> 413 bytes .../modules/post/service/PostService.class | Bin 0 -> 1158 bytes .../post/service/impl/PostServiceImpl.class | Bin 0 -> 8831 bytes .../modules/post/utils/ValidatePostUtil.class | Bin 0 -> 1649 bytes .../user/controller/UserInfoController.class | Bin 3475 -> 2705 bytes .../modules/user/dto/UserChangeInfoDTO.class | Bin 4820 -> 4820 bytes .../modules/user/dto/UserLoginDTO.class | Bin 2418 -> 2418 bytes .../modules/user/dto/UserRegisterDTO.class | Bin 3805 -> 3805 bytes .../modules/user/entity/User.class | Bin 9275 -> 9350 bytes .../user/service/UserInfoService.class | Bin 661 -> 667 bytes .../service/impl/UserInfoServiceImpl.class | Bin 5056 -> 3905 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 | 92 +++++++++---- 84 files changed, 763 insertions(+), 150 deletions(-) delete mode 100644 珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/dto/CreatePostDTO.java create mode 100644 珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/exception/PostException.java create mode 100644 珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageRequest.class create mode 100644 珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageResponse$PageResponseBuilder.class create mode 100644 珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageResponse.class create mode 100644 珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/exception/PostException.class create mode 100644 珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/utils/PageUtil.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/CommentController.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.java rename 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/{PostCreateDTO.java => PostSaveDTO.java} (62%) delete mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostUpdateDTO.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Comment.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/CommentMapper.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/CommentService.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.java create mode 100644 珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/controller/PostController.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/req/PostPageQueryDTO.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/req/PostSaveDTO.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/resp/PostBasicInfoDTO.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Post$PostBuilder.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Post.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/mapper/PostMapper.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/PostService.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/service/impl/PostServiceImpl.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/utils/ValidatePostUtil.class create mode 100644 珞珈岛-项目相关文件/luojia-island/service/target/classes/db/data.sql diff --git a/珞珈岛-项目相关文件/luojia-island/.idea/dataSources.xml b/珞珈岛-项目相关文件/luojia-island/.idea/dataSources.xml index 2cdd411..b3238af 100644 --- a/珞珈岛-项目相关文件/luojia-island/.idea/dataSources.xml +++ b/珞珈岛-项目相关文件/luojia-island/.idea/dataSources.xml @@ -1,12 +1,12 @@ - - mysql.8 + + redis true true - com.mysql.cj.jdbc.Driver - jdbc:mysql://192.168.59.129:3306/luojia_channel?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai + jdbc.RedisDriver + jdbc:redis://192.168.59.129:6379/0 @@ -14,12 +14,13 @@ $ProjectFileDir$ - - redis + + mysql.8 true true - jdbc.RedisDriver - jdbc:redis://192.168.59.129:6379/0 + $PROJECT_DIR$/service/src/main/resources/application.yaml + com.mysql.cj.jdbc.Driver + jdbc:mysql://192.168.59.129:3306/luojia_channel?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai diff --git a/珞珈岛-项目相关文件/luojia-island/.idea/sqldialects.xml b/珞珈岛-项目相关文件/luojia-island/.idea/sqldialects.xml index 36966c2..6ec3af1 100644 --- a/珞珈岛-项目相关文件/luojia-island/.idea/sqldialects.xml +++ b/珞珈岛-项目相关文件/luojia-island/.idea/sqldialects.xml @@ -1,7 +1,7 @@ - + \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/config/WebMvcConfig.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/config/WebMvcConfig.java index 891e804..4cd928c 100644 --- a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/config/WebMvcConfig.java +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/config/WebMvcConfig.java @@ -15,7 +15,9 @@ public class WebMvcConfig implements WebMvcConfigurer { // 拦截器 registry.addInterceptor(authInterceptor) .excludePathPatterns("/user/login", - "/user/register" + "/user/register", + "/post/page", + "/post/detail" ); } diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/UserDTO.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/UserDTO.java index 3d2feeb..c431b75 100644 --- a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/UserDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/domain/UserDTO.java @@ -12,6 +12,7 @@ import lombok.NoArgsConstructor; public class UserDTO { private Long userId; private String username; + private String avatar; private String accessToken; private String refreshToken; } diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/dto/CreatePostDTO.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/dto/CreatePostDTO.java deleted file mode 100644 index cf1d21d..0000000 --- a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/dto/CreatePostDTO.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.luojia_channel.common.dto; - -import lombok.Data; - -@Data -public class CreatePostDTO { - private String title; - private String content; - private Long userId; - private Long categoryId; -} - diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/exception/PostException.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/exception/PostException.java new file mode 100644 index 0000000..d013560 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/exception/PostException.java @@ -0,0 +1,7 @@ +package com.luojia_channel.common.exception; + +public class PostException extends BaseException{ + public PostException(String msg){ + super(500, msg); + } +} diff --git a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/UserContext.java b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/UserContext.java index 279ff91..596d7b8 100644 --- a/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/UserContext.java +++ b/珞珈岛-项目相关文件/luojia-island/common/src/main/java/com/luojia_channel/common/utils/UserContext.java @@ -2,6 +2,7 @@ package com.luojia_channel.common.utils; import com.alibaba.ttl.TransmittableThreadLocal; import com.luojia_channel.common.domain.UserDTO; +import com.luojia_channel.common.exception.UserException; import java.util.Optional; @@ -15,15 +16,21 @@ public final class UserContext { public static Long getUserId() { UserDTO userInfoDTO = USER_THREAD_LOCAL.get(); - return Optional.ofNullable(userInfoDTO).map(UserDTO::getUserId).orElse(null); + if(userInfoDTO == null){ + throw new UserException("用户不存在"); + } + return userInfoDTO.getUserId(); } - public static String getUsername() { UserDTO userInfoDTO = USER_THREAD_LOCAL.get(); return Optional.ofNullable(userInfoDTO).map(UserDTO::getUsername).orElse(null); } + public static String getAvatar() { + UserDTO userInfoDTO = USER_THREAD_LOCAL.get(); + return Optional.ofNullable(userInfoDTO).map(UserDTO::getAvatar).orElse(null); + } public static String getAccessToken() { UserDTO userInfoDTO = USER_THREAD_LOCAL.get(); diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/config/MybatisConfig.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/config/MybatisConfig.class index eaaa2fefe14a7cbd7b065893fd6e805bdbfd4416..4813276af9a4b8531bfc348129d388f65180dc85 100644 GIT binary patch delta 341 zcmZXQ%}N4c6o#KqoyPh2{3&bFOiS%YGw=c;+O(XaNP<~T(4x)g!i}r0LFOiG*AFBl zbOF&FbT84FDcZPsdC%cF?>U?Y{p9G6@3(j0n9f9h79DcrZ3>1W%Zh`^Nu?Hq;b0Vu z?gnA+^rk-^-YTp!|LW3H9C`vY7Jws-rev^KRrK01R9}QT*BTqwuueG|t3YkMe5nf+ zMd@j&LQ0N8RF<(MT8+*#?)|3p;tE+%6E%sqsIw)NVw;A{RK@qnBpKy7wm-x1x^uMu zjG3|W%3AkPm=tkdp0sF=tT>lKlI#A?{^e%n8%2yb66uK*6P+ZWz@0t9d&%4u;Q0^&&UNQy`y z%`kPTb+k%TGaD7vG8+thM{C~bwK_wpcwAEdmiJt(tcYpMFic+Sc2(=D#+6~a?El=- zsmqq~BIYpf(`y~QU2j^q48h{LTj#MTVhOpy9n;v#(-^mU3xrg2|0^UFYFoZBcxJr42BBK~8kHCg>2p~`BmVpS?2t}WO0@f*G zD569xx48?BHc%LYKN}&Ujv-JKt4bQtXT%(2l%RuIS#e-3$d5$zE(EtDd diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/config/WebMvcConfig.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/config/WebMvcConfig.class index 3ccb3b220b89f114b15f8bce43073fc800312562..919eef650b5bfc7b00ac796e67af55676df6e7eb 100644 GIT binary patch delta 348 zcmYk1%PvDv6o$XO+tbQ+T+X3&X=zcHo}!c~5wngvkR~Pu(xE2I4Ehk2cm@+mgGwYk zfVc4i;y;IAu-DrEx_tlMH~yXP-alX7fCKgi?%tF~m^Qe2_u}%Z-aYG_JMzqAne~}t z-q7qH*=9em*P}%ivMlb^onc~$CERjXXC zMUR*v*~}|r?Nm6?YNx}X)%L=v){xxEAlY0~94DnXNr6C)Io74}-wZaWN{L29O+K5@ z!!uGymDtj5?0TsA*wsbP6r$P_=8vDzq&ok&?w9M5KP223>**QW8je@$%9foZ?$Y?F H?y2(yCg>y~ delta 326 zcmYk0OHRUI6otS4FQv(ERj69E_(DOU^~qcZ&X}1nAgqOfi>P}rPDqG~35hPiMHx@4 zK?nDq`#R^Ir|=Y$kG?gjKF_qdE`Z_gHa`_4`!?lrzNSS zyn?4(Bc@IwH*IzC51nI9)JcdAUA;(E`-aX~Xk;xDw|ID?`{JQX-`GyGSInP&RhQcQ e({&47SK43b`m%AV@|c9dQaY;y^){MV9aN7bJ_7}4Xf==EpE5_8m&emY^}pK zY`4E@gSxucj74?iEZj!kz#X}D*Y+77n>ExO%ICAQdvcjVAzLs|(2%m% z8!6quoQ4F=guTz~ZrVX~9|jPGh9KJD$DsYtOld>*6SE__lioA}{EcH5hV8Fra(INh z7RIQv-TaExL<~Rn(2n>K<|oS4#H9%KBE+D54t#%T`REWmIw^q|grv@~>lqQ}PAJ@y z0qz7isCfYQJAen6$DsW`?v)C9b+RT0N8zCfeWD72%juM<2VoFut|ICjCLF?MT*f4ZnR6fZ;vCQX*h*E- z(+W_R`xMTK#Z7?-$9!ZJ*|qdwt`0Vj5%MyvpqsziDD2`2X$3s3A(5iOCHp~iyja~8*D6DKoY6Ax&FNQ2aIN54_XZml zu?47|QB}AquDO($+x>DPgkGvZsU_BAF-?~bGq}#LNzPkbH*k+Ti`FdeV;*h40onGJ A`Tzg` delta 1676 zcmbVMOHUJF6g@M2O{bLF2M{P0s-V(h5ap#Hh@gU?D2P~}AfghnK8OiBcE+ulja&CF zAc`iKXk=xGdw+vJ!pFHYQ)UNkHp7Q`JLbGRGAJvnjTSPE?zgQ2|%1!cp<;@s1Lg_*_0 zxy2A38lzgy|42c`7}GMwE3G-%Mqm}~h(SRB)$pOi_^vf7oyJcs9qZz54u1Zpa1_Uk z{o(A1Zq6!s$6D**SF9v4d~_Fx`ViqK#*yT(2zn9br9Kn>MYwLclRH6D0&xgQnQ52v zMv60`a8}wm6X1a20z6>?_S26JZtbJ*@+>`BCEdg1pnR=wm&yb|n3ri7bKKJA~fQ@VRg_mv;e42=^VWWJS_3#39-a^Q)i%jV0(Q7j{&{ zabt)713QmqQ^VJhN>@hp9U)o4pY?bB%6QF<-126O2(gjPM?22BpD41=P?G7m`D z5wma{QDjp@v6C2KMz`y84(I=3%&#H(Pez+iYD7V|@LMJ8VU+#tjAOXKmXgxBycHuE z<2z-P9w8&|JMs5OlSus1he|2hB)Kh}FM519fZb;1=A+MDnX^<%+6qc zk9)-Oqt33kyuB)JZuP0u zqdWnL+;3l KEue_UsQv>ItBDH$ 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 91487ba66391f1556d8ba9c43a13fef68c0e0d7b..6c5d7b18359eba199184c61d60817682422edd62 100644 GIT binary patch literal 2396 zcmcIm?QRoC6g}f4wqq7zLYg!trL+xThm`F%r6y3~C?%?aiiDtwAJuq0#ha{WqTO*M z-lUJwN>oTx>I3wls^06JD(iTKtfKzdote9L&OP^2``6#E{{*mstqKa5Dq-5g42lBP z19>d{Nb2YQqt1Z}tU&R0s6%^4V5;8OpG6t7B~(0|fhTY?FnvE7n1fLM6!fIlD)LFx zH`?!-z6`bhBvJ9!-lJ8wZVtkzt71YO(1)EaS!|z}Y#aT&$tKQum_t>d%vxIZmB4&P zZ`a15)13Ekfi;W7+sc?PzvE$%MQ3CXs3h4lhf1^jT@TAF_hR*PtdidFLkSlJ>XW)r zK@IP5s4fXSt7jMunP<+9;eV4f_U9=%mpy!d4+WO`@=&#m4y1h=+8*r^E457oqW_P< zIB|iCj|bX@eYK;H!zAoP>YmodN*fX*&QE0e9dqb^r?iTtRo$k*bjx%pcXRDftA~Sr zN5y-RF0!@>WVA2ikk3vyZF?ah-D*#oj#E`d2EQK*N#iZhst=UyneGoVrV_L&CUOt5 z23(fk#>7mAJ3?T+J~;~cS+*uMF0ep1Pg=-P5~%E&K^&;?4hKig@knGO zBNz8x9H|`jXBqu;0yeYZbr3BXMZ2L@lnHN#re55NWRfVVk8`6DE8$y#D`QUPaW7$0 z;L@8_Y0jmNQuN9+xk00-z@r!fAJM5u>ng1U9-m_}8kA!)nv`QQnv$nv<)Nh_;a;Jg zPhSN~)?PvUHZ*sY-fSF1<{G`35RQjMDdR%fretv)to(u6k83X}#V>J|p7Zo9(6jUkEBQ%J z>t`jmetdl5@VBVK7{5kXW7x0pKJX^=S`PXQJ|(;YJ{$4r^P#MUFK8{3#hdheNqrNX-6#m9sY@AInmm1RCNCT-2ls+4mpbz5}p^M|os0l*O=z5sWev z_W2R_L$3Dxt@^$Q48!O>sie8jFjOkgg&WS zTKNs#;!^o9ViEnkvo-J5^|lNfA|li_eW*5wv35#X(`v6`DK2;zM}Z+{trTwwhRKxO zwuz*(ob)hdEzj{F5OKVt4}`J^Uw9~5y%&kUA`v$`AF`NbC=Kd!9y9pT#^n-2wUnao zxS5ijJA-J-yOR|6D;}=m8pBMBABYXD0&ZSP)1+N&xH2)r@BbHHuTu<{er+owTcWCt zWGw5Uc%+mz+(_cLfev-6t`GcQgc1=qqETTO-p~z7!gx(8@vPmdi)e?_L2Io89`5o; zTG=UwO;Zxm-P)j`?kW!=e9{wu@@JqGo(j{{jpsa~S~4Oc=boksTn0afVx(?Mn_;;$ zI11e}XLLf&Fij^<--2_AA-}ELQ6L^m8*b0NqZMmNr=N+~Z0eYvX<=P!6Pt)1CU=d; zNAW`*KjKyvw{5+xGR&XCOLas~#ZOq05`4@9qoZSnztf>{h6(529#b$`sHlHLYkPvVp(kqnf|11ohO3`8rM8zu4%ewgWvCMj z(@dQd409xn(t4fNjO~6sI_h&hI_hyB@{j>d@_)K&2{hB`nM0<;ci7nfes^bc(_=!PmLCJu^>-Q7xLJz~)cUHIcD z_rpIwFn$szhi`>BqB`||sz3h3!1zhb9ljOL;urhlPY;Zr(-;Vk|lmMEk)k?SsJ zv;Se{x5ZbKf>$_CV}i!?8(i$4kR-RWeRI2vZyfeRDnmvb#ctfUxD0#>x!4DJ1S^D< nq0&p=<=c*K2H(+|Bew5p+`&&IO_FVnezg^h;U4beAufId#!l)t diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/UserDTO.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/UserDTO.class index 01242609daba7a26f3424bc9c5936f3f7096d665..de8ef17f7d0b59b857c5d9f01c856897845f0b11 100644 GIT binary patch literal 4399 zcmbVQU2_{(8Geqvt6j+}TXy55Nuvv@YrkHt*`DXr%TzUdue|3sY}YHl+;W=NcWxHq z=e4$5-*cK7C}Ddg7g+4t>o z-S+O5*M0BqvT%-Dm_Sa!6qIK-9EGU_ZaZkYF>=bn6M{^UB(R%uc-q2gQH|Nvs?%!i z`1_70`X?>qMQ=5oH=9nY7H(v?an8bde1&hT+TM+~+IC%GdM@$0o4fa%YOp;2nt;D* zVFphtr0+U`cu8!Snww9+Ln|_vMZv%`7QQajxt@^`8*l8$t6IW2XJH;i-ZC>pT)N=dc*~)a_Qwp##TbSH)w{KwIINBSsFpyMdo6JoW#f%)Q7^Jk1_G%Z96C zL*stLfi{n&G0Gz%)dgt`T<7&Oj+T3{GH+x0Jx4DT=f%iY7HUE4ib$YOT>9LglKY*XyRBR zj=&*Arv`~~#}aX14k0=-NHlpY(JEfVXc(pn2_;aeV(AdZUk1EwhD@g;MC@$|pd^IC zOGN7|a7MpB1Z(*IF#7CC=_Sv)^s?xu|G{wj$&=Dc`gZAM(NDiVoc`2F>7^>V^s?xu z-xyAR=A`seY+ZU;^waaJUF3W95yO^ch(0M5-+`_@D*XfIpP-LEDt!cVW1;vMXTv3h zr#2V(tD-Ib3uAfhV@y7TwV2l)<7*wng^Etdg-R-~3nuk3rXC`j*Yl|as8lfsDpkz9 zAs{mb8F@1STB@W8TB>C7X#r(oP&%JUfG$?X2)bCY@?!$BVi2VcNP9%nMiZSO%GF;* zCU2F%ZK+Q2M-O!YaQ zjKuWuVyD112ZF50p9XP(Jx|-DeszhixFp#uljW;-U82(w;*z+0Zw;_3`R+{`HgWYC zpC(Cvms`H1T@DlFd~UhMG%<6fhcFf&<6Cct{z65Qjl34`n36ovR;i+gTg;pAkeSyz zTT7KxxRvT|F`J@O7b`}%#YBov8R6FX;bGs3t{K}nir?VJ_z7*)@oW5)(g*|fOT13I zM>*AMc!QG0S+xP1lFk4=i(N`71UQ2#B_j;tr^tLkg=WB1ih+YtUy!1=9udVf^bVkd z(fU;}ER}%ukb~M7Z1jVB_#qqd5%b8A-l^exJUGxm_PRsnIvt}J{j(By2{Jz=ewO&T z_#wUv3{IXX;iBn$HV#IAd(v4;(d79BgOVcqOz{I;3a3wT;Sky4;vpuBdF>FVih2DI zNBUwqoJm)rv)!bgiDwe|!mlY(6EpH>INv6c^kFTOq-E-1@=xpG?2-W^K!F_Xr~D6w zs2I@uUcw6xcI(VBGgrf#eESIQGWo!p$X6VflF4VCpL^^wz!VYuvllIPm;m?jbL9UA DEDAZ( literal 3899 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 GkpB;vj^6?R literal 0 HcmV?d00001 diff --git a/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageResponse$PageResponseBuilder.class b/珞珈岛-项目相关文件/luojia-island/common/target/classes/com/luojia_channel/common/domain/page/PageResponse$PageResponseBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..72d382966370dabcb3d639ec5ff08887b3e79aa1 GIT binary patch literal 2990 zcmcIm>v9`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|pq z%b$f6TudWp1ye>F?pn#EH1fDiNS>%`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 z5@RHBGvq3+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?YD?bG(%Y0q{NcI9PO%*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^rb9FfuGIU=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= DttrJL literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..b559dd587d89a37aefa8da9c5602e6f71f647570 GIT binary patch literal 4907 zcmb_g>vJ1d75`m(SG$tewk$_ZL_%>}wXr3;f;6;LvIB{U6Q^<#Y~zv?Xx8$^-gvdE zu2zPWM|o3dhZ#P#!werGGfX}}hNPV`!@!p^!{0idYe@~M!HJ}^=bn2Wzw@|P z`scsj|0{q+yrp4CV7cbiOHRwXWt*?mc1_o{oD#9>o?F`X>Za|M8s?5wx=L?rR#fVR8k~%%s>vG63}a=d;Zmy=?G+JVkWO_-Lh&yW%fD?pD^%gJSLFZv4W+xgPEDx zn0)AB3e$L8!xILcWZmg*1d%!d%wk(jR{E5Ir&*~+O4lhI=FJ$GWu8vF4UUMJMFVq~ zkF2k?gX&n1hc%6ofzRS|q+r)3EqQLu3|_JWvgM5!FF z+OBoERo}Aw4RgyOKdgm~atu*fwP*fsw%c(XUu(I6UAI=;eY9ej&^(j%xR2{Fr z=-ZO0a7atfvnF4XKup~(eY0)_mQS&1w2S+hnvkfli>Y^s?DTG1RmWh3RUMNC zI^4)XUJ@R|*)40CW*U25uxt4O2E&@~%+Aq}-F;4m%RDp5lW0vogbU&96c~wC=^`$L_<3k2eCktV2F8;4ty1ASg+_5pQI@wLFdo90aE!*7b z6Y-?y0?)?x&Bzj26m!#zDu0HkG9gi2 z6tm+A{2+xN;zt^O%p?9M0{L$B+3vo#XO$v|qp81a)&kGJE$~hpC@C0ubJ29S9jlqI zdfr~EQHjMXa~0zp*tkJ$K0y5Cn7l+RKIEl}CDU=%?ZBeCGgj!v<1aa8vuP1plW|<+ z)keb`0#EftIw$}QzZ7`v;i6Q}QM7oRj`3+asuT?I<%p;uzQ}~1bbkpy>DEFwtCf(x zM5{@>h$@D$N}Oqu=Rf@~5ZB(t@E?g5xJ>T}`UGi+_FchM$@@wuLAMs#$r{d*980Q& zKSSf~!?EpYtP#hE1h9?`div@C&L%w_R84o60jfuPRZkp3HC=%Qs808)&KyEDU8E$W zaX=<}RZl*W>In0fdVu*Fu1OPBih}c&C=~BQ`x8-d&__ZWQ;~!Oo%6}{A!6_+XpP~& zPA`>u9_b!~FAp|2`ltrE5FcW2ywBj*2OCU3szI*!hZxNC8T~D?K37g+9uvc!yjVp{@6dh2KL}?iT+J{WnmD?-u_C zeRZzz07t_|B9334qqnj${|}7hln*d*2gZC(d4SKfCGusJMDpcCPGyp6{ubSb3e^q5egoFt(_Ih9MYP)Z6VbE&qFa+kbTVr?H)U?YmAQ-Swz z113R|#c#1iqhJVm{0cSV4WocJuuYVL3)q82luBu_aFeJ694uppC=EW{$ajg-@oSoW zHc?5ujpMjQR4T0PC=vH$ZAZ5D$d*GsK8JBl{};wI=pSNA!!-TZ#fLZ+k;#uC+ey69 zQ$GrS(~~XvA_c}RsdCmBkB{p}wS$LBC@>!V15p;uR*yZwU%|)<)oWNR8kuRND+|hE zSQ01Fm0cc78B3E=SlW6H=Sq+z{Lc&dYPHit0%876((OIIp zp>FINg{2Zg)x0~TmY zPkRSwMH!>W6hZ{Zak4lu^g2ne!h1ONKE43-o)u9SMTcijLffqs=JX$)^y7&%cb)KI zb5n(Pu~0aI#rN>V`xqr_U%rpnfEyz@V3eGjz!>7^(^Q{L<_xmAPrG@D{*H9qBPVH~wHkld1YxoX*av}x3OO#HZuhZ*$ W_$fVQNJ0?rXEc?5j$hzSiQoyIzd8izcan)G6$_-`wr8_q}JZCo(OpP^>=) hRN8=t7G=G!Labtq6bR8qhhSaGT^b4<)G$R08=s0qepvtj literal 0 HcmV?d00001 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 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 S_>#rf(ZEB7d&CV{!Jch5_+o1S 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 b52d3a065c3f36e2d89ae6c76f2fdcb032fca7cb..a43c72b2c4dabd949d99aba4af3941e6cd22cef7 100644 GIT binary patch literal 12326 zcmcgy33yc3bv|b_(vwC{3jzTnzy@0ev|wQyV_OnnAvS>owl<9HM1Imd(4f)Gcor}u zPNKGMlN6G=X_Gj6>a+bvBe%(`&^gs9AdGki|B#rGa z_4na7@4kD_@}KqItFM0hpL7_=kNbgzD`q9BzURAG`ql}s&*6Ub(wF}-*MKbdM$LTK2YNye;<&2&e9B6X@G zolHgJr%tA<8T)J^HQf=hGFFG02@z7Z!#%gCD?}lxHpn!ohH4@I8>YZiok*q+BvPYR zEDIs-+S*c*7;5^lq@A)dQ9#jEP4%?Gpazpx(kkduiXaPUFqNIMGfbPe_Mf)SSRFAd zeyZcx#A$mn)74Tu6r$C%#-Oz(g@t2Xeob%8N~f8ElU6ztf_>JBQ0qlE50#;e;N0aI zQOo=|iH&bC=|X^u#($xS5yUC=RshMfbj5Te; zcP6dO@n~i$=S7gVKx-|WS8F{~O`Bt^YElPnXIfp%#~~VwDcWUQTSlwtcDlo$9fJ0qOzV_E#OpgwX5*9MCLKfB zWD>Zgm{!5h@)pxp7N&QZbhmJ<$i{`V*ss&1F6xGRq{TfB`lwM%>aa7U*duf&v#Au! z)iE5Mu}9)jIMk?Eb+<`-=w3L_zWoP!M*4@xhx-Qh9~&8Fs`rrWPry+^w3m7f+Go;! zIsiY&3ooCUs$zKPAOaePh5R9t`sgsz3NQKbk)wTJaN{xpNwJu(<95P zEZO3iN%ztHz}J2>8BHPL3-BzJl!yD?L?UKeag~aOOd6&U5Rcd~TXNbKudy_7ui?Fm zkDK&>T0CW?kJ#rzG)4~^^pHt!qqhUYJm7i}lR4q=&ci+?Dn4wIMH4UyTz|jTve!qD zWh~&8Q@KDjMaVYjq)DelqME#e4~b(M(e(bAWCnsq>9j%9CdFumsWCsTHxY{=n@Pfi zbV&S}bN$gYmNw*~LHVnUApj$kFeyoo0M2wKWm}-Nu3(-s+JVe~k4Q62X_GRPWh%E2 zXXoH#1@ql7JfPzdOwQ7y2AwnMJiP3e< zE&hX^Q1l5f?YI}|Lni%*aIZ+&Gl?^HHC?0+oAeR-D8QSsXC`cc{$`&j@mdv9!InY# zm`NX}PasPowVtt48H^8WqiyoyFY~?YwP#8I&3+M?mXk^M|7J=o@^Ny>e}q!(!p zequk8wPNszMjy5?R3N0WXw*>s$VkcDqTYqN8^)lZxnj9 zs#KpUfNWnPI}x*$lphk>Up47h>1%)u5}}FO>7%0u$;Bh^8TxgTenTi#=arro4!>p6 z*Xg$b6YsA)zJ|F2JDWa(b;X#@5A3p-j+0r z*Y#!WnQD5S{?MR5GU<<{o7?rqJ+^uHT+)sxD2K(73zT#w0LzFnSH1z*Cu{!Rq<^4)L}EK5o0?-M#fkll9HQ6gp9R5x z@$XbThSd_ajFzLD$A8)F(h&Z;F!~P!)7G4ut4)itP!;_b{kK8?W70RJ2i%aatv>xI zLSdkxdM0EAuo)XsJi zoJy^41-w8d*qex8d0l@rZXeA`F&VZHMQCiWOR!?2Rw^p*dN7!oiXySJ^_T3GVDVsy ziMK$sl3^&Dw$Uy%6r%>+GH_$`pPp~dP7x8S{Ht)C#ui(qLe)V;tG{|7rS9S3F0n<; zP{x{^9P?d?yl%2vhpXvUR_43HK2<4on6&ckWGDSQ%!jZa5Dy4;;x2KQsbsS0E*Ot^F z?{{yhi&}(xk>i$LSKV&U!A&#?o>%T(u-Pa!tPZ(?rYi3r7)ds@<5VddzqGPEXXZb0VjWRoq*zQ@P87)S= zBTs(&f-)yvgwqToF`RuX4BwJ@L+AUjNAlYqm1bn!2c!4F5nskaE`Z*0ps?U{LR0fe zfJIvw+4%stg`2BI`e$K~?Ijv(e&$E=x&h}B%M zv2MPNDO;K@i{?v|_L6&iHy1&ma+SVO@=7w&;_R8ig{q+hI0seD*ff_VCQhRgbx+3B zP8laXLy2r^(moKCtxK)4{Rr+aZk1jHq%^RjKCrg>3YtdKZYL!2J5Vr_i8xLspk4J* zJDqWky^ss)ktXW@JSqr z@F|l|sJE!Roi=%dN9%bMpJzfG=Y+vYTs$$3kel<}Y&3o*F>TASF)qM*)m_v9Yci8a zp%#DCo2~UkN326uJc8qv=Ke%tI-Asc0&i;cB9SC`BA2uid5=XZVY*?lR1T|v2)75eeJui-jcc(d~^`?LR0Wr;pWYC3n9Uo zK_70YQ)+u>!;>m=XE*Rw`=N&YcM=-z?^Tw>m^K($p#JAbjw)Qz{>NLW}RjLRZm!QCgwwHk_4pnan zP-kVha-Q0loO#!1=eBu5O75%*S6!oe?hMKIok&ZeORa6;s@1`8#T?xeuJV4+Q=X=} z&g$Is>MuJKFF~NK)I)Iya|8#!@{HrYNuCZ`gR~02Z-r?)@aF~FaUppJ#M^;YJLxvM zi|)Zq?QZz%j^|lC&r^>={UNHt>^5!yu2tYL z>*7D_;y-x|)M<@wqK@QbJTO04$jk&3LL@b{M_-y{j>(x$>NI}opml2Yh5hXDh~{J zy-Q#NTY&7u(iGTMV64GqyD41m%dn4D;5bqk?jSkKY;YMixC|Q{hU%+8E($d$$jg-w zD}o9S2;pLZtv7Gf!khqMAzdTFv~3Ir=jiD1g^CX#3XUo{oFJ@m<*0GxsNqfEE+Jc^ zxCa&Ynli;5fugLyG|V??&U^8c=^@2=js}a^-Vc8mRBRo>A(w5)VXIh_v#RB}s!3~DMJsqMUDl}t ztFF^pgU0UVLLn?})P&#H&^zbpdjhz!`Tl&4tyL0Q$QToFwTK7nZ7u-Y z5HYtPE#`BojBLh;KSHK-+=@u$5ah6oVRyddK76+txl$7s{x};8Rpb zQ4c8ft`POEpVf0Kx4{a+Qm5}${G8?XCE5M354#xH&Ad5w%-i@@ZG$OjDTZE^({7%A zG(ZEbF!_@Lwb##*C{mAjSgvw4T%|RvMQ->A01vo;J0qL5&f49be1@{j+xa#P^MHoA zE++_J{$v>~bi1sFf1S&}&PBLxkrc+a^Br2{G@eq)8$FypTSiA)QO1jOJ_nf3E1pjF zXmoitx;z_s2a0(BGb`vRXrC|P&d6qrcr3mHyd4DY#3I}@YPp`k+tT6i<4c7@lgi8Q zLpZ!2;cx+s%SGBmPv9?|E-3k(G~@{l-nlR|FmjhqXz)%~;=A$r9`1yk62K3TlYez+ z{6t%O%RK#Ld6CgR>;cd}ETr=h-RrrFyER-o{Yvte*c8UQG~;K%SSnMyV?vj4XXR!3 zVz_dSo_~^*P;INr!-iCaaAn?`8 z)jX+KlD*q`H<| ztAq3OQU!HZv`WiWxhhErIDlV0wuAmWricERLlYlyFWmS}v9j`^A#%k7oG@_iM%r5-(zDo_@JF@y;v0 zPVeZSczsJ7^8g=Rg43@Qb9!Z2PAXe?Q>x?w=3`58`n6(CUwM<9=<9r+)+yHr*5-nC zo_;e>lmM?OMotEM}L9-wDt=9-AnXO`N(qe?L{pA06NwW;tz{2 zDw&;4?iN1I55RoVkfG=L4rIZe_H`<&BxnHXUKQqQDCiEAK{6ajY02906v+au3)_W= zhf#pXP-Q@rAH*Kh(WxC6%YXH&=wGkUzdcX8F4KQLPX`5LwN$s*>rigiqf2}U;{kpf zza3A(XdKfX#&0<*c#SRmS`XvI@MVHi_!VIr|D0b_Jk94YqX|}hje>k0G+(D@_#G8h M{7!xszlXyA2LxHiE&u=k literal 10429 zcmcgy349#aS^vM?l~!7f4l9;o$%$h-iml68=T0o!u`SEC9LY{4S!vut7)xVot<{dY zJL|;es$0?k4TW$NLV>o>1KLm$CsnKz%AGoAqde-*r zw4O;qdB-PES~QeG0~(V^S!jZ#aLa3^pwQ$l7LK_2X**ja6L{yZ?w>Zn-n&L$v<@J#3%u7@Bzg3G+%C}n9n;o zFFlo6a8Bhio>tpV3%%&0^aYXrXoU13E{#5puS2(QT0CRG!XS1j)H{zXX7aRd6!CRQ zh0qVVZq~7L+U?R7cHy9o(Y>IW=cV=_VlGJjog@*c;hjM27*^)K_o>y2k; zaLK~g;~NwjGKFysu5eET_S&+Ql84ChO%}cxZ>O~~Igg?+$`tN+Efh;}%s5gwDGu;X z3*UlA6;i$foTe}ech=|uGP}YB9>cdL@onM)->z_LElyNPLSau$;v5cJzoel?=F-P4 zdWmudj%dKW8FmvagX~GBlX#w9S92rUBfdB4ISWl##tTV&%EC|MXB76mcE9bJ zy13}fYFjbfS&>b#-dIZRA*QMIW&Es#pTp1lbB!4*=Nb#8@Qe7RB!1b#i}*~12K)(B z^sKgJxjQ&4Ykt+jXYp&ydKaX-J$Y6sTh| zoG40lnX(yH>~zN589O^|=QHwb1{2;~hM8tytY!x#bMbkH9Zq|QbHgFgJ^CD5#?U*T zR|c83dgVGJu|j7hb0lII>|9A{@6^oT5Jg|Dcq1rdSqMu)N=DHm|DJ4B_N!%iHk`iNvj#jU2Y z3O_VdgX_&XdF~_?-c++(p-5eYa!Jy9Pxl`Rvmrgwk@nVw@cDE*o>I$BnXUxT&9E1Acnq~`!R5h`Zt2JJla4r}&+I)V> ztugx?DR+L0#fLxW&a)3de>%M(?+pK^Z3Yn4#(hK^V^%Hg&--T*y#wh_D3>WU~lNS61QpAxkWd}Ju9VaI^h&N|3HM1+{P^A6}-H? z=y#Qc)_QeEO5LgMN~*gpb&uj9&_P!!<&L?&#G7`d%W=U+F$yRYp)FlrJ+1*XS0(T&lze%JGHWp z=L2fLr3UoV0eL!Tshz5~P4#m3G|F!-dA$R0sMdzk=9Wi0!nmI~ljFsif}rI@7R zvF?_&r?N%!wTNvzx_E}0!Z_OHdk{~T{)kU8{4qa3@Dl{@yX9K}uh;S22K)(U{wbdx z=bVI$_CE);gyg_7nqxSz>qRsT?pne%A4Nhv&G!lX8UK|75^&Smf-U%S-u3%y@fY|@ zJ_+r=!e5iV-2Dyyma|*<_w)EWqWwKbt>E21@ZCS^k=QHfPU4vZ{NbNC(ikHVa5;2Xgqh2c^7GicgKhoT&nceEI3z*#$FuO^! z7z@LHo)7~2uLgFGu=N~k4`8=-)kOmCpmuj^z}smFt_T3z1Hg6zC~v=jf76V$vj@)B;Yg1s4yNNd5OPMN%l!%y>pd*Byv0z9Ich~X;Uyo|4n@u=!d zIS5-chx=)=dnw+*kgj(H{OqFZzC?b@K_??Gb3_!8K#VpvcIf4RpDX?cm+`-Ng}e!u z6GjznzQ@lF3@&3Xjw*wXpcO|#N@)w2Xfsv-+VB;8m2^Y#{S`u7#;a?>)iB3&nbG|FX($vLs&Qp#s795F2n|jw zaoj|kS*n?QiYDJ|@~;VvcMJ^nE#qBvRYog>6c`;AQW{0}Hr1k9jk-+wW%5@od?mnb z2KXrg3sZx>2?O9g4Oj5)u7)Li=abM(4RqFZC8a8KHI%)%U7P=5YUvSb=_300bxf-G zF^Fjf0}BrZ79I@h)SzKd=1Ikp@-wI_R+98K>nz)#lS>2CE9hgE)wb`bBQcPSFHBI) z)CSdV?0=aC6b8CVLT&9#EaQ9Xv8TSjt3JXv-_ELeS#$1J*sg%{u7L9{b&aWPU1}rm z5?qsH7J7+bB`@_yUgn5+sjqe}0~eI+-a++uuEXi~ug>YCM19x)AE(!@!|4wOoc?gx zEBv1B-Q@J~*TbpWv{I*P6QgMjopw>D-D>k%vGjrJSb9P;=O?4}V(Gf5Sh|izy{xWR zTMY1u#LHM(#)qmC?|U__-#bPp-pJCX)D3Fu8b}|mMta}6NPe~`r&I|mDs$VKNIy}H z^#0e0giomLMy5l&O5$oM1?@7Pid7}R4{0Dj1GfZG+G3(q1POYu=hTf1Qpv9O8`7!% z=kav^z$c;njg4$T{2pvWh-|nA^EW=F@RnYzjvJt$*{fq8;+Nnab(2p_?O^Ur$sUf= z1pIL>kv4DVr?B*3|1z#B@ZV1>e*SCqZ2Y(`tI;#Z!>=gMK^C)e{_K2O{%cCZXd za`m@7J5`_R=aY0_eTcn^8^C(FjCce1e*l=7o_UpT^iU!gijy<$H4SHjyb5Qr{*}Ff z-vatTF*V4NLZWIHs5vduptckR-H6}3ir;z`o37w@pT%}js|xkg9jq;#w8+hZqS9(N zuT;3Yh0|{3eS))>)NQ<@Mb+(yt0A?QKmYDtbw~~KT{qME65k&twPie}M(P{Y5p_%* HN7w%WJfzaH&c)1q3~oUjIXSz~^eyyk*j(E3<>(l|yjLd02t<~VLA(7Zr?jxjsT>RjmsdjyA`GP>W&V`iBVFW| zgln)<<5tKNyD8(NmCNYjSwJx|SA<*~~ z*hiDI{iWCQyJr$Y0yi>Zrx=BDE6s@#DWh@p|iaBdG5 zgt(LtPc~3QjTEOEP^m~#(=H53S7|*-rHoX{k5wUK(^c9|QmG^r&#@}>AdXblsiR9L zsnn8+_gIzjl>fpH@lz5$w2K$O(uUGVL?4ZGBJF^18_3+9L+5lHSGS@3JC%GloLrkE mj)XgyqSZ_8El_S6ck$rw?onztliKOD3ld+YJA@EM6s|vM-m`K5 delta 989 zcmaKrOHUI~7>3_7y&O6mpj2Wl3RViXR7z2~C}0IaZFLY3Q1L$6p#o)UT43wSwTtru z-1q~mO-h1^aqZTHTX+5o<97g=MjIxXbH2-ao|$>S%&)fHWBRw>yI%lYfnC-ISd)%+ zoa8tq(1A|*lg)d>0%y=AN3_0%c61B$;H+HNQk295dJ&gpZE&WKp?S^RHj{bN&Lxe4 zoeO{=%#md9JB@|S;;L$C2nXOoSVuE13Jk)_;4NAkg>8#tSa!M+Y^Y+m##zFbvo@DX zRxy)h2*i2~hov4e#?ZK>y7o$8dT~~Ma7X12cfPg7i+LS)vB0q?u!MV+?;eeX{D`-B zu&g79hXT{M?#E+>@t7eeSi5}ZYKi{$0Mb8I`ey<+k@mx6NI81>)^oi7rRrw|GDwqp zMP)gGTSzmAjBQ)Rsk~V#StX7&h8}5pgKcTk&gQLBw^1mpZ@uQoGcubRvX4jRF3~tN zTt)*q=z*8kQK}?qXS93bJ7DEK$r!Dw4frrltJoLNEK_^6tC%3rsC>^u!%C}D1~h?_ z>yEwwlek9pDY`w35``mg2sSEPeWA(FE=~hgL|7HkuQ>OS6dD|0D}e)tKpkzku?O@i z$7(5w8cP4alps+~)TNNGwUmLQC>=!UtV^MJ{H461FFJn|rHd$$x|G|8^N0{lUHlVx z6&KV*SdA%B62@qRM$G}`KG66%i=pKmj8wp#Q~Pslq@QAjG#c(;mi9Q@n4{W#Jiw!a Z=n0-5L@y2_i=tPg*XbQrv5pOd{s7BgktqNG diff --git a/珞珈岛-项目相关文件/luojia-island/pom.xml b/珞珈岛-项目相关文件/luojia-island/pom.xml index 8e6768a..984db35 100644 --- a/珞珈岛-项目相关文件/luojia-island/pom.xml +++ b/珞珈岛-项目相关文件/luojia-island/pom.xml @@ -101,6 +101,11 @@ minio 8.5.12 + + commons-codec + commons-codec + 1.15 + diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/dto/UploadFileDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/dto/UploadFileDTO.java index 84451cc..70350f3 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/dto/UploadFileDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/dto/UploadFileDTO.java @@ -1,10 +1,12 @@ package com.luojia_channel.modules.file.dto; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import org.springframework.web.multipart.MultipartFile; @Data +@AllArgsConstructor @Builder public class UploadFileDTO { private MultipartFile file; diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/FileService.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/FileService.java index 9896200..b2883da 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/FileService.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/FileService.java @@ -5,10 +5,12 @@ import com.luojia_channel.modules.file.dto.CompleteUploadDTO; import com.luojia_channel.modules.file.dto.UploadChunkDTO; import com.luojia_channel.modules.file.dto.UploadFileDTO; import com.luojia_channel.modules.file.entity.LjFile; +import org.springframework.web.multipart.MultipartFile; public interface FileService extends IService { Boolean createBucket(String name); Boolean deleteBucket(String name); + String uploadFile(MultipartFile file); Long uploadFileAndGetFileId(UploadFileDTO uploadFileDTO); Boolean uploadChunk(UploadChunkDTO chunkDTO); Long completeUpload(CompleteUploadDTO completeDTO); diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/impl/FileServiceImpl.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/impl/FileServiceImpl.java index 64964f4..0b8a1ae 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/impl/FileServiceImpl.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/service/impl/FileServiceImpl.java @@ -13,29 +13,43 @@ import com.luojia_channel.modules.file.service.FileService; import com.luojia_channel.modules.file.utils.GeneratePathUtil; import com.luojia_channel.modules.file.utils.ValidateFileUtil; import io.minio.*; +import io.minio.http.Method; import io.minio.messages.DeleteError; import io.minio.messages.DeleteObject; import io.minio.messages.Item; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.DigestUtils; +import org.springframework.web.multipart.MultipartFile; +import java.io.InputStream; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import static com.luojia_channel.modules.file.constants.FileConstant.CHUNK_BUCKET; import static com.luojia_channel.modules.file.constants.FileConstant.CHUNK_PREFIX; + @Service @Slf4j @RequiredArgsConstructor public class FileServiceImpl extends ServiceImpl implements FileService { + private final MinioClient minioClient; private final RedisUtil redisUtil; private final ValidateFileUtil validateFileUtil; private final GeneratePathUtil generatePathUtil; + @Value("${minio.endpoint}") + private String endpoint; + + //线程池 + private static final ExecutorService SAVE_TO_DB_EXECUTOR = Executors.newFixedThreadPool(10); private void init(){ createBucket("videos"); @@ -67,6 +81,46 @@ public class FileServiceImpl extends ServiceImpl implement return true; } + // 普通上传MultipartFile + @Override + public String uploadFile(MultipartFile file){ + String bucket; + String objectName; + String fileUrl; + try { + InputStream inputStream = file.getInputStream(); + String fileName = file.getOriginalFilename(); + String fileMd5 = DigestUtils.md5DigestAsHex(inputStream); + String fileType = detectFileType(file); + fileUrl = validateFileUtil.getExistedFileUrl(fileMd5); + if(fileUrl != null){ + return fileUrl; + } + validateFileUtil.validateFile(new UploadFileDTO(file, fileType, fileMd5)); + bucket = generatePathUtil.getBucketName(fileType); + objectName = generatePathUtil.getObjectName(fileName, fileMd5); + minioClient.putObject( + PutObjectArgs.builder() + .bucket(bucket) + .object(objectName) + .stream(file.getInputStream(), + file.getSize(), -1) + .build() + ); + fileUrl = endpoint + "/" + bucket + "/" + objectName; + /* 线程池异步化 + SAVE_TO_DB_EXECUTOR.submit(() -> saveFileToDB(fileName, fileUrl, file.getSize(), + fileMd5, fileType, 1)); + */ + saveFileToDB(fileName, fileUrl, file.getSize(), + fileMd5, fileType, 1); + } catch (Exception e){ + log.error("文件上传失败: {}", e.getMessage()); + throw new FileException("文件上传失败"); + } + return fileUrl; + } + // 普通上传 @Override @Transactional(rollbackFor = Exception.class) @@ -101,9 +155,6 @@ public class FileServiceImpl extends ServiceImpl implement private Long saveFileToDB(String fileName, String fileUrl, Long fileSize, String fileMd5, String fileType, Integer fileStatus){ Long userId = UserContext.getUserId(); - if(userId == null){ - throw new FileException("不存在的用户试图上传文件"); - } LjFile file= LjFile.builder() .fileName(fileName) .fileUrl(fileUrl) @@ -263,5 +314,29 @@ public class FileServiceImpl extends ServiceImpl implement } } + private String detectFileType(MultipartFile file) throws Exception { + // 获取 MIME 类型 + String mimeType = file.getContentType(); + if (mimeType == null || mimeType.isEmpty()) { + throw new IllegalArgumentException("Could not determine file type"); + } + // 根据 MIME 类型分类 + if (mimeType.startsWith("image/")) { + return "image"; + } else if (mimeType.startsWith("video/")) { + return "video"; + } else { + throw new FileException("Unsupported file type: " + mimeType); + } + } + + private String getObjectUrl(MinioClient minioClient, String bucket, String objectName) throws Exception { + GetPresignedObjectUrlArgs args = GetPresignedObjectUrlArgs.builder() + .method(Method.GET) + .bucket(bucket) + .object(objectName) + .build(); + return minioClient.getPresignedObjectUrl(args); + } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/utils/ValidateFileUtil.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/utils/ValidateFileUtil.java index 6da65fc..358ef73 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/utils/ValidateFileUtil.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/file/utils/ValidateFileUtil.java @@ -99,4 +99,13 @@ public class ValidateFileUtil { List uploadedChunks = redisUtil.sGet(key); return uploadedChunks.size() == totalChunks; } + + public String getExistedFileUrl(String fileMd5) { + LjFile file = ljFileMapper.selectOne(Wrappers.lambdaQuery() + .eq(LjFile::getFileMd5, fileMd5)); + if(file == null){ + return null; + } + return file.getFileUrl(); + } } 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 new file mode 100644 index 0000000..9e6cc5a --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/controller/CommentController.java @@ -0,0 +1,64 @@ +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.utils.UserContext; +import com.luojia_channel.modules.post.dto.req.CommentPageQueryDTO; +import com.luojia_channel.modules.post.dto.resp.CommentInfoDTO; +import com.luojia_channel.modules.post.entity.Comment; +import com.luojia_channel.modules.post.service.CommentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +@RestController +@RequestMapping("/comments") +public class CommentController { + + private final CommentService commentService; + + @Autowired + public CommentController(CommentService commentService) { + this.commentService = commentService; + } + + // 创建评论 + @PostMapping + public Result saveComment(@RequestBody Comment comment) { + commentService.saveComment(comment); + return Result.success(); + } + + // 更新评论 + @PutMapping("/{id}") + public Result updateComment(@PathVariable Long id, @RequestBody Comment comment) { + Long currentUserId = UserContext.getUserId(); + commentService.updateComment(comment, currentUserId); + return Result.success(); + } + + // 删除评论 + @DeleteMapping("/{id}") + public Result deleteComment(@PathVariable Long id) { + Long currentUserId = UserContext.getUserId(); + commentService.deleteComment(id, currentUserId); + return Result.success(); + } + + // 根据帖子ID分页获取评论 + @GetMapping("/list") + public Result> getCommentsByPostId(@RequestBody CommentPageQueryDTO commentPageQueryDTO) { + PageResponse commentList = commentService.getCommentsByPostId(commentPageQueryDTO); + return Result.success(commentList); + } + + // 根据帖子ID获取嵌套评论 + @GetMapping("/nested/post/{postId}") + public Result> getNestedCommentsByPostId(@PathVariable Long postId) { + List nestedComments = commentService.getNestedCommentsByPostId(postId); + return Result.success(nestedComments); + } + +} 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 fd940f8..944385a 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 @@ -1,16 +1,10 @@ package com.luojia_channel.modules.post.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - import com.luojia_channel.common.domain.Result; import com.luojia_channel.common.domain.page.PageResponse; -import com.luojia_channel.modules.file.dto.UploadFileDTO; -import com.luojia_channel.modules.post.dto.req.PostCreateDTO; +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.req.PostUpdateDTO; import com.luojia_channel.modules.post.dto.resp.PostBasicInfoDTO; import com.luojia_channel.modules.post.entity.Post; import com.luojia_channel.modules.post.service.PostService; @@ -27,46 +21,46 @@ public class PostController { // 创建帖子 @PostMapping - public Result createPost(@RequestBody PostCreateDTO postCreateDTO) { - postService.createPost(postCreateDTO); + public Result createPost(@RequestBody PostSaveDTO postSaveDTO) { + postService.createPost(postSaveDTO); return Result.success(); } // 设置帖子封面 @PostMapping("/cover") - public Result setCover(@RequestParam("file") MultipartFile file, - @RequestParam("fileType") String fileType, - @RequestParam("fileMd5") String fileMd5){ - UploadFileDTO fileDTO = UploadFileDTO.builder() - .file(file).fileType(fileType).fileMd5(fileMd5) - .build(); - postService.setCover(fileDTO); - return Result.success(); + public Result setCover(@RequestParam("file") MultipartFile file){ + return Result.success(postService.setCover(file)); } // 更新帖子 - @PutMapping() - public Result updatePost(@RequestBody PostUpdateDTO postUpdateDTO) { - postService.updatePost(postUpdateDTO); + @PutMapping + public Result updatePost(@RequestBody PostSaveDTO postSaveDTO) { + postService.updatePost(postSaveDTO); return Result.success(); } // 删除帖子 - @DeleteMapping("/{id}") - public Result deletePost(@PathVariable Long id) { + @DeleteMapping + public Result deletePost(@RequestParam("id") Long id) { postService.deletePost(id); return Result.success(); } // 根据ID获取帖子详情 - @GetMapping("/{id}") - public Post getPostById(@PathVariable Long id) { - return postService.getById(id); + @GetMapping("/detail") + public Post getPostDetail(@RequestParam("id") Long id) { + return postService.getPostDetail(id); } // 分页查询帖子 - @GetMapping - public Result> pagePost(PostPageQueryDTO postPageQueryDTO) { + @GetMapping("/list") + public Result> pagePost(@RequestBody PostPageQueryDTO postPageQueryDTO) { return Result.success(postService.pagePost(postPageQueryDTO)); } + + // 查看自己的帖子 + @GetMapping("/of/me") + public Result> pagePostOfMe(@RequestBody PostPageQueryDTO postPageQueryDTO) { + return Result.success(postService.pagePostOfMe(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 new file mode 100644 index 0000000..b83ac08 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/CommentPageQueryDTO.java @@ -0,0 +1,9 @@ +package com.luojia_channel.modules.post.dto.req; + +import com.luojia_channel.common.domain.page.PageRequest; +import lombok.Data; + +@Data +public class CommentPageQueryDTO extends PageRequest { + private Integer postId; +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostCreateDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostSaveDTO.java similarity index 62% rename from 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostCreateDTO.java rename to 珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostSaveDTO.java index aa63128..f23957a 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostCreateDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostSaveDTO.java @@ -3,9 +3,10 @@ package com.luojia_channel.modules.post.dto.req; import lombok.Data; @Data -public class PostCreateDTO { +public class PostSaveDTO { private String title; + private String image; private String content; - private Long userId; private Long categoryId; + private Integer status; // 是否匿名 } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostUpdateDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostUpdateDTO.java deleted file mode 100644 index 05d07c1..0000000 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/req/PostUpdateDTO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.luojia_channel.modules.post.dto.req; - -import lombok.Data; - -@Data -public class PostUpdateDTO { - private String title; - private String content; - private Long categoryId; -} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java new file mode 100644 index 0000000..335ef53 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java @@ -0,0 +1,26 @@ +package com.luojia_channel.modules.post.dto.resp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class CommentInfoDTO { + private Long id; + private String content; + private Long userId; + private String postType; + private Long postId; + private Long parentCommentId; + private Long topId; + private LocalDateTime createTime; + + private List commentInfoDTOList; +} 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 0f535c7..d8f7514 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 @@ -5,9 +5,16 @@ import lombok.Data; @Data public class PostBasicInfoDTO { private Long id; - private String coverUrl; + private String image; private String title; private Integer likeCount; private Integer commentCount; private Integer favoriteCount; + + private Boolean isLike; + private Long userId; + + // 对于匿名的帖子,下述字段进行了处理,如匿名默认名称,头像 + private String userName; + private String userAvatar; } 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 new file mode 100644 index 0000000..6680971 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/PostInfoDTO.java @@ -0,0 +1,22 @@ +package com.luojia_channel.modules.post.dto.resp; + +import com.luojia_channel.modules.post.entity.Comment; + +import java.util.List; + +public class PostInfoDTO { + private Long id; + private String image; + private String title; + private Integer likeCount; + private Integer commentCount; + private Integer favoriteCount; + private String content; + + private Boolean isLike; + private Long userId; + private String userName; + private String userAvatar; + + private List commentList; +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Comment.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Comment.java new file mode 100644 index 0000000..bb55476 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Comment.java @@ -0,0 +1,26 @@ +package com.luojia_channel.modules.post.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@TableName("comment") +public class Comment { + private Long id; + private String content; + private Long userId; + private String postType; + private Long postId; + private Long parentCommentId; + private Long topId; + private LocalDateTime createTime; + private LocalDateTime updateTime; +} diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Post.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Post.java index e71c15c..55420b5 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Post.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/entity/Post.java @@ -8,6 +8,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.time.LocalDateTime; + @Data @NoArgsConstructor @AllArgsConstructor @@ -17,14 +19,15 @@ public class Post { @TableId(type = IdType.AUTO) private Long id; private String title; - private Long coverId; + private String image; private String content; + private Integer status; private Integer likeCount; private Integer commentCount; private Integer favoriteCount; private Integer viewCount; private Long userId; private Long categoryId; - private String createTime; - private String updateTime; + private LocalDateTime createTime; + private LocalDateTime updateTime; } 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 new file mode 100644 index 0000000..af525e2 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/mapper/CommentMapper.java @@ -0,0 +1,8 @@ +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; + +@Mapper +public interface CommentMapper extends BaseMapper { +} \ No newline at end of file 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 new file mode 100644 index 0000000..71fd175 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/CommentService.java @@ -0,0 +1,21 @@ +package com.luojia_channel.modules.post.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.luojia_channel.modules.post.dto.resp.CommentInfoDTO; +import com.luojia_channel.modules.post.entity.Comment; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public interface CommentService { + + void saveComment(Comment comment); + + void updateComment(Comment comment, Long userId); + + void deleteComment(Long id, Long userId); + + Page getCommentsByPostId(Long postId, int pageNum, int pageSize); + + List getNestedCommentsByPostId(Long postId); +} 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 5a57fd7..8c7136e 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 @@ -1,7 +1,25 @@ 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.modules.post.dto.req.PostSaveDTO; +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 org.springframework.web.multipart.MultipartFile; public interface PostService extends IService { + void createPost(PostSaveDTO postSaveDTO); + + String setCover(MultipartFile file); + + void updatePost(PostSaveDTO postSaveDTO); + + void deletePost(Long id); + + Post getPostDetail(Long id); + + PageResponse pagePost(PostPageQueryDTO postPageQueryDTO); + + PageResponse pagePostOfMe(PostPageQueryDTO postPageQueryDTO); } 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 new file mode 100644 index 0000000..0bc9e08 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/service/impl/CommentServiceImpl.java @@ -0,0 +1,124 @@ +package com.luojia_channel.modules.post.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.luojia_channel.common.exception.PostException; +import com.luojia_channel.modules.post.dto.resp.CommentInfoDTO; +import com.luojia_channel.modules.post.entity.Comment; +import com.luojia_channel.modules.post.mapper.CommentMapper; +import com.luojia_channel.modules.post.service.CommentService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@RequiredArgsConstructor +public class CommentServiceImpl extends ServiceImpl implements CommentService { + + private CommentMapper commentMapper; + + @Override + public void saveComment(Comment comment) { + comment.setCreateTime(LocalDateTime.now()); + comment.setUpdateTime(LocalDateTime.now()); + commentMapper.insert(comment); + } + + @Override + public void updateComment(Comment comment, Long userId) { + validatePostOwnership(comment.getId(), userId); + comment.setUpdateTime(LocalDateTime.now()); + if(!updateById(comment)){ + throw new PostException("更新帖子失败"); + } + } + + @Override + public void deleteComment(Long id, Long userId) { + validatePostOwnership(id, userId); + commentMapper.deleteById(id); + } + + @Override + public Page getCommentsByPostId(Long postId, int pageNum, int pageSize) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Comment::getPostId, postId) + .isNull(Comment::getParentCommentId) + .orderByAsc(Comment::getCreateTime); + + Page page = new Page<>(pageNum, pageSize); + commentMapper.selectPage(page, queryWrapper); + + Page commentInfoDTOS = new Page<>(); + BeanUtils.copyProperties(page, commentInfoDTOS, "records"); + + List records = convertToDTO(page.getRecords()); + commentInfoDTOS.setRecords(records); + + return commentInfoDTOS; + } + + @Override + public List getNestedCommentsByPostId(Long postId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Comment::getPostId, postId) + .orderByAsc(Comment::getCreateTime); + + List comments = commentMapper.selectList(queryWrapper); + return buildNestedComments(comments); + } + + private void validatePostOwnership(Long commentId, Long userId) { + Comment comment = commentMapper.selectById(commentId); + if (comment == null) { + throw new PostException("评论不存在"); + } + if (!userId.equals(comment.getUserId())) { + throw new PostException("你无权操作他人的评论"); + } + } + + private List convertToDTO(List comments) { + List dtos = new ArrayList<>(); + for (Comment comment : comments) { + CommentInfoDTO dto = new CommentInfoDTO(); + BeanUtils.copyProperties(comment, dto); + dtos.add(dto); + } + return dtos; + } + + private List buildNestedComments(List comments) { + Map map = new HashMap<>(); + List rootComments = new ArrayList<>(); + + for (Comment comment : comments) { + CommentInfoDTO dto = new CommentInfoDTO(); + BeanUtils.copyProperties(comment, dto); + + map.put(comment.getId(), dto); + + if (comment.getParentCommentId() == null) { + rootComments.add(dto); + } else { + CommentInfoDTO parentDto = map.get(comment.getParentCommentId()); + if (parentDto != null && parentDto.getCommentInfoDTOList() == null) { + parentDto.setCommentInfoDTOList(new ArrayList<>()); + } + if (parentDto != null) { + parentDto.getCommentInfoDTOList().add(dto); + } + } + } + + return rootComments; + } +} 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 a6acc07..0f31108 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 @@ -1,25 +1,102 @@ package com.luojia_channel.modules.post.service.impl; - +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.modules.file.mapper.LjFileMapper; +import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.common.exception.PostException; +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.post.dto.req.PostSaveDTO; +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.post.service.PostService; +import com.luojia_channel.modules.post.utils.ValidatePostUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import java.time.LocalDateTime; +import java.util.concurrent.TimeUnit; @Service @RequiredArgsConstructor public class PostServiceImpl extends ServiceImpl implements PostService { private final PostMapper postMapper; - private final LjFileMapper fileMapper; - private String getUrlById(String id){ - return fileMapper.selectById(id).getFileUrl(); + private final FileServiceImpl fileService; + private final ValidatePostUtil validatePostUtil; + private final RedisUtil redisUtil; + + @Override + public void createPost(PostSaveDTO postSaveDTO) { + validatePostUtil.validatePost(postSaveDTO); + Long userId = UserContext.getUserId(); + Post post = BeanUtil.copyProperties(postSaveDTO, Post.class); + post.setUserId(userId); + if(!save(post)){ + throw new PostException("创建帖子失败"); + } + } + + @Override + public String setCover(MultipartFile file) { + return fileService.uploadFile(file); } + @Override + public void updatePost(PostSaveDTO postSaveDTO) { + validatePostUtil.validatePost(postSaveDTO); + Post post = BeanUtil.copyProperties(postSaveDTO, Post.class); + post.setUpdateTime(LocalDateTime.now()); + if(!updateById(post)){ + throw new PostException("更新帖子失败"); + } + } + + @Override + public void deletePost(Long id) { + validatePostUtil.validatePostOwnership(id); + int delete = postMapper.deleteById(id); + if(delete <= 0){ + throw new PostException("删除帖子失败"); + } + } + @Override + public Post getPostDetail(Long id) { + return redisUtil.safeGet("post:detail" + id.toString(), Post.class, + () -> { + Post post = getById(id); + if(post == null){ + throw new PostException("帖子不存在或被删除"); + } + return post; + }, 10, TimeUnit.MINUTES); + } + + @Override + public PageResponse pagePost(PostPageQueryDTO postPageQueryDTO) { + // TODO 目前分页查询直接按照创建时间顺序排序了,未来考虑加入多种规则 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Post.class) + .orderByDesc(Post::getCreateTime); + IPage postPage = postMapper.selectPage(PageUtil.convert(postPageQueryDTO), queryWrapper); + return PageUtil.convert(postPage, PostBasicInfoDTO.class); + } + + + @Override + public PageResponse pagePostOfMe(PostPageQueryDTO postPageQueryDTO) { + Long userId = UserContext.getUserId(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Post.class) + .eq(Post::getUserId, userId) + .orderByDesc(Post::getCreateTime); + IPage postPage = postMapper.selectPage(PageUtil.convert(postPageQueryDTO), queryWrapper); + return PageUtil.convert(postPage, PostBasicInfoDTO.class); + } } 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 c0a444d..9a0c2ba 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 @@ -1,4 +1,49 @@ package com.luojia_channel.modules.post.utils; +import cn.hutool.core.util.StrUtil; +import com.luojia_channel.common.exception.PostException; +import com.luojia_channel.common.utils.UserContext; +import com.luojia_channel.modules.post.dto.req.PostSaveDTO; +import com.luojia_channel.modules.post.entity.Post; +import com.luojia_channel.modules.post.mapper.PostMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +@Component +@RequiredArgsConstructor public class ValidatePostUtil { + + private final PostMapper postMapper; + + public void validatePost(PostSaveDTO postSaveDTO) { + // 非空字段检验 + if (StrUtil.isBlank(postSaveDTO.getTitle())) { + throw new PostException("标题不能为空"); + } + if (StrUtil.isBlank(postSaveDTO.getImage())) { + throw new PostException("未设置图片"); + } + if (StrUtil.isBlank(postSaveDTO.getContent())) { + throw new PostException("内容不能为空"); + } + if (postSaveDTO.getCategoryId() == null || postSaveDTO.getCategoryId() <= 0) { + throw new PostException("分区不合法"); + } + } + + public void validatePostOwnership(Long id){ + Long userId = UserContext.getUserId(); + Post post = postMapper.selectById(id); + if(post == null){ + throw new PostException("帖子不存在"); + } + if(!userId.equals(post.getUserId())){ + throw new PostException("你无权操作他人的帖子"); + } + } + + public void AIValidate(PostSaveDTO postSaveDTO){ + + } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/controller/UserInfoController.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/controller/UserInfoController.java index 03ef416..239e36c 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/controller/UserInfoController.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/controller/UserInfoController.java @@ -26,13 +26,7 @@ public class UserInfoController { } @PostMapping("/avatar") - public Result updateAvatar(@RequestParam("file") MultipartFile file, - @RequestParam("fileType") String fileType, - @RequestParam("fileMd5") String fileMd5) { - UploadFileDTO fileDTO = UploadFileDTO.builder() - .file(file).fileType(fileType).fileMd5(fileMd5) - .build(); - userInfoService.updateAvatar(fileDTO); - return Result.success(); + public Result uploadAvatar(@RequestParam("file") MultipartFile file) { + return Result.success(userInfoService.uploadAvatar(file)); } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/UserInfoService.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/UserInfoService.java index e7e26db..4cd7749 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/UserInfoService.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/UserInfoService.java @@ -12,5 +12,5 @@ public interface UserInfoService extends IService { void updatePassword(String password); - void updateAvatar(UploadFileDTO uploadFileDTO); + String uploadAvatar(MultipartFile file); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/impl/UserInfoServiceImpl.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/impl/UserInfoServiceImpl.java index 8e6fcf8..b2a6b1a 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/impl/UserInfoServiceImpl.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/user/service/impl/UserInfoServiceImpl.java @@ -16,6 +16,7 @@ import com.luojia_channel.modules.user.service.UserInfoService; import com.luojia_channel.modules.user.utils.ValidateUserUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; @@ -26,8 +27,6 @@ public class UserInfoServiceImpl extends ServiceImpl implement private final UserMapper userMapper; private final ValidateUserUtil validateUserUtil; private final FileServiceImpl fileService; - private final GeneratePathUtil generatePathUtil; - private final ValidateFileUtil validateFileUtil; @Override public void updateInfo(UserChangeInfoDTO userChangeInfoDTO) { @@ -63,31 +62,7 @@ public class UserInfoServiceImpl extends ServiceImpl implement } @Override - public void updateAvatar(UploadFileDTO uploadFileDTO) { - Long userId = UserContext.getUserId(); - User user = userMapper.selectById(userId); - if(user == null){ - throw new UserException("用户不存在"); - } - validateFileUtil.validateFile(uploadFileDTO); - try { - - /* 下述工作应该是前端干的 - InputStream inputStream = uploadFileDTO.getFile().getInputStream(); - String fileMd5 = DigestUtils.md5DigestAsHex(inputStream); - String fileType = "image"; - uploadFileDTO.setFileType(fileType); - uploadFileDTO.setFileMd5(fileMd5); - */ - - fileService.uploadFileAndGetFileId(uploadFileDTO); - String filePath = generatePathUtil - .getObjectName(uploadFileDTO.getFile().getOriginalFilename(), - uploadFileDTO.getFileMd5()); - user.setAvatar(filePath); - updateById(user); - } catch (Exception e) { - throw new UserException("上传头像失败"); - } + public String uploadAvatar(MultipartFile file) { + return fileService.uploadFile(file); } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql new file mode 100644 index 0000000..56204a5 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/data.sql @@ -0,0 +1,22 @@ +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 c17cb03..b801e0d 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql @@ -9,7 +9,7 @@ CREATE TABLE `user` ( `phone` VARCHAR(20) UNIQUE COMMENT '注册手机号', `email` VARCHAR(100) UNIQUE COMMENT '邮箱', `student_id` VARCHAR(20) UNIQUE COMMENT '学号', - `avatar` VARCHAR(255) COMMENT '头像URL', + `avatar` VARCHAR(512) COMMENT '头像URL', `gender` TINYINT DEFAULT 0 COMMENT '性别(0未知,1男,2女)', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', @@ -56,8 +56,9 @@ DROP TABLE IF EXISTS `post`; CREATE TABLE `post` ( `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', `title` VARCHAR(255) NOT NULL COMMENT '标题', - `cover_id` BIGINT NOT NULL COMMENT '封面图片ID', + `image` VARCHAR(512) NOT NULL COMMENT '图片url', `content` TEXT NOT NULL COMMENT '文字内容', + `status` TINYINT NOT NULL DEFAULT 0 COMMENT '是否匿名,0否1是', `like_count` INT DEFAULT 0 COMMENT '点赞数', `comment_count` INT DEFAULT 0 COMMENT '评论数', `favorite_count` INT DEFAULT 0 COMMENT '收藏数', @@ -76,8 +77,8 @@ DROP TABLE IF EXISTS `video`; CREATE TABLE `video` ( `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', `title` VARCHAR(255) NOT NULL COMMENT '标题', - `cover_id` BIGINT NOT NULL COMMENT '封面图片ID', - `video_file_id` BIGINT NOT NULL COMMENT '视频文件ID', + `cover` VARCHAR(512) NOT NULL COMMENT '封面图片url', + `video_file` VARCHAR(512) NOT NULL COMMENT '视频文件url', `play_count` BIGINT DEFAULT 0 COMMENT '播放次数', `like_count` INT DEFAULT 0 COMMENT '点赞数', `comment_count` INT DEFAULT 0 COMMENT '评论数', diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml b/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml index 8ded89f..20fec36 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml +++ b/珞珈岛-项目相关文件/luojia-island/service/target/classes/application-local.yaml @@ -1,19 +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 + host: 192.168.59.129 + password: Forely123! redis: - host: localhost + host: 192.168.59.129 port: 6379 - password: 123456 + password: Forely123! rabbitmq: - host: localhost - port: 15672 - username: root - password: 123456 + host: 192.168.59.129 + port: 5672 + username: admin + password: Forely123! minio: - endpoint: http://localhost:9000 - accessKey: minioadmin - secretKey: minioadmin - + 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 af5889c35db9f284cd92d7d398ff61bd3bfda2e9..7a93c3a7ffc2ea46e37466fc4632a4595dc57658 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^1Fp0;hrx>sdXVG~%D{emV?Uh% zsCJ|9ye4dlva)FPIcSUqm^NX$+6~Ma*M^Cp^=b@38&>WLX6ao7icn}X*kn>`icmdURwSpMt~>!AfYoj+y*X+pDkn7Y?*W1bKcB_ cut3&Lr!CQ1q&Eu$2=7J+oA983ZR{fQ2eF+$;{X5v delta 667 zcma))%}&BV6otxVy=hNL`L3R_m+C_{#j*O4VYVYsQ!QCj9kbeD_^UW93I)=gvm!xoYt9 zuyLAa09InuQ9gnNRHe3-QZ&H=RwCHBH3=*(H-YJ7_-X>>1ok))EbdbR(@7e(il%PZ zy&ZJ_R~fg*AJZOzHH1l@J1k7M)C>EtIHow<0V=>VRRiOx-YE5gkGCFKHd1%oj5Hrx aTx}kuA9f!H%sk?4_&7ukM>yfXSos4{?=T$z 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 10fb2eed02253409be825520874eb7eadccc0865..03c6774ac53b2ff18535e66e06bcfd38f4d3c711 100644 GIT binary patch literal 3534 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 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/FileService.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/file/service/FileService.class index 4c6f0089e8f50ba0b744f7d93ae5ecbcebb20dc5..f5919ea889c3f8407a724a0d33a7e907e83902e4 100644 GIT binary patch delta 167 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 delta 5941 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 delta 1379 zcmYjQTTEP46kTgxcevbnKbV(gm|8>EEwXCQ4^KI6i5fEo$^tQPW^&ysP0o1Mee2)T!=JoqEHF zHGgQ}BjgG9#7JqPf5%wCjku0Z95?U@h6z{U{+W?tNyj2SGw`|cd19_bd}-h-)#S-= zNez2CMeDek@STD0)zhA=B>ZIHXZ5-#?>Ip;s1`?9ReQskMVvJ7n`yupFYFqay06$@ z94VFDc)%?G!@!@a*PG@Uwbk3mf7D~%^*nvxC2xnFvueqgIZzus!hp}ktj-+s8k-DW z#bz}YKJ4@3gwM%V9lH_pvrU}}4V#(Q>1=0*#!UtuXQyh59BFm4oA7L#EEYOOCuXL% zmpUkZ2BxPAJ1sYb5~20YOcuuqJ2mzZNp(R_rZnC_geG@1PfbqCvu|c}dtq1a&he7Q z8`WSm&70L!H0HR4s8{z!>g^f_)oiqx3u-A^U#)>Si~nH5ITffWb6GuA)7p&{`E*eU z0@FB;3o;8L#1LslH8`W8P$)sWESwUSi*(Rw5i$0V5S3%uu1koDYeYr5D7qGr3yx^0 zA%2m^W%0OKW%1meY;ixhUqW^)tJ?Uw0gEmzOQ3O$u8}&cWg96})1XIAo9WOEE+eC1 z_eE;mqW02fQ9l~rCKgY|JIWSkH(b~vm3{``l*FMm_MugFi808K6zk|`SQPCDViO~R z9G0RGub@#wr`#hNUbBR&Y!qPzE%9hYT<|l(W9npb>iI-Nd0C*>+SXQS?I;2mvuw3h zlGe;**34vBW0}#AWXv)XK!9;3#7t7y3~5Lul3KMVjafn3vNzbnOU>2XCIv)kUD^B`_GFvpP|n63bJ#a4SvHuqT~cYD74yVY>?TaRswc?Kr%N)oB zkIm!by>QyQQszs!?v`PlK$*i*`>A^$Hp^W8BKY+@zS)a*S$rG(!NN^~e+>R&;X1*; z27kA3MDVHLUly)9gmGa1D>!{e@b828_plJl5tL_Tw-IZ%W{brvGh8qF=9%-tv4WJe zn0oju2JV#3UoK%A>)B8#W}~EDAy|GcUMYXh2Db2OUc-&NR{n@CUN7%5aNtEe#~#Gl U%YODas<@dqS@Qt5a0v1L0buh2^Z)<= diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/controller/PostController.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/controller/PostController.class new file mode 100644 index 0000000000000000000000000000000000000000..e6aa9dc6cb8ac19ed9f5af8800caab8e3c4bfe6f GIT binary patch literal 4047 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 literal 0 HcmV?d00001 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/resp/PostBasicInfoDTO.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/dto/resp/PostBasicInfoDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..8cd50b3789ac3f34ba3ca7b6ae2b85d672074c76 GIT binary patch literal 4456 zcmbVQU2_{(8Geqmt6j+}emfzm3++^#r z*A8mc@OJdl`VE0hQ0IIr`xCB2;nt#@VAR1F#s$ov>23J}lPSx?bVzAnMfI4I)`gV^%pDkGhonN2}etTOjs za4;h|bG{^O%aL;q=5dxQR>=$ za`0t*g#pPm>Rcc1nJj@i(TxxOt@VAqJv9VBEh!T-d>LC+$^f3I!SGP&A|(J zQQ)zrC-)+(dGV`3OiE<8>dPG+`{Rz8(p%*>25`_Ns zPIJ?5t$UjdrMal)H8#9fAlpf&5pM@v_~Od{E&D}*leehLpy^k`y`UYC{KYVgVlNJu z8L9O~)ZC1ADlhw?-|}L=&LL)7Yv|a4jLmLvYghevJF4IGT3*wS{T5klIY4h{pF)$k zy8QX?<~O_VlSrKt%lqHaQdwB8s>DmVhObSeA$1Rz1ob zRh_A0JEnc9o(Tm>pH@z!Q3IU{*mrta1~hV@x1iUeGc}SdN4K;~l@@`-m9&a$u~*w! z^>!0km^W`#SFbSiD$g;iU8ljilT~pQ%Bcv7<^F|^mIs!TD<>5%S5Bs~<4EtBKw&NF zv}*pnJzmaumhwxaI9?QM7HmBd{@uo(bwp;_Q=ZHfgBYq|sZgY@}B! z+kLBD60>7DuwcdLSlE-N{ksC?{c;|Jd(n@^x|EcHBVPL;PzP7rKX;|%G8tBlzQ@3;&TE# zN^0C?wkm81KFzs5K>SX@mie92op_11lh{{qm93W(?=?QTT{y#u`-y%J>$h}fuuo(i zO2lhq2vKp6$Uc;acgzr?i9w?Lp+vkwhY%efBq|(A#H)1((TPE#kwb}i4-X+aIY{Ij zN>s(ykyX3ql2FNLZvG=!!}ot$BcS(RYC{T6;2YdzlckMn>leieR)^6Sk4i6f+@qI` ze){Xf=_ig#FONr$UN-vaZ{X&z)gM19y*zb2`soAo-yBYV;;8iUF!$&mKR|zLIQ_|^ z(#smrqkrN6Jzq6-axw;0F-8SEoS*v;rg4A%FR*_BGkbsj&#+g|&ON|s)ui$C^|SnP zjfKBrq-1=8iF3ONA8ZygNeBdDkh8NRX3&Xr(|G+#*32+|g1|f<_Ziu{7ER z8TT1~HdW?Kb@D#YdFh>(hgicplRAZe;}zD>46Eipu))48=J0pCO3R=KKfvw34;E#9#Z_#q_Pwv#)w2Jr_ zPQs%#icPL}1yh#&5Th3CPcdyF!(Ur`iWAz*|4(MO2CNMT#gKpJB&X;iLzgASlnRj< zOJ58+W4gkay^NX6lgwCBVO|+v7xHfg(p)CjH9qqs{cwEolCh-3c4~Zan^LpK=kLK< zcmVfp*+1(V(or%Jk1YkLT??+MT-2T#WS7jY>ztcYu3XPWMe0%KT}!zr#$=S$bzN|6 z<+6J&N|d8c4HwLtI)WtpEPjm|>I~n+ueil^Mp(cvahoa0;u-t|TeJ*3k8S=)!MsMv z1hjH|m3j_$Xj%9f&+!f|TW-2|8qR0zFf7& Lbr(Otk5KwAIRrC$ literal 0 HcmV?d00001 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Post$PostBuilder.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/entity/Post$PostBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..045d2f8843f42fff39643a400e6a40f2a35c748e GIT binary patch literal 4251 zcmdUy>rxy=6vt05mxawB1Q0|7K?q@iWQ?FOE+~OWz$_O75@XajyW7CP>>O?$hVe`{zHe{~)3T+RIRin$py4 zPz$v(>N>P)mg!jTzPVXA%8sS!KaLxCbPTk)JE-T${2Kw3`Td0UfFc2-l1(h zFCJK~%N?`qm8uS}n8#ivFu5Dp!HKzr_i^!9s@hJ8`;1a{3A5$TrptToeoo-uFsPHd z7`0%e!x?o)l(qxkR%+b_^@M76+1lq~;F|{Z2}!!>xdA2?vbPKxptrG!N?--m3ZtF~ zZ4GMs+z)4c$Dkph*zVXzeA%nY;qMwWBBTcPSq8HH;XQ-K#D|VOtLFK3a5m(IK@%aU zX7eBG`jZA_g~3{@74EN<#L}h>nh~N*(ZVu3|3r#!8)VY^LhN&V*s;s7!GK(KfR35> zik9<0eG1q9fkCt3km_+s$9qv=bWPKM^_u5f~n8T~aGF;aLgk-j>DOG-{n9U1mt ziq0=G(vPv3Ttv)=>~4lWpud2ryBwk+Q&^MLzU+$D*^9wvWAnzlno)MR}0aRMIsyrUzfEZ?A1#`s8!GQ3oP5&O5bGY8GW0k??kfsp3(T3HEg%$ z9dT0{MdqIss~Di@F#0L#BuY`5VbyX=sN~~$&pWCf=XC2vBn<<1PL6qu`m>0BOukfz zWy^84QBiTa#u{!E{<33LDjeZ)EpirVDlodC?J#cPX@YAFU#yDCEO$wxD9tIP><&C} z$00_`=(Xba0e(~BZlcL>5z%D0ifA%iMKl?19hwYx4o!yZh9<*BLzCf}p~-O1&}6t| zXfoU)&dIv4XIu=i@6YjO;wux9sh7ll4b8EFr!Wp-yASac6Nw?Kw1(fP>2QAZ1vQ1B z9Du^e>8a`8@c0F zXEeS^8*%=5D=}Z@G{rYH{%kz|PGY{ykBUF5@i%D;DN7{EJ(LNN2j_pMxu;Vvkm6oY z2ikSCUbKF+L9}7CQM7Tin`l#Lx6tmqq>tj0qRg-JvHA5&daUL@MEMf)FM@TcxnI#e zF+F}>(`Q5%tzj`{4K1{dSyQyrka@leWplKP-!`o4DcTcyj$Su(+wjlx2Wlsaio|K) EUq_g5ssI20 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..3d64655c8b04ccd1e20a6ba0e26e17b86f9bc13b GIT binary patch literal 9206 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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..9eb62843f23c0b311cf812e7dd30c36ff67cf0c4 GIT binary patch literal 413 zcmb7=O-chn5QVFwW=vFcn+v$Ka6KyM!qteuK(XpxEH#H?4dy}IK0`ILJDDuuq!DOLZM=1wZ5USs% zW%WZohO_s;nwP~Jra vmz57KQcumAQ4g#r0q#HGjK+KMZIuXX>HHU_n4WVzrOzffamZyf);}(i7t3v>X{Uul4GG1=Dg5pnWN)I zJI@{3N+!t1bcmb(2sRjWXQC237b@eU$qW-8!PP~%iO_{ib;*nQM0n{;UOJ9nJt`-) zI;(iJD950aSQH)u1cRr&!8%T<*WBWlhLfo9@WZIT|B*Ni(I4w{EUYNdqje0ngNV3^ zVbFHyU+W4jgEzf_wi$QEN|jAR!ilz@`3X*VQRZG6VLcz7{=Jns_V))%&9M)8eFhs- zdLjv>NzWv7Qp^dz(X-cENgHTN3RGJ%Ww4u}4?&0Mh0GbeJRiE&3sheEd2I!;X&aF( zaLwg>98==E679S;^CDR4NjB_vnmP4hg**%w8?TU@MlH627$L(YOE1 z=-EXo{uu6NkesRQdnKGqj?`2K2VRhzouD!FXEYrW{c5F;&B*s_fJ=`1dRD6~4Lmxr zE^UHg2Fc?Qo+U>%dNyAj*ItQap7UH|(~y;|QAALyA*y2> zbb({u8W{mSEEDBvswhy>bBvs|O{r&Yw^nU9wRPU6C?;T{hB_US5EE!FBM)Dtos6Lr z+DKEabTXcGp(jw=ZF%xVTT&p_G_U=9bGvDz%uKh@?qs@KHB2r~vBdUP#5G4zCakPy(*rX6Ru`TkXrj>vuDEev_pX8d zYXFONj9p@9Z14CXoD2GGl3B7qhk?Td#%-}vRuJ_9$B!0G za%O49tQlM@GloHa1dh~jl#Ziu%;@P?k(fXnx(zogBV$X>Oj{Q? zxgO&JtIJ5|Q=XkQbDq&rxRYy292w{y#c^1qVX=-@ED@OIhn#1pEe3AFOs!(BZ{U+a zb;h|sV0t08hfkrd^*CO~30NjDUdBXLB86H#BXD?`Why{c=vXNOgeuBaD|*|K5v-

1VS3Ap*WW%=olYGau#u^hvy!%} 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 XOcm3Drvrkg`CP+tDq4gg7NX&Q-{qDv literal 0 HcmV?d00001 diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/utils/ValidatePostUtil.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/post/utils/ValidatePostUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..19b43734bf0c4a1de1e8c7ea2a76d0fcd57ae88b GIT binary patch literal 1649 zcmah}U2hvj6g`u#wYQrl*hwG_Z3=~AC(tGRqTmvmx?e^vsc^8=yr9W?us7M=ao4kf zJ|o&9fy4tyAV5OA!9yfe(S}qFZ#?vO)Jgdhh&ztsI$+7Rv@>((&bjBFduJZ~v#|-_ zZRAY!pw~d3g?5I102*awSY!U^n3q@?t0M~1?Vlr*c>T*KpFVuNzOntwhKWHWEF>|)FmTolTs6xu+8)1|O1h{O8?*4NmP;p| z^LbgsFwQWv^~0}E);6~vuGPQa-2VKw_MEWry!JH7Gb;ln0u{p{;!wZ!S$*w~y&QUQ z*uo2Vkzr7~b0x|$yqPPJ`yN^IvLWhAc-g>F3$Gx>u>Yy*dYd8c(NN@GL{;fcrQeNV ziYV6a+^T=EL1F7(-PyYPjfq$Bnt@|Fb(>-MDaicNvT#)6Xfci%95-;n!bzNBINd?^ zJx!tuTC*v(TcR9v0d`7j>K3}nt5p$FtL3}F_zllS0e22%7_8McRE9IDt|%QkHj^$g z^krpoYk4N#j{@cTA{VT>HJ5~# z3j(RQzETt;k@uv(BvNzIu?dpao4++; zzDeJsh|@O-6C?B=!y$SdQW(c^9Kcz+|MNJA>zKq_jAUF%>nGn!TcGRyEYnT1YG`**sHIX|$oNB)$T9dx^aTK@1DA zwh+FMIPbP;8)0$p{h#5U^UFDA(}hR8f4{r}n8C`e_@HJt%Fv*~i$;QaoJpmPo#=^? zH4X{O=BF|`v~Qdk!IW{32(D)jlLv`u0S(P6s?b81>0K?x*S7X|x3i|-scW3niZ&Pg zD%#O;cWS@1(I%IRo9E;a1p8hxwMz(@UrNYE$mBz{=9^1(=K9=SmG_YkekfcDAXLKv zCo4N^H#*tsGBtPWSvUIxXMr;WYS6=~PTCrJ(Z?2;SVw^W^|N*m8^8b`1%n96Fky(p zp$*UxhB3lE7qMfM1;K+cs~hVWf3Z4g`aLM{j2Z>zwY$88p@A8^|1gYWqR24LWpWIY ze=tlH8N!mmi|IVW!Y_t;1!qray5Teh)-ash1n~U>5#iMr1`*-J9K`G&5OWejwFVL9 z6FNeKpLWc{CZ{o*ClP7=5k5We0J{A}QBgu63hNMZl?4h1DiO_tFUSIm@?Mfm)!b#7 L?U;oi7Zm>iG@DR{ literal 3475 zcmc&$=~CNP6#lL;2#f-R5CTn`1xUk^M4<$dU_w|DQot-_aksP?*%BZkORg3&nf~dY zzCfR(ooQ*(AANv6RHxsSje#ITpwp>mWSw)DbH20c{Pp)Ae*$=f7Y#_DMnO_VE$Rdw z<=uj2hwiqezsPUtj$_(d!8JnL^tI48JuUA#f#=#b$#wFx&W1Z(SrTZLhved_>Fro~ zQ{Z9dB$2!!k5=TBucjMOj|K%P6^&2@?w?VPKq@R6dSFUe0;9br0x|+O0y9kqY)03f ztSzPcvMDs7SwV}6^Jo>g83Tw*1=rCGx1d{&wqp9B9SA6Xn9rNOFEG&C7pFe%T4aBl zii>C$Xeyboto!~e*E0kz_GY&A9bK~tQCkf>%h`+&cA!(i2P!V(LxI5+XA&w3?|ZgNKtbf(0} zvBe{i98IYxEr)PV!LW)E+!tus&)lWlwwY&z)Qwq=6^ski^!8;1a>we48c~%ZjdO8q zbuoFSU4xNo&RCAQ7#4D-x2ET0I<;opyl!W8&ysw3F&S)GEa1m+3ie`na)(R{oR_B# zwHEfa6Q#zROJ6RS!Io<*>oV&D(<8)&Rcq7HgV3WX!GG?^u>*Z5>sm&7oHll@gic@; z%&g^Gbm64qxPcy6u0wdkRcke8Iflk>PWi01?E1liUM$Mq#-!fS?T{uZS}7+5x(;ip z_~4A{R?P20(+{Rx<2BVidfx)Bl3n%1O0RA`;G%M?7FhZ>@?)LepzW(1d2c6|t&W^W zvwt{!D?Mu6(UsVCTg7vORk2rV=H)IJeZPi|E2SzOO5mse+3eVWDjL7=QQsXqxs0n# zQL>$0E*HwIvlCO0tr^=brw(@-eY4Yu*(-`9nEq_fI$74#I zAYCiS0F!(Yn8GyQP276I=jqoFK9xP=nj*OHDG3g9n5}~2LM)CB;^?e`V-E9_I6=9@ zF~?U4M;N0ZV=oyoVj^A5Q7 z=*l&^_Bxu;g*J5KDtaQI_e$a_4(sNbWdfxN&Q9}@JG(j2%%g_)n(-M{C})EE=W2Kq zJOpmUWL4|Pxg@MQaLe>n%9;~VlR@>kG- HZ_)4%I%o78 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 cce978be3d13e6509c5f82133a780568998edec8..ef8130dd983011109704a8cf7f8f57b19157fd15 100644 GIT binary patch delta 63 zcmcbjdPQ}^dsb!+hKk8Y+2REG*%+$07^)d+*cobh7+e_YCb1pbtjs=#TeOmak)fQS So`HdZ3&?6 Tp`L+(feXlLU}$1!VUPp>I>irU 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 fc6b25594856f76dc694219b1180170428bd3d42..ea99ddccf5d5e91b132d84dea807b9d005f6af1f 100644 GIT binary patch delta 64 zcmew)^hsz#5i>IfgY#q$7Ii^>HU?KN1~&$Gb_Nd~1{DU+$<54%Hs`avV-a;>U}SJ& S@M2(K-~zI|8GIT186*MHD-19I delta 64 zcmew)^hsz#5wjpa8-p_!gA0QzJA)e!g9?ND{$*%*?!7*ZHg*%{J!7|a;bC*NT?wD}e5Jr2<%21bSi Th71M<1}-2glOdZSmq8K$IED{4 delta 64 zcmcaBdslYDX%<0#Hikqlh9rh$c7_xl1~Z1#$r`MOm^m2IC!b^S-29659*1ZG10zEk TLk0r_0~e5$$&k&E%OD8=9Rv=q diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/entity/User.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/entity/User.class index 2a6f89d87029dd1305fb2ce9ecc676a5e7a4400d..0dac3fcfd05d06126fc415f57ef7c75c1a0cde73 100644 GIT binary patch literal 9350 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 delta 73 zcmbQuI+b;U10#P*Vo9oFSz<|I5hH_{hR;L+Y0b3EoK*dkl6?Kpf}H%s6gME(CB)xa RGmMdew-i}u^Grr2MgUQ@7To{< diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/service/impl/UserInfoServiceImpl.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/service/impl/UserInfoServiceImpl.class index 7ff4a45bf2ce42aa7cc68afa4d6b607b919cb1fc..a4648359917c789ef593942c49fd26ba52b204be 100644 GIT binary patch delta 781 zcmYk4OHUI~7>3`|nKJe=ZBs@xp<+=ZWvZzN+D0ykE{GvsVpzCQakQnh)`GPb?^O}; zE_!}|f53$mi-`-Pi3{V-Uts(b?rMDJK&qSbe)C=4@0mICx$jGl|NEbhp8$;FRl}d? z@CK#}rJU?BCPG={3`_@+$Be*;{Nd@AKMk*(Gh_0d5tUBZl3zE(;{8X8PR&V`oN_)j zS*;Yx`C&hbxL}|ZL^m$V-@b8uRv;~Zh0-hY{zW0~$X1|am1dpn!J1QbDgwH@RbW7# z4R3T^b%8et*$DN@*P%gq+OtU>H^)|5=CVi@Ay9^fC;|u)Jc_M|D|K*=sqZnHB0(L&rn-9RVqG7<3#4uiw@5K~aAk(z?q50m*62lvo! zfHr#xHAIws7(|*-863s|oWL+na@`r;QI^?%fVnnc4hy)i0G&4Aq{7lTZ()(uH9!+u z3-xuvsHGT*xS$XpV8%scJWBOYefE1yC0B9&Egw8^KV}E_0EZMu*IHAX!-pk2WZivp zx-L-!e}YH+POj@Iw(HcoWq&}yPBvlKyPDWy?`~qM!NUI=HmeP`8nD_MEOqTJfu%0q qg|y&ay{5LB8XF=kMVO4>G0QIS6RL)%JUw`Z&gUw4f#vn`OW-fDJ$X(5 delta 1616 zcmZuxYg1cQ6kR7Ixp2AYo$#2+6l*$G9+zTy(3h{T`pNJ5t<3l*>bTA&jSMiExqHvqd#}CrI{W0e^}klD zzyEvvX8>*ZDWleS%k-2Piw>Jft0Nk-dXv$ZK#Se(-LP?r{$#LkMKq*h7?y$~8X_36 zkGs~}N#LZ0DWnAS zh!wXcIP9Zla%9=C)l2+$uZVKkqj*Navl^bmF@c6$e@|dlUjZdzCFM8*TWV_Uzq}24 zFqe~!Y|LqO73Y0RjXCfMj#?6>4h?`@UY;;1y%Q8>R0d)^=Rq-lbQ}DWm zlQ?uo?DX1X1xh6F(5Mwo?sXtb@rH&sQ7KR~X(iiJX40Hc@D>^TFVU`}VQV}YO~eav zR={`b>Zw~dFD%Z?EuJ{DIFtEj?xKom*b2^RSci86Lg9qHS!s8_C(vv+6xPh1SI!CX zmEBkr+bOqbsf$425l$vm77&!AeA%t!TZTw^YWW&aI=LSetJDn%Q7Koa(he54*llXB zO!KYQ!R}G3%9oB;Ebi=Cby|d`A@D9d@SzwQAAt||BH&o=onyHsjx{kv>t_D@_y8_^ zXm@La>5q73K;?HMWB0SZ3Kgg(MlF8^T2P1W*n|$$qZ<$4V`et8AFvmn;8R-ZoyP^@ zy3vWx@Hw%4*oH4Kg96r9;37RYzGP-G#BBr=TvAYquX&(*1dGAqZ&2xw3YDZBQcWn~ z`DPYwAzUM2wvtpcNwx5#m83%0!#BT=UOyhhVLZfl+`f#Ul_zN7GQM>Pnt6iz9a;sf zFT;0?E)gt2!EG2hhQ2a~BPm{XD1MI-Ns(;*oJ?vEwgb`;U0pFPg_~%=6-eaRsxEID>g{_T|Kpccx28a*9kTI9+^4lq(DhzM=FSX;T#(qdH#NfU$tL zjk+upV^bFQ81-314Zk~!NyG2SVlcxTmouoB0DwQwm9=?Z0cWFSJmBoK%kkt^7dW2W zYdJ~a5e`1Y>yZ0Y?qQYAe4YQhI{zYd26bc^lD+0>3$Vbi3s-T?vDa}U7rhDm2R@Bx Ay#N3J diff --git a/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/service/impl/UserLoginServiceImpl.class b/珞珈岛-项目相关文件/luojia-island/service/target/classes/com/luojia_channel/modules/user/service/impl/UserLoginServiceImpl.class index 59625b9492d25a0d539c72e2fc415de42d48fde7..c303f837291c2572f9001ea0eb5e1522641242ba 100644 GIT binary patch delta 223 zcmdnwv&m<}3n_5{MkRh$#zHOzC&nTkMqY*r0mc$W2FJ;TqDqtfMR+Fvl~!=80LfPJ zFmfZ<6x{|WZ*AKO)E+*&WJC`&rZ#=V&q_~V`Sh?%1KPl&dDq;v0~(BV{G7J zY-DU=XKdzSY+-Dj{8MVbAW*cOi?M^Tlbx}PhasM^d$O&}q0OqY2RMA|8CV(f84DPT y8A}<<7$LlJ6kZjS*T%reSj`9`YZ-eO7#M^Ym>4E91Tpq9a5DBWPGFqGAPE48Ml&t| 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 new file mode 100644 index 0000000..56204a5 --- /dev/null +++ b/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/data.sql @@ -0,0 +1,22 @@ +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 7be5cea..b801e0d 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/luojia_channel.sql +++ b/珞珈岛-项目相关文件/luojia-island/service/target/classes/db/luojia_channel.sql @@ -9,7 +9,7 @@ CREATE TABLE `user` ( `phone` VARCHAR(20) UNIQUE COMMENT '注册手机号', `email` VARCHAR(100) UNIQUE COMMENT '邮箱', `student_id` VARCHAR(20) UNIQUE COMMENT '学号', - `avatar` VARCHAR(255) COMMENT '头像URL', + `avatar` VARCHAR(512) COMMENT '头像URL', `gender` TINYINT DEFAULT 0 COMMENT '性别(0未知,1男,2女)', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', @@ -23,6 +23,16 @@ CREATE TABLE `user` ( UNIQUE INDEX `uk_student_id` (`student_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; +## 分类表 +DROP TABLE IF EXISTS `category`; +CREATE TABLE `category` ( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', + `name` VARCHAR(50) NOT NULL UNIQUE COMMENT '分类名称', + `description` VARCHAR(255) COMMENT '分类描述', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分类表'; + ## 文件表 DROP TABLE IF EXISTS `lj_file`; CREATE TABLE `lj_file` ( @@ -35,7 +45,10 @@ CREATE TABLE `lj_file` ( `file_status` INT NOT NULL DEFAULT 0 COMMENT '文件状态(0:正在上传, 1:上传成功, 2:失败或删除, 3:审核中)', `user_id` BIGINT NOT NULL COMMENT '上传用户ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + INDEX idx_user_id (user_id), + INDEX idx_file_status (file_status), + INDEX idx_file_md5 (file_md5) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件存储表'; ## 图文帖子表 @@ -43,48 +56,44 @@ DROP TABLE IF EXISTS `post`; CREATE TABLE `post` ( `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', `title` VARCHAR(255) NOT NULL COMMENT '标题', - `cover_id` BIGINT NOT NULL COMMENT '封面图片ID', + `image` VARCHAR(512) NOT NULL COMMENT '图片url', `content` TEXT NOT NULL COMMENT '文字内容', + `status` TINYINT NOT NULL DEFAULT 0 COMMENT '是否匿名,0否1是', `like_count` INT DEFAULT 0 COMMENT '点赞数', `comment_count` INT DEFAULT 0 COMMENT '评论数', `favorite_count` INT DEFAULT 0 COMMENT '收藏数', + `view_count` INT DEFAULT 0 COMMENT '浏览数', `user_id` BIGINT NOT NULL COMMENT '发布用户ID', + `category_id` BIGINT NOT NULL COMMENT '分类ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - FOREIGN KEY (`user_id`) REFERENCES `user`(`id`), - FOREIGN KEY (`cover_id`) REFERENCES `lj_file`(`id`) + INDEX idx_user_id (user_id), + INDEX idx_category_id (category_id), + INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图文帖子表'; -## 帖子图片关联表 -DROP TABLE IF EXISTS `post_image`; -CREATE TABLE `post_image` ( - `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', - `post_id` BIGINT NOT NULL COMMENT '图文帖子ID', - `file_id` BIGINT NOT NULL COMMENT '图片文件ID', - FOREIGN KEY (`post_id`) REFERENCES `post`(`id`), - FOREIGN KEY (`file_id`) REFERENCES `lj_file`(`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图文帖子与图片关联表'; - ## 视频表 DROP TABLE IF EXISTS `video`; CREATE TABLE `video` ( `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', `title` VARCHAR(255) NOT NULL COMMENT '标题', - `cover_id` BIGINT NOT NULL COMMENT '封面图片ID', - `video_file_id` BIGINT NOT NULL COMMENT '视频文件ID', + `cover` VARCHAR(512) NOT NULL COMMENT '封面图片url', + `video_file` VARCHAR(512) NOT NULL COMMENT '视频文件url', `play_count` BIGINT DEFAULT 0 COMMENT '播放次数', `like_count` INT DEFAULT 0 COMMENT '点赞数', `comment_count` INT DEFAULT 0 COMMENT '评论数', `favorite_count` INT DEFAULT 0 COMMENT '收藏数', + `view_count` INT DEFAULT 0 COMMENT '浏览数', `user_id` BIGINT NOT NULL COMMENT '发布用户ID', `duration` INT NOT NULL COMMENT '视频时长(秒)', - `category` VARCHAR(50) NOT NULL COMMENT '分类(如“音乐”、“游戏”)', + `category_id` BIGINT NOT NULL COMMENT '分类ID', `tags` VARCHAR(255) COMMENT '标签(逗号分隔)', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - FOREIGN KEY (`user_id`) REFERENCES `user`(`id`), - FOREIGN KEY (`cover_id`) REFERENCES `lj_file`(`id`), - FOREIGN KEY (`video_file_id`) REFERENCES `lj_file`(`id`) + INDEX idx_user_id (user_id), + INDEX idx_category_id (category_id), + INDEX idx_duration (duration), + INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频表'; ## 评论表 @@ -99,7 +108,46 @@ CREATE TABLE `comment` ( `top_id` BIGINT COMMENT '顶层评论ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) + INDEX idx_post_id (post_id), + INDEX idx_user_id (user_id), + INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论表'; +## 点赞记录表 +DROP TABLE IF EXISTS `like_record`; +CREATE TABLE `like_record` ( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `post_type` VARCHAR(20) NOT NULL COMMENT '帖子类型(post/video)', + `post_id` BIGINT NOT NULL COMMENT '关联的帖子ID', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + INDEX idx_user_id (user_id), + INDEX idx_post_type (post_type), + INDEX idx_post_id (post_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='点赞记录表'; + +## 收藏记录表 +DROP TABLE IF EXISTS `favorite_record`; +CREATE TABLE `favorite_record` ( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `post_type` VARCHAR(20) NOT NULL COMMENT '帖子类型(post/video)', + `post_id` BIGINT NOT NULL COMMENT '关联的帖子ID', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + INDEX idx_user_id (user_id), + INDEX idx_post_type (post_type), + INDEX idx_post_id (post_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏记录表'; +## 浏览记录表 +DROP TABLE IF EXISTS `view_record`; +CREATE TABLE `view_record` ( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `post_type` VARCHAR(20) NOT NULL COMMENT '帖子类型(post/video)', + `post_id` BIGINT NOT NULL COMMENT '关联的帖子ID', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + INDEX idx_user_id (user_id), + INDEX idx_post_type (post_type), + INDEX idx_post_id (post_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='浏览记录表';