ThemeManager.java 15.5 KB
Newer Older
刘基明's avatar
刘基明 committed
1 2
package com.tanpu.community.manager;

刘基明's avatar
刘基明 committed
3
import com.tanpu.common.exception.BizException;
刘基明's avatar
刘基明 committed
4
import com.tanpu.common.util.JsonUtil;
刘基明's avatar
刘基明 committed
5
import com.tanpu.community.api.beans.qo.*;
刘基明's avatar
刘基明 committed
6
import com.tanpu.community.api.beans.req.homepage.QueryRecordThemeReq;
刘基明's avatar
刘基明 committed
7
import com.tanpu.community.api.beans.req.theme.*;
刘基明's avatar
刘基明 committed
8
import com.tanpu.community.api.beans.resp.CreateThemeResp;
刘基明's avatar
刘基明 committed
9
import com.tanpu.community.api.enums.*;
张辰's avatar
张辰 committed
10
import com.tanpu.community.cache.CacheGet;
刘基明's avatar
刘基明 committed
11
import com.tanpu.community.dao.entity.community.*;
刘基明's avatar
刘基明 committed
12
import com.tanpu.community.dao.entity.user.UserInfoEntity;
刘基明's avatar
刘基明 committed
13
import com.tanpu.community.service.*;
张辰's avatar
张辰 committed
14
import com.tanpu.community.service.base.ESService;
15
import com.tanpu.community.util.ConvertUtil;
刘基明's avatar
刘基明 committed
16
import org.apache.commons.collections4.CollectionUtils;
刘基明's avatar
刘基明 committed
17
import org.apache.commons.lang3.StringUtils;
刘基明's avatar
刘基明 committed
18
import org.springframework.beans.BeanUtils;
刘基明's avatar
刘基明 committed
19 20
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
刘基明's avatar
刘基明 committed
21
import org.springframework.transaction.annotation.Transactional;
刘基明's avatar
刘基明 committed
22

刘基明's avatar
刘基明 committed
23
import javax.annotation.Resource;
刘基明's avatar
刘基明 committed
24
import java.time.LocalDateTime;
刘基明's avatar
刘基明 committed
25 26
import java.util.*;
import java.util.stream.Collectors;
刘基明's avatar
刘基明 committed
27

刘基明's avatar
刘基明 committed
28 29
@Service
public class ThemeManager {
刘基明's avatar
刘基明 committed
30
    @Resource
刘基明's avatar
刘基明 committed
31
    private ThemeService themeService;
刘基明's avatar
刘基明 committed
32 33 34 35 36 37 38 39

    @Autowired
    private CollectionService collectionService;

    @Autowired
    private CommentService commentService;

    @Autowired
刘基明's avatar
刘基明 committed
40
    private FollowRelService followRelService;
刘基明's avatar
刘基明 committed
41

刘基明's avatar
刘基明 committed
42 43 44
    @Autowired
    private BlackListService blackListService;

45
    @Autowired
刘基明's avatar
刘基明 committed
46
    private UserInfoService userInfoService;
47

刘基明's avatar
刘基明 committed
48 49 50
    @Autowired
    private ThemeAttachmentService themeAttachmentService;

刘基明's avatar
刘基明 committed
51
    @Resource
刘基明's avatar
刘基明 committed
52
    private ProductService productService;
刘基明's avatar
刘基明 committed
53

刘基明's avatar
刘基明 committed
54
    @Autowired
刘基明's avatar
刘基明 committed
55
    private VisitSummaryService visitSummaryService;
刘基明's avatar
刘基明 committed
56

刘基明's avatar
刘基明 committed
57 58 59
    @Autowired
    private RankService rankService;

张辰's avatar
张辰 committed
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
    @Autowired
    private ESService esService;

    public List<ThemeQo> themeFullSearch(String keyword, Integer pageNo, Integer pageSize, String userId) {
        Integer from = (pageNo - 1) * pageSize;

        // 按时间倒叙查询
        List<ESThemeQo> themes = esService.queryThemeIdByContentAndTitle(keyword, from, pageSize);
        if (themes.isEmpty()) {
            return new ArrayList<>();
        }

        List<ThemeEntity> themeEntities = themeService.queryByThemeIds(themes.stream().map(ESThemeQo::getThemeId).collect(Collectors.toList()));
        return convertEntityToQo(themeEntities, userId);
    }
刘基明's avatar
刘基明 committed
75

刘基明's avatar
刘基明 committed
76
    @Transactional
刘基明's avatar
刘基明 committed
77
    public CreateThemeResp publishTheme(CreateThemeReq req, String userId) {
刘基明's avatar
刘基明 committed
78 79 80

        //TODO 敏感词过滤

刘基明's avatar
刘基明 committed
81
        //保存主题表
刘基明's avatar
刘基明 committed
82
        ThemeEntity themeEntity = new ThemeEntity();
刘基明's avatar
刘基明 committed
83
        BeanUtils.copyProperties(req, themeEntity);
刘基明's avatar
刘基明 committed
84
        themeEntity.setAuthorId(userId);
刘基明's avatar
刘基明 committed
85
        themeEntity.setContent(JsonUtil.toJson(req.getContent()));
刘基明's avatar
刘基明 committed
86

刘基明's avatar
刘基明 committed
87

刘基明's avatar
刘基明 committed
88
        if (StringUtils.isEmpty(req.getEditThemeId())) {
刘基明's avatar
刘基明 committed
89 90
            //新建
            themeService.insertTheme(themeEntity);
刘基明's avatar
刘基明 committed
91
        } else {
刘基明's avatar
刘基明 committed
92
            //修改
刘基明's avatar
刘基明 committed
93
            themeService.update(themeEntity, req.getEditThemeId());
刘基明's avatar
刘基明 committed
94
            themeEntity.setThemeId(req.getEditThemeId());
刘基明's avatar
刘基明 committed
95 96 97 98 99
        }
        //保存附件表
        List<ThemeAttachmentEntity> themeAttachments = ConvertUtil.themeReqToAttachmentList(req, themeEntity.getThemeId());
        if (StringUtils.isNotEmpty(req.getEditThemeId())) {
            //修改需要刪除
刘基明's avatar
刘基明 committed
100
            themeAttachmentService.deleteByThemeId(req.getEditThemeId());
刘基明's avatar
刘基明 committed
101
        }
刘基明's avatar
刘基明 committed
102
        themeAttachmentService.insertList(themeAttachments);
刘基明's avatar
刘基明 committed
103

刘基明's avatar
刘基明 committed
104

刘基明's avatar
刘基明 committed
105
        return CreateThemeResp.builder().themeId(themeEntity.getThemeId()).build();
刘基明's avatar
刘基明 committed
106
    }
刘基明's avatar
刘基明 committed
107

刘基明's avatar
刘基明 committed
108 109
    /**
     * 返回主题列表
刘基明's avatar
刘基明 committed
110
     *
刘基明's avatar
刘基明 committed
111 112 113 114
     * @param req
     * @param userId
     * @return
     */
刘基明's avatar
刘基明 committed
115
    public List<ThemeQo> queryThemes(ThemeListReq req, String userId) {
刘基明's avatar
刘基明 committed
116
        List<ThemeEntity> themeEntities = new ArrayList<>();
刘基明's avatar
刘基明 committed
117 118
        if (ThemeListTypeEnum.RECOMMEND.getCode().equals(req.getType())) {
            // TODO:推荐
刘基明's avatar
刘基明 committed
119 120 121 122
//            themeEntities = themeService.selectExcludeUser(userId, req.getLastId(), req.getPageSize());
            List<String> recommendThemeIds = rankService.getHotAndNewThemes(20, 20);
            themeEntities = themeService.queryByThemeIdsExcludeUser( recommendThemeIds,userId, req.getLastId(), req.getPageSize());

刘基明's avatar
刘基明 committed
123
        } else if (ThemeListTypeEnum.FOLLOW.getCode().equals(req.getType())) {
刘基明's avatar
刘基明 committed
124
            //根据关注列表查询
刘基明's avatar
刘基明 committed
125
            List<String> fansList = followRelService.queryFansByFollowerId(userId);
刘基明's avatar
刘基明 committed
126
            themeEntities = themeService.queryByUserIds(fansList, req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
127

刘基明's avatar
刘基明 committed
128
        } else if (ThemeListTypeEnum.TOPIC_HOT.getCode().equals(req.getType())) {
刘基明's avatar
刘基明 committed
129 130 131
            //TODO 根据话题查询热门
            if (StringUtils.isEmpty(req.getTopicId())) throw new BizException("TopicId为空");
            themeEntities = themeService.queryByTopic(req.getTopicId(), req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
132
        } else if (ThemeListTypeEnum.TOPIC_LATEST.getCode().equals(req.getType())) {
刘基明's avatar
刘基明 committed
133 134 135
            //TODO 根据话题查询最新
            if (StringUtils.isEmpty(req.getTopicId())) throw new BizException("TopicId为空");
            themeEntities = themeService.queryByTopic(req.getTopicId(), req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
136
        }
137
        //组装详情
刘基明's avatar
刘基明 committed
138
        return convertEntityToQo(themeEntities, userId);
刘基明's avatar
刘基明 committed
139 140
    }

刘基明's avatar
刘基明 committed
141 142
    public List<ThemeQo> searchThemes(ThemeSearchReq req, String userId) {

刘基明's avatar
刘基明 committed
143
        List<ThemeEntity> themeEntities = themeService.search(req.getKeyword(), req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
144 145 146 147
        return convertEntityToQo(themeEntities, userId);
    }


刘基明's avatar
刘基明 committed
148
    // 返回用户发布、回复、收藏的主题列表
刘基明's avatar
刘基明 committed
149
    public List<ThemeQo> queryThemesByUser(QueryRecordThemeReq req, String userId) {
刘基明's avatar
刘基明 committed
150 151 152 153

        List<ThemeEntity> themeEntities = Collections.emptyList();
        switch (req.getRecordType()) {
            case 1://发布
刘基明's avatar
刘基明 committed
154
                themeEntities = themeService.queryThemesByUserId(req.getUserId(), req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
155
                break;
刘基明's avatar
刘基明 committed
156
            case 2://回复
刘基明's avatar
刘基明 committed
157 158
                List<ThemeQo> commentThemeList = new ArrayList<>();
                //评论列表
刘基明's avatar
刘基明 committed
159
                List<CommentEntity> commentEntities = commentService.queryThemesByUserId(req.getUserId(), req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
160
                //当前用户信息
刘基明's avatar
刘基明 committed
161
                UserInfoEntity userInfoEntity = userInfoService.queryUserById(req.getUserId());
刘基明's avatar
刘基明 committed
162
                Set<String> replyThemeIds = commentEntities.stream().map(CommentEntity::getThemeId).collect(Collectors.toSet());
刘基明's avatar
刘基明 committed
163
                if (CollectionUtils.isEmpty(replyThemeIds)) {
刘基明's avatar
刘基明 committed
164 165
                    return commentThemeList;
                }
刘基明's avatar
刘基明 committed
166 167
                themeEntities = themeService.queryByThemeIds(new ArrayList<>(replyThemeIds));
                List<ThemeQo> themeQos = convertEntityToQo(themeEntities, userId);
刘基明's avatar
刘基明 committed
168
                //组装附件
刘基明's avatar
刘基明 committed
169
                productService.getAttachDetailByBatch(themeQos);
刘基明's avatar
刘基明 committed
170 171 172 173 174 175 176
                //主题列表
                Map<String, ThemeQo> themeMap = themeQos.stream()
                        .collect(Collectors.toMap(ThemeQo::getThemeId, o -> o));
                //主题+评论封装转发对象
                for (CommentEntity commentEntity : commentEntities) {
                    String themeId = commentEntity.getThemeId();
                    //评论内容包装到ThemeContentQo里
刘基明's avatar
刘基明 committed
177 178
                    ThemeContentQo commentContent = ThemeContentQo.builder()
                            .type(RelTypeEnum.TEXT.type)
刘基明's avatar
刘基明 committed
179
                            .value(commentEntity.getContent())
刘基明's avatar
刘基明 committed
180
                            .build();
刘基明's avatar
刘基明 committed
181 182 183 184 185
                    //原主题包装到FormerThemeQo中
                    ThemeQo themeQo = themeMap.get(themeId);
                    FormerThemeQo f = ConvertUtil.themeQo2FormerThemeQo(themeQo);
                    //ThemeContentQo和原主题包装到FormerThemeQo中包装到ThemeQo中
                    ThemeQo commentThemeQo = ThemeQo.builder()
刘基明's avatar
刘基明 committed
186 187
                            .nickName(userInfoEntity.getUiUsernameMp())
                            .userImg(userInfoEntity.getUiHeadimgMp())
刘基明's avatar
刘基明 committed
188
                            .content(Arrays.asList(commentContent))
刘基明's avatar
刘基明 committed
189 190
                            .formerTheme(f)
                            .commentId(commentEntity.getCommentId())
刘基明's avatar
刘基明 committed
191
                            .themeType(ThemeTypeEnum.RES_COMMENT.getCode())
刘基明's avatar
刘基明 committed
192
                            .build();
刘基明's avatar
刘基明 committed
193

刘基明's avatar
刘基明 committed
194
                    commentThemeList.add(commentThemeQo);
刘基明's avatar
刘基明 committed
195
                }
刘基明's avatar
刘基明 committed
196
                return commentThemeList;
刘基明's avatar
刘基明 committed
197
            case 3://点赞
刘基明's avatar
刘基明 committed
198
                Set<String> likeThemeIds = collectionService.getListByUser(userId, CollectionTypeEnum.LIKE_THEME);
刘基明's avatar
刘基明 committed
199
                themeEntities = themeService.queryByThemeIds(new ArrayList<>(likeThemeIds), req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
200
                break;
刘基明's avatar
刘基明 committed
201
            case 4://收藏
刘基明's avatar
刘基明 committed
202
                Set<String> collectThemeIds = collectionService.getListByUser(userId, CollectionTypeEnum.COLLECT_THEME);
刘基明's avatar
刘基明 committed
203
                themeEntities = themeService.queryByThemeIds(new ArrayList<>(collectThemeIds), req.getLastId(), req.getPageSize());
刘基明's avatar
刘基明 committed
204 205 206 207 208 209
                break;
        }
        List<ThemeQo> themeQos = convertEntityToQo(themeEntities, userId);
        return themeQos;
    }

刘基明's avatar
刘基明 committed
210

刘基明's avatar
刘基明 committed
211
    //查询正文
张辰's avatar
张辰 committed
212
    @CacheGet(prefix = "getThemeDetail", expireSeconds = 600)
刘基明's avatar
刘基明 committed
213
    public ThemeQo getDetail(String themeId, String userId) {
刘基明's avatar
刘基明 committed
214
        ThemeEntity themeEntity = themeService.queryByThemeId(themeId);
刘基明's avatar
刘基明 committed
215 216
        if (themeEntity == null) {
            throw new BizException("找不到帖子id:" + themeId);
刘基明's avatar
刘基明 committed
217
        }
刘基明's avatar
刘基明 committed
218
        ThemeQo themeQo = ConvertUtil.themeEntityToQo(themeEntity);
刘基明's avatar
刘基明 committed
219 220
        productService.getAttachDetail(themeQo);
        buildThemeQoExtraInfo(userId, themeQo);
刘基明's avatar
刘基明 committed
221
        return themeQo;
刘基明's avatar
刘基明 committed
222 223
    }

刘基明's avatar
刘基明 committed
224 225
    // 点赞/取消点赞
    public void like(LikeThemeReq req, String userId) {
刘基明's avatar
刘基明 committed
226
        if (OperationTypeEnum.CONFIRM.getCode().equals(req.getType())) {
刘基明's avatar
刘基明 committed
227
            collectionService.addIfNotExist(req.getThemeId(), userId, CollectionTypeEnum.LIKE_THEME);
刘基明's avatar
刘基明 committed
228
        } else if (OperationTypeEnum.CANCEL.getCode().equals(req.getType())) {
刘基明's avatar
刘基明 committed
229 230 231
            collectionService.delete(req.getThemeId(), userId, CollectionTypeEnum.LIKE_THEME);
        }

刘基明's avatar
刘基明 committed
232 233
    }

刘基明's avatar
刘基明 committed
234 235
    //收藏/取消收藏
    public void collect(CollectThemeReq req, String userId) {
刘基明's avatar
刘基明 committed
236
        if (OperationTypeEnum.CONFIRM.getCode().equals(req.getType())) {
刘基明's avatar
刘基明 committed
237
            collectionService.addIfNotExist(req.getThemeId(), userId, CollectionTypeEnum.COLLECT_THEME);
刘基明's avatar
刘基明 committed
238
        } else if (OperationTypeEnum.CANCEL.getCode().equals(req.getType())) {
刘基明's avatar
刘基明 committed
239 240
            collectionService.delete(req.getThemeId(), userId, CollectionTypeEnum.COLLECT_THEME);
        }
张辰's avatar
张辰 committed
241 242
    }

刘基明's avatar
刘基明 committed
243
    //转发
刘基明's avatar
刘基明 committed
244
    public CreateThemeResp forward(ForwardThemeReq req, String userId) {
刘基明's avatar
刘基明 committed
245
        ThemeEntity targetTheme = themeService.queryByThemeId(req.getFormerThemeId());
刘基明's avatar
刘基明 committed
246
        ThemeEntity themeEntity = ThemeEntity.builder()
刘基明's avatar
刘基明 committed
247
                .content(JsonUtil.toJson(req.getContent()))
刘基明's avatar
刘基明 committed
248 249
                .topicId(req.getTopicId())
                .formerThemeId(req.getFormerThemeId())
250
                .authorId(userId)
刘基明's avatar
刘基明 committed
251
                .themeType(ThemeTypeEnum.FORWARD.getCode())
252 253
                .build();

刘基明's avatar
刘基明 committed
254
        if (StringUtils.isEmpty(req.getEditThemeId()) || req.getEditThemeId() == req.getFormerThemeId()) {
刘基明's avatar
刘基明 committed
255
            //新建
刘基明's avatar
刘基明 committed
256
            themeService.insertTheme(themeEntity);
刘基明's avatar
刘基明 committed
257
        } else {
刘基明's avatar
刘基明 committed
258
            //修改
刘基明's avatar
刘基明 committed
259 260 261
            themeService.update(themeEntity, req.getEditThemeId());
            themeEntity.setThemeId(req.getEditThemeId());

刘基明's avatar
刘基明 committed
262
        }
刘基明's avatar
刘基明 committed
263
        return CreateThemeResp.builder().themeId(themeEntity.getThemeId()).build();
刘基明's avatar
刘基明 committed
264 265 266
    }


刘基明's avatar
刘基明 committed
267 268 269 270 271 272
    //    屏蔽(用户)
    public void blockUser(String blockUser, String userId) {
        BlackListEntity selectOne = blackListService.selectOne(blockUser, userId, BlockTypeEnum.USER.getCode());
        if (selectOne == null) {
            blackListService.addBlock(blockUser, userId, BlockTypeEnum.USER);
        }
刘基明's avatar
刘基明 committed
273
    }
刘基明's avatar
刘基明 committed
274

张辰's avatar
张辰 committed
275
    // 解除屏蔽(用户)
刘基明's avatar
刘基明 committed
276
    public void unblockUser(String blockUser, String userId) {
刘基明's avatar
刘基明 committed
277
        //todo
张辰's avatar
张辰 committed
278 279 280 281 282
    }

    // 屏蔽(主题)
    public void blockTheme(String themeId, String userId) {
        blackListService.addBlock(themeId, userId, BlockTypeEnum.THEME);
刘基明's avatar
刘基明 committed
283
        BlackListEntity selectOne = blackListService.selectOne(themeService.queryByThemeId(themeId).getAuthorId(), userId, BlockTypeEnum.USER.getCode());
刘基明's avatar
刘基明 committed
284
        if (selectOne == null) {
刘基明's avatar
刘基明 committed
285
            blackListService.addBlock(themeService.queryByThemeId(themeId).getAuthorId(), userId, BlockTypeEnum.USER);
刘基明's avatar
刘基明 committed
286
        }
刘基明's avatar
刘基明 committed
287
    }
刘基明's avatar
刘基明 committed
288

张辰's avatar
张辰 committed
289 290 291
    // 解除屏蔽(主题)
    public void unblockTheme(String themeId, String userId) {
        blackListService.removeBlackList(themeId, userId, BlockTypeEnum.USER);
刘基明's avatar
刘基明 committed
292
    }
张辰's avatar
张辰 committed
293

刘基明's avatar
刘基明 committed
294

刘基明's avatar
刘基明 committed
295 296
    //主题Entity转QO
    private List<ThemeQo> convertEntityToQo(List<ThemeEntity> themeEntities, String userId) {
297
        //Entity转Qo
刘基明's avatar
刘基明 committed
298
        List<ThemeQo> themeQos = ConvertUtil.themeEntitiesToDTOs(themeEntities);
299
        //批量查询附件detail
刘基明's avatar
刘基明 committed
300
        productService.getAttachDetailByBatch(themeQos);
刘基明's avatar
刘基明 committed
301
        //其他信息
刘基明's avatar
刘基明 committed
302
        for (ThemeQo themeQO : themeQos) {
刘基明's avatar
刘基明 committed
303 304
            buildThemeQoExtraInfo(userId, themeQO);
        }
刘基明's avatar
刘基明 committed
305

刘基明's avatar
刘基明 committed
306 307
        return themeQos;
    }
刘基明's avatar
刘基明 committed
308 309


刘基明's avatar
刘基明 committed
310
    //组装主题详情
刘基明's avatar
刘基明 committed
311
    private void buildThemeQoExtraInfo(String userId, ThemeQo themeQo) {
刘基明's avatar
刘基明 committed
312

刘基明's avatar
刘基明 committed
313 314 315
        //封装转发对象
        buildFormerTheme(themeQo);

刘基明's avatar
刘基明 committed
316
        String themeId = themeQo.getThemeId();
刘基明's avatar
刘基明 committed
317

刘基明's avatar
刘基明 committed
318
        //是否关注作者
刘基明's avatar
刘基明 committed
319
        String authorId = themeQo.getAuthorId();
刘基明's avatar
刘基明 committed
320
        Set<String> fansSet = new HashSet<>(followRelService.queryFansByFollowerId(userId));
刘基明's avatar
刘基明 committed
321
        themeQo.setFollow(fansSet.contains(authorId));
刘基明's avatar
刘基明 committed
322
        //是否点赞
刘基明's avatar
刘基明 committed
323
        CollectionEntity likeEntity = collectionService.getNotDeleteTargetCollection(themeId, userId, CollectionTypeEnum.LIKE_THEME);
刘基明's avatar
刘基明 committed
324
        themeQo.setHasLiked(likeEntity != null);
刘基明's avatar
刘基明 committed
325 326
        //是否转发
        Integer forwardCountByUser = themeService.getForwardCountByUser(themeId, userId);
刘基明's avatar
刘基明 committed
327
        themeQo.setHasForward(forwardCountByUser > 0);
刘基明's avatar
刘基明 committed
328
        //是否收藏
刘基明's avatar
刘基明 committed
329
        CollectionEntity collectionEntity = collectionService.getNotDeleteTargetCollection(themeId, userId, CollectionTypeEnum.COLLECT_THEME);
刘基明's avatar
刘基明 committed
330
        themeQo.setHasCollect(collectionEntity != null);
刘基明's avatar
刘基明 committed
331
        //点赞,收藏,转发
刘基明's avatar
刘基明 committed
332
        Integer likeCount = collectionService.getCountByTypeAndId(themeId, CollectionTypeEnum.LIKE_THEME);
刘基明's avatar
刘基明 committed
333 334
//        Integer bookCount = collectionService.getCountByTypeAndId(themeId, CollectionTypeEnum.COLLECT_THEME);
        Integer commentCount = commentService.getCommentCountByThemeId(themeId);
刘基明's avatar
刘基明 committed
335
        Integer forwardCount = themeService.getForwardCountById(themeId);
刘基明's avatar
刘基明 committed
336
        themeQo.setCommentCount(commentCount);
刘基明's avatar
刘基明 committed
337 338
        themeQo.setLikeCount(likeCount);
        themeQo.setForwardCount(forwardCount);
刘基明's avatar
刘基明 committed
339 340
    }

刘基明's avatar
刘基明 committed
341

刘基明's avatar
刘基明 committed
342
    //组装被转发主题
刘基明's avatar
刘基明 committed
343
    private void buildFormerTheme(ThemeQo themeQo) {
刘基明's avatar
刘基明 committed
344
        String formerThemeId = themeQo.getFormerThemeId();
刘基明's avatar
刘基明 committed
345
        if (StringUtils.isNotEmpty(formerThemeId)) {
刘基明's avatar
刘基明 committed
346
            ThemeQo formerTheme = ConvertUtil.themeEntityToQo2(themeService.queryByThemeId(formerThemeId));
刘基明's avatar
刘基明 committed
347 348 349 350 351 352
            if (formerTheme != null) {

                //单个查询详情
                productService.getAttachDetail(formerTheme);
                FormerThemeQo f = ConvertUtil.themeQo2FormerThemeQo(formerTheme);
                themeQo.setFormerTheme(f);
刘基明's avatar
刘基明 committed
353
            }
刘基明's avatar
刘基明 committed
354

刘基明's avatar
刘基明 committed
355
        }
刘基明's avatar
刘基明 committed
356 357
    }

刘基明's avatar
刘基明 committed
358

刘基明's avatar
刘基明 committed
359
    //逻辑删除
刘基明's avatar
刘基明 committed
360 361 362
    public void delete(String themeId) {
        themeService.deleteById(themeId);
    }
刘基明's avatar
刘基明 committed
363 364 365 366 367 368

    //投诉(主题)
    public void complaint(String themeId, String user) {
        //TODO
    }

刘基明's avatar
刘基明 committed
369 370 371 372 373
    public Integer getFollowUpdateCount(String userId) {
        LocalDateTime lastViewTime = visitSummaryService.queryLatestViewFollow(userId);
        List<String> fansList = followRelService.queryFansByFollowerId(userId);
        return themeService.queryCountFromLastTime(fansList, lastViewTime);
    }
刘基明's avatar
刘基明 committed
374 375


刘基明's avatar
刘基明 committed
376
}