From fa0f80b30aac604dd67f64b76e08d030714e3818 Mon Sep 17 00:00:00 2001 From: Y1NanPing <735289578@qq.com> Date: Wed, 23 Jul 2025 15:38:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=BA=94=E6=AC=A1=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=20es=E5=AE=9E=E4=BD=93=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/util/AuthContextHolder.java | 3 +- .../common/util/AuthContextHolder.class | Bin 1019 -> 1019 bytes .../common/config/pool/ThreadPoolConfig.java | 70 +++++++++++ .../common/constant/SystemConstant.java | 3 +- .../common/config/pool/ThreadPoolConfig.class | Bin 0 -> 2528 bytes .../common/constant/SystemConstant.class | Bin 2431 -> 2483 bytes .../tingshu/album/AlbumFeignClient.java | 23 +++- .../album/impl/AlbumDegradeFeignClient.java | 16 +++ .../tingshu/album/AlbumFeignClient.class | Bin 335 -> 1071 bytes .../album/impl/AlbumDegradeFeignClient.class | Bin 491 -> 1490 bytes .../tingshu/user/client/UserFeignClient.java | 13 +- .../client/impl/UserDegradeFeignClient.java | 10 +- .../tingshu/user/client/UserFeignClient.class | Bin 343 -> 835 bytes .../client/impl/UserDegradeFeignClient.class | Bin 505 -> 1182 bytes .../account/receiver/AccountReceiver.class | Bin 0 -> 2667 bytes .../album/api/BaseCategoryApiController.java | 13 ++ .../album/service/BaseCategoryService.java | 2 + .../service/impl/AlbumInfoServiceImpl.java | 38 +++++- .../album/service/impl/AuditServiceImpl.java | 2 + .../service/impl/BaseCategoryServiceImpl.java | 9 ++ .../service/impl/TrackInfoServiceImpl.java | 1 + .../album/api/BaseCategoryApiController.class | Bin 2396 -> 2936 bytes .../album/service/BaseCategoryService.class | Bin 669 -> 791 bytes .../service/impl/AlbumInfoServiceImpl.class | Bin 11935 -> 13385 bytes .../album/service/impl/AuditServiceImpl.class | Bin 6295 -> 6390 bytes .../impl/BaseCategoryServiceImpl.class | Bin 5736 -> 5998 bytes .../service/impl/TrackInfoServiceImpl.class | Bin 10605 -> 10625 bytes .../search/api/SearchApiController.java | 26 ++++ .../search/receiver/SearchReciever.java | 66 +++++++++++ .../repository/AlbumInfoIndexRepository.java | 7 ++ .../tingshu/search/service/SearchService.java | 2 + .../service/impl/SearchServiceImpl.java | 111 ++++++++++++++++++ .../com/atguigu/tingshu/search/test01.java | 26 ++++ .../search/api/SearchApiController.class | Bin 763 -> 1746 bytes .../search/receiver/SearchReciever.class | Bin 0 -> 2615 bytes .../repository/AlbumInfoIndexRepository.class | Bin 0 -> 431 bytes .../search/service/SearchService.class | Bin 142 -> 257 bytes .../service/impl/SearchServiceImpl.class | Bin 689 -> 8643 bytes .../com/atguigu/tingshu/search/test01.class | Bin 0 -> 1046 bytes .../user/api/UserInfoApiController.java | 16 +++ 40 files changed, 449 insertions(+), 8 deletions(-) create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.java create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/receiver/AccountReceiver.class create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/receiver/SearchReciever.java create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/repository/AlbumInfoIndexRepository.java create mode 100644 service/service-search/src/test/java/com/atguigu/tingshu/search/test01.java create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/receiver/SearchReciever.class create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/repository/AlbumInfoIndexRepository.class create mode 100644 service/service-search/target/test-classes/com/atguigu/tingshu/search/test01.class diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java index 1bcdc2e..199ef4a 100644 --- a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java @@ -14,7 +14,8 @@ public class AuthContextHolder { } public static Long getUserId() { - return userId.get(); + + return userId.get(); } diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class index 5ef063e21de518352ecb3e0b35526b6545073b41..254aab4fa7bf286c4ee4f51cb6e79e478be5d858 100644 GIT binary patch delta 23 ecmey({+oS6A2XxS(200), + Executors.defaultThreadFactory(), + new ThreadPoolExecutor.CallerRunsPolicy() + ); + //3.可选:提交创建核心线程 + threadPoolExecutor.prestartCoreThread(); + return threadPoolExecutor; + } + + + /** + * 基于Spring提供线程池Class-threadPoolTaskExecutor 功能更强 + */ + @Bean + public Executor threadPoolTaskExecutor() { + int count = Runtime.getRuntime().availableProcessors(); + int threadCount = count*2+1; + ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); + // 核心池大小 + taskExecutor.setCorePoolSize(threadCount); + // 最大线程数 + taskExecutor.setMaxPoolSize(threadCount); + // 队列程度 + taskExecutor.setQueueCapacity(300); + // 线程空闲时间 + taskExecutor.setKeepAliveSeconds(0); + // 线程前缀名称 + taskExecutor.setThreadNamePrefix("async-tingshu-Executor--"); + // 该方法用来设置 线程池关闭 的时候 等待 所有任务都完成后,再继续 销毁 其他的 Bean, + // 这样这些 异步任务 的 销毁 就会先于 数据库连接池对象 的销毁。 + taskExecutor.setWaitForTasksToCompleteOnShutdown(true); + // 任务的等待时间 如果超过这个时间还没有销毁就 强制销毁,以确保应用最后能够被关闭,而不是阻塞住。 + taskExecutor.setAwaitTerminationSeconds(300); + // 线程不够用时由调用的线程处理该任务 + taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + return taskExecutor; + } +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java index 978430d..c8d2566 100644 --- a/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java @@ -13,7 +13,8 @@ public class SystemConstant { //专辑状态 0301-审核通过 0302-审核不通过 public static final String ALBUM_STATUS_PASS="0301"; // 审核通过 - public static final String ALBUM_STATUS_NO_PASS="0302"; // 审核不通过 + public static final String ALBUM_STATUS_NO_PASS="0302"; + public static final String ALBUM_STATUS_ARTIFICIAL = "0303";// 审核不通过 //专辑统计 0401-播放量 0402-订阅量 0403-购买量 0403-评论数 public static final String ALBUM_STAT_PLAY="0401"; // 播放量 diff --git a/common/service-util/target/classes/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.class b/common/service-util/target/classes/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..d74c9d5019684a376a082181594e73c715945c9f GIT binary patch literal 2528 zcmbVOYf}?R6g>^WAz_qvT|+`g2aYlH zZ1T6HkV>18NFk-}LFDJjo0Bt~;euZ#Fh!?2D^xXf^&C9FLT#QRiHZ1B(tVuG{W zB5FGfSNCK*1Tzw%Zbw+JFx+bywwvIb$?F6m8;M>hh_jKG>OFgs{l}VOYxn&2Wcp4cUQ)=-fEj|~bI_=nR zML|%p7yVAqu^Zt2j%yhKLG{a_u?Na9l=ovD)0m09W8!&Yxaf%udz+zuG?qR(&xJrK z5Gj|&6CF=6%W#>Zu5de;m7ZekFUhQ|R2>nB1-DQRgQ9%rs#0E4f~WCJM^1q~M{d*a z$Ztt_72D+jrKXNqnLXDrj~5JsWOh^v87AuJ4%YNh9t2&(0>fQPR!kn0Lc0{2by+Bh zm5Ov#E;sCwS*64@HHmCAo5D-H(ooQ`gx3sbqOx!{CO6G_St<#yaoUp9!Qv@~E6oyS z9q#*?vH63ZnI!U9(eV{lsqP$EqLMspL^@_=kve4eyzPp7SXmb&IyJt?+TzYK_iQz; zPbPx0O)cU6{Qu;ep?!lxjgn#bsAjTPTI8r()leO#tfaQiz;X;-@m}?rdRsr3ySN6M z8#8TowtgKf+rCZord?MCQOOWHBi8A_>7+CUVmmN-!_=G++@-xv?=xyXq6{5Y3{?-B zPA8GHbQxdij-=`awSX%X7hC3~TwjdRIg8X~19(+Sj zJvP9%_>M*l-{TEgDd(T)Qcuu(@;$T~j!zAClplUT@9NM{@;99PfU~Q;_;VM7?{VP+ zMpk!mbr;w2Mh(|jj96R)`juPn+Duj6DD^XkWK*w{S4s}oy|^bHeB^_T3+zsKV5SXL=yO({G<&JNAB Uq0$h?rLm;{6j_eYtyo3!AK}}#CIA2c literal 0 HcmV?d00001 diff --git a/common/service-util/target/classes/com/atguigu/tingshu/common/constant/SystemConstant.class b/common/service-util/target/classes/com/atguigu/tingshu/common/constant/SystemConstant.class index f463a0e6d50d7742e0da2880bad20d70d8332566..4b955be85a5d6d29c006e2ecc98d04fb1a9605d4 100644 GIT binary patch delta 527 zcmY+BOKTKC6ov1pu8Pf!D47u?=uGFKMvaf2WJDB$)^s|gv2{ZCG(?0nf+7lnAPRyI z5ybanyx>;-1HzDn;KGd?5&Q%0-6`(Gm3n&yF>XHYz30^7R@LvyYPIz7*V}hQG)vqo zUB${~8@I9(dD^j^EX{4wiRPmqvaw6!AnniiGoX$CJo#d5Pr0X_%Rs)mS5P8~7t61I84*@}eEIo{E%NIO*Q zJlsy^!sPFr7i~1>($YYcg{%Lmfjt?7@*1c4y)%Yo{vtfX>$HcnJgG-$z>)RnY&vvnTweyn(`TBGPlfpWm1MxN~4r0rIb=`gL)U1 zl9j9`p=M#Fl%;>d#>U1H=QA7G{NDGR=jrJ==hpshYkc{tJrYrz&Z>!~p#UCI~qLTSt>TB)xtMM1VdQX-p9Ph<*K3UHfnAjl!%Muc<1ix{s9 zABOl`-VgJga5>^;#GskpQkc;b)AjURN|*7Y{2`o3aI50LBnK5IlAM-Iaarj^mJbvc zX82mF20zPvmfsW)=D0!iV4ef23yVChy0OG%$z`sn4y^Ev+JjYoRef0FPqiEC+^Kb8 zlXcCBEnd((iEY^_5;Z%u=k%iamfu!JzGP%_dUD)KJEkKRj)3g{9Cdw{pR``=@w?WK zeeSSaz<*n_T#6|WNF$5nf&A={oRCxVKM<;N5p*bN%0vnsNjB9DbW9a_0-Z<-I{g7_ Co?x2* diff --git a/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java index e08a954..57a82f1 100644 --- a/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java +++ b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java @@ -1,7 +1,12 @@ package com.atguigu.tingshu.album; import com.atguigu.tingshu.album.impl.AlbumDegradeFeignClient; +import com.atguigu.tingshu.common.result.Result; +import com.atguigu.tingshu.model.album.AlbumInfo; +import com.atguigu.tingshu.model.album.BaseCategoryView; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; /** *

@@ -10,7 +15,23 @@ import org.springframework.cloud.openfeign.FeignClient; * * @author atguigu */ -@FeignClient(value = "service-album", fallback = AlbumDegradeFeignClient.class) +@FeignClient(value = "service-album", fallback = AlbumDegradeFeignClient.class, path = "/api/album") public interface AlbumFeignClient { + /** + * 查询专辑信息,包含专辑标签列表 + * + * @param id + * @return + */ + @GetMapping("/albumInfo/getAlbumInfo/{id}") + public Result getAlbumInfo(@PathVariable Long id); + /** + * 后续改为Redis缓存 + * 根据三级分类ID查询分类视图 + * @param category3Id + * @return + */ + @GetMapping("/category/getCategoryView/{category3Id}") + public Result getCategoryView(@PathVariable Long category3Id); } diff --git a/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java index 2ca1666..049275f 100644 --- a/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java +++ b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java @@ -2,10 +2,26 @@ package com.atguigu.tingshu.album.impl; import com.atguigu.tingshu.album.AlbumFeignClient; +import com.atguigu.tingshu.common.result.Result; +import com.atguigu.tingshu.model.album.AlbumInfo; +import com.atguigu.tingshu.model.album.BaseCategoryView; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Component +@Slf4j public class AlbumDegradeFeignClient implements AlbumFeignClient { + @Override + public Result getAlbumInfo(Long id) { + log.error("[专辑服务]提供远程调用方法getAlbumInfo执行服务降级"); + return null; + } + + @Override + public Result getCategoryView(Long category3Id) { + log.error("[专辑服务]提供远程调用方法getCategoryView执行服务降级"); + return null; + } } diff --git a/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/AlbumFeignClient.class b/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/AlbumFeignClient.class index ed1708727756408e65fba96bccc7a81a72106fa2..aa3aa53050ed339d9ca0fe7f6c71ae8fa08216b6 100644 GIT binary patch literal 1071 zcmcIjO>Yx15FLl4p&y|w5TH;lTnb3kLLh{cf>er%Dy5=orCd18?oKvtz4prXCPEc| zi~~P_ABC9R(6B){AR!KG%l4ajZ{E&)|MB%30K9>RZD0ol{%=g*nzZ+%zlenI zGHawGU+5rDtF6Zb#}r03IYEaR1#(_MLnQ*1&sYeC!jS;=4-|U~#bh=iU9Y>WrT3Qg zY@HS+sEh{6t4PznF*aaO*08Xbed|)`bH~07OT828F64wF87Y%UoMGh$3dfk|jN_E8 zG3tWL*q#!WRI=`&yi~~-0gvXHXO7HCc=gv3PB4rH=oE4lEMlD*4=_+_-RFU#iGbDk z*YU*>`mi;H-`9f=A zZHq+OoXoInZCPt@cBSLVja5v~su2)yeTZ5|7+(l@y|8gAoK#t^r}OfjQilo6XKm)} zJ*$?OtLZ;q5+L9j&mlmAr>X@@(1bRhTFlAYa`^x&u*&-lhOY6~`2@oAX`S!dW&8$| p6S-NBy*Z1$wIKHPTr3lGE1EkMw96UqvZjuQd$1M5eR$wu`zPAhLo@&Y delta 91 zcmZ3_ah{3m)W2Q(7#J9A8F(jhc}zaaq&nGvQHIfQ@&!iGNz8I=tYwKgrKyu;n8S3~ l7#SEDn1O0RfQf+>OtLYs18D)E3G|BN+pX6(<{rIjKKa;u_t+Mu4RG3cW&n80G4A#0@(~!ViiU9I}}4)XstBE>e2GguqTYBI10H+5^ESv{WX&kH^Nr> zdPRzB3(2Ih4nqm7&tL;KGOYcb%s8(Zy3CNGpgK}8jP&vr0RlUuq-`sHgKy#U*uJXb|@b;?o_yzq21k#nJMWr94#*n@uyrD7&5(yVkq{8 zRaT+ceSH(2t2|2!KX8n7p*@keh^$jKdotE`L0e~pnNs!hTys|#p^0;9f=Z5?KvQh; zA5e>Z`MIQ`)2;UTIxHL~ih~qzZ#^&!)Vk$y=rpl!{8ug~xi5Or+mw>Un$vy9=?N9+ zni!X1$~P|ZME8X+f??=F;2G(Piu5Iw#0k$+h8w9oQa9hJ#YXsECPUG$DSgHANqV8o z^@gxY%55l*-g^PV)Hfnv*hJs@uy;`RiP4&x4vkyLvS?;B$Mf&O-q0d~tu%(efu-aC zbg6v++pwK1h8-9|w0(JuPDjEMZ;{9@{fI%rdQEo6N7&>9esja4<5MO`gakGBH+(nVo@a@_EMjlm9Z8iLx^= zF)%W40+liXAu9tLkmQ~`fkn)i2Pg*OF)(m2@B&F5Fq@TukAWY^V`2~hlY$IFKpLb@ Hn1KNRhwu+S diff --git a/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java index bf0be8f..73e5705 100644 --- a/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java +++ b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java @@ -1,7 +1,11 @@ package com.atguigu.tingshu.user.client; +import com.atguigu.tingshu.common.result.Result; import com.atguigu.tingshu.user.client.impl.UserDegradeFeignClient; +import com.atguigu.tingshu.vo.user.UserInfoVo; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; /** *

@@ -10,7 +14,14 @@ import org.springframework.cloud.openfeign.FeignClient; * * @author atguigu */ -@FeignClient(value = "service-user", fallback = UserDegradeFeignClient.class) +@FeignClient(value = "service-user",path = "/api/user",fallback = UserDegradeFeignClient.class) public interface UserFeignClient { + /** + * 根据用户ID查询用户信息 + * @param userId + * @return + */ + @GetMapping("/userInfo/getUserInfoVo/{userId}") + public Result getUserInfoVo(@PathVariable Long userId); } diff --git a/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java index 72663d6..0528a5a 100644 --- a/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java +++ b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java @@ -1,10 +1,18 @@ package com.atguigu.tingshu.user.client.impl; +import com.atguigu.tingshu.common.result.Result; import com.atguigu.tingshu.user.client.UserFeignClient; +import com.atguigu.tingshu.vo.user.UserInfoVo; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; - +@Slf4j @Component public class UserDegradeFeignClient implements UserFeignClient { + @Override + public Result getUserInfoVo(Long userId) { + log.error("[用户服务]提供远程调用方法getUserInfoVo执行服务降级"); + return null; + } } diff --git a/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/UserFeignClient.class b/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/UserFeignClient.class index 2aedbcd3cc18b29bed8da515804845e219d0c5bf..027f8f2896daf7ade35908861a2b66a2fcccafc4 100644 GIT binary patch literal 835 zcmbtSO-~d-5Us}j5M&h;RBpzT9<*X&xGb0$4TfZi1ma#i^~}`tHuQ8)`eQj5|Ck4V zfIrGuJw(_|_F&?nr=}~f>%CW1zkdJt2>^$%H-t3-Sh@yfR7tCZQCk&e2~!}CrO{*~ ze&PQk(#n45?nCGa*t(E&iAGw5pNk7Bqkxg3n4!nEc2g(d;Kk$?G;vmqUrtt0ajtO| zJ%wZ#o&?nYL36ND(A-_yzcn*{$Ab3G zl8w5dsSdg@^xj$*Wz^2HvbPiG6^7Px`|2$C%K1yYq5=zTE0i}_{6z6Ywk_khWPdJA zVh_(c!rVAqY9fBScKlty^JVs%wk*lm|7RJeGR~&bYspSn$i}%#zN8~dvx&yR|f?kmaR-! zFaK_$Zd%i=<400nRQ1OyA~2tBq6DffOcbCT-xd7;_aPg?pzFOH@=82 z)Wpb!6)aH}2n*c%JG9`RFrI0Nlt*OY;?DD&?|k2xbME)w8=C-zF%(A#O%XIF5Jn3_ z$BZ>=ao6%}es5|<6f{Fi#_=3I!q7C3%Eu5zEP{9ftw=DW3$n~DZ3m7WaP4@uKOOME z7m62LM|he$<%-K6(!r>(l~ojD!m+(>YKMeHa~5DTi9BDwY~Dp+$=CU zkMmm_ORea@@d%O$oWM!aw?7s`SSTeGL+3zlSNx<_q$Zup$I*rE2u>x?gIw6Pa1{Pa}~j}vRsiK^-UUm)Mz14H2Qi?vr)S?(VDuH#>9esja4<4hPwr+^n3yTe%+A0yxr1@#WPRpRQFaC< z21W)>pi)L4WMyCjlH8LIGK(4W0L4H&1_llWULeT>X0tNzG4KO|q)DIE=1#jtjQPjbWNj%A!FP6#t#Sk)sP860Cswq*+$q|vA$qoWBr!%ovNN@3u- zwqd%Spr36MlXM-UpQh&mX)|P`f7%UBR;s}iLrYse5)smoG03aA?D&tR-bgL!_2)uhV_VXJhS8s(Hcl;8tRIDjq<-8v59 z5W`mGM2{DXGN@cMOj`;{!u}F>96_0#E^=R*eP)@Vp>5!NwxHn%!@Btz8ZCM5C0?{e z21k+8(4$k$Q7JXsZl&m!DMi)5(BwOUm!~3f<&C<;c?^-u*6j{cG02KIdD#?IRc_>s zUi4`=uA?6(7+M$R=_zgou15vfNLI&{K~bw0)Nga&Cm{E;hQh+06p2_O>bXVjeJa(d(kY>KiOUQd z>f$yZO**acsSw)DlGFMl7R;U%j#=Kka+o|fDe-A#XNKc*COSZFP zdnefE{ zuTR$DsPN|!g=|e1r8B0kB!*X)7Wy>M*-(Vyc+9I{#AOv@)esLp3k;Qe#6}PeliUu8 zU$5Peo$4x~j2H_^x~id6;HmQi&w?MRN#GmmK|4KRsZt^IWLZ!LN%v46jGqLV5jXTq zaY`zQ>lfU~ohq>z+85P80SY&u^rM$TrRqA=SaaAxmt%q+CJAg&kAY}LHzgQO(tH(- zr)W&lNUs(8zdp`#rEbG)dr1`m1BmrTrHD^_Tzyc$-!Xc?=>IG5fxOTv>p3!m_Xho zkTjCphBO>bMG9;o6@U(CbWgPq)i%h zFh(MebYT?dh`K list=baseCategoryService.findAttribute(category1Id); return Result.ok(list); } + /** + * 后续改为Redis缓存 + * 根据三级分类ID查询分类视图 + * @param category3Id + * @return + */ + @Operation(summary = "根据三级分类ID查询分类视图") + @GetMapping("/category/getCategoryView/{category3Id}") + public Result getCategoryView(@PathVariable Long category3Id) { + BaseCategoryView baseCategoryView = baseCategoryService.getCategoryView(category3Id); + return Result.ok(baseCategoryView); + } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java index 274fbd7..d90c6ec 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java @@ -14,4 +14,6 @@ public interface BaseCategoryService extends IService { List getBaseCategoryList(); List findAttribute(Long category1Id); + + BaseCategoryView getCategoryView(Long category3Id); } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java index 38d8b12..d33af6e 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java @@ -7,8 +7,11 @@ import com.atguigu.tingshu.album.mapper.AlbumStatMapper; import com.atguigu.tingshu.album.mapper.TrackInfoMapper; import com.atguigu.tingshu.album.service.AlbumAttributeValueService; import com.atguigu.tingshu.album.service.AlbumInfoService; +import com.atguigu.tingshu.album.service.AuditService; import com.atguigu.tingshu.common.constant.SystemConstant; import com.atguigu.tingshu.common.execption.GuiguException; +import com.atguigu.tingshu.common.rabbit.constant.MqConst; +import com.atguigu.tingshu.common.rabbit.service.RabbitService; import com.atguigu.tingshu.model.album.AlbumAttributeValue; import com.atguigu.tingshu.model.album.AlbumInfo; import com.atguigu.tingshu.model.album.AlbumStat; @@ -43,6 +46,10 @@ public class AlbumInfoServiceImpl extends ServiceImpl albumInfos = albumInfoMapper.selectList(queryWrapper); + return albumInfos; } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AuditServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AuditServiceImpl.java index 675d74d..5c193db 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AuditServiceImpl.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AuditServiceImpl.java @@ -56,6 +56,7 @@ public class AuditServiceImpl implements AuditService { } } catch (TencentCloudSDKException e) { log.error("文本审核失败"); + throw new RuntimeException(e); } return null; } @@ -82,6 +83,7 @@ public class AuditServiceImpl implements AuditService { } } catch (Exception e) { log.error("图片审核失败"); + throw new RuntimeException(e); } return null; } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java index 34a345f..0d00350 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java @@ -103,4 +103,13 @@ public class BaseCategoryServiceImpl extends ServiceImpl`Xl76bafVew>$^%|2(oTkwHX!wHvOKYOpx%Ti-{<0$?8*Pp|0m&eJAuPc|S-_b~V zed}sxQ$<(Fm5a3#LD0xtZ{$!LpEDJLec4Oq>oQ%-7w1DzN1I2hTTy_K!ANNJ&;cYx zM?*bNQw)@&fu~mq(1;)-K?$1RLSVJfzidj~Yylq7R$KB4D=xO>Zr=3>A+|N!qg1Aa znO0^rJcdbENzY_yi{lB}>2$n>#PO6~6`pa32|G`bi`Ey~M?v!u66=LU4u$|cgg24> zN@g>#0nhP*qdYc^mZeddmmJ*5K3yn;4c3(l*6jf6;ST}|1j~Y6dcrT1!F-*AS*>BR z+5fYEa O5ycn_;|$ckCvE{bScKmI delta 427 zcmZ9HNlwE+6hy0SOrV1prLZt0CQQKr66P_CS76761vl^ka)?}mO%x;q3l6{;xCI+l zh}UilMQr}Bs;>Wk^>^iS)_(lFy-Vuowr{`8;30S#88pU1bGL{(Dx)erq(?cc!CEjw zkJ1;JJ|Iv+b!KT!OVkN(P+iL~qZzHRq}J<>C*1_aG9$(Gh1_4s`BdSz99z{IbL+U= zF0V8|8z_NNxp?!SCfa7EEo}o@_cEE*jzcgOiXYm1Zk-?}U*x~E)HXT=1v<;?c|H_#zr($Y OOqaUi;Tqz9bn^?$$0B3yMCnqwAY*guGoGih#j*)5daVBjc1||khpb{nq K0R}-ZEd&6j!3xCy diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.class index c7b1301e51ca5883fade69b35bc37bf77c497f2d..06ebd04c9ba691fffd57e11a1c1a5e02c37665c1 100644 GIT binary patch literal 13385 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 ZXSLqVYW>k^{RuqyvFZo>5r0A@{{g`JYM}rC delta 4484 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 b7c%86Qmk$U2S1 zf`?r<&eE?Jkj6UYw0jgZ^EAzPOvR>~X^NdqYbVldQSmrh*ao@B+={IdwyD^TI|MAH z$tkQ-nP#e0a37vfu?uaiO^J$b#cmZHe2iS_@;E$BPjizIdj*J@IR!b6Yz3{@r(!=k z*(IgS#Be~uK^2G4#Zpa&#Uq^8)9k7#+jI=iNO)F7H;%J7b^e{tsW{2=8a?$6Ph+*a zQb7-%mvCCe3v8Qux9KIkEa4Ruui^~rQw#OI0%Dn2i0F@;vRU-L1|1@hjD=)<2&TXc z0e$o=(*3L!yB(JQ#P~OZHlm+K*yv55yCHfI0-qX!0lM-*z;wJ$S9M|ld>EuR0Yez3 zQGBv|19}jDDE)~vK z$cBVON^}k*R9YzR#T$5&)|ieN7{yyOKbmB`jdy6dR48~C@6lIU)?X8UdY|SB_<*8D z=oY3)SfF5x-V6eL;$?q`kF>JAz+e8di$;)M8a)7+{@h(uo`@b?>&tP(T@a+PNjBPJt>-2&mmFENKPK+z*|7j zmm>j%WLy!JP{*aifeaK=v?RbIIfzFr@%UKdF^hPdr_?r$$0wvCL*wzO#-k{}qX-x9 znV*LO-QQS3L{@7=R&XR2G$fw~oV-k#3=~Tnf%8@(Y#{_Kgv(2~wvzPiglh*shUiRhqaD&tC-!dID;-#gJ#-lE zC8+xd<{`>-0F5|E8M@%*?bJZroOBvo!Z*|mRsM}6(_|~Y#bs)?bn@ssVkgo9$@t#i zcB=voILLt?GzYTCfgg!nV~_(a0S8)eCE$Rz%}U(2blw%J#)zx5j-VYFGw9BLvPBuf bi~UIACyo$w;#g?|{6w)3{2VyQt^xl7AuViZ diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.class index 49cd8b34815b7ab394dc9fd5c4c32752950006c6..3bb7512b619f0e9793e2d77e2eb9e7781aece205 100644 GIT binary patch delta 1055 zcmZWoSx-}85Is}7UfSE1wnP)t7=c7&|Bs6msi#l27H?cixirmx6JP;C@=Hp&Xn5q z4k>1uEY%tGDJ4qv-2Bq$0@G3wM+Dr(Jss{F@c<8_&7zvE4gRXh}TlC#jSo%$dpFKOsx(d2~KvMQlBL?v>h6#umcSs z?BwNW+3sSi!fx!DfbGS;3781;1Z*R!|HITAYvSx-X7_MJY&F@g0Z?yTuaQq#9k63R zpT5(X$>-P1QKkt3bSz($B>F|oH@>z31etS z6Ph8C4Yg>&379DhUYx`!Snvh?Xhj>#71DB?<_;~2X)*USLx%=RM+bN4(L@%U;SK|C z;3v+a6G8~fXf@7pvxWzZD3j``6X&^*c$^koU{3`X)#DmZtq;rR7m$LWl-TOj8teWsD{QMlrh3g+^CmL>9(i3>b|{6;V)p zUlsBFKtR9;Rz*?p{Q%#tO;~AM7!Ch`ac*y6A&Yy?%s2DRd}rqVp8hjx4*l&L0Os=)xC~?v~Y(O?zC#M=SY{;lN||n8B8>Y8q78* zHYhb%Y|v$mWJfe1C!7zP1hVhfWsiVo4)f^FG@ z5skaJm3W)|B70X3a$9kGpB~Xfa2nlF`HmImuA(lT`RLDfU;SSF!W6i4v~Hg8j8{qP Wjau(Cn4y$nqP+K}@qtf#VbVYBGox4l diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.class index e535486aa329695b25945e2e5cc2bf1ddca89ba1..cfd9d727e1f9b11b458f4d348d61f96d76d8eb80 100644 GIT binary patch delta 775 zcmZvaOGwmF6vlt&KUzsT5jms;j*pa5f}o*7i^xi&lFZ7qv;<4AAgy#PFa|RnM;#rz zKE`|nJwRLZ7>FK=AOfu@qG-{kMNrTpaUrz|Ix}gsh|BrkbMHO>?|$ER&-bFH{dZ>^ zl5LzT9A6_1OhY#^CzGRR>Kn{ct2Ejo6RODWr_ zW(TLq!$Uqk-8JlDls!zamnRf5#XjCq#77SBjf2ck%ufzU6eVJ(R1!EWPRb;UW0FIK zCDh}_1<%&`b!^K$QSEz0cqf1MA^`KAsL-w>3@mx|_&BW76 z8eZ1Yrgr<-Mmq&`s9l{@;HQcn&Z@ml^lD`vUG(c1;1)sdFvvrOm}HpOjPRaoeBwG^ zxxq9y`N6mdw<8+LRO%$lrA`f4q-fXA_yBgz?ZJX$2o S>pwjc8p|lR#F$^JYJUU$Qk<>; delta 688 zcmXw$OGuPq6o#L7)Jn1mvC&+l&3FNoAW)(*jBaK{W?H707Fp2+(oBu07%Z=&+34?h zPoW~pP1YcEfgoB~gaoyzP0PSV;Ua9?aVUNc|KWV+{m%29x25c7>GXmpT$cFTrD3Ni zxx`uU)P{$XgE4Z2vr-4-&n2EstY-_EY-I!aQ|wF1Yt=Obon*rre|x&@n)o~3|YN-=};ri{)~_QX~TX-0?$cih8zRf%u6%(m6&AF;RtTH5m?PR=X5*; { +} diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java index 6eebf05..65c4e9d 100644 --- a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java @@ -3,5 +3,7 @@ package com.atguigu.tingshu.search.service; public interface SearchService { + void upperAlbum(Long albumId); + void lowerAlbum(Long albumId); } diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java index 9bf6598..aba9544 100644 --- a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java @@ -1,14 +1,125 @@ package com.atguigu.tingshu.search.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.RandomUtil; +import com.atguigu.tingshu.album.AlbumFeignClient; +import com.atguigu.tingshu.model.album.AlbumAttributeValue; +import com.atguigu.tingshu.model.album.AlbumInfo; +import com.atguigu.tingshu.model.album.BaseCategoryView; +import com.atguigu.tingshu.model.search.AlbumInfoIndex; +import com.atguigu.tingshu.model.search.AttributeValueIndex; +import com.atguigu.tingshu.search.repository.AlbumInfoIndexRepository; import com.atguigu.tingshu.search.service.SearchService; +import com.atguigu.tingshu.user.client.UserFeignClient; +import com.atguigu.tingshu.vo.user.UserInfoVo; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + @Slf4j @Service @SuppressWarnings({"all"}) public class SearchServiceImpl implements SearchService { + @Autowired + private AlbumInfoIndexRepository albumInfoIndexRepository; + @Resource(name = "threadPoolTaskExecutor") + private Executor threadPoolTaskExecutor; + @Autowired + private AlbumFeignClient albumFeignClient; + @Autowired + private UserFeignClient userFeignClient; + + @Override + public void upperAlbum(Long albumId) { + //1.创建专辑索引对象 + AlbumInfoIndex albumInfoIndex = new AlbumInfoIndex(); + //2.远程调用专辑服务查询专辑信息,封装专辑以及专辑标签列表 + CompletableFuture albumInfoCompletableFuture = CompletableFuture.supplyAsync(() -> { + AlbumInfo albumInfo = albumFeignClient.getAlbumInfo(albumId).getData(); + Assert.notNull(albumInfo, "专辑{}不存在", albumId); + //2.1 封装专辑信息 + BeanUtil.copyProperties(albumInfo, albumInfoIndex); + + //2.2 封装专辑标签列表 + List albumAttributeValueVoList = albumInfo.getAlbumAttributeValueVoList(); + if (CollUtil.isNotEmpty(albumAttributeValueVoList)) { + List attributeValueIndexList = albumAttributeValueVoList + .stream() + .map(a -> BeanUtil.copyProperties(a, AttributeValueIndex.class)) + .collect(Collectors.toList()); + albumInfoIndex.setAttributeValueIndexList(attributeValueIndexList); + } + return albumInfo; + }, threadPoolTaskExecutor); + + //3.远程调用专辑服务查询分类信息,封装1,2级分类ID + CompletableFuture BaseCategoryViewCompletableFuture = albumInfoCompletableFuture.thenAcceptAsync(albumInfo -> { + BaseCategoryView baseCategoryView = albumFeignClient.getCategoryView(albumInfo.getCategory3Id()).getData(); + Assert.notNull(baseCategoryView, "分类{}不存在", albumInfo.getCategory3Id()); + albumInfoIndex.setCategory1Id(baseCategoryView.getCategory1Id()); + albumInfoIndex.setCategory2Id(baseCategoryView.getCategory2Id()); + }, threadPoolTaskExecutor); + + //4.远程调用用户服务查询用户信息,封装主播名称 + CompletableFuture userInfoCompletableFuture = albumInfoCompletableFuture.thenAcceptAsync(albumInfo -> { + UserInfoVo userInfoVo = userFeignClient.getUserInfoVo(albumInfo.getUserId()).getData(); + Assert.notNull(userInfoVo, "用户{}不存在", albumInfo.getUserId()); + albumInfoIndex.setAnnouncerName(userInfoVo.getNickname()); + }, threadPoolTaskExecutor); + + //5.暂时随机为当前专辑生成四项统计数值,基于四项统计数值计算得出热度 + CompletableFuture statCompletableFuture = CompletableFuture.runAsync(() -> { + int num1 = RandomUtil.randomInt(2000, 3000); + int num2 = RandomUtil.randomInt(1000, 2000); + int num3 = RandomUtil.randomInt(500, 1000); + int num4 = RandomUtil.randomInt(200, 500); + albumInfoIndex.setPlayStatNum(num1); + albumInfoIndex.setSubscribeStatNum(num2); + albumInfoIndex.setBuyStatNum(num3); + albumInfoIndex.setCommentStatNum(num4); + //基于四项统计数值计算得出热度 规则:播放量*0.1 + 订阅量*0.2 + 购买量*0.3 + 评论量*0.4 + BigDecimal hotScore = new BigDecimal(num1).multiply(new BigDecimal("0.1")) + .add(new BigDecimal(num2).multiply(new BigDecimal("0.2"))) + .add(new BigDecimal(num3).multiply(new BigDecimal("0.3"))) + .add(new BigDecimal(num4).multiply(new BigDecimal("0.4"))); + albumInfoIndex.setHotScore(hotScore.doubleValue()); + }, threadPoolTaskExecutor); + + //6.等待所有任务执行完成 + CompletableFuture.allOf( + albumInfoCompletableFuture, + BaseCategoryViewCompletableFuture, + userInfoCompletableFuture, + statCompletableFuture + ).orTimeout(5, TimeUnit.SECONDS) + .join(); + + //7.保存专辑到索引库 + albumInfoIndexRepository.save(albumInfoIndex); + + + } + + /** + * 删除专辑索引库中文档 + * + * @param albumId + */ + @Override + public void lowerAlbum(Long albumId) { + albumInfoIndexRepository.deleteById(albumId); + } } diff --git a/service/service-search/src/test/java/com/atguigu/tingshu/search/test01.java b/service/service-search/src/test/java/com/atguigu/tingshu/search/test01.java new file mode 100644 index 0000000..46c18db --- /dev/null +++ b/service/service-search/src/test/java/com/atguigu/tingshu/search/test01.java @@ -0,0 +1,26 @@ +package com.atguigu.tingshu.search; + +import com.atguigu.tingshu.search.service.SearchService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest + +public class test01 { + @Autowired + private SearchService searchService; + + @Test + public void test01() { + for (long i = 1; i <= 1629; i++) { + try { + searchService.upperAlbum(i); + } catch (Exception e) { + e.printStackTrace(); + } + + + } + } +} diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/api/SearchApiController.class b/service/service-search/target/classes/com/atguigu/tingshu/search/api/SearchApiController.class index 105a7c4162444eb28afb7459ea3406865b11858e..85ccfc699b60537656adf69e0465796397c77da9 100644 GIT binary patch literal 1746 zcmbVMS!+{46h4!tjmEfZ>%K2ZU8e3zRVacY#04vT@oADwZ$@wK#JO`DiumgOpopTP z;P&8)QbDka=)1q8iTWqR?yndL0s`Oca1@$1|7M6{3gBq>I135utvojMrJ zIxU6-cZKKhW4Y5ZZy9y$Ri3i@8MUP|15;@VO-)cTMbjw7Xlq`VxUf#3oPb;9IeszV zz7!^3tm2qGTPXwM-B{`scm2+jE=V>df(w@&~cUBvR z`(*>#2aPDniZ*9>P72TGgCcLW8RlZ#fcFJfSCo;3UPkc)x&Y#5W|b$82Bn-dCk5Oy znv>Oe;SLC+!gKR7Zi@=>wnygk`(h*3-k-URbQDPpql5@cbhv=l{IN#3IwEaR7mkZC zeJc%6X0l3izakt*8a}j*YvE5|!RNBD($}3C=$PY<-M3l>@5dyXk z2{!=E%XuR!Z&34AAM$g}T+cIFHM#KP8BXeeoqvtuxUj|VRRxYU&2%q4{Brl{56O*< zKCj)rSbOwjGR#(2PK254*MZ5)gDPyE1rfh}bNH|Dd;U-rD;%Gn6d^}(54A)m)~??N z;Z1Na9(}rg;a4pmMLYhYZOt6Gjs7jsre_0Kx2l#5Ct0JC*0M{v{d63%Tx&?K~1VAt8uZhC?pt)aE>xDIdas5nH3v)lL*3YH zI7Q5-jkF1mi4gB*Y#2t-uYfF!1d;}j%zpym6M*zg1`?w!fD@ywb?}Qp@HT+k?$Zw1 LiHBX|3GDs`4)gk| delta 196 zcmcb_`P)W2Q(7#J9A8Kft2>9esja4<3$O}rpIF(qd5GRC8mJy@RBvz8_1l%_H= za3vOG>KCUb7A0peC^E1!Fah;30!dB=E+EYfA9IS>FFN&k&v=n zxT9nvIx}i!@D+bHLoeO^lpgaG8<=5Q-lS>{r&Hs?*TZD zQWkYcX-Mm+#|DATSLLiUZ0VGY^M$L*3uA9i zdb|=wAZFTzRvWsTg2>oe2Fzsv2Nb zC)bFb*rnll9lP;@K<~2x2xP-bMR|jEAuJ2D)JBna8AHcp7JIN)!%I3|#y)}lF$I+< zz$s6b)tu|i7_xk=VwkR{j1lGgvczDvlvGeXjCw9j1eWpzUTyD4a`A5nOG>#cUO}6N zb{!q)6fmC3gC%`|jr8S|vZDf-pOCBvR@d1^bmM@A9vudH1$IT$d9qNjg7P)Pv@PWX z#?Z8M9Ayh+3evaCL32i+zWwZ_j!6xNNY_%zC#F4jP8MvHMIR1pcumLaIKmv;Zn@yj zuq`)U_is5j*}P?*uJu!hou>~-n>8qDN8zqDX;Z%$d<^QJ}SfA>v}`U@}u@^drH?>q2qxxXGUbDO5o-Z6->LuQ5ki2 zpgfYfPMirdwW%A6dnj-DfpR!!qu#NcVl=J=j;`(1lRy_j6{?eoZUm#QM?6Hc zuybNHLe$SnJEVS7_4Vk9Sto79kmjS3N(WvfaOhbK#C{UJWf^KuJXe|b8O3&5@hxsh zhSbkFle~A?aX0i#HEcy*v@CzcdZIBS(7CEpq}fw$Fkex|kXx>}4(C=5d--(M@zJg0 z`@qLD-toF6l%#RtVTu# l=Hs&38|MIMXwEF+#1GJ-(h@bLwS^QHc~=MZxH_kRe*i}{Yn literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/repository/AlbumInfoIndexRepository.class b/service/service-search/target/classes/com/atguigu/tingshu/search/repository/AlbumInfoIndexRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..633cb06d984719edcfda107dd9ce52a3e6a84110 GIT binary patch literal 431 zcmb_ZOHKnZ40Xz9XxVT9u7D3Pr4kE}Mj8o;p1{qxY1&LuISHTJa1It6fI}fdC1?vQ zS=e4Y+3(}G_m@`yxP;RR1_~xR^hn8MYceM5OO?7mXjkD}gD(*|$qNv&Ws4OukbSXcC(?=Ng^U3~f| VK`A&WbyS`LFo0^)Phhy2qYqrfk;VW3 literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/service/SearchService.class b/service/service-search/target/classes/com/atguigu/tingshu/search/service/SearchService.class index 2880a3efef10e95aadecc7e3cbc8836b905ad813..e57c2e7af5ef25f9ccd1176a630619f1ec6242a1 100644 GIT binary patch delta 146 zcmeBUY-Hj(^>5cc1_lOO2A+vr{$8a81*t`jIZ36tj10mWK3R!niTXK-dFlE-`FZKq znqiC#0=}sw8TlyziA9OIsU@jJ#f%K>i69N0DU1wUIr-&K{S(7<4VhRN8CV(E7=TKE YRfivR!s delta 33 ncmZo<>SN?O^>5cc1_lOO2KI?u{u7sJaWgP5GOz+gm>Adqql*Ux diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.class b/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.class index 81ebc584f1f99c05df3db2d2f9a5dce88e8706c0..c57622336257a95449adcd593bb7d8a5eb3b9398 100644 GIT binary patch literal 8643 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 delta 237 zcmXwyF;2r!5Jca%WNiP~*xv+jzyw*Tk`!?ysz_8^fCF#`3VJv}3bZG&C_of6bhNn+ zin8C4i=ENz?9Bc?bfNv*fByjY+`ij8Y0W0HSVj?PO2(<|ipMyjNO6?1balws(8}7( z+K6gZ^MX7#q@YU l#Y9!CMMJph9Z1UPi{yjc7Z`>DJ&*O>wJrl{Zj^m;3I~KE8LeT3!=iJ(BQ$CpawL0AS)y;Sx+8%hi2(zcX~3@1Nc9@ zc<{`b#Q1ga2lyxaAI7LPvn!}EB+g{2rmOnZtFC^ZzkmD$;2u_7Sm<(Kd+0`vVXz?% z1aFF<&bMj}=^KXJT@@&EpP_5MRP81dJ-O#SaMA0)^U#NWh8bVCxG?oZ)e~-1P>=T# z9!nAVd)&y_EUz&1wbvCH9VlNi+$x^~irc$*C9BcFthyM)MF)8gLl|c0KkK%vgF1tA zAexEX+GQA;-zb&;Ot1E06k`r9c^Jn8!}9;qGq_0@%4oe=OIj(#-vp(qgGox9@jg28 zWoVQRTof?np_mSNAdFOCDn|JG+mT2|G5$0OjB3fMidC&C*MmSCk-}nzJ7pc!d7NVE zyOC(gLmln&niN6IcZF|s^n#010AEjxK2(w1S!J*v>K&>+P*#E5OjADlN&7LB@+4HWYeV0@^_v=;}l^gkO5T_@mO-#|ZK{ubB^@#{OOq1D>8VTu& zH9SUAbE5lrI~_5 zHc!!Eil> getUserInfoVo(@PathVariable Long userId){ + UserInfoVo userInfoVo = userInfoService.getUserInfo(userId); + return Result.ok(userInfoVo); } +}