From 321d2fe33b1239d29c285c91a2867631ee1e2146 Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期五, 10 九月 2021 17:17:59 +0800
Subject: [PATCH] 议事投票后台接口开发

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java |  453 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 331 insertions(+), 122 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
index 7a0bff0..a25fc36 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
@@ -8,6 +8,12 @@
 
 import javax.annotation.Resource;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.panzhihua.common.constants.Constants;
+import com.panzhihua.common.exceptions.ServiceException;
+import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO;
+import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO;
+import com.panzhihua.common.model.vos.community.*;
 import com.panzhihua.common.utlis.DateUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -23,10 +29,6 @@
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.community.ComActDiscussCommentVO;
-import com.panzhihua.common.model.vos.community.ComActDiscussOptionVO;
-import com.panzhihua.common.model.vos.community.ComActDiscussVO;
-import com.panzhihua.common.model.vos.community.ComActVO;
 import com.panzhihua.common.model.vos.community.screen.work.DiscussListVO;
 import com.panzhihua.service_community.dao.*;
 import com.panzhihua.service_community.model.dos.*;
@@ -55,12 +57,13 @@
     private ComActDiscussCommentUserDAO comActDiscussCommentUserDAO;
     @Resource
     private ComActDiscussOptionService comActDiscussOptionService;
+    @Resource
+    private SysConfMapper sysConfDao;
 
     /**
      * 议事投票-新增
      *
-     * @param comActDiscussDTO
-     *            新增参数
+     * @param comActDiscussDTO 新增参数
      * @return 新增结果
      */
     @Override
@@ -70,9 +73,9 @@
         BeanUtils.copyProperties(comActDiscussDTO, comActDiscussDO);
         Integer type = comActDiscussDTO.getType();
         Date nowDate = new Date();
-        if(type.equals(ComActDiscussDO.type.tp)){//判断是投票,需要转义时间
-            Date startTime = DateUtils.stringToDate(comActDiscussDTO.getStartTime(),DateUtils.ymdhms_format);
-            Date endTime = DateUtils.stringToDate(comActDiscussDTO.getEndTime(),DateUtils.ymdhms_format);
+        if (type.equals(ComActDiscussDO.type.tp)) {//判断是投票,需要转义时间
+            Date startTime = DateUtils.stringToDate(comActDiscussDTO.getStartTime(), DateUtils.ymdhms_format);
+            Date endTime = DateUtils.stringToDate(comActDiscussDTO.getEndTime(), DateUtils.ymdhms_format);
             comActDiscussDO.setStartTime(startTime);
             comActDiscussDO.setEndTime(endTime);
             comActDiscussDO.setStatus(ComActDiscussDO.status.wks);
@@ -81,7 +84,7 @@
                 comActDiscussDO.setStatus(ComActDiscussDO.status.jxz);
                 comActDiscussDO.setReleaseAt(nowDate);
             }
-        }else{
+        } else {
             comActDiscussDO.setStatus(ComActDiscussDO.status.yfb);
         }
         //查询社区地址
@@ -113,8 +116,9 @@
 
     /**
      * 议事投票-编辑
-     * @param comActDiscussDTO  请求参数
-     * @return  编辑结果
+     *
+     * @param comActDiscussDTO 请求参数
+     * @return 编辑结果
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -124,18 +128,18 @@
         if (ObjectUtils.isEmpty(comActDiscussDO)) {
             return R.fail("议事投票不存在");
         }
-        if(!comActDiscussDO.getStatus().equals(ComActDiscussDO.status.wks) && !comActDiscussDO.getStatus().equals(ComActDiscussDO.status.yfb)){
+        if (!comActDiscussDO.getStatus().equals(ComActDiscussDO.status.wks) && !comActDiscussDO.getStatus().equals(ComActDiscussDO.status.yfb)) {
             return R.fail("该状态不可修改");
         }
-        Integer type =  comActDiscussDO.getType();
+        Integer type = comActDiscussDO.getType();
         Integer isRepeat = comActDiscussDO.getIsRepeat();
         BeanUtils.copyProperties(comActDiscussDTO, comActDiscussDO);
         comActDiscussDO.setType(type);
         comActDiscussDO.setIsRepeat(isRepeat);
         Date nowDate = new Date();
-        if(type.equals(ComActDiscussDO.type.tp)){//判断是投票,需要转义时间
-            Date startTime = DateUtils.stringToDate(comActDiscussDTO.getStartTime(),DateUtils.ymdhms_format);
-            Date endTime = DateUtils.stringToDate(comActDiscussDTO.getEndTime(),DateUtils.ymdhms_format);
+        if (type.equals(ComActDiscussDO.type.tp)) {//判断是投票,需要转义时间
+            Date startTime = DateUtils.stringToDate(comActDiscussDTO.getStartTime(), DateUtils.ymdhms_format);
+            Date endTime = DateUtils.stringToDate(comActDiscussDTO.getEndTime(), DateUtils.ymdhms_format);
             comActDiscussDO.setStartTime(startTime);
             comActDiscussDO.setEndTime(endTime);
             comActDiscussDO.setStatus(ComActDiscussDO.status.wks);
@@ -144,7 +148,7 @@
                 comActDiscussDO.setStatus(ComActDiscussDO.status.jxz);
                 comActDiscussDO.setReleaseAt(nowDate);
             }
-        }else{
+        } else {
             comActDiscussDO.setStatus(ComActDiscussDO.status.yfb);
         }
         comActDiscussDO.setUpdateAt(new Date());
@@ -153,7 +157,7 @@
             //如果是投票,需要把投票的选项存储
             if (type.equals(2)) {
                 comActDiscussOptionService.remove(new QueryWrapper<ComActDiscussOptionDO>().lambda()
-                        .eq(ComActDiscussOptionDO::getDiscussId,comActDiscussDO1Id));
+                        .eq(ComActDiscussOptionDO::getDiscussId, comActDiscussDO1Id));
                 List<ComActDiscussOptionDO> comActDiscussOptionDOS = new ArrayList<>();
                 comActDiscussDTO.getDiscussOptions().forEach(s -> {
                     ComActDiscussOptionDO comActDiscussOptionDO = new ComActDiscussOptionDO();
@@ -172,12 +176,12 @@
     /**
      * 议事投票-详情
      *
-     * @param id
-     *            主键
+     * @param discussDetailDTO 请求参数
      * @return ComActDiscussVO
      */
     @Override
-    public R detailDiscuss(Long id) {
+    public R detailDiscuss(ComActDiscussDetailDTO discussDetailDTO) {
+        Long id = discussDetailDTO.getId();
         ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(id);
         if (ObjectUtils.isEmpty(comActDiscussDO)) {
             return R.fail("议事投票不存在");
@@ -186,22 +190,36 @@
         BeanUtils.copyProperties(comActDiscussDO, comActDiscussVO);
         comActDiscussVO.setSignNum(comActDiscussDO.getFabulousNum());
         Integer type = comActDiscussVO.getType();
-        if (type.equals(2)) {
+        if (type.equals(ComActDiscussVO.type.tp)) {
             //查询选项列表
-            List<ComActDiscussOptionVO> comActDiscussOptionVOS = comActDiscussOptionDAO.getDiscussOptionList(id);
-            comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS);
+            List<ComActDiscussOptionVO> comActDiscussOptionList = comActDiscussOptionDAO.getDiscussOptionList(id);
+            comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionList);
         }
         Long userId = comActDiscussDO.getUserId();
         LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId);
         comActDiscussVO.setUserName(loginUserInfoVO.getName());
+        comActDiscussVO.setUserNickName(loginUserInfoVO.getNickName());
+
+        //分页查询评论列表
+        PageComActDiscussCommentDTO pageComActDiscussCommentDTO = new PageComActDiscussCommentDTO();
+        BeanUtils.copyProperties(discussDetailDTO, pageComActDiscussCommentDTO);
+        IPage<ComActDiscussCommentVO> discussComments = comActDiscussDAO.pageDiscussCommentAdmin(new Page<>(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO);
+        discussComments.getRecords().forEach(comment -> {
+            if (comment.getReplyNum() > 0) {
+                List<ComActDiscussCommentVO> childList = comActDiscussDAO.getDiscussCommentReplyList(comment.getId());
+                if (!childList.isEmpty()) {
+                    comment.setComActDiscussCommentVOList(childList);
+                }
+            }
+        });
+        comActDiscussVO.setDiscussCommentList(discussComments.getRecords());
         return R.ok(comActDiscussVO);
     }
 
     /**
      * 议事投票-删除
      *
-     * @param id
-     *            主键
+     * @param id 主键
      * @return 删除结果
      */
     @Override
@@ -218,8 +236,7 @@
     /**
      * 议事投票-回复
      *
-     * @param comActDiscussCommentDTO
-     *            评论内容
+     * @param comActDiscussCommentDTO 评论内容
      * @return 回复结果
      */
     @Override
@@ -238,6 +255,7 @@
         }
         int insert = comActDiscussCommentDAO.insert(comActDiscussCommentDO);
         if (insert > 0) {
+            comActDiscussDAO.addCommentCount(discussId, 1);
             return R.ok();
         }
         return R.fail();
@@ -246,43 +264,31 @@
     /**
      * 议事投票-分页查询
      *
-     * @param pageComActDiscussDTO
-     *            查询参数
+     * @param pageComActDiscussDTO 查询参数
      * @return ComActDiscussVO
      */
     @Override
     public R pageDiscuss(PageComActDiscussDTO pageComActDiscussDTO) {
-        Page page = new Page<>();
-        Long pageNum = pageComActDiscussDTO.getPageNum();
-        Long pageSize = pageComActDiscussDTO.getPageSize();
-        if (null == pageNum || 0 == pageNum) {
-            pageNum = 1l;
-        }
-        if (null == pageSize || 0 == pageSize) {
-            pageSize = 10l;
-        }
-        page.setSize(pageSize);
-        page.setCurrent(pageNum);
-        IPage<ComActDiscussVO> iPage = comActDiscussDAO.pageDiscuss(page, pageComActDiscussDTO);
+        IPage<ComActDiscussVO> iPage = comActDiscussDAO.pageDiscuss(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO);
         return R.ok(iPage);
 
     }
 
     /**
      * 议事投票-后台分页查询
-     * @param pageComActDiscussDTO  请求参数
-     * @return  议事投票列表
+     *
+     * @param pageComActDiscussDTO 请求参数
+     * @return 议事投票列表
      */
     @Override
     public R pageDiscussAdmin(PageComActDiscussDTO pageComActDiscussDTO) {
-        return R.ok(comActDiscussDAO.pageDiscussAdmin(new Page<>(pageComActDiscussDTO.getPageNum(),pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO));
+        return R.ok(comActDiscussDAO.pageDiscussAdmin(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO));
     }
 
     /**
      * 议事投票-评论-查看
      *
-     * @param id
-     *            主键
+     * @param id 主键
      * @return 详情 ComActDiscussCommentVO
      */
     @Override
@@ -304,7 +310,7 @@
             comActDiscussCommentVO.setParentId(parentId);
         }
         Integer count = comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda()
-            .eq(ComActDiscussCommentUserDO::getDisscussCommentId, id));
+                .eq(ComActDiscussCommentUserDO::getDisscussCommentId, id));
         comActDiscussCommentVO.setNum(count);
         LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(comActDiscussCommentDO.getUserId());
         comActDiscussCommentVO.setUserName(loginUserInfoVO.getName());
@@ -313,10 +319,49 @@
     }
 
     /**
+     * 议事投票评论详情
+     *
+     * @param pageComActDiscussCommentDTO 请求参数
+     * @return 议事投票详情
+     */
+    @Override
+    public R detailDiscussCommentAdmin(PageComActDiscussCommentDTO pageComActDiscussCommentDTO) {
+        Long id = pageComActDiscussCommentDTO.getId();
+        ComActDiscussCommentDO comActDiscussCommentDO = comActDiscussCommentDAO.selectById(id);
+        if (ObjectUtils.isEmpty(comActDiscussCommentDO)) {
+            return R.fail("评论不存在");
+        }
+        ComActDiscussCommentVO comActDiscussCommentVO = new ComActDiscussCommentVO();
+        Long parentId = comActDiscussCommentDO.getParentId();
+        if (parentId.intValue() == 0) {
+            // 一级评论
+            BeanUtils.copyProperties(comActDiscussCommentDO, comActDiscussCommentVO);
+        } else {
+            ComActDiscussCommentDO comActDiscussCommentDO1 = comActDiscussCommentDAO.selectById(parentId);
+            BeanUtils.copyProperties(comActDiscussCommentDO1, comActDiscussCommentVO);
+            comActDiscussCommentVO.setCommentBack(comActDiscussCommentDO.getComment());
+            comActDiscussCommentVO.setTimeBack(comActDiscussCommentDO.getCreateAt());
+            comActDiscussCommentVO.setParentId(parentId);
+        }
+        Integer count = comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda()
+                .eq(ComActDiscussCommentUserDO::getDisscussCommentId, id));
+        comActDiscussCommentVO.setNum(count);
+        LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(comActDiscussCommentDO.getUserId());
+        comActDiscussCommentVO.setUserName(loginUserInfoVO.getName());
+        comActDiscussCommentVO.setPhone(loginUserInfoVO.getPhone());
+
+        //查询该评论下所有回复内容
+        IPage<ComActDiscussCommentVO> discussCommentList = comActDiscussCommentDAO.getDiscussCommentList(new Page(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO.getId());
+        if (!discussCommentList.getRecords().isEmpty()) {
+            comActDiscussCommentVO.setComActDiscussCommentVOList(discussCommentList.getRecords());
+        }
+        return R.ok(comActDiscussCommentVO);
+    }
+
+    /**
      * 议事投票-评论-置顶
      *
-     * @param id
-     *            主键
+     * @param id 主键
      * @return 置顶结果
      */
     @Override
@@ -333,7 +378,7 @@
         ComActDiscussCommentDO comActDiscussCommentDO1 = new ComActDiscussCommentDO();
         comActDiscussCommentDO1.setIsTopping(0);
         comActDiscussCommentDAO.update(comActDiscussCommentDO1,
-            new UpdateWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, discussId));
+                new UpdateWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, discussId));
         comActDiscussCommentDO1.setIsTopping(1);
         comActDiscussCommentDO1.setId(id);
         int update = comActDiscussCommentDAO.updateById(comActDiscussCommentDO1);
@@ -346,8 +391,7 @@
     /**
      * 议事投票-评论-回复
      *
-     * @param comActDiscussCommentDTO
-     *            回复内容
+     * @param comActDiscussCommentDTO 回复内容
      * @return 回复结果
      */
     @Override
@@ -362,6 +406,10 @@
         if (ObjectUtils.isEmpty(comActDiscussDO)) {
             return R.fail("议事投票不存在");
         }
+        Long parentId = comActDiscussCommentDO.getParentId();
+        if (parentId.intValue() != 0) {
+            return R.fail("二级评论不能回复");
+        }
         Long userId = comActDiscussDO.getUserId();
         Long userId1 = comActDiscussCommentDTO.getUserId();
         ComActDiscussCommentDO comActDiscussCommentDO1 = new ComActDiscussCommentDO();
@@ -374,6 +422,7 @@
         }
         int insert = comActDiscussCommentDAO.insert(comActDiscussCommentDO1);
         if (insert > 0) {
+            comActDiscussDAO.addCommentCount(discussId, 1);
             return R.ok();
         }
         return R.fail();
@@ -382,32 +431,31 @@
     /**
      * 议事投票-评论-分页查询
      *
-     * @param pageComActDiscussCommentDTO
-     *            分页查询参数
+     * @param pageComActDiscussCommentDTO 分页查询参数
      * @return ComActDiscussCommentVO
      */
     @Override
     public R pageDiscussComment(PageComActDiscussCommentDTO pageComActDiscussCommentDTO) {
-        Page page = new Page<>();
-        Long pageNum = pageComActDiscussCommentDTO.getPageNum();
-        Long pageSize = pageComActDiscussCommentDTO.getPageSize();
-        if (null == pageNum || 0 == pageNum) {
-            pageNum = 1l;
-        }
-        if (null == pageSize || 0 == pageSize) {
-            pageSize = 10l;
-        }
-        page.setSize(pageSize);
-        page.setCurrent(pageNum);
-        IPage<ComActDiscussCommentVO> iPage = comActDiscussDAO.pageDiscussComment(page, pageComActDiscussCommentDTO);
+        IPage<ComActDiscussCommentVO> iPage = comActDiscussDAO.pageDiscussComment(new Page<>(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO);
+        return R.ok(iPage);
+    }
+
+    /**
+     * 议事投票-评论-后台分页查询
+     *
+     * @param pageComActDiscussCommentDTO 分页查询参数
+     * @return ComActDiscussCommentVO
+     */
+    @Override
+    public R pageDiscussCommentAdmin(PageComActDiscussCommentDTO pageComActDiscussCommentDTO) {
+        IPage<ComActDiscussCommentVO> iPage = comActDiscussDAO.pageDiscussCommentAdmin(new Page<>(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO);
         return R.ok(iPage);
     }
 
     /**
      * 议事投票-分页查询 小程序
      *
-     * @param pageComActDiscussDTO
-     *            查询参数
+     * @param pageComActDiscussDTO 查询参数
      * @return ComActDiscussVO 分页
      */
     @Override
@@ -432,13 +480,13 @@
                 Long id = comActDiscussVO.getId();
                 if (type.equals(2)) {
                     List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList(
-                        new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id));
+                            new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id));
                     List<ComActDiscussOptionVO> comActDiscussOptionVOS = new ArrayList<>();
                     comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> {
                         Long discussOptionDOId = comActDiscussOptionDO.getId();
                         Integer selectCount =
-                            comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>()
-                                .lambda().eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId));
+                                comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>()
+                                        .lambda().eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId));
                         ComActDiscussOptionVO comActDiscussOptionVO = new ComActDiscussOptionVO();
                         BeanUtils.copyProperties(comActDiscussOptionDO, comActDiscussOptionVO);
                         comActDiscussOptionVO.setNum(selectCount);
@@ -446,7 +494,7 @@
                         if (loginUserId != null) {
                             // 判断选项是否已投票
                             int haveVote =
-                                comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId);
+                                    comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId);
                             comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0);
                         }
                         comActDiscussOptionVOS.add(comActDiscussOptionVO);
@@ -457,8 +505,8 @@
 
                 if (loginUserId != null) {
                     Integer integer = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda()
-                        .eq(ComActDiscussUserDO::getDiscussId, comActDiscussVO.getId())
-                        .eq(ComActDiscussUserDO::getUserId, loginUserId));
+                            .eq(ComActDiscussUserDO::getDiscussId, comActDiscussVO.getId())
+                            .eq(ComActDiscussUserDO::getUserId, loginUserId));
                     if (integer > 0) {
                         comActDiscussVO.setHaveSign(1);
                     } else {
@@ -476,8 +524,7 @@
     /**
      * 议事投票-点赞、取消点赞
      *
-     * @param comActDiscussUserDTO
-     *            操作类型
+     * @param comActDiscussUserDTO 操作类型
      * @return 操作结果
      */
     @Override
@@ -490,8 +537,8 @@
             num = comActDiscussUserDAO.insert(comActDiscussUserDO);
         } else {
             num = comActDiscussUserDAO.delete(new QueryWrapper<ComActDiscussUserDO>().lambda()
-                .eq(ComActDiscussUserDO::getUserId, comActDiscussUserDTO.getUserId())
-                .eq(ComActDiscussUserDO::getDiscussId, comActDiscussUserDTO.getDiscussId()));
+                    .eq(ComActDiscussUserDO::getUserId, comActDiscussUserDTO.getUserId())
+                    .eq(ComActDiscussUserDO::getDiscussId, comActDiscussUserDTO.getDiscussId()));
         }
         if (num > 0) {
             return R.ok();
@@ -502,8 +549,7 @@
     /**
      * 议事投票-评论-分页查询 小程序
      *
-     * @param pageComActDiscussCommentDTO
-     *            分页参数
+     * @param pageComActDiscussCommentDTO 分页参数
      * @return ComActDiscussCommentVO
      */
     @Override
@@ -520,7 +566,7 @@
         page.setSize(pageSize);
         page.setCurrent(pageNum);
         IPage<ComActDiscussCommentVO> iPage =
-            comActDiscussDAO.pageDiscussCommentApplets(page, pageComActDiscussCommentDTO);
+                comActDiscussDAO.pageDiscussCommentApplets(page, pageComActDiscussCommentDTO);
         List<ComActDiscussCommentVO> records = iPage.getRecords();
         if (!ObjectUtils.isEmpty(records)) {
             records.forEach(comActDiscussCommentVO -> {
@@ -532,8 +578,8 @@
                     comActDiscussCommentVOList.forEach(comActDiscussCommentVO1 -> {
                         Long parentId = comActDiscussCommentVO1.getParentId();
                         List<ComActDiscussCommentVO> collect = comActDiscussCommentVOS.stream()
-                            .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId))
-                            .collect(Collectors.toList());
+                                .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId))
+                                .collect(Collectors.toList());
                         if (!ObjectUtils.isEmpty(collect)) {
                             String userName = collect.get(0).getUserName();
                             String userNickName = collect.get(0).getUserNickName();
@@ -541,8 +587,8 @@
                             comActDiscussCommentVO1.setUserNickNameBack(userNickName);
                         }
                         List<ComActDiscussCommentVO> collect1 = records.stream()
-                            .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId))
-                            .collect(Collectors.toList());
+                                .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId))
+                                .collect(Collectors.toList());
                         if (!ObjectUtils.isEmpty(collect1)) {
                             ComActDiscussCommentVO comActDiscussCommentVOFirst = collect1.get(0);
                             String userName = comActDiscussCommentVOFirst.getUserName();
@@ -551,13 +597,13 @@
                             comActDiscussCommentVO1.setUserNickNameBack(userNickName);
                         }
                         if (pageComActDiscussCommentDTO.getLoginUserId() != null
-                            && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) {
+                                && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) {
                             Integer integer = comActDiscussCommentUserDAO
-                                .selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda()
-                                    .eq(ComActDiscussCommentUserDO::getDisscussCommentId,
-                                        comActDiscussCommentVO1.getId())
-                                    .eq(ComActDiscussCommentUserDO::getUserId,
-                                        pageComActDiscussCommentDTO.getLoginUserId()));
+                                    .selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda()
+                                            .eq(ComActDiscussCommentUserDO::getDisscussCommentId,
+                                                    comActDiscussCommentVO1.getId())
+                                            .eq(ComActDiscussCommentUserDO::getUserId,
+                                                    pageComActDiscussCommentDTO.getLoginUserId()));
                             if (integer > 0) {
                                 comActDiscussCommentVO1.setHaveSign(1);
                             } else {
@@ -571,11 +617,11 @@
                     comActDiscussCommentVO.setComActDiscussCommentVOList(comActDiscussCommentVOList);
                 }
                 if (pageComActDiscussCommentDTO.getLoginUserId() != null
-                    && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) {
+                        && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) {
                     Integer integer =
-                        comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda()
-                            .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO.getId())
-                            .eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId()));
+                            comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda()
+                                    .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO.getId())
+                                    .eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId()));
                     if (integer > 0) {
                         comActDiscussCommentVO.setHaveSign(1);
                     } else {
@@ -595,10 +641,8 @@
     /**
      * 议事投票-详情 小程序
      *
-     * @param id
-     *            主键
-     * @param loginUserId
-     *            登录用户主键
+     * @param id          主键
+     * @param loginUserId 登录用户主键
      * @return ComActDiscussVO
      */
     @Override
@@ -610,28 +654,28 @@
         ComActDiscussVO comActDiscussVO = new ComActDiscussVO();
         BeanUtils.copyProperties(comActDiscussDO, comActDiscussVO);
         Integer integer = comActDiscussCommentDAO.selectCount(
-            new QueryWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, id));
+                new QueryWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, id));
         comActDiscussVO.setCommentNum(integer);
         Integer integer1 = comActDiscussUserDAO
-            .selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getDiscussId, id));
+                .selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getDiscussId, id));
         comActDiscussVO.setSignNum(integer1);
         Integer type = comActDiscussVO.getType();
         if (type.equals(2)) {
             List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList(
-                new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id));
+                    new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id));
             List<ComActDiscussOptionVO> comActDiscussOptionVOS = new ArrayList<>();
             comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> {
                 Long discussOptionDOId = comActDiscussOptionDO.getId();
                 Integer selectCount =
-                    comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>().lambda()
-                        .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId));
+                        comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>().lambda()
+                                .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId));
                 ComActDiscussOptionVO comActDiscussOptionVO = new ComActDiscussOptionVO();
                 BeanUtils.copyProperties(comActDiscussOptionDO, comActDiscussOptionVO);
                 comActDiscussOptionVO.setNum(selectCount);
                 if (loginUserId != null && !loginUserId.equals(0L)) {
                     // 判断选项是否已投票
                     int haveVote =
-                        comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId);
+                            comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId);
                     comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0);
                 }
                 comActDiscussOptionVOS.add(comActDiscussOptionVO);
@@ -670,8 +714,7 @@
     /**
      * 议事投票-投票
      *
-     * @param comActDiscussOptionUserDTO
-     *            投票信息
+     * @param comActDiscussOptionUserDTO 投票信息
      * @return 投票结果
      */
     @Override
@@ -688,8 +731,8 @@
         // List<Long> longList=comActDiscussOptionDOS.stream().map(comActDiscussOptionDO1 ->
         // comActDiscussOptionDO1.getId()).collect(Collectors.toList());
         Integer integer = comActDiscussOptionUserDAO.selectCount(
-            new QueryWrapper<ComActDiscussOptionUserDO>().lambda().eq(ComActDiscussOptionUserDO::getUserId, userId)
-                .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionId));
+                new QueryWrapper<ComActDiscussOptionUserDO>().lambda().eq(ComActDiscussOptionUserDO::getUserId, userId)
+                        .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionId));
         if (integer > 0) {
             return R.fail("不要重复投票");
         }
@@ -706,14 +749,13 @@
     /**
      * 议事投票-评论-点赞、取消点赞
      *
-     * @param comActDiscussCommentUserDTO
-     *            评论点赞
+     * @param comActDiscussCommentUserDTO 评论点赞
      * @return 点赞结果
      */
     @Override
     public R putDiscussCommentUser(ComActDiscussCommentUserDTO comActDiscussCommentUserDTO) {
         ComActDiscussCommentDO comActDiscussCommentDO =
-            comActDiscussCommentDAO.selectById(comActDiscussCommentUserDTO.getId());
+                comActDiscussCommentDAO.selectById(comActDiscussCommentUserDTO.getId());
         if (ObjectUtils.isEmpty(comActDiscussCommentDO)) {
             return R.fail("评论不存在");
         }
@@ -726,8 +768,8 @@
             num = comActDiscussCommentUserDAO.insert(comActDiscussCommentUserDO);
         } else {
             num = comActDiscussCommentUserDAO.delete(new QueryWrapper<ComActDiscussCommentUserDO>().lambda()
-                .eq(ComActDiscussCommentUserDO::getUserId, comActDiscussCommentUserDTO.getUserId())
-                .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentUserDTO.getId()));
+                    .eq(ComActDiscussCommentUserDO::getUserId, comActDiscussCommentUserDTO.getUserId())
+                    .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentUserDTO.getId()));
         }
         if (num > 0) {
             return R.ok();
@@ -738,27 +780,26 @@
     /**
      * 工作大屏-议事投票列表
      *
-     * @param discussListDTO
-     *            请求参数
+     * @param discussListDTO 请求参数
      * @return 议事投票列表
      */
     @Override
     public R getScreenDiscussList(ScreenDiscussListDTO discussListDTO) {
         IPage<DiscussListVO> discussListVOIPage = comActDiscussDAO
-            .getScreenDiscussList(new Page(discussListDTO.getPageNum(), discussListDTO.getPageSize()), discussListDTO);
+                .getScreenDiscussList(new Page(discussListDTO.getPageNum(), discussListDTO.getPageSize()), discussListDTO);
         if (!discussListVOIPage.getRecords().isEmpty()) {
             discussListVOIPage.getRecords().forEach(discussListVO -> {
                 // 查询评论数量和点赞数量
                 Integer integer = comActDiscussCommentDAO.selectCount(new QueryWrapper<ComActDiscussCommentDO>()
-                    .lambda().eq(ComActDiscussCommentDO::getDiscussId, discussListVO.getId()));
+                        .lambda().eq(ComActDiscussCommentDO::getDiscussId, discussListVO.getId()));
                 discussListVO.setCommentCount(integer);
                 Integer integer1 = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda()
-                    .eq(ComActDiscussUserDO::getDiscussId, discussListVO.getId()));
+                        .eq(ComActDiscussUserDO::getDiscussId, discussListVO.getId()));
                 discussListVO.setFabulousCount(integer1);
 
                 if (discussListVO.getType().equals(ScreenDiscussListDTO.type.tp)) {// 投票
                     List<ComActDiscussOptionVO> discussOptionList =
-                        comActDiscussDAO.getScreenDiscussOptionList(discussListVO.getId());
+                            comActDiscussDAO.getScreenDiscussOptionList(discussListVO.getId());
                     if (!discussOptionList.isEmpty()) {
                         discussListVO.setDiscussOptionList(discussOptionList);
                     }
@@ -767,4 +808,172 @@
         }
         return R.ok(discussListVOIPage);
     }
+
+    /**
+     * 议事投票后台公布结果
+     *
+     * @param publishResultDTO 请求参数
+     * @return 公布结果
+     */
+    @Override
+    public R publishResultAdmin(ComActDiscussPublishResultDTO publishResultDTO) {
+        ComActDiscussDO discussDO = comActDiscussDAO.selectById(publishResultDTO.getId());
+        if (discussDO == null) {
+            return R.fail("议事投票记录不存在");
+        }
+        Date nowDate = new Date();
+        if (publishResultDTO.getType().equals(ComActDiscussPublishResultDTO.type.add)) {
+            if (!discussDO.getStatus().equals(ComActDiscussDO.status.dgb)) {
+                return R.fail("该议事投票不是待公布状态,不可公布结果操作");
+            }
+            discussDO.setStatus(ComActDiscussDO.status.ygb);
+        }
+        discussDO.setPublishAt(nowDate);
+        discussDO.setPublishResult(publishResultDTO.getResult());
+        discussDO.setUpdateAt(nowDate);
+        discussDO.setPublishBy(publishResultDTO.getUserId());
+        if (comActDiscussDAO.updateById(discussDO) > 0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 议事投票-评论/回复删除
+     *
+     * @param id 评论/回复id
+     * @return 删除结果
+     */
+    @Override
+    public R deleteDiscussCommentAdmin(Long id) {
+        ComActDiscussCommentDO discussCommentDO = comActDiscussCommentDAO.selectById(id);
+        if (discussCommentDO == null) {
+            return R.fail("未查询到该记录");
+        }
+        if (discussCommentDO.getIsDel().equals(ComActDiscussCommentDO.isDelete.yes)) {
+            return R.fail("该记录已被删除");
+        }
+        discussCommentDO.setIsDel(ComActDiscussCommentDO.isDelete.yes);
+        if (comActDiscussCommentDAO.updateById(discussCommentDO) > 0) {
+            ComActDiscussDO discussDO = comActDiscussDAO.selectById(discussCommentDO.getDiscussId());
+            if (discussDO != null) {
+                if (discussDO.getCommentNum() > 0) {
+                    if (discussCommentDO.getParentId().equals(0L)) {
+                        Integer count = comActDiscussCommentDAO.selectCount(new QueryWrapper<ComActDiscussCommentDO>().lambda()
+                                .eq(ComActDiscussCommentDO::getParentId, id).eq(ComActDiscussCommentDO::getIsDel, ComActDiscussCommentDO.isDelete.no));
+                        if (count != null && count > 0 && discussDO.getCommentNum() > count) {
+                            discussDO.setCommentNum(discussDO.getCommentNum() - count);
+                        } else {
+                            discussDO.setCommentNum(discussDO.getCommentNum() - 1);
+                        }
+                        comActDiscussDAO.updateById(discussDO);
+                    } else {
+                        discussDO.setCommentNum(discussDO.getCommentNum() - 1);
+                        comActDiscussDAO.updateById(discussDO);
+                    }
+                }
+            }
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 分页查询评论下回复列表
+     *
+     * @param discussDetailDTO 请求参数
+     * @return 回复列表
+     */
+    @Override
+    public R discussCommentReplyAdmin(ComActDiscussDetailDTO discussDetailDTO) {
+        return R.ok(comActDiscussCommentDAO.getDiscussCommentList(new Page(discussDetailDTO.getPageNum(), discussDetailDTO.getPageSize()), discussDetailDTO.getId()));
+    }
+
+    /**
+     * 查询社区可发布议事投票权限配置
+     *
+     * @param communityId 社区id
+     * @return 社区可发布议事投票权限配置
+     */
+    @Override
+    public R discussJurisdictionGet(Long communityId, Long userId) {
+        List<SysConfDO> confDOList = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>()
+                .eq(SysConfDO::getCommunityId, communityId).orderByDesc(SysConfDO::getCreateAt));
+        if (confDOList == null || confDOList.size() == 0) {
+            SysConfDO sysConfDO = new SysConfDO();
+            sysConfDO.setCode(Constants.DISCUSS_IDENTITY_KEY + communityId);
+            sysConfDO.setName("社区议事投票小程序身份验证参数");
+            sysConfDO.setValue("");// 社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员)
+            sysConfDO.setDescription("社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员)");
+            sysConfDO.setCommunityId(communityId);
+            sysConfDO.setCreateBy(userId);
+            int inserted = sysConfDao.insert(sysConfDO);
+            if (inserted != 1) {
+                throw new ServiceException("添加社区议事投票小程序身份验证参数失败");
+            }
+            confDOList = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>()
+                    .eq(SysConfDO::getCommunityId, communityId)
+                    .orderByDesc(SysConfDO::getCreateAt));
+        }
+        if (confDOList != null && confDOList.size() > 0) {
+            SysConfDO latest = confDOList.get(0);
+            SysConfVO sysConfVO = new SysConfVO();
+            BeanUtils.copyProperties(latest, sysConfVO);
+            return R.ok(sysConfVO.getValue());
+        }
+        return R.ok();
+    }
+
+    /**
+     * 设置当前社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员)
+     *
+     * @param communityId 社区id
+     * @param value       需要设置的参数值
+     * @return 设置结果
+     */
+    @Override
+    public R discussJurisdictionSet(Long communityId, String value) {
+        List<SysConfDO> authConf =
+                sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>().eq(SysConfDO::getCommunityId, communityId)
+                        .eq(SysConfDO::getCode, Constants.DISCUSS_IDENTITY_KEY + communityId).orderByDesc(SysConfDO::getCreateAt));
+        if (authConf != null && authConf.size() > 0) {
+            SysConfDO first = authConf.get(0);
+            first.setValue(value);
+            int updated = sysConfDao.updateById(first);
+            if (updated == 1) {
+                return R.ok();
+            }
+        }
+        return R.fail();
+    }
+
+    /**
+     * 议事投票检测状态定时任务
+     * @return  执行结果
+     */
+    @Override
+    public R timedTaskDiscussInspectStatus() {
+        Date nowDate = new Date();
+        //查询已过开始时间未开始投票列表
+        List<ComActDiscussDO> wksDiscussList = comActDiscussDAO.selectList(new QueryWrapper<ComActDiscussDO>().lambda()
+                .eq(ComActDiscussDO::getType, ComActDiscussDO.type.tp).eq(ComActDiscussDO::getIsDel, ComActDiscussDO.isOk.no)
+                .eq(ComActDiscussDO::getStatus,ComActDiscussDO.status.wks).le(ComActDiscussDO::getStartTime, nowDate));
+        wksDiscussList.forEach(wksDiscuss -> {
+            wksDiscuss.setStatus(ComActDiscussDO.status.jxz);
+            wksDiscuss.setUpdateAt(nowDate);
+            wksDiscuss.setReleaseAt(nowDate);
+            comActDiscussDAO.updateById(wksDiscuss);
+        });
+
+        //查询已过结束时间未结束的投票列表
+        List<ComActDiscussDO> jxzDiscussList = comActDiscussDAO.selectList(new QueryWrapper<ComActDiscussDO>().lambda()
+                .eq(ComActDiscussDO::getType, ComActDiscussDO.type.tp).eq(ComActDiscussDO::getIsDel, ComActDiscussDO.isOk.no)
+                .eq(ComActDiscussDO::getStatus,ComActDiscussDO.status.jxz).le(ComActDiscussDO::getEndTime, nowDate));
+        jxzDiscussList.forEach(jxzDiscuss -> {
+            jxzDiscuss.setStatus(ComActDiscussDO.status.dgb);
+            jxzDiscuss.setUpdateAt(nowDate);
+            comActDiscussDAO.updateById(jxzDiscuss);
+        });
+        return R.ok();
+    }
 }

--
Gitblit v1.7.1