huanghongfa
2021-01-22 04c96f26282f021fcc59b40d6f11f172fc070af8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActDiscussOptionVO;
import com.panzhihua.common.model.vos.community.ComActDiscussVO;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.ComActDiscussOptionService;
import com.panzhihua.service_community.service.ComActDiscussService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
 
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 一起议
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2021-01-22 14:51
 **/
@Service
public class ComActDiscussServiceImpl implements ComActDiscussService {
    @Resource
    private ComActDiscussCommentDAO comActDiscussCommentDAO;
    @Resource
    private ComActDiscussDAO comActDiscussDAO;
    @Resource
    private ComActDiscussOptionUserDAO comActDiscussOptionUserDAO;
    @Resource
    private ComActDiscussUserDAO comActDiscussUserDAO;
    @Resource
    private ComActDiscussOptionDAO comActDiscussOptionDAO;
    @Resource
    private ComActDiscussOptionService comActDiscussOptionService;
 
    /**
     * 一起议-新增
     *
     * @param comActDiscussDTO 新增参数
     * @return 新增结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addDiscuss(ComActDiscussDTO comActDiscussDTO) {
        ComActDiscussDO comActDiscussDO=new ComActDiscussDO();
        BeanUtils.copyProperties(comActDiscussDTO,comActDiscussDO);
        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 "));
            Long comActDiscussDO1Id = comActDiscussDO1.getId();
            Integer type = comActDiscussDTO.getType();
            if (type.intValue()==2) {
                List<String> discussOptions = comActDiscussDTO.getDiscussOptions();
                List<ComActDiscussOptionDO> comActDiscussOptionDOS=new ArrayList<>();
                discussOptions.forEach(s -> {
                    ComActDiscussOptionDO comActDiscussOptionDO=new ComActDiscussOptionDO();
                    comActDiscussOptionDO.setDiscussId(comActDiscussDO1Id);
                    comActDiscussOptionDO.setOptionContent(s);
                    comActDiscussOptionDOS.add(comActDiscussOptionDO);
                });
                comActDiscussOptionService.saveBatch(comActDiscussOptionDOS);
            }
            return R.ok();
        }
        return R.fail();
    }
 
    /**
     * 一起议-详情
     *
     * @param id 主键
     * @return ComActDiscussVO
     */
    @Override
    public R detailDiscuss(Long id) {
        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.intValue()==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);
                comActDiscussOptionVOS.add(comActDiscussOptionVO);
            });
            comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS);
        }
        Long userId = comActDiscussDO.getUserId();
        LoginUserInfoVO loginUserInfoVO=comActDiscussDAO.selectUserByUserId(userId);
        comActDiscussVO.setUserName(loginUserInfoVO.getName());
        return R.ok(comActDiscussVO);
    }
 
    /**
     * 一起议-删除
     *
     * @param id 主键
     * @return 删除结果
     */
    @Override
    public R deleteDiscuss(Long id) {
        int delete = comActDiscussDAO.deleteById(id);
        if (delete>0) {
            return R.ok();
        }
        return R.fail();
    }
}