提交 1dbdae2b 作者: xiaowang

优化动态列表

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