From 5a8a90c095280fbd2106869ecd2bad10e01a57a6 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期四, 23 十二月 2021 18:10:22 +0800
Subject: [PATCH] 12/23  大屏修改

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java |  787 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 551 insertions(+), 236 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java
index 6dafef1..6aace56 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java
@@ -1,41 +1,34 @@
 package com.panzhihua.service_community.service.impl;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import javax.annotation.Resource;
+
+import com.panzhihua.service_community.service.ComActNeighborCircleTopicService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.constants.NeighborCircleConstants;
 import com.panzhihua.common.model.dtos.neighbor.*;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.neighbor.*;
-import com.panzhihua.common.model.vos.neighbor.*;
+import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
 import com.panzhihua.common.utlis.DateUtils;
 import com.panzhihua.common.utlis.StringUtils;
-import com.panzhihua.service_community.dao.ComActNeighborCircleCommentDAO;
-import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
-import com.panzhihua.service_community.dao.ComActNeighborCircleCommentReplyDAO;
-import com.panzhihua.service_community.dao.ComActNeighborCircleDAO;
-import com.panzhihua.service_community.dao.ComActNeighborCircleFabulousDAO;
-import com.panzhihua.service_community.model.dos.ComActNeighborCircleCommentDO;
-import com.panzhihua.service_community.model.dos.ComActNeighborCircleCommentReplyDO;
-import com.panzhihua.service_community.model.dos.ComActNeighborCircleDO;
-import com.panzhihua.service_community.model.dos.ComActNeighborCircleFabulousDO;
-import com.panzhihua.service_community.service.ComActNeighborCircleBrowseService;
 import com.panzhihua.service_community.dao.*;
 import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.service_community.service.ComActNeighborCircleBrowseService;
 import com.panzhihua.service_community.service.ComActNeighborCircleService;
+
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-
-import java.util.List;
 
 /**
  * @auther lyq
@@ -44,22 +37,19 @@
  */
 @Slf4j
 @Service
-public class ComActNeighborCircleServiceImpl extends ServiceImpl<ComActNeighborCircleDAO, ComActNeighborCircleDO> implements ComActNeighborCircleService {
-
-    @Resource
-    private ComActNeighborCircleBrowseService comActNeighborCircleBrowseService;
+public class ComActNeighborCircleServiceImpl extends ServiceImpl<ComActNeighborCircleDAO, ComActNeighborCircleDO>
+    implements ComActNeighborCircleService {
 
     @Resource
     ComActNeighborCircleFabulousDAO neighborCircleFabulousDAO;
-
     @Resource
     ComActNeighborCircleBrowseDAO neighborCircleBrowseDAO;
-
     @Resource
     ComActNeighborCircleCommentDAO neighborCircleCommentDAO;
-
     @Resource
     ComActNeighborCircleCommentReplyDAO neighborCircleCommentReplyDAO;
+    @Resource
+    private ComActNeighborCircleBrowseService comActNeighborCircleBrowseService;
     @Resource
     private ComActNeighborCircleCommentDAO comActNeighborCircleCommentDAO;
     @Resource
@@ -68,28 +58,49 @@
     private ComActNeighborCircleFabulousDAO comActNeighborCircleFabulousDAO;
     @Resource
     private ComActNeighborCircleBrowseDAO comActNeighborCircleBrowseDAO;
+    @Resource
+    private ComActDAO comActDAO;
+    @Resource
+    private ComActNeighborCircleTopicMapper comActNeighborCircleTopicMapper;
+    @Resource
+    private ComActNeighborCircleTopicService comActNeighborCircleTopicService;
 
     /**
      * 分页查询邻里圈列表
-     * @param neighborCircleAppDTO  请求参数
-     * @return  邻里圈列表
+     *
+     * @param neighborCircleAppDTO
+     *            请求参数
+     * @return 邻里圈列表
      */
     @Override
-    public R pageNeighborByApp(ComActNeighborCircleAppDTO neighborCircleAppDTO){
+    public R pageNeighborByApp(ComActNeighborCircleAppDTO neighborCircleAppDTO) {
         Page userPage = new Page(neighborCircleAppDTO.getPageNum(), neighborCircleAppDTO.getPageSize());
         IPage<ComActNeighborCircleAppVO> doPager = this.baseMapper.pageNeighborByApp(userPage, neighborCircleAppDTO);
-        if(!doPager.getRecords().isEmpty()){
-            for (ComActNeighborCircleAppVO circleAppVO:doPager.getRecords()) {
-                //查询点赞信息
-                ComActNeighborCircleFabulousDO circleFabulousDO = comActNeighborCircleFabulousDAO.selectOne(
-                        new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda().eq(ComActNeighborCircleFabulousDO::getParentId,circleAppVO.getId())
-                .eq(ComActNeighborCircleFabulousDO::getUserId,neighborCircleAppDTO.getUserId())
-                                .eq(ComActNeighborCircleFabulousDO::getType,ComActNeighborCircleFabulousDO.type.llq));
-                if(circleFabulousDO != null && circleFabulousDO.getIsEffective().equals(ComActNeighborCircleFabulousDO.isEffective.yes)){
-                    circleAppVO.setHaveSign(1);
-                }else{
-                    circleAppVO.setHaveSign(2);
+        if (!doPager.getRecords().isEmpty()) {
+            for (ComActNeighborCircleAppVO circleAppVO : doPager.getRecords()) {
+                if (neighborCircleAppDTO.getUserId() != null) {
+                    // 查询点赞信息
+                    ComActNeighborCircleFabulousDO circleFabulousDO =
+                        comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>()
+                            .lambda().eq(ComActNeighborCircleFabulousDO::getParentId, circleAppVO.getId())
+                            .eq(ComActNeighborCircleFabulousDO::getUserId, neighborCircleAppDTO.getUserId())
+                            .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.llq)
+                            .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                                ComActNeighborCircleFabulousDO.isEffective.yes));
+                    if (circleFabulousDO != null) {
+                        circleAppVO.setHaveSign(1);
+                    } else {
+                        circleAppVO.setHaveSign(2);
+                    }
                 }
+
+                if (circleAppVO.getType() != null && circleAppVO.getType().equals(ComActNeighborCircleDO.type.admin)) {
+                    ComActDO actDO = comActDAO.selectById(circleAppVO.getCommunityId());
+                    if (actDO != null) {
+                        circleAppVO.setName(actDO.getName());
+                    }
+                }
+
             }
         }
         return R.ok(doPager);
@@ -97,86 +108,161 @@
 
     /**
      * 用户发布邻里圈审核
-     * @param addNeighborCircleAppDTO   邻里圈请求参数
-     * @return  发布结果
+     *
+     * @param addNeighborCircleAppDTO
+     *            邻里圈请求参数
+     * @return 发布结果
      */
     @Override
-    public R addNeighborByApp(AddComActNeighborCircleAppDTO addNeighborCircleAppDTO){
-        //新增邻里圈审核
+    public R addNeighborByApp(AddComActNeighborCircleAppDTO addNeighborCircleAppDTO) {
+        // 新增邻里圈审核
         ComActNeighborCircleDO neighborCircleDO = new ComActNeighborCircleDO();
-        BeanUtils.copyProperties(addNeighborCircleAppDTO,neighborCircleDO);
-        if(addNeighborCircleAppDTO.getUserId() != null){
+        BeanUtils.copyProperties(addNeighborCircleAppDTO, neighborCircleDO);
+        if (addNeighborCircleAppDTO.getUserId() != null) {
             neighborCircleDO.setReleaseId(addNeighborCircleAppDTO.getUserId());
         }
-        if(addNeighborCircleAppDTO.getCommunityId() != null){
+        if (addNeighborCircleAppDTO.getCommunityId() != null) {
             neighborCircleDO.setCommunityId(addNeighborCircleAppDTO.getCommunityId());
         }
-        if(StringUtils.isNotEmpty(addNeighborCircleAppDTO.getPhone())){
+        if (StringUtils.isNotEmpty(addNeighborCircleAppDTO.getPhone())) {
             neighborCircleDO.setReleasePhone(addNeighborCircleAppDTO.getPhone());
         }
+        //判断用户的话题是否是新增的
+        if(StringUtils.isNotEmpty(addNeighborCircleAppDTO.getTopicName())){
+            //新增邻里圈话题
+            ComActNeighborCircleTopicDO circleTopicDO = comActNeighborCircleTopicMapper.selectOne(new QueryWrapper<ComActNeighborCircleTopicDO>()
+                    .lambda().eq(ComActNeighborCircleTopicDO::getCommunityId,neighborCircleDO.getCommunityId())
+                    .eq(ComActNeighborCircleTopicDO::getName,addNeighborCircleAppDTO.getTopicName()));
+            if(circleTopicDO == null){
+                circleTopicDO = new ComActNeighborCircleTopicDO();
+                circleTopicDO.setCommunityId(neighborCircleDO.getCommunityId());
+                circleTopicDO.setName(addNeighborCircleAppDTO.getTopicName());
+                circleTopicDO.setCreateBy(neighborCircleDO.getReleaseId());
+                circleTopicDO.setCreateAt(new Date());
+                circleTopicDO.setCount(0);
+                circleTopicDO.setHotNum(0L);
+                circleTopicDO.setStatus(ComActNeighborCircleTopicDO.status.yes);
+                comActNeighborCircleTopicMapper.insert(circleTopicDO);
+            }
+            neighborCircleDO.setTopicId(circleTopicDO.getId());
+        }
+        //判断当前邻里圈是否需要审核
+        if(addNeighborCircleAppDTO.getIsExamine().equals(AddComActNeighborCircleAppDTO.isExamine.no)){
+            //当邻里圈不需要审核才进入自动审核
+            //判断邻里圈自动审核结果
+            if(addNeighborCircleAppDTO.getWxExamineResult().equals(AddComActNeighborCircleAppDTO.isExamine.yes)){
+                neighborCircleDO.setStatus(ComActNeighborCircleDO.status.xs);
+                if(neighborCircleDO.getTopicId() != null){
+                    //给邻里圈话题添加邻里圈数量
+                    comActNeighborCircleTopicMapper.addCount(neighborCircleDO.getTopicId());
+                }
+            }else{
+                neighborCircleDO.setStatus(ComActNeighborCircleDO.status.bh);
+                neighborCircleDO.setRefuseReason("内容违规");
+            }
+        }
+
         if(this.baseMapper.insert(neighborCircleDO) > 0){
             return R.ok();
-        }else{
+        } else {
             return R.fail("发布失败");
         }
     }
 
     /**
      * 查看邻里圈详情
-     * @param neighborCircleAppDTO  请求参数
-     * @return  邻里圈详情
+     *
+     * @param neighborCircleAppDTO
+     *            请求参数
+     * @return 邻里圈详情
      */
     @Override
-    public R neighborDetailByApp(ComActNeighborCircleDetailAppDTO neighborCircleAppDTO){
+    public R neighborDetailByApp(ComActNeighborCircleDetailAppDTO neighborCircleAppDTO) {
 
-        //查询邻里圈详情
-        ComActNeighborCircleDetailAppVO circleDetailAppVO = this.baseMapper.neighborDetailByApp(neighborCircleAppDTO.getCircleId());
-        if(circleDetailAppVO == null){
+        // 查询邻里圈详情
+        ComActNeighborCircleDetailAppVO circleDetailAppVO =
+            this.baseMapper.neighborDetailByApp(neighborCircleAppDTO.getCircleId());
+        if (circleDetailAppVO == null) {
             return R.fail("未找到邻里圈信息");
         }
 
-        //查询邻里圈点赞信息
-        ComActNeighborCircleFabulousDO circleFabulousDO = comActNeighborCircleFabulousDAO.selectOne(
-                new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda().eq(ComActNeighborCircleFabulousDO::getParentId,circleDetailAppVO.getId())
-                        .eq(ComActNeighborCircleFabulousDO::getUserId,neighborCircleAppDTO.getUserId())
-                        .eq(ComActNeighborCircleFabulousDO::getType,ComActNeighborCircleFabulousDO.type.llq));
-        if(circleFabulousDO != null && circleFabulousDO.getIsEffective().equals(ComActNeighborCircleFabulousDO.isEffective.yes)){
-            circleDetailAppVO.setHaveSign(1);
-        }else{
-            circleDetailAppVO.setHaveSign(2);
+        if (circleDetailAppVO.getType() != null
+            && circleDetailAppVO.getType().equals(ComActNeighborCircleDO.type.admin)) {
+            ComActDO actDO = comActDAO.selectById(circleDetailAppVO.getCommunityId());
+            if (actDO != null) {
+                circleDetailAppVO.setName(actDO.getName());
+            }
         }
 
-        //查询邻里圈下评论列表
-        IPage<ComActNeighborCircleCommentAppVO> circleCommentAppPage = comActNeighborCircleCommentDAO.pageNeighborCommentByApp(
-                new Page(neighborCircleAppDTO.getPageNum(),neighborCircleAppDTO.getPageSize()),neighborCircleAppDTO);
-        if(!circleCommentAppPage.getRecords().isEmpty()){
-            for (ComActNeighborCircleCommentAppVO circleCommentVo:circleCommentAppPage.getRecords()) {
-                //查询点赞信息
-                ComActNeighborCircleFabulousDO circleCommentFabulousDO = comActNeighborCircleFabulousDAO.selectOne(
-                        new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda().eq(ComActNeighborCircleFabulousDO::getParentId,circleCommentVo.getId())
-                                .eq(ComActNeighborCircleFabulousDO::getUserId,neighborCircleAppDTO.getUserId())
-                                .eq(ComActNeighborCircleFabulousDO::getType,ComActNeighborCircleFabulousDO.type.pl));
-                if(circleCommentFabulousDO != null && circleCommentFabulousDO.getIsEffective().equals(ComActNeighborCircleFabulousDO.isEffective.yes)){
-                    circleCommentVo.setHaveSign(1);
-                }else{
-                    circleCommentVo.setHaveSign(2);
+        if (neighborCircleAppDTO.getUserId() != null) {
+            // 查询邻里圈点赞信息
+            ComActNeighborCircleFabulousDO circleFabulousDO =
+                comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                    .eq(ComActNeighborCircleFabulousDO::getParentId, circleDetailAppVO.getId())
+                    .eq(ComActNeighborCircleFabulousDO::getUserId, neighborCircleAppDTO.getUserId())
+                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.llq)
+                    .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                        ComActNeighborCircleFabulousDO.isEffective.yes));
+            if (circleFabulousDO != null) {
+                circleDetailAppVO.setHaveSign(1);
+            } else {
+                circleDetailAppVO.setHaveSign(2);
+            }
+        }
+
+        // 查询邻里圈下评论列表
+        IPage<ComActNeighborCircleCommentAppVO> circleCommentAppPage =
+            comActNeighborCircleCommentDAO.pageNeighborCommentByApp(
+                new Page(neighborCircleAppDTO.getPageNum(), neighborCircleAppDTO.getPageSize()), neighborCircleAppDTO);
+        if (!circleCommentAppPage.getRecords().isEmpty()) {
+            for (ComActNeighborCircleCommentAppVO circleCommentVo : circleCommentAppPage.getRecords()) {
+
+                if (neighborCircleAppDTO.getUserId() != null) {
+                    // 查询点赞信息
+                    ComActNeighborCircleFabulousDO circleCommentFabulousDO =
+                        comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>()
+                            .lambda().eq(ComActNeighborCircleFabulousDO::getParentId, circleCommentVo.getId())
+                            .eq(ComActNeighborCircleFabulousDO::getUserId, neighborCircleAppDTO.getUserId())
+                            .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.pl)
+                            .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                                ComActNeighborCircleFabulousDO.isEffective.yes));
+                    if (circleCommentFabulousDO != null) {
+                        circleCommentVo.setHaveSign(1);
+                    } else {
+                        circleCommentVo.setHaveSign(2);
+                    }
                 }
-                //查询评论下评论回复
-                List<ComActNeighborCircleCommentReplyAppVO> commentReplyAppVOS = comActNeighborCircleCommentReplyDAO.getCircleCommentReplyList(circleCommentVo.getId());
-                if(!commentReplyAppVOS.isEmpty()){
-                    for (ComActNeighborCircleCommentReplyAppVO commentReplyVO:commentReplyAppVOS) {
-                        //查询点赞信息
-                        ComActNeighborCircleFabulousDO circleReplyFabulousDO = comActNeighborCircleFabulousDAO.selectOne(
-                                new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda().eq(ComActNeighborCircleFabulousDO::getParentId,commentReplyVO.getId())
-                                        .eq(ComActNeighborCircleFabulousDO::getUserId,neighborCircleAppDTO.getUserId())
-                                        .eq(ComActNeighborCircleFabulousDO::getType,ComActNeighborCircleFabulousDO.type.hf));
-                        if(circleReplyFabulousDO != null && circleReplyFabulousDO.getIsEffective().equals(ComActNeighborCircleFabulousDO.isEffective.yes)){
-                            commentReplyVO.setHaveSign(1);
-                        }else{
-                            commentReplyVO.setHaveSign(2);
+
+                // 查询评论下评论回复
+                List<ComActNeighborCircleCommentReplyAppVO> commentReplyAppVOS =
+                    comActNeighborCircleCommentReplyDAO.getCircleCommentReplyList(circleCommentVo.getId());
+                if (!commentReplyAppVOS.isEmpty()) {
+                    List<ComActNeighborCircleCommentReplyAppVO> newCommentReplyAppVOS = new ArrayList<>();
+                    if (neighborCircleAppDTO.getUserId() != null) {
+                        int i = 0;
+                        for (ComActNeighborCircleCommentReplyAppVO commentReplyVO : commentReplyAppVOS) {
+                            if (i >= 2) {
+                                break;
+                            }
+                            // 查询点赞信息
+                            ComActNeighborCircleFabulousDO circleReplyFabulousDO = comActNeighborCircleFabulousDAO
+                                .selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                                    .eq(ComActNeighborCircleFabulousDO::getParentId, commentReplyVO.getId())
+                                    .eq(ComActNeighborCircleFabulousDO::getUserId, neighborCircleAppDTO.getUserId())
+                                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.hf)
+                                    .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                                        ComActNeighborCircleFabulousDO.isEffective.yes));
+                            if (circleReplyFabulousDO != null) {
+                                commentReplyVO.setHaveSign(1);
+                            } else {
+                                commentReplyVO.setHaveSign(2);
+                            }
+                            newCommentReplyAppVOS.add(commentReplyVO);
+                            i++;
                         }
                     }
-                    circleCommentVo.setCircleCommentReplyAppList(commentReplyAppVOS);
+                    circleCommentVo.setCircleCommentReplyAppList(newCommentReplyAppVOS);
+                    circleCommentVo.setCommentReplyNum(commentReplyAppVOS.size());
                 }
             }
         }
@@ -188,9 +274,11 @@
     public R pageNeighborByAdmin(ComActNeighborCircleAdminDTO neighborCircleAdminDTO) {
         Page page = new Page(neighborCircleAdminDTO.getPageNum(), neighborCircleAdminDTO.getPageSize());
         IPage<ComActNeighborCircleAdminVO> doPager = this.baseMapper.pageNeighborByAdmin(page, neighborCircleAdminDTO);
-        doPager.getRecords().forEach(data->{
-            if(data.getUserType()!=1){
-                data.setReleaseName(data.getCommunityName());
+        doPager.getRecords().forEach(data -> {
+            if(data.getUserType()!=null){
+                if (data.getUserType() != 1) {
+                    data.setReleaseName(data.getCommunityName());
+                }
             }
         });
         return R.ok(doPager);
@@ -208,7 +296,8 @@
         comActNeighborCircleDO.setCommunityId(adminUser.getCommunityId());
         comActNeighborCircleDO.setReleaseContent(addVO.getReleaseContent());
         comActNeighborCircleDO.setReleaseImages(addVO.getReleaseImages());
-        comActNeighborCircleDO.setStatus(1);
+        comActNeighborCircleDO.setType(2);
+        comActNeighborCircleDO.setStatus(2);
         comActNeighborCircleDO.setCommentNum(0);
         comActNeighborCircleDO.setFabulousNum(0);
         comActNeighborCircleDO.setForwardNum(0);
@@ -229,206 +318,306 @@
             return R.fail("id有误!");
         }
         neighborCircleDO.setStatus(editVO.getStatus());
-        if(editVO.getRefuseReason()!=null){
+        if (editVO.getRefuseReason() != null) {
             neighborCircleDO.setRefuseReason(editVO.getRefuseReason());
         }
         this.baseMapper.updateById(neighborCircleDO);
-        return R.ok();
+
+        if(editVO.getStatus().equals(EditNeighborCircleAdminVO.status.xs) && neighborCircleDO.getTopicId() != null){
+            //给邻里圈话题添加邻里圈数量
+            comActNeighborCircleTopicMapper.addCount(neighborCircleDO.getTopicId());
+        }
+        return R.ok(neighborCircleDO.getReleaseId());
     }
 
     /**
      * 用户查询邻里圈列表
-     * @param neighborCircleAppDTO  请求参数
-     * @return  邻里圈列表
+     *
+     * @param neighborCircleAppDTO
+     *            请求参数
+     * @return 邻里圈列表
      */
     @Override
-    public R neighborExamineByApp(ComActNeighborCircleAppDTO neighborCircleAppDTO){
+    public R neighborExamineByApp(ComActNeighborCircleAppDTO neighborCircleAppDTO) {
         IPage<ComActNeighborCircleAppVO> neighborCircleIPage = this.baseMapper.neighborExamineByApp(
-                new Page<>(neighborCircleAppDTO.getPageNum(),neighborCircleAppDTO.getPageSize()),neighborCircleAppDTO.getUserId());
+            new Page<>(neighborCircleAppDTO.getPageNum(), neighborCircleAppDTO.getPageSize()),
+            neighborCircleAppDTO.getUserId());
+        if (!neighborCircleIPage.getRecords().isEmpty()) {
+            for (ComActNeighborCircleAppVO circleAppVO : neighborCircleIPage.getRecords()) {
+                // 查询点赞信息
+                ComActNeighborCircleFabulousDO circleFabulousDO =
+                    comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>()
+                        .lambda().eq(ComActNeighborCircleFabulousDO::getParentId, circleAppVO.getId())
+                        .eq(ComActNeighborCircleFabulousDO::getUserId, neighborCircleAppDTO.getUserId())
+                        .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.llq)
+                        .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                            ComActNeighborCircleFabulousDO.isEffective.yes));
+                if (circleFabulousDO != null) {
+                    circleAppVO.setHaveSign(1);
+                } else {
+                    circleAppVO.setHaveSign(2);
+                }
+            }
+        }
         return R.ok(neighborCircleIPage);
     }
 
     /**
      * 邻里圈点赞
-     * @param fabulousAppDTO    请求参数
-     * @return  点赞结果
+     *
+     * @param fabulousAppDTO
+     *            请求参数
+     * @return 点赞结果
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R neighborFabulousByApp(ComActNeighborFabulousAppDTO fabulousAppDTO){
+    public R neighborFabulousByApp(ComActNeighborFabulousAppDTO fabulousAppDTO) {
 
         ComActNeighborCircleFabulousDO circleFabulousDO = new ComActNeighborCircleFabulousDO();
         circleFabulousDO.setUserId(fabulousAppDTO.getUserId());
         circleFabulousDO.setType(fabulousAppDTO.getType());
         circleFabulousDO.setParentId(fabulousAppDTO.getServiceId());
-        //判断点赞类型
-        if(fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.llq)){
-            //增加邻里圈点赞数量
+        // 判断点赞类型
+        if (fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.llq)) {
+
+            ComActNeighborCircleFabulousDO oldCircleFabulousDO =
+                comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborFabulousAppDTO.type.llq)
+                    .eq(ComActNeighborCircleFabulousDO::getParentId, fabulousAppDTO.getServiceId())
+                    .eq(ComActNeighborCircleFabulousDO::getIsEffective, ComActNeighborCircleFabulousDO.isEffective.yes)
+                    .eq(ComActNeighborCircleFabulousDO::getUserId, fabulousAppDTO.getUserId()));
+            if (oldCircleFabulousDO != null) {
+                return R.fail("您已点赞");
+            }
+
+            // 增加邻里圈点赞数量
             ComActNeighborCircleDO neighborCircleDO = this.baseMapper.selectById(fabulousAppDTO.getServiceId());
-            if(neighborCircleDO != null){
+            if (neighborCircleDO != null) {
                 neighborCircleDO.setFabulousNum(neighborCircleDO.getFabulousNum() + 1);
                 neighborCircleDO.setViewsNum(neighborCircleDO.getViewsNum() + 1);
+                //计算需要增加的热度值
+                Long hotNum = NeighborCircleConstants.FABULOUS_HOT_NUM + NeighborCircleConstants.VIEW_HOT_NUM;
+                neighborCircleDO.setHotNum(neighborCircleDO.getHotNum() + hotNum);
                 this.baseMapper.updateById(neighborCircleDO);
+                comActNeighborCircleTopicMapper.addHotNum(neighborCircleDO.getTopicId(),hotNum);
                 circleFabulousDO.setCircleId(neighborCircleDO.getId());
             }
-            //添加邻里圈浏览记录
-            comActNeighborCircleBrowseService.addBrowseRecord(fabulousAppDTO.getServiceId(),fabulousAppDTO.getUserId());
-        }else if(fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.pl)){
-            //增加邻里圈评论点赞数量
-            ComActNeighborCircleCommentDO circleCommentDO = comActNeighborCircleCommentDAO.selectById(fabulousAppDTO.getServiceId());
-            if(circleCommentDO != null){
+            // 添加邻里圈浏览记录
+            comActNeighborCircleBrowseService.addBrowseRecord(fabulousAppDTO.getServiceId(),
+                fabulousAppDTO.getUserId());
+        } else if (fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.pl)) {
+            ComActNeighborCircleFabulousDO oldCircleFabulousDO =
+                comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborFabulousAppDTO.type.pl)
+                    .eq(ComActNeighborCircleFabulousDO::getParentId, fabulousAppDTO.getServiceId())
+                    .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                        ComActNeighborCircleFabulousDO.isEffective.yes));
+            if (oldCircleFabulousDO != null) {
+                return R.fail("您已点赞");
+            }
+            // 增加邻里圈评论点赞数量
+            ComActNeighborCircleCommentDO circleCommentDO =
+                comActNeighborCircleCommentDAO.selectById(fabulousAppDTO.getServiceId());
+            if (circleCommentDO != null) {
                 circleCommentDO.setFabulousNum(circleCommentDO.getFabulousNum() + 1);
                 comActNeighborCircleCommentDAO.updateById(circleCommentDO);
+                //计算需要增加的热度值
+                Long hotNum = NeighborCircleConstants.FABULOUS_HOT_NUM + NeighborCircleConstants.VIEW_HOT_NUM;
+                this.baseMapper.addTopicHotNum(circleCommentDO.getCircleId(),hotNum);
+                this.baseMapper.addHotNum(circleCommentDO.getCircleId(),hotNum);
                 circleFabulousDO.setCircleId(circleCommentDO.getCircleId());
             }
-        }else if(fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.hf)){
-            //增加邻里圈评论回复点赞数量
-            ComActNeighborCircleCommentReplyDO circleCommentReplyDO = comActNeighborCircleCommentReplyDAO.selectById(fabulousAppDTO.getServiceId());
-            if(circleCommentReplyDO != null){
+        } else if (fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.hf)) {
+            ComActNeighborCircleFabulousDO oldCircleFabulousDO =
+                comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborFabulousAppDTO.type.hf)
+                    .eq(ComActNeighborCircleFabulousDO::getParentId, fabulousAppDTO.getServiceId())
+                    .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                        ComActNeighborCircleFabulousDO.isEffective.yes));
+            if (oldCircleFabulousDO != null) {
+                return R.fail("您已点赞");
+            }
+            // 增加邻里圈评论回复点赞数量
+            ComActNeighborCircleCommentReplyDO circleCommentReplyDO =
+                comActNeighborCircleCommentReplyDAO.selectById(fabulousAppDTO.getServiceId());
+            if (circleCommentReplyDO != null) {
                 circleCommentReplyDO.setFabulousNum(circleCommentReplyDO.getFabulousNum() + 1);
                 comActNeighborCircleCommentReplyDAO.updateById(circleCommentReplyDO);
+                //计算需要增加的热度值
+                Long hotNum = NeighborCircleConstants.FABULOUS_HOT_NUM + NeighborCircleConstants.VIEW_HOT_NUM;
+                this.baseMapper.addTopicHotNum(circleCommentReplyDO.getCircleId(),hotNum);
+                this.baseMapper.addHotNum(circleCommentReplyDO.getCircleId(),hotNum);
                 circleFabulousDO.setCircleId(circleCommentReplyDO.getCircleId());
             }
         }
-        if(comActNeighborCircleFabulousDAO.insert(circleFabulousDO) > 0){
+        if (comActNeighborCircleFabulousDAO.insert(circleFabulousDO) > 0) {
             return R.ok();
-        }else{
+        } else {
             return R.fail("点赞失败");
         }
     }
 
     /**
      * 邻里圈转发
-     * @param forwardAppDTO 请求参数
-     * @return  转发结果
+     *
+     * @param forwardAppDTO
+     *            请求参数
+     * @return 转发结果
      */
     @Override
-    public R neighborForwardByApp(ComActNeighborForwardAppDTO forwardAppDTO){
+    public R neighborForwardByApp(ComActNeighborForwardAppDTO forwardAppDTO) {
 
-        //添加邻里圈浏览记录
-        comActNeighborCircleBrowseService.addBrowseRecord(forwardAppDTO.getCircleId(),forwardAppDTO.getUserId());
+        if (forwardAppDTO.getUserId() != null) {
+            // 添加邻里圈浏览记录
+            comActNeighborCircleBrowseService.addBrowseRecord(forwardAppDTO.getCircleId(), forwardAppDTO.getUserId());
+        }
 
         ComActNeighborCircleDO circleDO = this.baseMapper.selectById(forwardAppDTO.getCircleId());
-        if(circleDO == null){
+        if (circleDO == null) {
             return R.fail("没有找到邻里圈");
         }
         circleDO.setForwardNum(circleDO.getForwardNum() + 1);
-        if(this.baseMapper.updateById(circleDO) > 0){
+        if (this.baseMapper.updateById(circleDO) > 0){
+            //计算需要增加的热度值
+            Long hotNum = NeighborCircleConstants.VIEW_HOT_NUM;
+            this.baseMapper.addHotNum(forwardAppDTO.getCircleId(),hotNum);
+            this.baseMapper.addTopicHotNum(forwardAppDTO.getCircleId(),hotNum);
             return R.ok();
-        }else{
+        } else {
             return R.fail("转发失败");
         }
     }
 
     /**
      * 邻里圈评论
-     * @param commentAppDTO 请求参数
-     * @return  评论结果
+     *
+     * @param commentAppDTO
+     *            请求参数
+     * @return 评论结果
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R neighborCommentByApp(ComActNeighborCommentAppDTO commentAppDTO){
+    public R neighborCommentByApp(ComActNeighborCommentAppDTO commentAppDTO) {
 
         ComActNeighborCircleCommentDO circleCommentDO = new ComActNeighborCircleCommentDO();
-        //查询邻里圈更新邻里圈评论数量
+        // 查询邻里圈更新邻里圈评论数量
         ComActNeighborCircleDO neighborCircleDO = this.baseMapper.selectById(commentAppDTO.getCircleId());
-        if(neighborCircleDO == null){
+        if (neighborCircleDO == null) {
             return R.fail("没有找到邻里圈");
         }
         neighborCircleDO.setCommentNum(neighborCircleDO.getCommentNum() + 1);
         neighborCircleDO.setReplyAt(new Date());
         this.baseMapper.updateById(neighborCircleDO);
 
+        //计算需要增加的热度值
+        Long hotNum = NeighborCircleConstants.COMMENT_HOT_NUM;
+        this.baseMapper.addHotNum(commentAppDTO.getCircleId(),hotNum);
+        this.baseMapper.addTopicHotNum(commentAppDTO.getCircleId(),hotNum);
+
         circleCommentDO.setCircleId(commentAppDTO.getCircleId());
         circleCommentDO.setUserId(commentAppDTO.getUserId());
         circleCommentDO.setUserPhone(commentAppDTO.getPhone());
         circleCommentDO.setContent(commentAppDTO.getContent());
-        if(neighborCircleDO.getReleaseId().equals(commentAppDTO.getUserId())){
+        if (neighborCircleDO.getReleaseId().equals(commentAppDTO.getUserId())) {
             circleCommentDO.setIsRelease(ComActNeighborCircleCommentDO.isRelease.yes);
         }
 
-        if(comActNeighborCircleCommentDAO.insert(circleCommentDO) > 0){
+        if (comActNeighborCircleCommentDAO.insert(circleCommentDO) > 0) {
             return R.ok();
-        }else{
+        } else {
             return R.fail("评论失败");
         }
     }
 
     /**
      * 邻里圈回复
-     * @param replyAppDTO   请求参数
-     * @return  回复结果
+     *
+     * @param replyAppDTO
+     *            请求参数
+     * @return 回复结果
      */
     @Override
-    public R neighborReplyByApp(ComActNeighborReplyAppDTO replyAppDTO){
+    public R neighborReplyByApp(ComActNeighborReplyAppDTO replyAppDTO) {
 
         ComActNeighborCircleCommentReplyDO circleCommentReplyDO = new ComActNeighborCircleCommentReplyDO();
-        //查询邻里圈更新邻里圈评论数量
+        // 查询邻里圈更新邻里圈评论数量
         ComActNeighborCircleDO neighborCircleDO = this.baseMapper.selectById(replyAppDTO.getCircleId());
-        if(neighborCircleDO == null){
+        if (neighborCircleDO == null) {
             return R.fail("没有找到邻里圈");
         }
         neighborCircleDO.setCommentNum(neighborCircleDO.getCommentNum() + 1);
         neighborCircleDO.setReplyAt(new Date());
         this.baseMapper.updateById(neighborCircleDO);
 
+        //计算需要增加的热度值
+        Long hotNum = NeighborCircleConstants.COMMENT_HOT_NUM;
+        this.baseMapper.addHotNum(replyAppDTO.getCircleId(),hotNum);
+        this.baseMapper.addTopicHotNum(replyAppDTO.getCircleId(),hotNum);
+
         circleCommentReplyDO.setCircleId(replyAppDTO.getCircleId());
         circleCommentReplyDO.setUserId(replyAppDTO.getUserId());
         circleCommentReplyDO.setReplyContent(replyAppDTO.getContent());
-        if(neighborCircleDO.getReleaseId().equals(replyAppDTO.getUserId())){
+        if (neighborCircleDO.getReleaseId().equals(replyAppDTO.getUserId())) {
             circleCommentReplyDO.setIsRelease(1);
         }
 
-        //判断回复类型
-        if(replyAppDTO.getType().equals(ComActNeighborReplyAppDTO.type.pl)){
-            //查询评论信息
-            ComActNeighborCircleCommentDO circleCommentDO = comActNeighborCircleCommentDAO.selectById(replyAppDTO.getServiceId());
-            if(circleCommentDO != null){
+        // 判断回复类型
+        if (replyAppDTO.getType().equals(ComActNeighborReplyAppDTO.type.pl)) {
+            // 查询评论信息
+            ComActNeighborCircleCommentDO circleCommentDO =
+                comActNeighborCircleCommentDAO.selectById(replyAppDTO.getServiceId());
+            if (circleCommentDO != null) {
                 circleCommentReplyDO.setCommentId(replyAppDTO.getServiceId());
                 circleCommentReplyDO.setParentId(0L);
                 circleCommentReplyDO.setParentUserId(circleCommentDO.getUserId());
             }
-        }else if(replyAppDTO.getType().equals(ComActNeighborReplyAppDTO.type.hf)){
-            //查询上级回复信息
-            ComActNeighborCircleCommentReplyDO parentCommentReplyDO = comActNeighborCircleCommentReplyDAO.selectById(replyAppDTO.getServiceId());
-            if(parentCommentReplyDO != null){
+        } else if (replyAppDTO.getType().equals(ComActNeighborReplyAppDTO.type.hf)) {
+            // 查询上级回复信息
+            ComActNeighborCircleCommentReplyDO parentCommentReplyDO =
+                comActNeighborCircleCommentReplyDAO.selectById(replyAppDTO.getServiceId());
+            if (parentCommentReplyDO != null) {
                 circleCommentReplyDO.setCommentId(parentCommentReplyDO.getCommentId());
                 circleCommentReplyDO.setParentId(parentCommentReplyDO.getId());
                 circleCommentReplyDO.setParentUserId(parentCommentReplyDO.getUserId());
             }
         }
 
-        if(comActNeighborCircleCommentReplyDAO.insert(circleCommentReplyDO) > 0){
+        if (comActNeighborCircleCommentReplyDAO.insert(circleCommentReplyDO) > 0) {
             return R.ok();
-        }else{
+        } else {
             return R.fail("回复失败");
         }
     }
 
     @Override
-    public R timeTaskCircleFlow(){
-        Date oldDate = DateUtils.addDay(new Date(),-3);
-        //查询所有状态正常的邻里圈
-        List<ComActNeighborCircleDO> circleDOList = this.baseMapper.selectList(
-                new QueryWrapper<ComActNeighborCircleDO>().lambda().eq(ComActNeighborCircleDO::getStatus,ComActNeighborCircleDO.status.xs));
-        if(!circleDOList.isEmpty()){
-            //遍历查询到的邻里圈,更新邻里圈内近3天的评论数,点赞数,浏览量
-            for (ComActNeighborCircleDO neighborCircleDO:circleDOList) {
-                //查询邻里圈近3天的评论数
-                int commentCount = comActNeighborCircleCommentDAO.selectCount(
-                        new QueryWrapper<ComActNeighborCircleCommentDO>().lambda().eq(ComActNeighborCircleCommentDO::getCircleId,neighborCircleDO.getId()));
-                //查询邻里圈近3天的评论回复数
-                int commentReplyCount = comActNeighborCircleCommentReplyDAO.selectCount(
-                        new QueryWrapper<ComActNeighborCircleCommentReplyDO>().lambda()
-                                .eq(ComActNeighborCircleCommentReplyDO::getCircleId,neighborCircleDO.getId()));
-                //查询邻里圈近3天的点赞数
-                int fabulousCount = comActNeighborCircleFabulousDAO.selectCount(new QueryWrapper<ComActNeighborCircleFabulousDO>()
-                        .lambda().eq(ComActNeighborCircleFabulousDO::getCircleId,neighborCircleDO.getId())
-                        .eq(ComActNeighborCircleFabulousDO::getIsEffective,ComActNeighborCircleFabulousDO.isEffective.yes));
-                //查询邻里圈近3天的浏览量
-                int browseCount = comActNeighborCircleBrowseDAO.selectCount(
-                        new QueryWrapper<ComActNeighborCircleBrowseDO>().lambda().eq(ComActNeighborCircleBrowseDO::getNeighborId,neighborCircleDO.getId()));
-                //更新邻里圈信息
+    public R timeTaskCircleFlow() {
+        Date oldDate = DateUtils.addDay(new Date(), -3);
+        // 查询所有状态正常的邻里圈
+        List<ComActNeighborCircleDO> circleDOList =
+            this.baseMapper.selectList(new QueryWrapper<ComActNeighborCircleDO>().lambda()
+                .eq(ComActNeighborCircleDO::getStatus, ComActNeighborCircleDO.status.xs));
+        if (!circleDOList.isEmpty()) {
+            // 遍历查询到的邻里圈,更新邻里圈内近3天的评论数,点赞数,浏览量
+            for (ComActNeighborCircleDO neighborCircleDO : circleDOList) {
+                // 查询邻里圈近3天的评论数
+                int commentCount =
+                    comActNeighborCircleCommentDAO.selectCount(new QueryWrapper<ComActNeighborCircleCommentDO>()
+                        .lambda().eq(ComActNeighborCircleCommentDO::getCircleId, neighborCircleDO.getId()));
+                // 查询邻里圈近3天的评论回复数
+                int commentReplyCount = comActNeighborCircleCommentReplyDAO
+                    .selectCount(new QueryWrapper<ComActNeighborCircleCommentReplyDO>().lambda()
+                        .eq(ComActNeighborCircleCommentReplyDO::getCircleId, neighborCircleDO.getId()));
+                // 查询邻里圈近3天的点赞数
+                int fabulousCount =
+                    comActNeighborCircleFabulousDAO.selectCount(new QueryWrapper<ComActNeighborCircleFabulousDO>()
+                        .lambda().eq(ComActNeighborCircleFabulousDO::getCircleId, neighborCircleDO.getId())
+                        .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                            ComActNeighborCircleFabulousDO.isEffective.yes));
+                // 查询邻里圈近3天的浏览量
+                int browseCount =
+                    comActNeighborCircleBrowseDAO.selectCount(new QueryWrapper<ComActNeighborCircleBrowseDO>().lambda()
+                        .eq(ComActNeighborCircleBrowseDO::getNeighborId, neighborCircleDO.getId()));
+                // 更新邻里圈信息
                 neighborCircleDO.setLastCommentNum(commentCount + commentReplyCount);
                 neighborCircleDO.setLastFabulousNum(fabulousCount);
                 neighborCircleDO.setLastViewsNum(browseCount);
@@ -448,20 +637,20 @@
         if (comActNeighborCircleDO.getStatus() == 1) {
             return R.fail("待审核的邻里圈不能删除");
         }
-        //邻里圈删除
+        // 邻里圈删除
         this.baseMapper.deleteById(id);
-        //邻里圈评论删除
-        neighborCircleCommentDAO.delete(new LambdaQueryWrapper<ComActNeighborCircleCommentDO>()
-                .eq(ComActNeighborCircleCommentDO::getCircleId, id));
-        //邻里圈回复删除
+        // 邻里圈评论删除
+        neighborCircleCommentDAO.delete(
+            new LambdaQueryWrapper<ComActNeighborCircleCommentDO>().eq(ComActNeighborCircleCommentDO::getCircleId, id));
+        // 邻里圈回复删除
         neighborCircleCommentReplyDAO.delete(new LambdaQueryWrapper<ComActNeighborCircleCommentReplyDO>()
-                .eq(ComActNeighborCircleCommentReplyDO::getCircleId, id));
-        //邻里圈浏览器记录
-        neighborCircleBrowseDAO.delete(new LambdaQueryWrapper<ComActNeighborCircleBrowseDO>()
-                .eq(ComActNeighborCircleBrowseDO::getNeighborId, id));
-        //邻里圈点赞删除
+            .eq(ComActNeighborCircleCommentReplyDO::getCircleId, id));
+        // 邻里圈浏览器记录
+        neighborCircleBrowseDAO.delete(
+            new LambdaQueryWrapper<ComActNeighborCircleBrowseDO>().eq(ComActNeighborCircleBrowseDO::getNeighborId, id));
+        // 邻里圈点赞删除
         neighborCircleFabulousDAO.delete(new LambdaQueryWrapper<ComActNeighborCircleFabulousDO>()
-                .eq(ComActNeighborCircleFabulousDO::getCircleId,id));
+            .eq(ComActNeighborCircleFabulousDO::getCircleId, id));
         return R.ok();
 
     }
@@ -469,13 +658,20 @@
     @Override
     public R detailNeighborByAdmin(Long id) {
         ComActNeighborCircleDO comActNeighborCircleDO = this.baseMapper.selectById(id);
-        AdministratorsUserVO user = this.baseMapper.selectUserByUserId(comActNeighborCircleDO.getReleaseId());
         if (comActNeighborCircleDO == null) {
             return R.fail("id有误");
         }
+        AdministratorsUserVO user = this.baseMapper.selectUserByUserId(comActNeighborCircleDO.getReleaseId());
         DetailNeighborCircleAdminVO vo = new DetailNeighborCircleAdminVO();
         BeanUtils.copyProperties(comActNeighborCircleDO, vo);
         vo.setReleaseName(user.getName());
+
+        // 查询话题名称
+        if (comActNeighborCircleDO.getTopicId() != null) {
+            ComActNeighborCircleTopicDO circleTopicDO =
+                comActNeighborCircleTopicMapper.selectById(comActNeighborCircleDO.getTopicId());
+            vo.setTopicName(circleTopicDO.getName());
+        }
         return R.ok(vo);
     }
 
@@ -485,41 +681,56 @@
         if (comActNeighborCircleDO == null) {
             return R.fail("id有误");
         }
-        Page<ComActNeighborCircleCommentDO> page = new Page<>(dto.getPageNum(),dto.getPageSize());
-        //1、先查询所有该邻里圈_的评论
-        IPage<ComActNeighborCommentByAdminVO> commentDOIPage = neighborCircleCommentDAO.selectPageDetailNeighborComment(page,dto);
+        Page<ComActNeighborCircleCommentDO> page = new Page<>(dto.getPageNum(), dto.getPageSize());
+        // 1、先查询所有该邻里圈_的评论
+        IPage<ComActNeighborCommentByAdminVO> commentDOIPage =
+            neighborCircleCommentDAO.selectPageDetailNeighborComment(page, dto);
         return R.ok(commentDOIPage);
     }
 
     @Override
     public R changeCommentStatusByAdmin(ChangeCommentStatusByAdminVO dto) {
         ComActNeighborCircleCommentDO commentDO = neighborCircleCommentDAO.selectById(dto.getId());
-        if(commentDO==null){
+        if (commentDO == null) {
             return R.fail("id有误!");
         }
         commentDO.setStatus(dto.getStatus());
         neighborCircleCommentDAO.updateById(commentDO);
+
+        // 查询邻里圈更新邻里圈评论数量
+        ComActNeighborCircleDO neighborCircleDO = this.baseMapper.selectById(commentDO.getCircleId());
+        if (neighborCircleDO != null) {
+            if (dto.getStatus().equals(2)) {
+                neighborCircleDO.setCommentNum(neighborCircleDO.getCommentNum() - 1);
+            } else {
+                neighborCircleDO.setCommentNum(neighborCircleDO.getCommentNum() + 1);
+            }
+            this.baseMapper.updateById(neighborCircleDO);
+        }
         return R.ok();
     }
 
     @Override
     public R detailNeighborCommentByAdmin(Long id) {
         ComActNeighborCircleCommentDO commentDO = neighborCircleCommentDAO.selectById(id);
-        if(commentDO==null){
+        if (commentDO == null) {
             return R.fail("id有误!");
         }
         AdministratorsUserVO user = this.baseMapper.selectUserByUserId(commentDO.getUserId());
         ComActNeighborCommentByAdminVO vo = new ComActNeighborCommentByAdminVO();
-        BeanUtils.copyProperties(commentDO,vo);
-        vo.setUserName(user.getName());
+        BeanUtils.copyProperties(commentDO, vo);
+        String name = user.getName() == null ? user.getNickName() : user.getName();
+        vo.setUserName(name);
+        vo.setUserPhone(user.getPhone());
         return R.ok(vo);
     }
 
     @Override
     public R detailNeighborCommentAllReply(DetailNeighborCommentReplyByAdminDTO dto) {
-        Page<ComActNeighborCircleCommentReplyDO> page = new Page<>(dto.getPageNum(),dto.getPageSize());
-        Page<ComActNeighborCommentReplyByAdminVO> replyPage = neighborCircleCommentReplyDAO.selectListByComment(page, dto);
-        replyPage.getRecords().forEach(reply->{
+        Page<ComActNeighborCircleCommentReplyDO> page = new Page<>(dto.getPageNum(), dto.getPageSize());
+        Page<ComActNeighborCommentReplyByAdminVO> replyPage =
+            neighborCircleCommentReplyDAO.selectListByComment(page, dto);
+        replyPage.getRecords().forEach(reply -> {
 
         });
         return R.ok(replyPage);
@@ -528,12 +739,12 @@
     @Override
     public R detailNeighborCommentReply(Long id) {
         ComActNeighborCircleCommentReplyDO replyDO = neighborCircleCommentReplyDAO.selectById(id);
-        if(replyDO==null){
+        if (replyDO == null) {
             return R.fail("id有误!");
         }
         AdministratorsUserVO user = this.baseMapper.selectUserByUserId(replyDO.getUserId());
         ComActNeighborCommentReplyByAdminVO vo = new ComActNeighborCommentReplyByAdminVO();
-        BeanUtils.copyProperties(replyDO,vo);
+        BeanUtils.copyProperties(replyDO, vo);
         vo.setUserName(user.getName());
         vo.setUserPhone(user.getPhone());
         return R.ok(vo);
@@ -541,8 +752,9 @@
 
     @Override
     public R changeCommentReplyStatusByAdmin(ChangeCommentReplyStatusByAdminVO changeStatusReplyVO) {
-        ComActNeighborCircleCommentReplyDO replyDO = neighborCircleCommentReplyDAO.selectById(changeStatusReplyVO.getId());
-        if(replyDO==null){
+        ComActNeighborCircleCommentReplyDO replyDO =
+            neighborCircleCommentReplyDAO.selectById(changeStatusReplyVO.getId());
+        if (replyDO == null) {
             return R.fail("id有误!");
         }
         replyDO.setStatus(changeStatusReplyVO.getStatus());
@@ -552,40 +764,86 @@
 
     /**
      * 邻里圈取消点赞
-     * @param fabulousAppDTO    请求参数
-     * @return  取消点赞结果
+     *
+     * @param fabulousAppDTO
+     *            请求参数
+     * @return 取消点赞结果
      */
     @Override
-    public R neighborFabulousCancelByApp(ComActNeighborFabulousAppDTO fabulousAppDTO){
+    @Transactional(rollbackFor = Exception.class)
+    public R neighborFabulousCancelByApp(ComActNeighborFabulousAppDTO fabulousAppDTO) {
         ComActNeighborCircleFabulousDO circleFabulousDO = null;
-        //查询邻里圈点赞信息
-        if(fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.llq)){
-            //查询点赞信息
-            circleFabulousDO = comActNeighborCircleFabulousDAO.selectOne(
-                    new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda().eq(ComActNeighborCircleFabulousDO::getParentId,fabulousAppDTO.getServiceId())
-                            .eq(ComActNeighborCircleFabulousDO::getUserId,fabulousAppDTO.getUserId())
-                            .eq(ComActNeighborCircleFabulousDO::getType,ComActNeighborCircleFabulousDO.type.llq));
-            if(circleFabulousDO == null){
+        // 查询邻里圈点赞信息
+        if (fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.llq)) {
+            // 查询点赞信息
+            circleFabulousDO =
+                comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                    .eq(ComActNeighborCircleFabulousDO::getParentId, fabulousAppDTO.getServiceId())
+                    .eq(ComActNeighborCircleFabulousDO::getUserId, fabulousAppDTO.getUserId())
+                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.llq)
+                    .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                        ComActNeighborCircleFabulousDO.isEffective.yes));
+            if (circleFabulousDO == null) {
                 return R.fail("未查询到点赞信息");
             }
-        }else if(fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.pl)){
-            circleFabulousDO = comActNeighborCircleFabulousDAO.selectOne(
-                    new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda().eq(ComActNeighborCircleFabulousDO::getParentId,fabulousAppDTO.getServiceId())
-                            .eq(ComActNeighborCircleFabulousDO::getUserId,fabulousAppDTO.getUserId())
-                            .eq(ComActNeighborCircleFabulousDO::getType,ComActNeighborCircleFabulousDO.type.pl));
-            if(circleFabulousDO == null){
+
+            // 减少邻里圈点赞数量
+            ComActNeighborCircleDO neighborCircleDO = this.baseMapper.selectById(fabulousAppDTO.getServiceId());
+            if (neighborCircleDO != null) {
+                neighborCircleDO.setFabulousNum(neighborCircleDO.getFabulousNum() - 1);
+                this.baseMapper.updateById(neighborCircleDO);
+                //计算需要增加的热度值
+                Long hotNum = NeighborCircleConstants.FABULOUS_HOT_NUM;
+                this.baseMapper.addHotNum(neighborCircleDO.getId(),-hotNum);
+                this.baseMapper.addTopicHotNum(neighborCircleDO.getId(),-hotNum);
+            }
+        } else if (fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.pl)) {
+            circleFabulousDO =
+                comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                    .eq(ComActNeighborCircleFabulousDO::getParentId, fabulousAppDTO.getServiceId())
+                    .eq(ComActNeighborCircleFabulousDO::getUserId, fabulousAppDTO.getUserId())
+                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.pl)
+                    .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                        ComActNeighborCircleFabulousDO.isEffective.yes));
+            if (circleFabulousDO == null) {
                 return R.fail("未查询到点赞信息");
             }
-        }else if(fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.hf)){
-            circleFabulousDO = comActNeighborCircleFabulousDAO.selectOne(
-                    new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda().eq(ComActNeighborCircleFabulousDO::getParentId,fabulousAppDTO.getServiceId())
-                            .eq(ComActNeighborCircleFabulousDO::getUserId,fabulousAppDTO.getUserId())
-                            .eq(ComActNeighborCircleFabulousDO::getType,ComActNeighborCircleFabulousDO.type.hf));
-            if(circleFabulousDO == null){
+
+            // 减少邻里圈评论点赞数量
+            ComActNeighborCircleCommentDO circleCommentDO =
+                comActNeighborCircleCommentDAO.selectById(fabulousAppDTO.getServiceId());
+            if (circleCommentDO != null) {
+                circleCommentDO.setFabulousNum(circleCommentDO.getFabulousNum() - 1);
+                comActNeighborCircleCommentDAO.updateById(circleCommentDO);
+                //计算需要增加的热度值
+                Long hotNum = NeighborCircleConstants.FABULOUS_HOT_NUM;
+                this.baseMapper.addHotNum(circleCommentDO.getCircleId(),-hotNum);
+                this.baseMapper.addTopicHotNum(circleCommentDO.getCircleId(),-hotNum);
+            }
+        } else if (fabulousAppDTO.getType().equals(ComActNeighborFabulousAppDTO.type.hf)) {
+            circleFabulousDO =
+                comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>().lambda()
+                    .eq(ComActNeighborCircleFabulousDO::getParentId, fabulousAppDTO.getServiceId())
+                    .eq(ComActNeighborCircleFabulousDO::getUserId, fabulousAppDTO.getUserId())
+                    .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.hf)
+                    .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                        ComActNeighborCircleFabulousDO.isEffective.yes));
+            if (circleFabulousDO == null) {
                 return R.fail("未查询到点赞信息");
+            }
+            // 减少邻里圈评论回复点赞数量
+            ComActNeighborCircleCommentReplyDO circleCommentReplyDO =
+                comActNeighborCircleCommentReplyDAO.selectById(fabulousAppDTO.getServiceId());
+            if (circleCommentReplyDO != null) {
+                circleCommentReplyDO.setFabulousNum(circleCommentReplyDO.getFabulousNum() - 1);
+                comActNeighborCircleCommentReplyDAO.updateById(circleCommentReplyDO);
+                //计算需要增加的热度值
+                Long hotNum = NeighborCircleConstants.FABULOUS_HOT_NUM;
+                this.baseMapper.addHotNum(circleCommentReplyDO.getCircleId(),-hotNum);
+                this.baseMapper.addTopicHotNum(circleCommentReplyDO.getCircleId(),-hotNum);
             }
         }
-        if(circleFabulousDO != null){
+        if (circleFabulousDO != null) {
             circleFabulousDO.setIsEffective(ComActNeighborCircleFabulousDO.isEffective.no);
             comActNeighborCircleFabulousDAO.updateById(circleFabulousDO);
         }
@@ -594,20 +852,77 @@
 
     /**
      * 添加邻里圈浏览记录
-     * @param addBrowseAppDTO   请求参数
-     * @return  返回参数
+     *
+     * @param addBrowseAppDTO
+     *            请求参数
+     * @return 返回参数
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R neighborAddBrowseByApp(ComActNeighborAddBrowseAppDTO addBrowseAppDTO){
-        //添加邻里圈浏览记录
-        comActNeighborCircleBrowseService.addBrowseRecord(addBrowseAppDTO.getCircleId(),addBrowseAppDTO.getUserId());
-        //更新邻里圈记录
+    public R neighborAddBrowseByApp(ComActNeighborAddBrowseAppDTO addBrowseAppDTO) {
+        // 添加邻里圈浏览记录
+        comActNeighborCircleBrowseService.addBrowseRecord(addBrowseAppDTO.getCircleId(), addBrowseAppDTO.getUserId());
+        // 更新邻里圈记录
         ComActNeighborCircleDO neighborCircleDO = this.baseMapper.selectById(addBrowseAppDTO.getCircleId());
-        if(neighborCircleDO != null){
+        if (neighborCircleDO != null) {
             neighborCircleDO.setViewsNum(neighborCircleDO.getViewsNum() + 1);
             this.baseMapper.updateById(neighborCircleDO);
+
+            //计算需要增加的热度值
+            Long hotNum = NeighborCircleConstants.FABULOUS_HOT_NUM;
+            this.baseMapper.addHotNum(neighborCircleDO.getId(),hotNum);
+            this.baseMapper.addTopicHotNum(neighborCircleDO.getId(),hotNum);
         }
         return R.ok();
     }
+
+    /**
+     * 分页查询评论下所有回复
+     *
+     * @param commentReplyAppDTO
+     *            请求参数
+     * @return 回复列表
+     */
+    @Override
+    public R neighborCommentReplyByApp(ComActNeighborCommentReplyAppDTO commentReplyAppDTO) {
+        IPage<ComActNeighborCommentReplyAppVO> neighborCircleIPage = this.baseMapper.neighborCommentReplyByApp(
+            new Page<>(commentReplyAppDTO.getPageNum(), commentReplyAppDTO.getPageSize()),
+            commentReplyAppDTO.getCommentId());
+        if (!neighborCircleIPage.getRecords().isEmpty()) {
+            for (ComActNeighborCommentReplyAppVO commentReplyAppVO : neighborCircleIPage.getRecords()) {
+                if (commentReplyAppDTO.getUserId() != null) {
+                    // 查询点赞信息
+                    ComActNeighborCircleFabulousDO circleFabulousDO =
+                        comActNeighborCircleFabulousDAO.selectOne(new QueryWrapper<ComActNeighborCircleFabulousDO>()
+                            .lambda().eq(ComActNeighborCircleFabulousDO::getParentId, commentReplyAppVO.getId())
+                            .eq(ComActNeighborCircleFabulousDO::getUserId, commentReplyAppDTO.getUserId())
+                            .eq(ComActNeighborCircleFabulousDO::getType, ComActNeighborCircleFabulousDO.type.hf)
+                            .eq(ComActNeighborCircleFabulousDO::getIsEffective,
+                                ComActNeighborCircleFabulousDO.isEffective.yes));
+                    if (circleFabulousDO != null) {
+                        commentReplyAppVO.setHaveSign(1);
+                    } else {
+                        commentReplyAppVO.setHaveSign(2);
+                    }
+                }
+            }
+        }
+        return R.ok(neighborCircleIPage);
+    }
+
+    /**
+     * 小程序-删除邻里圈
+     * @param circleTopicAppDTO 请求参数
+     * @return  删除结果
+     */
+    @Override
+    public R deleteNeighborByApp(DeleteNeighborCircleAppDTO circleTopicAppDTO){
+        ComActNeighborCircleDO neighborCircleDO = new ComActNeighborCircleDO();
+        neighborCircleDO.setId(circleTopicAppDTO.getId());
+        neighborCircleDO.setIsDel(ComActNeighborCircleDO.isDel.yes);
+        if(this.baseMapper.updateById(neighborCircleDO) > 0){
+            return R.ok();
+        }
+        return R.fail();
+    }
 }

--
Gitblit v1.7.1