Commit 3e985168 authored by 刘基明's avatar 刘基明

话题关联附件

parent 22030d18
package com.tanpu.community.api.beans.qo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@ApiModel(value = "主题关联产品")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TopicAttachement {
@ApiModelProperty(value = "RelTypeEnum类型,108:文本,88:产品 3:直播 6:短视频 303:新版课程-音频,304: 新版课程-视频,109:单图(长文) 110:多图(讨论)")
private String type;
@ApiModelProperty(value = "对象详情")
private AttachmentDetailVo detail;
}
package com.tanpu.community.api.beans.qo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("热点话题对象")
public class TopicPageDetailQo {
@ApiModelProperty(value = "话题ID")
private String topicId;
@ApiModelProperty(value = "话题名称")
private String topicTitle;
@ApiModelProperty(value = "阅读量")
private Integer viewCount;
@ApiModelProperty(value = "讨论量")
private Integer disscussCount;
@ApiModelProperty(value = "阅读量-格式化")
private String formatViewCount;
@ApiModelProperty(value = "讨论量-格式化")
private String formatDisscussCount;
@ApiModelProperty(value = "话题介绍")
private String topicDesc;
@ApiModelProperty(value = "封面")
private String coverImg;
@ApiModelProperty(value = "是否专属 0否,1是")
private Integer specialPermission;
@ApiModelProperty(value = "是否有权限")
private boolean hasPermission;
@ApiModelProperty(value = "关联产品")
private List<TopicAttachement> attachments;
}
......@@ -48,6 +48,9 @@ public class TopicRankQo {
@ApiModelProperty(value = "是否专属 0否,1是")
private Integer specialPermission;
@ApiModelProperty(value = "是否有权限")
private boolean hasPermission;
private Integer minutesTillNow;
private Double score;
......
......@@ -14,11 +14,6 @@ public class CreateCommentReq {
@ApiModelProperty(value = "主题Id")
private String themeId;
@ApiModelProperty(value = "一级评论id(对主题的一级评论,此项为空)")
private String parentId;
@ApiModelProperty(value = "回复对象的id(非对评论回复时,此项为空)")
private String replyId;
@NotBlank(message = "评论内容不能为空")
@ApiModelProperty(value = "评论内容")
......@@ -27,4 +22,14 @@ public class CreateCommentReq {
@ApiModelProperty(value = "同步转发,1 同步 ,0 不同步(默认)")
private int syncForward = 0;
@ApiModelProperty(value = "回复对象的commentId(非对评论回复时,此项为空)")
private String replyId;
@ApiModelProperty(value = "回复对象的userid")
private String replyUserId;
@ApiModelProperty(value = "一级评论id(对主题的一级评论,此项为空,目前未使用)")
private String parentId;
}
......@@ -51,7 +51,7 @@ public class TopicController {
}
@GetMapping(value = "/detailPage")
@ApiOperation("话题详情页顶部")
@ApiOperation("话题详情页")
public CommonResp<TopicRankQo> getDetail(@RequestParam String topicId) {
return topicManager.getDetail(topicId);
}
......@@ -66,9 +66,9 @@ public class TopicController {
@AuthLogin
@PostMapping(value = "/follow")
@ApiOperation("首页顶部话题标题列")
@ApiOperation("关注话题(讨论区)")
public CommonResp<Void> follow(@RequestBody FollowTopicReq req) {
topicManager.follow(req, userHolder.getUserId());
topicManager.followTopic(req, userHolder.getUserId());
return CommonResp.success();
}
......
......@@ -11,6 +11,7 @@ import com.tanpu.community.api.beans.req.topic.TopicSearchReq;
import com.tanpu.community.api.enums.OperationTypeEnum;
import com.tanpu.community.api.enums.TopicSpecialPermissionEnum;
import com.tanpu.community.dao.entity.community.TopicEntity;
import com.tanpu.community.dao.entity.community.TopicFollowRelEntity;
import com.tanpu.community.dao.mapper.community.TopicFollowRelMapper;
import com.tanpu.community.service.RankService;
import com.tanpu.community.service.ThemeService;
......@@ -52,7 +53,10 @@ public class TopicManager {
public Page<TopicRankQo> getAllTopicBriefInfo(TopicSearchReq req) {
// 全量排序,内存分页
List<TopicRankQo> topicList = rankService.getRankTopicList(req.getSearchKeyword());
return PageUtils.page(req.getPage(), topicList);
Page<TopicRankQo> result = PageUtils.page(req.getPage(), topicList);
// 添加权限
topicService.batchCheckPermission(result.getContent(),userHolder.getUserId());
return result;
}
/**
......@@ -64,12 +68,12 @@ public class TopicManager {
String userId = userHolder.getUserId();
// 查库
List<TopicFollowQo> topicFollowQos = topicService.queryFollowTopic(userId);
// 从缓存中获取浏览量
// 从缓存中获取浏览量
Map<String, TopicRankQo> topicMap = rankService.getRankTopicList(null).stream().collect(Collectors.toMap(TopicRankQo::getTopicId, o -> o, (a, b) -> a));
topicFollowQos.stream().forEach(o->{
topicFollowQos.stream().forEach(o -> {
TopicRankQo topicRankQo = topicMap.get(o.getTopicId());
BeanUtils.copyProperties(topicRankQo,o);
BeanUtils.copyProperties(topicRankQo, o);
});
......@@ -86,6 +90,7 @@ public class TopicManager {
/**
* 话题详情页
*
* @param topicId
* @return
*/
......@@ -109,8 +114,8 @@ public class TopicManager {
String permission = "专业版会员";
// return "暂无权限参与此话题~您可联系官方客服 021- 了解详情";
return "该话题仅限" + permission + "可参与哦~";
return "暂无权限参与此话题~您可联系官方客服 021- 了解详情";
// return "该话题仅限" + permission + "可参与哦~";
}
/**
......@@ -121,17 +126,40 @@ public class TopicManager {
*/
private boolean checkPermission(String topicId, String userId) {
TopicEntity topicEntity = topicService.queryOnlineTopicById(topicId);
if (TopicSpecialPermissionEnum.FALSE.equals(topicEntity.getSpecialPermission())) {
return true;
}
TopicFollowRelEntity topicFollowRelEntity = topicFollowRelMapper.queryOneByTopicIdAndUserId(topicId, userId);
if (topicFollowRelEntity != null) {
return true;
} else {
return false;
}
}
public void follow(FollowTopicReq req, String userId) {
/**
* 关注/取关 话题
*
* @param req
* @param userId
* @return
*/
public CommonResp<Void> followTopic(FollowTopicReq req, String userId) {
// 检验话题权限是否专属
TopicEntity topicEntity = topicService.queryOnlineTopicById(req.getTopicId());
if (TopicSpecialPermissionEnum.TRUE.equals(topicEntity.getSpecialPermission())) {
return CommonResp.error(ErrorCodeConstant.ILLEGAL_ARGEMENT.getCode(), "专属话题不支持关注");
}
if (OperationTypeEnum.CONFIRM.getCode().equals(req.getType())) {
topicService.addFollowTopic(req.getTopicId(), userId);
} else if (OperationTypeEnum.CANCEL.getCode().equals(req.getType())) {
topicService.deleteFollowTopic(req.getTopicId(), userId);
}
return CommonResp.success();
}
}
......@@ -312,7 +312,7 @@ public class ThemeService {
ThemeEntity themeEntity = themeMapper.queryOneByTopicIdOrderByUpdateTimeDesc(topicId);
if (themeEntity != null) {
ThemeQo themeQo = ConvertUtil.themeEntityToQo(themeEntity);
topic.setLastTheme(themeQo.getAuthorId() + themeQo.content.get(0).getValue());
topic.setLastTheme(getUserName(themeQo.getAuthorId()) + ":" + themeQo.content.get(0).getValue());
topic.setLastThemeTime(TimeUtils.format(themeEntity.getUpdateTime()));
}
......@@ -330,4 +330,9 @@ public class ThemeService {
}
}
private String getUserName(String authorId) {
return "理财师Jack";
}
}
......@@ -3,6 +3,7 @@ package com.tanpu.community.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.tanpu.common.uuid.UuidGenHelper;
import com.tanpu.community.api.beans.qo.TopicFollowQo;
import com.tanpu.community.api.beans.qo.TopicRankQo;
import com.tanpu.community.api.enums.DeleteTagEnum;
import com.tanpu.community.api.enums.StatusEnum;
import com.tanpu.community.dao.entity.community.TopicEntity;
......@@ -11,6 +12,7 @@ import com.tanpu.community.dao.mapper.community.TopicFollowRelMapper;
import com.tanpu.community.dao.mapper.community.TopicMapper;
import com.tanpu.community.util.ConvertUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.stereotype.Service;
......@@ -121,4 +123,10 @@ public class TopicService {
topicFollowRelMapper.updateById(searchResult);
}
}
public void batchCheckPermission(List<TopicRankQo> content, String userId) {
if (StringUtils.isBlank(userId)){
}
}
}
......@@ -14,6 +14,7 @@ import com.tanpu.community.api.beans.vo.KafkaDurationUptMsg;
import com.tanpu.community.api.beans.vo.feign.fatools.UserInfoResp;
import com.tanpu.community.api.enums.DeleteTagEnum;
import com.tanpu.community.api.enums.NotificationTypeEnum;
import com.tanpu.community.api.enums.TopicSpecialPermissionEnum;
import com.tanpu.community.dao.entity.NotificationLikeDO;
import com.tanpu.community.dao.entity.NotificationForwardDO;
import com.tanpu.community.dao.entity.community.CommentEntity;
......@@ -122,6 +123,12 @@ public class ConvertUtil {
if (TimeUtils.calMinuteTillNow(topicEntity.getCreateTime()) < 60 * 24) {
topicRankQo.setType(TopicStatusEnum.NEWEST.getCode());
}
// 根据是否专属设置默认权限
if (TopicSpecialPermissionEnum.FALSE.getCode().equals(topicEntity.getSpecialPermission())){
topicRankQo.setHasPermission(true);
}else {
topicRankQo.setHasPermission(false);
}
topicRankQo.setMinutesTillNow((int) TimeUtils.calMinuteTillNow(topicEntity.getCreateTime()));
return topicRankQo;
}
......
......@@ -37,6 +37,6 @@
select
<include refid="Base_Column_List"/>
from topic_follow_rel
where topic_id=#{topicId} and user_id=#{userId}
where topic_id=#{topicId} and user_id=#{userId} and delete_tag = 0
</select>
</mapper>
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