huanghongfa
2021-01-24 cb07aef10f307403e2d8b3249bb9b7de7f3d295f
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
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.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.community.ComActDiscussCommentVO;
import com.panzhihua.common.model.vos.community.ComActDiscussVO;
import com.panzhihua.common.model.vos.community.ComActVO;
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;
 
/**
 * @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 from sys_user where user_id=#{userId}")
    LoginUserInfoVO selectUserByUserId(Long userId);
    @Select("<script> " +
            "select t.* from ("+
            "SELECT\n" +
            "d.id,\n" +
            "d.`discuss_subject`,\n" +
            "d.type,\n" +
            "COUNT( DISTINCT c.id ) commentNum,\n" +
            "u.name userName,\n" +
            "d.create_at \n" +
            "FROM\n" +
            "com_act_discuss d\n" +
            "JOIN sys_user u ON d.user_id = u.user_id\n" +
            "LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id \n" +
            " 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}, '%' ) \n" +
            " </if> " +
            "<if test='pageComActDiscussDTO.begin != null '>" +
            "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} \n" +
            "AND #{pageComActDiscussDTO.end} \n" +
            " </if> " +
            "GROUP BY\n" +
            "d.id" +
            ")t order by t.create_at desc "+
            "</script>")
    IPage<ComActDiscussVO> pageDiscuss(Page page, @Param("pageComActDiscussDTO") PageComActDiscussDTO pageComActDiscussDTO);
 
    @Select("<script> " +
            "select * from ("+
            "SELECT\n" +
            "u.`name` userName,\n" +
            "u.phone,\n" +
            "c.`comment`,\n" +
            "c.`parent_id`,\n" +
            "COUNT(DISTINCT  cu.id ) num,\n" +
            "c.create_at,\n" +
            "c.id \n" +
            "FROM\n" +
            "com_act_discuss_comment c\n" +
            "JOIN sys_user u ON c.user_id = u.user_id \n" +
            "<if test='pageComActDiscussCommentDTO.name != null and pageComActDiscussCommentDTO.name.trim() != &quot;&quot;'>" +
            "AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' ) \n" +
            " </if> " +
            "<if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != &quot;&quot;'>" +
            "AND u.phone LIKE concat( #{pageComActDiscussCommentDTO.account}, '%' )\n" +
            " </if> " +
            "LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id \n" +
            " where c.discuss_id=#{pageComActDiscussCommentDTO.id}" +
            "<if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != &quot;&quot;'>" +
            " and c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment" +
            "}, '%' ) \n" +
            " </if> " +
            "GROUP BY\n" +
            "c.id\n" +
            ")t order by t.create_at desc"+
            "</script>")
    IPage<ComActDiscussCommentVO> pageDiscussComment(Page page, @Param("pageComActDiscussCommentDTO")PageComActDiscussCommentDTO pageComActDiscussCommentDTO);
    @Select("<script> " +
            "select t.* from ("+
            "SELECT\n" +
            "d.id,\n" +
            "d.vote_title,\n" +
            "d.address,\n" +
            "d.photo_pah,\n" +
            "d.`discuss_subject`,\n" +
            "d.type,\n" +
            "COUNT( DISTINCT c.id ) commentNum,\n" +
            "COUNT( DISTINCT du.id ) signNum,\n" +
            "if(u.type=1,u.name,a.name) userName,\n" +
            "if(du.id is not null,1,0) haveSign,\n" +
            "if(ou.id is not null,1,0) haveVote,\n" +
            "u.image_url,\n" +
            "d.create_at \n" +
            "FROM\n" +
            "com_act_discuss d\n" +
            "JOIN sys_user u ON d.user_id = u.user_id\n" +
            "JOIN com_act a ON d.community_id = a.community_id\n" +
            "LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id \n" +
            "LEFT JOIN com_act_discuss_user du ON d.id = du.discuss_id \n" +
            "LEFT JOIN com_act_discuss_option do ON d.id = do.discuss_id \n" +
            "LEFT JOIN com_act_discuss_option_user ou on do.id=ou.discuss_option_id and ou.user_id=#{pageComActDiscussDTO.loginUserId}\n" +
            " 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}, '%' ) \n" +
            " </if> " +
            "<if test='pageComActDiscussDTO.userId != null and pageComActDiscussDTO.userId !=0 '>" +
            " and d.`user_id` = #{pageComActDiscussDTO.userId} \n" +
            " </if> " +
            "<if test='pageComActDiscussDTO.begin != null '>" +
            "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} \n" +
            "AND #{pageComActDiscussDTO.end} \n" +
            " </if> " +
            "GROUP BY\n" +
            "d.id" +
            ")t order by t.create_at desc "+
            "</script>")
    IPage<ComActDiscussVO> pageDiscussApplets(Page page, @Param("pageComActDiscussDTO")PageComActDiscussDTO pageComActDiscussDTO);
    @Select("<script> " +
            "select * from ("+
            "SELECT\n" +
            "u.`name` userName,\n" +
            "u.`image_url`,\n" +
            "u.phone,\n" +
            "c.`comment`,\n" +
            "c.`parent_id`,\n" +
            "c.`is_author`,\n" +
            "c.`is_topping`,\n" +
            "COUNT( cu.id ) num,\n" +
            "c.create_at,\n" +
            "c.id \n" +
            "FROM\n" +
            "com_act_discuss_comment c\n" +
            "JOIN sys_user u ON c.user_id = u.user_id \n" +
            "JOIN com_act_discuss d ON c.discuss_id = d.id \n" +
            "<if test='pageComActDiscussCommentDTO.name != null and pageComActDiscussCommentDTO.name.trim() != &quot;&quot;'>" +
            "AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' ) \n" +
            " </if> " +
            "<if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != &quot;&quot;'>" +
            "AND u.phone LIKE concat( #{pageComActDiscussCommentDTO.account}, '%' )\n" +
            " </if> " +
            "LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id \n" +
            " <where>" +
            "<if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != &quot;&quot;'>" +
            "c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment" +
            "}, '%' ) \n" +
            " </if> " +
            " </where>" +
            "GROUP BY\n" +
            "c.id\n" +
            ")t order by t.is_topping desc , t.create_at desc"+
            "</script>")
    IPage<ComActDiscussCommentVO> pageDiscussCommentApplets(Page page, @Param("pageComActDiscussCommentDTO")PageComActDiscussCommentDTO pageComActDiscussCommentDTO);
 
    @Select("select name from com_act where community_id=#{communityId}")
    ComActVO selectCommunity(Long communityId);
 
    @Select("SELECT \n" +
            "if(du.id is not null,1,0)haveSign,\n" +
            "if(ou.id is not null,1,0)haveVote\n" +
            "FROM\n" +
            "com_act_discuss d \n" +
            "LEFT JOIN com_act_discuss_user du on d.id=du.discuss_id and du.`user_id`=#{loginUserId}\n" +
            "LEFT JOIN com_act_discuss_option op on d.id=op.discuss_id\n" +
            "LEFT JOIN com_act_discuss_option_user ou on op.id=ou.discuss_option_id and ou.user_id=#{loginUserId}\n" +
            "WHERE\n" +
            "d.id =#{id}\n" +
            "GROUP BY d.id")
    ComActDiscussVO selectHaveSignAndHaveVote(@Param("id") Long id, @Param("loginUserId")Long loginUserId);
}