提交 4998510b 作者: xiaowang 提交者: 余乾开

论坛相关

上级 e882a86e
......@@ -28,7 +28,7 @@ public class BackstageForumController {
@Autowired BackstageForumService backstageForumService;
@ApiOperation(value = "动态列表")
@ApiOperation(value = "后台-动态列表")
@PostMapping("/listDynamic")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicInfoDTO.class)})
public ResultBody<DynamicInfoDTO> listDynamic(
......
......@@ -61,4 +61,14 @@ public class DynamicController extends BaseController {
return dynamicService.dynamicDetails(
dynamicId, this.getUserLoginInfoFromRedis(request).getUserAccountId(), request);
}
@ApiOperation(value = "动态列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicList")
public ResultBody dynamicList(
@RequestParam Integer pageNo, @RequestParam Integer pageSize, HttpServletRequest request) {
return ResultBody.success(
dynamicService.dynamicList(
pageNo, pageSize, this.getUserLoginInfoFromRedis(request).getUserAccountId(), request));
}
}
......@@ -44,9 +44,10 @@ public interface DynamicDAO {
* 更新动态点赞数量
*
* @param dynamicId 动态id
* @param pid pid
* @param version version
*/
void updateDynamicLikeCount(@Param("dynamicId") Integer dynamicId, @Param("pid") Integer pid);
void updateDynamicLikeCount(
@Param("dynamicId") Integer dynamicId, @Param("version") Integer version);
/**
* 得到动态信息
......@@ -60,17 +61,17 @@ public interface DynamicDAO {
* 动态点赞数减
*
* @param dynamicId 动态id
* @param pid pid
* @param version version
*/
void updateSubDynamicLikeCount(Integer dynamicId, Integer pid);
void updateSubDynamicLikeCount(Integer dynamicId, Integer version);
/**
* 更新动态评论数
*
* @param dynamicId 动态id
* @param pid pid
* @param version version
*/
void updateDynamicCommentCount(Integer dynamicId, Integer pid);
void updateDynamicCommentCount(Integer dynamicId, Integer version);
/**
* 动态列表计数
......
package com.mmc.csf.release.service;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
......@@ -53,4 +54,7 @@ public interface DynamicService {
* @return {@link ResultBody}
*/
ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request);
PageResult dynamicList(
Integer pageNo, Integer pageSize, Integer userAccountId, HttpServletRequest request);
}
......@@ -8,7 +8,6 @@ import com.mmc.csf.release.dao.BackstageForumDao;
import com.mmc.csf.release.dao.DynamicDAO;
import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.release.entity.forum.ForumResourceDO;
import com.mmc.csf.release.entity.forum.ForumVideoDO;
import com.mmc.csf.release.feign.UserAppApi;
import com.mmc.csf.release.forum.dto.DynamicInfoDTO;
import com.mmc.csf.release.forum.qo.DynamicQO;
......@@ -72,13 +71,10 @@ public class BackstageForumServiceImpl implements BackstageForumService {
List<ForumResourceDO> forumImageList = dynamicDAO.listDynamicPicture(ids);
Map<Integer, List<ForumResourceDO>> ImageMap =
forumImageList.stream().collect(Collectors.groupingBy(ForumResourceDO::getDynamicId));
// 获取视频信息
List<ForumVideoDO> forumVideoList = dynamicDAO.listDynamicVideo(ids);
// 获取查询到的列表用户信息
// 获取用户信息
Set<Integer> ListUserIds =
Set<Integer> listUserIds =
dynamicList.stream().map(ForumDynamicDO::getUserAccountId).collect(Collectors.toSet());
List<Integer> userIdList = new ArrayList<>(ListUserIds);
List<Integer> userIdList = new ArrayList<>(listUserIds);
UserAccountQO accountQO = new UserAccountQO();
accountQO.setUserIds(userIdList);
List<UserAccountSimpleDTO> userAccountSimpleList =
......@@ -91,6 +87,13 @@ public class BackstageForumServiceImpl implements BackstageForumService {
.map(
d -> {
DynamicInfoDTO dynamicInfoDTO = d.buildDynamicInfoDTO();
List<ForumResourceDO> forumResourceDOList = ImageMap.get(d.getId());
if (CollectionUtils.isNotEmpty(forumResourceDOList)) {
dynamicInfoDTO.setMediaVO(
forumResourceDOList.stream()
.map(ForumResourceDO::buildMedia)
.collect(Collectors.toList()));
}
UserAccountSimpleDTO userAccountSimpleDTO =
userAccountInfoMap.get(d.getUserAccountId());
if (userAccountSimpleDTO != null) {
......
package com.mmc.csf.release.service.impl;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.infomation.dto.UserAccountSimpleDTO;
import com.mmc.csf.release.auth.qo.BUserAccountQO;
import com.mmc.csf.release.auth.qo.UserAccountQO;
import com.mmc.csf.release.constant.TokenConstant;
import com.mmc.csf.release.dao.CommentDAO;
import com.mmc.csf.release.dao.DynamicDAO;
......@@ -24,6 +26,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
......@@ -160,4 +165,68 @@ public class DynamicServiceImpl implements DynamicService {
}
return listDynamic;
}
@Override
public PageResult dynamicList(
Integer pageNo, Integer pageSize, Integer userId, HttpServletRequest request) {
int count = dynamicDAO.countDynamicList();
if (count == 0) {
return PageResult.buildPage(pageNo, pageSize, 0);
}
int itemIndex = (pageNo - 1) * pageSize;
List<ForumDynamicDO> forumDynamicList = dynamicDAO.dynamicList(itemIndex, pageSize);
// 动态id集合
List<Integer> ids =
forumDynamicList.stream().map(ForumDynamicDO::getId).collect(Collectors.toList());
// 根据id集合查询图片
List<ForumResourceDO> forumImageList = dynamicDAO.listDynamicPicture(ids);
Map<Integer, List<ForumResourceDO>> ImageMap =
forumImageList.stream().collect(Collectors.groupingBy(ForumResourceDO::getDynamicId));
// 获取用户信息
Set<Integer> userIds =
forumDynamicList.stream().map(ForumDynamicDO::getUserAccountId).collect(Collectors.toSet());
List<Integer> userIdList = new ArrayList<>(userIds);
UserAccountQO bUserAccountQO = new UserAccountQO();
bUserAccountQO.setUserIds(userIdList);
List<UserAccountSimpleDTO> userAccountSimpleDTOS =
userAppApi.feignListAppUserAccount(bUserAccountQO, request.getHeader(TokenConstant.TOKEN));
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 -> {
DynamicVO dynamicVO = d.buildDynamicVO();
List<ForumResourceDO> forumResourceDOList = ImageMap.get(d.getId());
if (CollectionUtils.isNotEmpty(forumResourceDOList)) {
dynamicVO.setMediaVO(
forumResourceDOList.stream()
.map(ForumResourceDO::buildMedia)
.collect(Collectors.toList()));
}
UserAccountSimpleDTO userAccountSimpleDTO =
userAccountInfoMap.get(d.getUserAccountId());
if (userAccountSimpleDTO != null) {
UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO();
userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName());
userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg());
dynamicVO.setUserBaseInfo(userBaseInfoVO);
}
// 设置是否点赞
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);
}
}
......@@ -7,18 +7,27 @@
<select id="countDynamic" resultType="java.lang.Integer">
select count(*) from forum_dynamic
<where>
<foreach collection="ids" index="index" separator="," open="user_id in (" close=")" item="ids">
root_path is null
<if test="ids != null">
<foreach collection="ids" index="index" separator="," open="and user_account_id in (" close=")"
item="ids">
#{ids}
</foreach>
</if>
</where>
</select>
<select id="listDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id,user_id,description,is_deleted as deleted from forum_dynamic
select id,user_account_id,description,is_deleted as deleted from forum_dynamic
<where>
<foreach collection="ids" index="index" separator="," open="user_id in (" close=")" item="ids">
root_path is null
<if test="ids != null">
<foreach collection="ids" index="index" separator="," open="and user_account_id in (" close=")"
item="ids">
#{ids}
</foreach>
</if>
</where>
order by create_time desc
limit #{pageNo},#{pageSize}
</select>
</mapper>
\ No newline at end of file
......@@ -24,23 +24,23 @@
<update id="updateDynamicLikeCount">
update forum_dynamic
set likes_count = likes_count + 1,
pid = pid + 1
version = version + 1
where id = #{dynamicId}
and pid = #{pid};
and version = #{version};
</update>
<update id="updateSubDynamicLikeCount">
update forum_dynamic
set likes_count = likes_count - 1,
pid = pid + 1
version = version + 1
where id = #{dynamicId}
and pid = #{pid};
and version = #{version};
</update>
<update id="updateDynamicCommentCount">
update forum_dynamic
set comments_count = comments_count + 1,
pid = pid + 1
version = version + 1
where id = #{dynamicId}
and pid = #{pid};
and version = #{version};
</update>
<select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id,
......@@ -65,9 +65,8 @@
</select>
<select id="dynamicList" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id,
pid,
title,
user_id,
version,
user_account_id,
description,
location,
lat,
......@@ -77,16 +76,18 @@
create_time
from forum_dynamic
where is_deleted = 0
and root_path is null
order by create_time desc
LIMIT #{itemIndex}, #{pageSize}
</select>
<select id="listDynamicPicture" resultType="com.mmc.csf.release.entity.forum.ForumResourceDO">
select id, url , dynamic_id
from forum_image
select dynamic_id,
resource_url,
`type`
from forum_resource
where
is_deleted = 0 and dynamic_id in
<foreach collection="list" item="item" open="(" separator="," close=")">
<foreach collection="list" item="item" open="dynamic_id in(" separator="," close=")">
#{item}
</foreach>
</select>
......
......@@ -5,19 +5,19 @@
<mapper namespace="com.mmc.csf.release.dao.LikeDAO">
<insert id="insertLike">
INSERT INTO forum_like(user_id, dynamic_id)
INSERT INTO forum_like(user_account_id, dynamic_id)
VALUES (#{userId}, #{dynamicId})
</insert>
<delete id="deleteLike">
DELETE
FROM forum_like
WHERE user_id = #{userId}
WHERE user_account_id = #{userId}
AND dynamic_id = #{dynamicId}
</delete>
<select id="isLiked" resultType="java.lang.Boolean">
SELECT COUNT(*) > 0
FROM forum_like
WHERE user_id = #{userId}
WHERE user_account_id = #{userId}
AND dynamic_id = #{dynamicId}
</select>
<select id="getLikesCount" resultType="java.lang.Integer">
......@@ -31,7 +31,7 @@
FROM (
SELECT
d.id AS dynamic_id,
EXISTS (SELECT 1 FROM forum_like WHERE user_id = #{userId} AND dynamic_id = d.id) AS liked
EXISTS (SELECT 1 FROM forum_like WHERE user_account_id = #{userId} AND dynamic_id = d.id) AS liked
FROM forum_dynamic d
WHERE d.id IN (
<foreach collection="ids" item="id" separator=",">
......@@ -45,7 +45,7 @@
SELECT fd.id
FROM forum_dynamic fd
INNER JOIN forum_like fl ON fd.id = fl.dynamic_id
where fl.user_id = #{userId}
where fl.user_account_id = #{userId}
and fd.id in (
<foreach collection="ids" item="id" separator=",">
#{id}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论