From 2e64c232ab6b51b2cecf1ee96e1e9b709234f326 Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期六, 21 八月 2021 16:35:14 +0800
Subject: [PATCH] 随手拍改版接口开发

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java |  514 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 508 insertions(+), 6 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 7ca677b..6328de8 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
@@ -1,11 +1,18 @@
 package com.panzhihua.service_community.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.panzhihua.common.model.dtos.community.ComActDiscussDTO;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.dtos.community.*;
+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.*;
 import com.panzhihua.service_community.service.ComActDiscussOptionService;
@@ -14,10 +21,13 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -38,6 +48,8 @@
     @Resource
     private ComActDiscussOptionDAO comActDiscussOptionDAO;
     @Resource
+    private ComActDiscussCommentUserDAO comActDiscussCommentUserDAO;
+    @Resource
     private ComActDiscussOptionService comActDiscussOptionService;
 
     /**
@@ -51,18 +63,24 @@
     public R addDiscuss(ComActDiscussDTO comActDiscussDTO) {
         ComActDiscussDO comActDiscussDO=new ComActDiscussDO();
         BeanUtils.copyProperties(comActDiscussDTO,comActDiscussDO);
+        ComActVO comActVO=comActDiscussDAO.selectCommunity(comActDiscussDTO.getCommunityId());
+        String address = comActDiscussDO.getAddress();
+        if (ObjectUtils.isEmpty(address)) {
+            comActDiscussDO.setAddress(comActVO.getAddress());
+        }
         int insert = comActDiscussDAO.insert(comActDiscussDO);
         if (insert>0) {
-            ComActDiscussDO comActDiscussDO1 = comActDiscussDAO.selectOne(new QueryWrapper<ComActDiscussDO>().lambda().eq(ComActDiscussDO::getSubject, comActDiscussDTO.getSubject()).eq(ComActDiscussDO::getUserId, comActDiscussDTO.getUserId()).last(" order by create_at desc limit 1 "));
+            ComActDiscussDO comActDiscussDO1 = comActDiscussDAO.selectOne(new QueryWrapper<ComActDiscussDO>().lambda().eq(ComActDiscussDO::getDiscussSubject, comActDiscussDTO.getDiscussSubject()).eq(ComActDiscussDO::getUserId, comActDiscussDTO.getUserId()).last(" order by create_at desc limit 1 "));
             Long comActDiscussDO1Id = comActDiscussDO1.getId();
             Integer type = comActDiscussDTO.getType();
-            if (type.intValue()==2) {
-                List<String> discussOptions = comActDiscussDTO.getDiscussOptions();
+            if (type.equals(2)) {
+                List<ComActDiscussOptionDTO> discussOptions = comActDiscussDTO.getDiscussOptions();
                 List<ComActDiscussOptionDO> comActDiscussOptionDOS=new ArrayList<>();
                 discussOptions.forEach(s -> {
                     ComActDiscussOptionDO comActDiscussOptionDO=new ComActDiscussOptionDO();
                     comActDiscussOptionDO.setDiscussId(comActDiscussDO1Id);
-                    comActDiscussOptionDO.setOptionContent(s);
+                    comActDiscussOptionDO.setOptionContent(s.getOptionContent());
+                    comActDiscussOptionDO.setOptionUrl(s.getOptionUrl());
                     comActDiscussOptionDOS.add(comActDiscussOptionDO);
                 });
                 comActDiscussOptionService.saveBatch(comActDiscussOptionDOS);
@@ -91,7 +109,7 @@
         Integer integer1 = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getDiscussId, id));
         comActDiscussVO.setSignNum(integer1);
         Integer type = comActDiscussVO.getType();
-        if (type.intValue()==2) {
+        if (type.equals(2)) {
             List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList(new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id));
             List<ComActDiscussOptionVO> comActDiscussOptionVOS=new ArrayList<>();
             comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> {
@@ -102,11 +120,13 @@
                 comActDiscussOptionVO.setNum(selectCount);
                 comActDiscussOptionVOS.add(comActDiscussOptionVO);
             });
+            comActDiscussOptionVOS.sort(Comparator.comparing(ComActDiscussOptionVO::getNum).reversed());
             comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS);
         }
         Long userId = comActDiscussDO.getUserId();
         LoginUserInfoVO loginUserInfoVO=comActDiscussDAO.selectUserByUserId(userId);
         comActDiscussVO.setUserName(loginUserInfoVO.getName());
+
         return R.ok(comActDiscussVO);
     }
 
@@ -124,4 +144,486 @@
         }
         return R.fail();
     }
+    /**
+     * 一起议-回复
+     * @param comActDiscussCommentDTO 评论内容
+     * @return 回复结果
+     */
+    @Override
+    public R addDiscussComment(ComActDiscussCommentDTO comActDiscussCommentDTO) {
+        Long discussId = comActDiscussCommentDTO.getDiscussId();
+        ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(discussId);
+        if (ObjectUtils.isEmpty(comActDiscussDO)) {
+            return R.fail("一起议不存在");
+        }
+        ComActDiscussCommentDO comActDiscussCommentDO=new ComActDiscussCommentDO();
+        BeanUtils.copyProperties(comActDiscussCommentDTO,comActDiscussCommentDO);
+        Long userId = comActDiscussCommentDTO.getUserId();
+        Long userId1 = comActDiscussDO.getUserId();
+        if (userId.equals(userId1)) {
+            comActDiscussCommentDO.setIsAuthor(1);
+        }
+        int insert = comActDiscussCommentDAO.insert(comActDiscussCommentDO);
+        if (insert>0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 一起议-分页查询
+     *
+     * @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);
+        return R.ok(iPage);
+
+    }
+
+    /**
+     * 一起议-评论-查看
+     *
+     * @param id 主键
+     * @return 详情 ComActDiscussCommentVO
+     */
+    @Override
+    public R detailDiscusscomment(Long id) {
+        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());
+        return R.ok(comActDiscussCommentVO);
+    }
+
+    /**
+     * 一起议-评论-置顶
+     *
+     * @param id 主键
+     * @return 置顶结果
+     */
+    @Override
+    public R putDiscussCommentTop(Long id) {
+        ComActDiscussCommentDO comActDiscussCommentDO = comActDiscussCommentDAO.selectById(id);
+        if (ObjectUtils.isEmpty(comActDiscussCommentDO)) {
+            return R.fail("评论不存在");
+        }
+        Long parentId = comActDiscussCommentDO.getParentId();
+        if (parentId.intValue()!=0) {
+            return R.fail("二级评论不能置顶");
+        }
+        Long discussId = comActDiscussCommentDO.getDiscussId();
+        ComActDiscussCommentDO comActDiscussCommentDO1=new ComActDiscussCommentDO();
+        comActDiscussCommentDO1.setIsTopping(0);
+        comActDiscussCommentDAO.update(comActDiscussCommentDO1,new UpdateWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId,discussId));
+        comActDiscussCommentDO1.setIsTopping(1);
+        comActDiscussCommentDO1.setId(id);
+        int update = comActDiscussCommentDAO.updateById(comActDiscussCommentDO1);
+        if (update>0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 一起议-评论-回复
+     *
+     * @param comActDiscussCommentDTO 回复内容
+     * @return 回复结果
+     */
+    @Override
+    public R addDiscussCommentBack(ComActDiscussCommentDTO comActDiscussCommentDTO) {
+        Long id = comActDiscussCommentDTO.getId();
+        ComActDiscussCommentDO comActDiscussCommentDO = comActDiscussCommentDAO.selectById(id);
+        if (ObjectUtils.isEmpty(comActDiscussCommentDO)) {
+            return R.fail("评论不存在");
+        }
+        Long discussId = comActDiscussCommentDO.getDiscussId();
+        ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(discussId);
+        if (ObjectUtils.isEmpty(comActDiscussDO)) {
+            return R.fail("一起议不存在");
+        }
+        Long userId = comActDiscussDO.getUserId();
+        Long userId1=comActDiscussCommentDTO.getUserId();
+        ComActDiscussCommentDO comActDiscussCommentDO1=new ComActDiscussCommentDO();
+        comActDiscussCommentDO1.setDiscussId(discussId);
+        comActDiscussCommentDO1.setComment(comActDiscussCommentDTO.getComment());
+        comActDiscussCommentDO1.setUserId(comActDiscussCommentDTO.getUserId());
+        comActDiscussCommentDO1.setParentId(id);
+        if (userId.equals(userId1)) {
+            comActDiscussCommentDO1.setIsAuthor(1);
+        }
+        int insert = comActDiscussCommentDAO.insert(comActDiscussCommentDO1);
+        if (insert>0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 一起议-评论-分页查询
+     *
+     * @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);
+        return R.ok(iPage);
+    }
+
+    /**
+     * 一起议-分页查询 小程序
+     *
+     * @param pageComActDiscussDTO 查询参数
+     * @return ComActDiscussVO 分页
+     */
+    @Override
+    public R pageDiscussApplets(PageComActDiscussDTO pageComActDiscussDTO) {
+        Page page = new Page<>();
+        Long pageNum = pageComActDiscussDTO.getPageNum();
+        Long pageSize = pageComActDiscussDTO.getPageSize();
+        Long loginUserId = pageComActDiscussDTO.getLoginUserId();
+        if (null==pageNum||0==pageNum) {
+            pageNum = 1l;
+        }
+        if (null==pageSize||0==pageSize) {
+            pageSize = 10l;
+        }
+        page.setSize(pageSize);
+        page.setCurrent(pageNum);
+        IPage<ComActDiscussVO> iPage = comActDiscussDAO.pageDiscussApplets(page, pageComActDiscussDTO);
+        List<ComActDiscussVO> records = iPage.getRecords();
+        if (!ObjectUtils.isEmpty(records)) {
+            records.forEach(comActDiscussVO -> {
+                Integer type = comActDiscussVO.getType();
+                Long id = comActDiscussVO.getId();
+                if (type.equals(2)) {
+                    List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList(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));
+                        ComActDiscussOptionVO comActDiscussOptionVO=new ComActDiscussOptionVO();
+                        BeanUtils.copyProperties(comActDiscussOptionDO,comActDiscussOptionVO);
+                        comActDiscussOptionVO.setNum(selectCount);
+
+                        if(loginUserId != null){
+                            //判断选项是否已投票
+                            int haveVote=comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(),loginUserId);
+                            comActDiscussOptionVO.setHaveVote(haveVote>0?1:0);
+                        }
+                        comActDiscussOptionVOS.add(comActDiscussOptionVO);
+                    });
+                    comActDiscussOptionVOS.sort(Comparator.comparing(ComActDiscussOptionVO::getNum).reversed());
+                    comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS);
+                }
+
+                if(loginUserId != null){
+                    Integer integer = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getDiscussId, comActDiscussVO.getId()).eq(ComActDiscussUserDO::getUserId, loginUserId));
+                    if (integer>0) {
+                        comActDiscussVO.setHaveSign(1);
+                    }else{
+                        comActDiscussVO.setHaveSign(0);
+                    }
+                    //判断是否已经投票
+                    int haveVote=comActDiscussOptionUserDAO.selectHaveVote(id,loginUserId);
+                    comActDiscussVO.setHaveVote(haveVote>0?1:0);
+                }
+            });
+        }
+        return R.ok(iPage);
+    }
+
+    /**
+     * 一起议-点赞、取消点赞
+     *
+     * @param comActDiscussUserDTO 操作类型
+     * @return 操作结果
+     */
+    @Override
+    public R putDiscussUser(ComActDiscussUserDTO comActDiscussUserDTO) {
+        Integer type = comActDiscussUserDTO.getType();
+        int num=0;
+        ComActDiscussUserDO comActDiscussUserDO=new ComActDiscussUserDO();
+        BeanUtils.copyProperties(comActDiscussUserDTO,comActDiscussUserDO);
+        if (type.intValue()==1) {
+            num= comActDiscussUserDAO.insert(comActDiscussUserDO);
+        }else{
+            num= comActDiscussUserDAO.delete(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getUserId,comActDiscussUserDTO.getUserId()).eq(ComActDiscussUserDO::getDiscussId,comActDiscussUserDTO.getDiscussId()));
+        }
+        if (num>0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 一起议-评论-分页查询 小程序
+     *
+     * @param pageComActDiscussCommentDTO 分页参数
+     * @return ComActDiscussCommentVO
+     */
+    @Override
+    public R pageDiscussCommentApplets(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.pageDiscussCommentApplets(page, pageComActDiscussCommentDTO);
+        List<ComActDiscussCommentVO> records = iPage.getRecords();
+        if (!ObjectUtils.isEmpty(records)) {
+            records.forEach(comActDiscussCommentVO -> {
+                List<ComActDiscussCommentVO> comActDiscussCommentVOList=new ArrayList<>();
+                Long id = comActDiscussCommentVO.getId();
+                comActDiscussCommentVOList=comActDiscussCommentDAO.selectChilds(id);
+                if (!ObjectUtils.isEmpty(comActDiscussCommentVOList)) {
+                    List<ComActDiscussCommentVO> comActDiscussCommentVOS=comActDiscussCommentVOList;
+                    comActDiscussCommentVOList.forEach(comActDiscussCommentVO1 -> {
+                        Long parentId = comActDiscussCommentVO1.getParentId();
+                        List<ComActDiscussCommentVO> collect = comActDiscussCommentVOS.stream().filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)).collect(Collectors.toList());
+                        if (!ObjectUtils.isEmpty(collect)) {
+                            String userName = collect.get(0).getUserName();
+                            comActDiscussCommentVO1.setUserNameBack(userName);
+                        }
+                        List<ComActDiscussCommentVO> collect1 = records.stream().filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)).collect(Collectors.toList());
+                        if (!ObjectUtils.isEmpty(collect1)) {
+                            ComActDiscussCommentVO comActDiscussCommentVOFirst = collect1.get(0);
+                            String userName = comActDiscussCommentVOFirst.getUserName();
+                            String userNickName = comActDiscussCommentVOFirst.getUserNickName();
+                            comActDiscussCommentVO1.setUserNameBack(userName);
+                            comActDiscussCommentVO1.setUserNickNameBack(userNickName);
+                        }
+                        if(pageComActDiscussCommentDTO.getLoginUserId() != null && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)){
+                            Integer integer = comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda().eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO1.getId()).eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId()));
+                            if (integer>0) {
+                                comActDiscussCommentVO1.setHaveSign(1);
+                            }else {
+                                comActDiscussCommentVO1.setHaveSign(0);
+                            }
+                        }
+                        if(StringUtils.isEmpty(comActDiscussCommentVO1.getUserNickNameBack())){
+                            comActDiscussCommentVO1.setUserNickNameBack("社区管理员");
+                        }
+                    });
+                    comActDiscussCommentVO.setComActDiscussCommentVOList(comActDiscussCommentVOList);
+                }
+                if(pageComActDiscussCommentDTO.getLoginUserId() != null && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)){
+                    Integer integer = comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda().eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO.getId()).eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId()));
+                    if (integer>0) {
+                        comActDiscussCommentVO.setHaveSign(1);
+                    }else {
+                        comActDiscussCommentVO.setHaveSign(0);
+                    }
+                }
+
+                //判断当前评论是否是社区管理员评论
+                if(!comActDiscussCommentVO.getUserType().equals(1)){
+                    comActDiscussCommentVO.setUserNickName("社区管理员");
+                }
+            });
+        }
+        return R.ok(iPage);
+    }
+
+    /**
+     * 一起议-详情 小程序
+     *
+     * @param id 主键
+     * @param loginUserId 登录用户主键
+     * @return ComActDiscussVO
+     */
+    @Override
+    public R detailDiscussApplets(Long id, Long loginUserId) {
+        ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(id);
+        if (ObjectUtils.isEmpty(comActDiscussDO)) {
+            return R.fail("一起议不存在");
+        }
+        ComActDiscussVO comActDiscussVO=new ComActDiscussVO();
+        BeanUtils.copyProperties(comActDiscussDO,comActDiscussVO);
+        Integer integer = comActDiscussCommentDAO.selectCount(new QueryWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, id));
+        comActDiscussVO.setCommentNum(integer);
+        Integer integer1 = comActDiscussUserDAO.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));
+            List<ComActDiscussOptionVO> comActDiscussOptionVOS=new ArrayList<>();
+            comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> {
+                Long discussOptionDOId = comActDiscussOptionDO.getId();
+                Integer selectCount = 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);
+                    comActDiscussOptionVO.setHaveVote(haveVote>0?1:0);
+                }
+                comActDiscussOptionVOS.add(comActDiscussOptionVO);
+            });
+            comActDiscussOptionVOS.sort(Comparator.comparing(ComActDiscussOptionVO::getNum).reversed());
+            comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS);
+        }
+        Long userId = comActDiscussDO.getUserId();
+        LoginUserInfoVO loginUserInfoVO=comActDiscussDAO.selectUserByUserId(userId);
+        if(loginUserInfoVO != null){
+            comActDiscussVO.setUserName(loginUserInfoVO.getName());
+            if(StringUtils.isEmpty(loginUserInfoVO.getNickName())){
+                comActDiscussVO.setUserNickName(loginUserInfoVO.getName());
+            }else{
+                comActDiscussVO.setUserNickName(loginUserInfoVO.getNickName());
+            }
+            comActDiscussVO.setImageUrl(loginUserInfoVO.getImageUrl());
+            comActDiscussVO.setUserType(loginUserInfoVO.getType());
+        }
+        Long communityId = comActDiscussDO.getCommunityId();
+        Integer type1 = loginUserInfoVO.getType();
+        if (type1.intValue()>1) {
+            ComActVO comActVO=comActDiscussDAO.selectCommunity(communityId);
+            comActDiscussVO.setUserName(comActVO.getName());
+            comActDiscussVO.setUserNickName(comActVO.getName());
+        }
+        if(loginUserId != null && !loginUserId.equals(0L)){
+            ComActDiscussVO comActDiscussVO1=comActDiscussDAO.selectHaveSignAndHaveVote(id,loginUserId);
+            comActDiscussVO.setHaveSign(comActDiscussVO1.getHaveSign());
+            comActDiscussVO.setHaveVote(comActDiscussVO1.getHaveVote());
+        }
+
+        return R.ok(comActDiscussVO);
+    }
+
+    /**
+     * 一起议-投票
+     *
+     * @param comActDiscussOptionUserDTO 投票信息
+     * @return 投票结果
+     */
+    @Override
+    public R addDiscussOptionUser(ComActDiscussOptionUserDTO comActDiscussOptionUserDTO) {
+        Long discussOptionId = comActDiscussOptionUserDTO.getDiscussOptionId();
+        Long userId = comActDiscussOptionUserDTO.getUserId();
+        ComActDiscussOptionDO comActDiscussOptionDO = comActDiscussOptionDAO.selectById(discussOptionId);
+        if (ObjectUtils.isEmpty(comActDiscussOptionDO)) {
+            return R.fail("选项不存在");
+        }
+//        Long discussId = comActDiscussOptionDO.getDiscussId();
+//        List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList(new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, discussId));
+//        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));
+        if (integer>0) {
+            return R.fail("不要重复投票");
+        }
+        ComActDiscussOptionUserDO comActDiscussOptionUserDO=new ComActDiscussOptionUserDO();
+        comActDiscussOptionUserDO.setUserId(userId);
+        comActDiscussOptionUserDO.setDiscussOptionId(discussOptionId);
+        int insert = comActDiscussOptionUserDAO.insert(comActDiscussOptionUserDO);
+        if (insert>0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 一起议-评论-点赞、取消点赞
+     *
+     * @param comActDiscussCommentUserDTO 评论点赞
+     * @return 点赞结果
+     */
+    @Override
+    public R putDiscussCommentUser(ComActDiscussCommentUserDTO comActDiscussCommentUserDTO) {
+        ComActDiscussCommentDO comActDiscussCommentDO = comActDiscussCommentDAO.selectById(comActDiscussCommentUserDTO.getId());
+        if (ObjectUtils.isEmpty(comActDiscussCommentDO)) {
+            return R.fail("评论不存在");
+        }
+        Integer type = comActDiscussCommentUserDTO.getType();
+        int num=0;
+        if (type.intValue()==1) {
+            ComActDiscussCommentUserDO comActDiscussCommentUserDO=new ComActDiscussCommentUserDO();
+            comActDiscussCommentUserDO.setUserId(comActDiscussCommentUserDTO.getUserId());
+            comActDiscussCommentUserDO.setDisscussCommentId(comActDiscussCommentUserDTO.getId());
+            num=comActDiscussCommentUserDAO.insert(comActDiscussCommentUserDO);
+        } else {
+            num=comActDiscussCommentUserDAO.delete(new QueryWrapper<ComActDiscussCommentUserDO>().lambda().eq(ComActDiscussCommentUserDO::getUserId,comActDiscussCommentUserDTO.getUserId()).eq(ComActDiscussCommentUserDO::getDisscussCommentId,comActDiscussCommentUserDTO.getId()));
+        }
+        if (num>0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 工作大屏-一起议列表
+     * @param discussListDTO    请求参数
+     * @return  一起议列表
+     */
+    @Override
+    public R getScreenDiscussList(ScreenDiscussListDTO discussListDTO){
+        IPage<DiscussListVO> discussListVOIPage = comActDiscussDAO.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()));
+                discussListVO.setCommentCount(integer);
+                Integer integer1 = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getDiscussId, discussListVO.getId()));
+                discussListVO.setFabulousCount(integer1);
+
+                if(discussListVO.getType().equals(ScreenDiscussListDTO.type.tp)){//投票
+                    List<ComActDiscussOptionVO> discussOptionList = comActDiscussDAO.getScreenDiscussOptionList(discussListVO.getId());
+                    if(!discussOptionList.isEmpty()){
+                        discussListVO.setDiscussOptionList(discussOptionList);
+                    }
+                }
+            });
+        }
+        return R.ok(discussListVOIPage);
+    }
 }

--
Gitblit v1.7.1