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 5ef063e..254aab4 100644 Binary files a/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class and b/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class differ diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.java new file mode 100644 index 0000000..2405bac --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.java @@ -0,0 +1,70 @@ +package com.atguigu.tingshu.common.config.pool; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.*; + +/** + * @author: atguigu + * @create: 2024-08-09 11:28 + */ +@Slf4j +@Configuration +public class ThreadPoolConfig { + + /** + * 基于JDK(JUC)提供线程池Class + */ + @Bean + public Executor threadPoolExecutor() { + //1.获取当前服务器核心数确定核心线程数 + int cpuCoreCount = Runtime.getRuntime().availableProcessors(); + int threadCount = cpuCoreCount * 2; + //2.通过构造方法创建线程池对象 + ThreadPoolExecutor threadPoolExecutor = + new ThreadPoolExecutor( + threadCount, + threadCount, + 0, + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(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 0000000..d74c9d5 Binary files /dev/null and b/common/service-util/target/classes/com/atguigu/tingshu/common/config/pool/ThreadPoolConfig.class differ 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 f463a0e..4b955be 100644 Binary files a/common/service-util/target/classes/com/atguigu/tingshu/common/constant/SystemConstant.class and b/common/service-util/target/classes/com/atguigu/tingshu/common/constant/SystemConstant.class differ 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 ed17087..aa3aa53 100644 Binary files a/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/AlbumFeignClient.class and b/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/AlbumFeignClient.class differ diff --git a/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.class b/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.class index 912da49..6957c97 100644 Binary files a/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.class and b/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.class differ 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 2aedbcd..027f8f2 100644 Binary files a/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/UserFeignClient.class and b/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/UserFeignClient.class differ diff --git a/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.class b/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.class index 9e117d9..e283733 100644 Binary files a/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.class and b/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.class differ diff --git a/service/service-account/target/classes/com/atguigu/tingshu/account/receiver/AccountReceiver.class b/service/service-account/target/classes/com/atguigu/tingshu/account/receiver/AccountReceiver.class new file mode 100644 index 0000000..6833466 Binary files /dev/null and b/service/service-account/target/classes/com/atguigu/tingshu/account/receiver/AccountReceiver.class differ diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java index 9b8072a..ceacb0d 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.atguigu.tingshu.album.service.BaseCategoryService; import com.atguigu.tingshu.common.result.Result; import com.atguigu.tingshu.model.album.BaseAttribute; +import com.atguigu.tingshu.model.album.BaseCategoryView; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +35,18 @@ public class BaseCategoryApiController { List 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 { +} 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 105a7c4..85ccfc6 100644 Binary files a/service/service-search/target/classes/com/atguigu/tingshu/search/api/SearchApiController.class and b/service/service-search/target/classes/com/atguigu/tingshu/search/api/SearchApiController.class differ diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/receiver/SearchReciever.class b/service/service-search/target/classes/com/atguigu/tingshu/search/receiver/SearchReciever.class new file mode 100644 index 0000000..0f1cedb Binary files /dev/null and b/service/service-search/target/classes/com/atguigu/tingshu/search/receiver/SearchReciever.class differ 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 0000000..633cb06 Binary files /dev/null and b/service/service-search/target/classes/com/atguigu/tingshu/search/repository/AlbumInfoIndexRepository.class differ 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 2880a3e..e57c2e7 100644 Binary files a/service/service-search/target/classes/com/atguigu/tingshu/search/service/SearchService.class and b/service/service-search/target/classes/com/atguigu/tingshu/search/service/SearchService.class differ 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 81ebc58..c576223 100644 Binary files a/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.class and b/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.class differ diff --git a/service/service-search/target/test-classes/com/atguigu/tingshu/search/test01.class b/service/service-search/target/test-classes/com/atguigu/tingshu/search/test01.class new file mode 100644 index 0000000..5b1d922 Binary files /dev/null and b/service/service-search/target/test-classes/com/atguigu/tingshu/search/test01.class differ diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java index 0e76096..7302d78 100644 --- a/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java @@ -1,8 +1,13 @@ package com.atguigu.tingshu.user.api; +import com.atguigu.tingshu.common.result.Result; import com.atguigu.tingshu.user.service.UserInfoService; +import com.atguigu.tingshu.vo.user.UserInfoVo; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -14,6 +19,17 @@ public class UserInfoApiController { @Autowired private UserInfoService userInfoService; + /** + * 根据用户ID查询用户信息 + * @param userId + * @return + */ + @Operation(summary = "根据用户ID查询用户信息") + @GetMapping("/userInfo/getUserInfoVo/{userId}") + public Result getUserInfoVo(@PathVariable Long userId){ + UserInfoVo userInfoVo = userInfoService.getUserInfo(userId); + return Result.ok(userInfoVo); } +}