Commit d94a0dfb authored by 刘基明's avatar 刘基明

ConvertUtil

parent da0e6fa9
package com.tanpu.community.api.beans;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* APP端话题列表页
*/
@Data
public class TopicBriefInfoDTO {
private String topicId;
@ApiModelProperty("话题名称")
private String title;
@ApiModelProperty("讨论数")
private Long discussionAmount;
}
package com.tanpu.community.api.beans;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 管理后台:话题数据分析
*/
@Data
public class TopicDataAnalysDTO {
@ApiModelProperty(value = "id")
private String id;
@ApiModelProperty(value = "话题名称")
private String topicTitle;
@ApiModelProperty(value = "总浏览量")
private Long viewTotalAmount;
@ApiModelProperty(value = "话题页面浏览量")
private Long viewPageAmount;
@ApiModelProperty(value = "发帖数")
private Long themeAmount;
@ApiModelProperty(value = "回帖数")
private Long commentAmount;
@ApiModelProperty(value = "总用户数")
private Long userTotalAmount;
@ApiModelProperty(value = "发帖人数")
private Long posterAmount;
@ApiModelProperty(value = "回帖人数")
private Long replIierAmount;
}
......@@ -2,11 +2,30 @@ package com.tanpu.community.api.constants;
public class RedisKeyConstant {
public static final String TOPIC_VIEW_AMOUNT_="TOPIC_VIEW_AMOUNT_";
//话题页浏览量
public static final String TOPIC_VIEW_AMOUNT_="TOPIC_PAGE_VIEW_AMOUNT_";
//话题总浏览量
public static final String TOPIC_TOTAL_VIEW_AMOUNT_="TOPIC_TOTAL_VIEW_AMOUNT_";
//点赞量
public static final String TOPIC_LIKE_AMOUNT_="TOPIC_LIKE_AMOUNT_";
//收藏量
public static final String TOPIC_BOOK_AMOUNT_="TOPIC_BOOK_AMOUNT_";
//评论数
public static final String TOPIC_COMMENT_AMOUNT_="TOPIC_COMMENT_AMOUNT_";
//用户数
public static final String TOPIC_USER_AMOUNT_="TOPIC_USER_AMOUNT_";
//讨论量
public static final String TOPIC_DISCUSS_AMOUNT_="TOPIC_DISCUSS_AMOUNT_";
//发帖数
public static final String TOPIC_THEME_AMOUNT_="TOPIC_THEME_AMOUNT_";
//回帖数
public static final String TOPIC_COMENT_AMOUNT_="TOPIC_COMENT_AMOUNT_";
//总用户数
public static final String TOPIC_TOTAOL_USER_AMOUNT_="TOPIC_TOTAOL_USER_AMOUNT_";
//发帖人数
public static final String TOPIC_POSTER_AMOUNT_="TOPIC_POSTER_AMOUNT_";
//回帖人数
public static final String TOPIC_REPLIER_AMOUNT_="TOPIC_REPLIER_AMOUNT_";
public static final String THEME_VIEW_AMOUNT_="THEME_VIEW_AMOUNT_";
public static final String THEME_LIKE_AMOUNT_="THEME_LIKE_AMOUNT_";
......
......@@ -2,12 +2,11 @@ package com.tanpu.community.controller;
import com.tanpu.community.api.beans.TopicBriefInfoDTO;
import com.tanpu.community.api.beans.TopicDTO;
import com.tanpu.community.dao.entity.community.TopicEntity;
import com.tanpu.community.api.beans.TopicDataAnalysDTO;
import com.tanpu.community.manager.TopicManager;
import com.tanpu.community.model.req.topic.TopicConcealReq;
import com.tanpu.community.model.req.topic.TopicModifyMountReq;
import com.tanpu.community.model.req.topic.TopicTopReq;
import com.tanpu.community.util.ConvertUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -16,7 +15,6 @@ import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@Slf4j
......@@ -30,33 +28,22 @@ public class TopicController {
@GetMapping(value = "/queryTopicInfoList")
@ApiOperation("APP全部话题页面,可搜索")
@ResponseBody
public List<TopicBriefInfoDTO> getTopicBriefInfoList(){
List<TopicBriefInfoDTO> allTopic = topicManager.getBreifInfoTopic();
public List<TopicDTO> getTopicBriefInfoList(){
List<TopicDTO> allTopic = topicManager.getAllTopicDetail();
return allTopic;
}
@GetMapping(value = "/admin/queryTopicDetailList")
@ApiOperation("查询所有的题详情")
@ApiOperation("查询所有的题详情")
@ResponseBody
public List<TopicDTO> getAllTopicList(){
List<TopicEntity> allTopic = topicManager.getAllTopic();
List<TopicDTO> topicDTOS = ConvertUtil.topicEntitiesToDTOs(allTopic);
//获取浏览数据:浏览、发帖、回帖
return topicDTOS;
public List<TopicBriefInfoDTO> getAllTopicList(){
List<TopicBriefInfoDTO> allTopic = topicManager.getAllTopicBriefInfo();
return allTopic;
}
@PostMapping(value = "/admin/queryTopicNameList")
@ApiOperation("查询所有的主题名称列表")
@ResponseBody
public List<String> getTopicNameList(){
List<TopicEntity> allTopic = topicManager.getAllTopic();
List<String> topictitiles = allTopic.stream().map(TopicEntity::getTopicTitle).collect(Collectors.toList());
//获取浏览数据:浏览、发帖、回帖
return topictitiles;
}
@PostMapping(value="/admin/insertTopic")
@ApiOperation("新增主题主题")
@ApiOperation("新增题")
@ResponseBody
public String addTopic(@RequestParam String topicTitle){
//TODO:获取登录用户信息
......@@ -77,7 +64,7 @@ public class TopicController {
}
@PostMapping(value = "/admin/setTop")
@ApiOperation("顶置/取消顶置题")
@ApiOperation("顶置/取消顶置题")
@ResponseBody
public String setTopTopic(@RequestBody TopicTopReq req) throws MissingServletRequestParameterException {
topicManager.setTopTopic(req.getTopicId(),req.isTop());
......@@ -85,7 +72,7 @@ public class TopicController {
}
@PostMapping(value = "/admin/setConceal")
@ApiOperation("隐藏/显示题")
@ApiOperation("隐藏/显示题")
@ResponseBody
public String setConceal(@RequestBody TopicConcealReq req) throws MissingServletRequestParameterException {
topicManager.setTopicConceal(req.getTopicId(),req.isConceal());
......@@ -93,14 +80,20 @@ public class TopicController {
}
@PostMapping(value = "/admin/modifyViewNum")
@ApiOperation("题浏览数调整")
@ApiOperation("题浏览数调整")
@ResponseBody
public String modifyViewNum(@RequestBody TopicModifyMountReq req) throws MissingServletRequestParameterException {
topicManager.modifyPV(req.getTopicId(),req.getModifyMount());
topicManager.modifyViewAmount(req.getTopicId(),req.getModifyMount());
return "success";
}
@PostMapping(value = "/admin/dataAnalys")
@ApiOperation("话题数据分析")
@ResponseBody
public TopicDataAnalysDTO dataAnalys(@RequestParam String topicId) throws MissingServletRequestParameterException {
TopicDataAnalysDTO result =topicManager.queryDataAnalysis(topicId);
return result;
}
......
......@@ -3,6 +3,7 @@ package com.tanpu.community.manager;
import com.tanpu.common.exception.BizException;
import com.tanpu.community.api.beans.TopicBriefInfoDTO;
import com.tanpu.community.api.beans.TopicDTO;
import com.tanpu.community.api.beans.TopicDataAnalysDTO;
import com.tanpu.community.api.constants.RedisKeyConstant;
import com.tanpu.community.api.constants.TopicStatusEnum;
import com.tanpu.community.dao.entity.community.ThemeEntity;
......@@ -40,12 +41,25 @@ public class TopicManager {
topicEntity.setTopicTitle(topicTitle);
topicEntity.setIsTop(TopicStatusEnum.FALSE.getCode());
topicEntity.setIsConceal(TopicStatusEnum.FALSE.getCode());
topicEntity.setDeleteTag(TopicStatusEnum.FALSE.getCode());
topicService.addTopic(topicEntity);
}
public List<TopicEntity> getAllTopic() {
return topicService.queryTopicList();
public List<TopicDTO> getAllTopicDetail() {
return ConvertUtil.topicEntitiesToDTOs(topicService.queryTopicList());
}
public List<TopicBriefInfoDTO> getAllTopicBriefInfo() {
List<TopicEntity> allTopic = topicService.queryTopicList();
List<TopicBriefInfoDTO> topicDTOS = ConvertUtil.topicEntitiesToBriefDTOs(allTopic);
//讨论数=发布主题贴数+回复总数
for (TopicBriefInfoDTO topicDTO : topicDTOS) {
Long discussAmount = redisService.getLong(RedisKeyConstant.TOPIC_DISCUSS_AMOUNT_ + topicDTO.getTopicId());
topicDTO.setDiscussionAmount(discussAmount);
}
return topicDTOS;
}
public void setTopTopic(String topicId, boolean setTop) {
......@@ -75,25 +89,26 @@ public class TopicManager {
public TopicDTO getDetail(String topicId) {
TopicEntity topicEntity = topicService.queryById(topicId);
TopicDTO topicDTO = ConvertUtil.topicEntityToDTO(topicEntity);
//TODO:添加实时数据(浏览量,点赞量,评论量,收藏量)
topicDTO.setViewAmount(redisService.getLong(RedisKeyConstant.TOPIC_VIEW_AMOUNT_+topicId));
topicDTO.setLikeAmount(redisService.getLong(RedisKeyConstant.TOPIC_LIKE_AMOUNT_+topicId));
topicDTO.setUserAmount(redisService.getLong(RedisKeyConstant.TOPIC_USER_AMOUNT_+topicId));
return topicDTO;
}
public void modifyPV(String topicId, Long modifyMount) {
public void modifyViewAmount(String topicId, Long modifyMount) {
topicService.modifyViewAmount(topicId,modifyMount);
if (modifyMount>0){
redisService.incr(RedisKeyConstant.TOPIC_VIEW_AMOUNT_+topicId,modifyMount);
redisService.incr(RedisKeyConstant.TOPIC_TOTAL_VIEW_AMOUNT_+topicId,modifyMount);
}else {
redisService.decr(RedisKeyConstant.TOPIC_VIEW_AMOUNT_+topicId,-modifyMount);
redisService.decr(RedisKeyConstant.TOPIC_TOTAL_VIEW_AMOUNT_+topicId,-modifyMount);
}
}
public void calculate(){
public void refreshRedisCache(){
List<String> topicIds = topicService.queryTopicList().stream().map(TopicEntity::getId).collect(Collectors.toList());
for (String topicId : topicIds) {
List<ThemeEntity> themeEntities = themeService.selectByTopic(topicId);
......@@ -104,14 +119,37 @@ public class TopicManager {
redisService.set(RedisKeyConstant.TOPIC_LIKE_AMOUNT_+topicId, likeAmountByThemeIds);
redisService.set(RedisKeyConstant.TOPIC_BOOK_AMOUNT_+topicId, bookAmountByThemeIds);
redisService.set(RedisKeyConstant.TOPIC_COMMENT_AMOUNT_+topicId, commentAmountByThemeIds);
redisService.set(RedisKeyConstant.TOPIC_DISCUSS_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
redisService.set(RedisKeyConstant.TOPIC_TOTAL_VIEW_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
redisService.set(RedisKeyConstant.TOPIC_THEME_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
redisService.set(RedisKeyConstant.TOPIC_COMENT_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
redisService.set(RedisKeyConstant.TOPIC_TOTAOL_USER_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
redisService.set(RedisKeyConstant.TOPIC_DISCUSS_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
redisService.set(RedisKeyConstant.TOPIC_POSTER_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
redisService.set(RedisKeyConstant.TOPIC_REPLIER_AMOUNT_+topicId, commentAmountByThemeIds+themeIds.size());
}
}
public List<TopicBriefInfoDTO> getBreifInfoTopic() {
topicService.queryTopicList();
return null;
//后台管理:返回数据分析
public TopicDataAnalysDTO queryDataAnalysis(String topicId) {
TopicDataAnalysDTO topicDataAnalysDTO = new TopicDataAnalysDTO();
TopicEntity topicEntity = topicService.queryById(topicId);
this.refreshRedisCache();
topicDataAnalysDTO.setId(topicId);
topicDataAnalysDTO.setTopicTitle(topicEntity.getTopicTitle());
// topicDataAnalysDTO.setCommentAmount();
// topicDataAnalysDTO.setPosterAmount();
// topicDataAnalysDTO.setReplIierAmount();
// topicDataAnalysDTO.setThemeAmount();
// topicDataAnalysDTO.setUserTotalAmount();
// topicDataAnalysDTO.setViewTotalAmount();
// topicDataAnalysDTO.setViewPageAmount();
// topicDataAnalysDTO.setCommentAmount();
return topicDataAnalysDTO;
}
}
package com.tanpu.community.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.tanpu.community.api.constants.TopicStatusEnum;
import com.tanpu.community.dao.entity.community.TopicEntity;
......@@ -21,7 +21,8 @@ public class TopicService {
public List<TopicEntity> queryTopicList(){
return topicMapper.selectList(new QueryWrapper<>());
return topicMapper.selectList(new LambdaQueryWrapper<TopicEntity>()
.eq(TopicEntity::getDeleteTag,TopicStatusEnum.FALSE.getCode()));
}
public void addTopic(TopicEntity topicEntity){
......@@ -32,28 +33,38 @@ public class TopicService {
public void updateTopicToTop(String topicId){
TopicEntity topicEntity = new TopicEntity();
topicEntity.setIsTop(TopicStatusEnum.TRUE.getCode());
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>().eq(TopicEntity::getId,topicId));
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>()
.eq(TopicEntity::getId,topicId));
}
public void updateTopicNotTop(String topicId){
TopicEntity topicEntity = new TopicEntity();
topicEntity.setIsTop(TopicStatusEnum.FALSE.getCode());
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>().eq(TopicEntity::getId,topicId));
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>()
.eq(TopicEntity::getId,topicId));
}
public void updateTopicToConceal(String topicId){
TopicEntity topicEntity = new TopicEntity();
topicEntity.setIsConceal(TopicStatusEnum.TRUE.getCode());
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>().eq(TopicEntity::getId,topicId));
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>()
.eq(TopicEntity::getId,topicId));
}
public void updateTopicNotConceal(String topicId){
TopicEntity topicEntity = new TopicEntity();
topicEntity.setIsConceal(TopicStatusEnum.FALSE.getCode());
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>().eq(TopicEntity::getId,topicId));
topicMapper.update(topicEntity,new LambdaUpdateWrapper<TopicEntity>()
.eq(TopicEntity::getId,topicId));
}
public TopicEntity queryById(String topicId) {
return topicMapper.selectById(topicId);
}
public void modifyViewAmount(String topicId,long amount){
TopicEntity topicEntity = topicMapper.selectById(topicId);
return;
}
}
package com.tanpu.community.util;
import com.tanpu.community.api.beans.ThemeDTO;
import com.tanpu.community.api.beans.TopicBriefInfoDTO;
import com.tanpu.community.api.beans.TopicDTO;
import com.tanpu.community.dao.entity.community.ThemeEntity;
import com.tanpu.community.dao.entity.community.TopicEntity;
......@@ -40,7 +41,17 @@ public class ConvertUtil {
return topicDTO;
}
public static TopicBriefInfoDTO topicToBriefInfoDTO(TopicEntity topicEntity){
TopicBriefInfoDTO topicBriefInfoDTO = new TopicBriefInfoDTO();
BeanUtils.copyProperties(topicEntity,topicBriefInfoDTO);
return topicBriefInfoDTO;
}
public static List<TopicDTO> topicEntitiesToDTOs(List<TopicEntity> topicEntities){
return topicEntities.stream().map(ConvertUtil::topicEntityToDTO).collect(Collectors.toList());
}
public static List<TopicBriefInfoDTO> topicEntitiesToBriefDTOs(List<TopicEntity> topicEntities) {
return topicEntities.stream().map(ConvertUtil::topicToBriefInfoDTO).collect(Collectors.toList());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment