罗元桥
2021-06-22 c6512655e722d9ca80dd8c34b79f6d3923ecf86c
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
package com.panzhihua.service_community.dao;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO;
import com.panzhihua.common.model.dtos.community.PageComActDiscussDTO;
import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
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.common.model.vos.screen.CarouselInfoVO;
import com.panzhihua.service_community.model.dos.ComActDiscussDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
import java.util.List;
import java.util.Map;
 
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 一起议
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2021-01-22 14:49
 **/
@Mapper
public interface ComActDiscussDAO extends BaseMapper<ComActDiscussDO> {
    //    @Select("<script> " +
//            " <where>" +
//            "<if test='nameCn != null and nameCn.trim() != &quot;&quot;'>" +
//            " </if> " +
//            "<if test='nameCn != null and nameCn.trim() != &quot;&quot;'>" +
//            " </if> " +
//            "<if test='nameCn != null and nameCn.trim() != &quot;&quot;'>" +
//            " </if> " +
//            " </where>" +
//            "</script>")
    @Select("select type,name,phone,image_url,nick_name from sys_user where user_id=#{userId}")
    LoginUserInfoVO selectUserByUserId(Long userId);
    @Select("<script> " +
            "select t.* from ("+
            "SELECT " +
            "d.id, " +
            "d.`discuss_subject`, " +
            "d.type, " +
            "COUNT( DISTINCT c.id ) commentNum, " +
            "u.name userName, " +
            "u.nick_name userNickName, " +
            "d.create_at  " +
            "FROM " +
            "com_act_discuss d " +
            "JOIN sys_user u ON d.user_id = u.user_id " +
            "LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id  " +
            " where d.community_id=#{pageComActDiscussDTO.communityId}" +
            "<if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != &quot;&quot;'>" +
            " and d.`discuss_subject` LIKE concat( #{pageComActDiscussDTO.subject}, '%' )  " +
            " </if> " +
            "<if test='pageComActDiscussDTO.begin != null '>" +
            "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin}  " +
            "AND #{pageComActDiscussDTO.end}  " +
            " </if> " +
            "GROUP BY " +
            "d.id" +
            ")t order by t.create_at desc "+
            "</script>")
    IPage<ComActDiscussVO> pageDiscuss(Page page, @Param("pageComActDiscussDTO") PageComActDiscussDTO pageComActDiscussDTO);
 
    @Select("<script> " +
            "select * from ("+
            "SELECT " +
            "u.`name` userName, " +
            "u.nick_name userNickName, " +
            "u.phone, " +
            "c.`comment`, " +
            "c.`parent_id`, " +
            "COUNT(DISTINCT  cu.id ) num, " +
            "c.create_at, " +
            "c.id  " +
            "FROM " +
            "com_act_discuss_comment c " +
            "JOIN sys_user u ON c.user_id = u.user_id  " +
            "<if test='pageComActDiscussCommentDTO.name != null and pageComActDiscussCommentDTO.name.trim() != &quot;&quot;'>" +
            "AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' )  " +
            " </if> " +
            "<if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != &quot;&quot;'>" +
            "AND u.phone LIKE concat( #{pageComActDiscussCommentDTO.account}, '%' ) " +
            " </if> " +
            "LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id  " +
            " where c.discuss_id=#{pageComActDiscussCommentDTO.id}" +
            "<if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != &quot;&quot;'>" +
            " and c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment" +
            "}, '%' )  " +
            " </if> " +
            "GROUP BY " +
            "c.id " +
            ")t order by t.create_at desc"+
            "</script>")
    IPage<ComActDiscussCommentVO> pageDiscussComment(Page page, @Param("pageComActDiscussCommentDTO")PageComActDiscussCommentDTO pageComActDiscussCommentDTO);
    @Select("<script> " +
            "select t.* from ("+
            "SELECT " +
            "d.id, " +
            "d.vote_title, " +
            "if(d.address is null or d.address='null',a.name,d.address )address, " +
            "d.photo_pah, " +
            "d.`discuss_subject`, " +
            "d.type, " +
            "COUNT( DISTINCT c.id ) commentNum, " +
            "COUNT( DISTINCT du.id ) signNum, " +
            "if(u.type=1,u.name,a.name) userName, " +
            "if(u.type=1,u.nick_name,a.name) userNickName, " +
            "if(du.id is not null,1,0) haveSign, " +
            "if(ou.id is not null,1,0) haveVote, " +
            "u.image_url, " +
            "d.create_at  " +
            "FROM " +
            "com_act_discuss d " +
            "JOIN sys_user u ON d.user_id = u.user_id " +
            "JOIN com_act a ON d.community_id = a.community_id " +
            "LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id  " +
            "LEFT JOIN com_act_discuss_user du ON d.id = du.discuss_id  " +
            "LEFT JOIN com_act_discuss_option do ON d.id = do.discuss_id  " +
            "LEFT JOIN com_act_discuss_option_user ou on do.id=ou.discuss_option_id and ou.user_id=#{pageComActDiscussDTO.loginUserId} " +
            " where d.community_id=#{pageComActDiscussDTO.communityId}" +
            "<if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != &quot;&quot;'>" +
            " and d.`discuss_subject` LIKE concat( #{pageComActDiscussDTO.subject}, '%' )  " +
            " </if> " +
            "<if test='pageComActDiscussDTO.userId != null and pageComActDiscussDTO.userId !=0 '>" +
            " and d.`user_id` = #{pageComActDiscussDTO.userId}  " +
            " </if> " +
            "<if test='pageComActDiscussDTO.begin != null '>" +
            "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin}  " +
            "AND #{pageComActDiscussDTO.end}  " +
            " </if> " +
            "GROUP BY " +
            "d.id" +
            ")t order by t.create_at desc "+
            "</script>")
    IPage<ComActDiscussVO> pageDiscussApplets(Page page, @Param("pageComActDiscussDTO")PageComActDiscussDTO pageComActDiscussDTO);
    @Select("<script> " +
            "select * from ("+
            "SELECT " +
            "u.`name` userName, " +
            "u.nick_name userNickName, " +
            "u.`image_url`, " +
            "u.phone, " +
            "c.`comment`, " +
            "c.`parent_id`, " +
            "c.`is_author`, " +
            "c.`is_topping`, " +
            "COUNT( cu.id ) num, " +
            "c.create_at, " +
            "c.id  " +
            "FROM " +
            "com_act_discuss_comment c " +
            "JOIN sys_user u ON c.user_id = u.user_id  " +
            "JOIN com_act_discuss d ON c.discuss_id = d.id  " +
            "<if test='pageComActDiscussCommentDTO.name != null and pageComActDiscussCommentDTO.name.trim() != &quot;&quot;'>" +
            "AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' )  " +
            " </if> " +
            "<if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != &quot;&quot;'>" +
            "AND u.phone LIKE concat( #{pageComActDiscussCommentDTO.account}, '%' ) " +
            " </if> " +
            "LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id  " +
            " where c.discuss_id=#{pageComActDiscussCommentDTO.id} and parent_id=0 " +
            "<if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != &quot;&quot;'>" +
            " and c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment" +
            "}, '%' )  " +
            " </if> " +
            "GROUP BY " +
            "c.id " +
            ")t order by t.is_topping desc , t.create_at desc"+
            "</script>")
    IPage<ComActDiscussCommentVO> pageDiscussCommentApplets(Page page, @Param("pageComActDiscussCommentDTO")PageComActDiscussCommentDTO pageComActDiscussCommentDTO);
 
    @Select("select name,address from com_act where community_id=#{communityId}")
    ComActVO selectCommunity(Long communityId);
 
    @Select("SELECT  " +
            "if(du.id is not null,1,0)haveSign, " +
            "if(ou.id is not null,1,0)haveVote " +
            "FROM " +
            "com_act_discuss d  " +
            "LEFT JOIN com_act_discuss_user du on d.id=du.discuss_id and du.`user_id`=#{loginUserId} " +
            "LEFT JOIN com_act_discuss_option op on d.id=op.discuss_id " +
            "LEFT JOIN com_act_discuss_option_user ou on op.id=ou.discuss_option_id and ou.user_id=#{loginUserId} " +
            "WHERE " +
            "d.id =#{id} " +
            "GROUP BY d.id")
    ComActDiscussVO selectHaveSignAndHaveVote(@Param("id") Long id, @Param("loginUserId")Long loginUserId);
 
    @Select(" SELECT COUNT(id) AS totalNum," +
            "(SELECT COUNT(id)  FROM com_act_discuss WHERE community_id = 2 AND create_at LIKE CONCAT('','%'))AS currentNum," +
            "(SELECT COUNT(id)  FROM com_act_discuss WHERE community_id = 2 AND TYPE = 1)AS imgNum," +
            "(" +
            "SELECT COUNT(DISTINCT(user_id)) FROM (" +
            " SELECT c.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id WHERE d.community_id = 2 AND d.type = 1 " +
            " UNION ALL " +
            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id INNER JOIN com_act_discuss_comment_user u ON c.id = u.disscuss_comment_id  WHERE d.community_id = 2 AND d.type = 1 " +
            "UNION ALL "  +
            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_option o ON d.id = o.discuss_id INNER JOIN com_act_discuss_option_user u ON o.id = u.discuss_option_id  WHERE d.community_id = 2 AND d.type = 1 " +
            " UNION ALL " +
            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_user u ON d.id = u.discuss_id WHERE d.community_id = 2 AND d.type = 1 " +
            ")d " +
            ")AS commonPeopleNum," +
            "(" +
            "SELECT COUNT(DISTINCT(user_id)) FROM (" +
            " SELECT c.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id WHERE d.community_id = 2 AND d.type = 2 " +
            " UNION ALL" +
            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id INNER JOIN com_act_discuss_comment_user u ON c.id = u.disscuss_comment_id  WHERE d.community_id = 2 AND d.type = 2 " +
            "UNION ALL " +
            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_option o ON d.id = o.discuss_id INNER JOIN com_act_discuss_option_user u ON o.id = u.discuss_option_id  WHERE d.community_id = 2 AND d.type = 2 " +
            " UNION ALL " +
            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_user u ON d.id = u.discuss_id WHERE d.community_id = 2 AND d.type = 2 " +
            ")d " +
            ")AS volunteerPeopleNum " +
            " FROM com_act_discuss")
    Map<String, Long> countByCommunityId(@Param("communityId")Long communityId, @Param("date")String date);
 
    @Select(" SELECT id,discuss_subject AS content,IF(type = 1,'图文','投票') AS typeName FROM com_act_discuss WHERE community_id = #{communityId} ORDER BY create_at DESC LIMIT #{pageSize}")
    List<CarouselInfoVO> screenDiscuss(@Param("communityId") Long communityId, @Param("pageSize")Integer pageSize);
 
    @Select("<script> " +
            "SELECT " +
            " cad.id, " +
            " su.nick_name AS userName, " +
            " su.image_url, " +
            " cad.create_at, " +
            " cad.type, " +
            " cad.discuss_subject, " +
            " cad.photo_pah  " +
            "FROM " +
            " com_act_discuss AS cad " +
            " LEFT JOIN sys_user AS su ON su.user_id = cad.user_id  " +
            " <where> "+
            "<if test='discussListDTO.communityId != null '>" +
            " and cad.community_id = #{discussListDTO.communityId} " +
            " </if> " +
            "<if test='discussListDTO.startTime!=null and discussListDTO.startTime != &quot;&quot;'>" +
            " AND DATE_FORMAT(cad.create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{discussListDTO.startTime} " +
            " </if> " +
            "<if test='discussListDTO.endTime!=null and discussListDTO.endTime != &quot;&quot;'>" +
            " AND DATE_FORMAT(cad.create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{discussListDTO.endTime} " +
            " </if> " +
            "<if test='discussListDTO.type!=null'>" +
            " AND cad.type = #{discussListDTO.type} " +
            " </if> " +
            " </where> "+
            "ORDER BY " +
            " cad.create_at DESC " +
            " </script>")
    IPage<DiscussListVO> getScreenDiscussList(Page page, @Param("discussListDTO") ScreenDiscussListDTO discussListDTO);
 
    @Select("SELECT id, discuss_id, create_at, option_content" +
            ",( SELECT count( id ) FROM com_act_discuss_option_user WHERE discuss_option_id = c.id ) AS num " +
            " FROM " +
            " com_act_discuss_option AS c " +
            " WHERE c.discuss_id = #{discussId}" +
            " ORDER BY " +
            " num DESC")
    List<ComActDiscussOptionVO> getScreenDiscussOptionList(@Param("discussId") Long discussId);
}