提交 1dbdae2b 作者: xiaowang

优化动态列表

上级 99f98413
package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.ForumDynamicDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author LW
* @date 2023/5/15 10:29
......@@ -46,4 +49,5 @@ public interface LikeDAO {
*/
int getLikesCount(int dynamicId);
List<ForumDynamicDO> selectLiked(Integer userId, List<Integer> ids);
}
......@@ -144,6 +144,7 @@ public class DynamicServiceImpl implements DynamicService {
Map<Integer, List<ForumImageDO>> ImageMap = forumImageList.stream().collect(Collectors.groupingBy(ForumImageDO::getDynamicId));
// 获取视频信息
List<ForumVideoDO> forumVideoList = dynamicDAO.listDynamicVideo(ids);
// 获取用户信息
Set<Integer> userIds = forumDynamicList.stream().map(ForumDynamicDO::getUserId).collect(Collectors.toSet());
List<Integer> userIdList = new ArrayList<>(userIds);
BUserAccountQO bUserAccountQO = new BUserAccountQO();
......@@ -151,6 +152,8 @@ public class DynamicServiceImpl implements DynamicService {
// 解决bug
List<UserAccountSimpleDTO> userAccountSimpleDTOS = userAppApi.feignListBAccountPage(bUserAccountQO);
Map<Integer, UserAccountSimpleDTO> userAccountInfoMap = userAccountSimpleDTOS.stream().collect(Collectors.toMap(UserAccountSimpleDTO::getId, Function.identity()));
//获取liked信息
List<ForumDynamicDO> forumDynamicDOS = likeDAO.selectLiked(userId, ids);
List<DynamicVO> dynamicVOList = forumDynamicList.stream()
.map(d -> {
MediaVO mediaVO = new MediaVO();
......@@ -174,8 +177,14 @@ public class DynamicServiceImpl implements DynamicService {
}
dynamicVO.setMediaVO(mediaVO);
// 设置是否点赞
boolean liked = likeDAO.isLiked(userId, d.getId());
dynamicVO.setLikes(liked);
for (ForumDynamicDO forumDynamicDO : forumDynamicDOS) {
if (forumDynamicDO.getId().equals(d.getId())){
dynamicVO.setLikes(true);
break;
}else {
dynamicVO.setLikes(false);
}
}
return dynamicVO;
}).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, dynamicVOList);
......
......@@ -25,4 +25,31 @@
FROM forum_like
WHERE dynamic_id = #{dynamicId}
</select>
<select id="isLikedBatch" resultType="java.lang.Boolean">
SELECT
*
FROM (
SELECT
d.id AS dynamic_id,
EXISTS (SELECT 1 FROM forum_like WHERE user_id = #{userId} AND dynamic_id = d.id) AS liked
FROM forum_dynamic d
WHERE d.id IN (
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>
)
) t
</select>
<select id="selectLiked" resultType="com.mmc.csf.release.entity.ForumDynamicDO">
SELECT fd.id
FROM forum_dynamic fd
INNER JOIN forum_like fl ON fd.id = fl.dynamic_id
where fl.user_id = #{userId}
and fd.id in (
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>
)
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论