<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.panzhihua.service_community.dao.ComActDiscussDAO">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActDiscussDO">
|
<id column="id" property="id"/>
|
<result column="discuss_subject" property="discussSubject"/>
|
<result column="type" property="type"/>
|
<result column="photo_pah" property="photoPah"/>
|
<result column="address" property="address"/>
|
<result column="user_id" property="userId"/>
|
<result column="community_id" property="communityId"/>
|
<result column="create_at" property="createAt"/>
|
<result column="discuss_option" property="discussOption"/>
|
<result column="vote_title" property="voteTitle"/>
|
<result column="is_repeat" property="isRepeat"/>
|
<result column="count" property="count"/>
|
<result column="img_width" property="imgWidth"/>
|
<result column="img_height" property="imgHeight"/>
|
<result column="start_time" property="startTime"/>
|
<result column="end_time" property="endTime"/>
|
<result column="comment_num" property="commentNum"/>
|
<result column="fabulous_num" property="fabulousNum"/>
|
<result column="views_num" property="viewsNum"/>
|
<result column="join_num" property="joinNum"/>
|
<result column="status" property="status"/>
|
<result column="is_del" property="isDel"/>
|
<result column="publish_result" property="publishResult"/>
|
<result column="publish_at" property="publishAt"/>
|
<result column="release_at" property="releaseAt"/>
|
<result column="update_at" property="updateAt"/>
|
<result column="publish_by" property="publishBy"/>
|
</resultMap>
|
|
<!-- 通用查询结果列 -->
|
<sql id="Base_Column_List">
|
id, discuss_subject, type, photo_pah, address, user_id, community_id, create_at, discuss_option, vote_title, is_repeat, count, img_width, img_height, start_time, end_time, comment_num, fabulous_num, views_num, join_num, status, is_del, publish_result, publish_at, release_at, update_at, publish_by
|
</sql>
|
<update id="updateStatusById">
|
UPDATE `com_act_discuss` SET status = #{status}, update_at = NOW() WHERE id = #{discussId}
|
</update>
|
<update id="incrCommentAndJoinNumById">
|
UPDATE `com_act_discuss`
|
SET
|
<if test="isFirstComment">
|
join_num = join_num + 1,
|
</if>
|
update_at = NOW() WHERE id = #{discussId}
|
</update>
|
<update id="incrOrDecrFabulousNumByType">
|
UPDATE `com_act_discuss`
|
SET fabulous_num = IF(IF(#{isIncr},fabulous_num + 1,fabulous_num - 1) >= 0,IF(#{isIncr},fabulous_num + 1,fabulous_num - 1),0), update_at = NOW()
|
WHERE id = #{discussId}
|
</update>
|
<update id="batchUpdateViewNum" parameterType="java.util.Map">
|
UPDATE `com_act_discuss` SET views_num = CASE id
|
<foreach collection="needDealMap.entrySet()" item="value" index="key">
|
WHEN #{key} THEN #{value}
|
</foreach>
|
END,update_at = NOW()
|
WHERE id = CASE id
|
<foreach collection="needDealMap.entrySet()" index="key">
|
WHEN #{key} THEN #{key}
|
</foreach>
|
END
|
</update>
|
|
<select id="pageDiscuss" parameterType="com.panzhihua.common.model.dtos.community.PageComActDiscussDTO"
|
resultType="com.panzhihua.common.model.vos.community.ComActDiscussVO">
|
SELECT
|
t.*
|
FROM
|
(
|
SELECT
|
d.id,
|
d.`discuss_subject`,
|
d.type,
|
d.content_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} and d.is_del = 2
|
<if test = 'pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""' >
|
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>
|
<if test="pageComActDiscussDTO.status != null">
|
and d.status = #{pageComActDiscussDTO.status}
|
</if>
|
<if test="pageComActDiscussDTO.contentType != null">
|
and d.content_type = #{pageComActDiscussDTO.contentType}
|
</if>
|
GROUP BY d.id )t
|
order by t.create_at desc
|
</select>
|
|
<select id="getCommentNum" resultType="Integer">
|
select COUNT( DISTINCT id ) from com_act_discuss_comment where discuss_id=#{id}
|
</select>
|
|
|
<select id="pageDiscussAdmin" parameterType="com.panzhihua.common.model.dtos.community.PageComActDiscussDTO"
|
resultType="com.panzhihua.common.model.vos.community.ComActDiscussVO">
|
SELECT
|
d.id,
|
d.`discuss_subject`,
|
d.type,
|
(select count(id) from com_act_discuss_comment where discuss_id = d.id and is_del = 2 and parent_id = 0) as comment_num,
|
d.fabulous_num as signNum,
|
d.views_num,
|
d.status,
|
d.content_type,
|
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
|
WHERE
|
d.community_id = ${pageComActDiscussDTO.communityId} and d.is_del = 2
|
<if test = 'pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""' >
|
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>
|
<if test="pageComActDiscussDTO.status != null">
|
and d.status = #{pageComActDiscussDTO.status}
|
</if>
|
<if test="pageComActDiscussDTO.keyWord != null and pageComActDiscussDTO.keyWord != """>
|
and (d.`discuss_subject` LIKE concat(#{pageComActDiscussDTO.keyWord}, '%' ) or
|
u.`name` LIKE concat(#{pageComActDiscussDTO.keyWord}, '%' ))
|
</if>
|
<if test="pageComActDiscussDTO.contentType != null">
|
and d.content_type = #{pageComActDiscussDTO.contentType}
|
</if>
|
order by d.create_at desc
|
</select>
|
<select id="pageDiscussCommentApplets" resultType="com.panzhihua.common.model.vos.community.ComActDiscussCommentVO">
|
SELECT * FROM (
|
SELECT u.`name` userName, IFNULL(u.`nick_name`, '社区管理员') AS userNickName, u.`image_url`, u.phone,
|
u.type AS userType, 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() != ""'>
|
AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' )
|
</if>
|
<if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != ""'>
|
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 AND c.is_del = 2
|
<if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != ""'>
|
AND c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment}, '%' )
|
</if>
|
GROUP BY c.id
|
) t ORDER BY t.is_topping DESC , t.create_at DESC
|
</select>
|
<select id="pageDiscussApplets" resultType="com.panzhihua.common.model.vos.community.ComActDiscussVO">
|
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.content_type,
|
d.`discuss_subject`, d.type, d.end_time, d.status, d.views_num, d.join_num, d.fabulous_num AS signNum,
|
(select count(id) from com_act_discuss_comment where discuss_id = d.id and is_del = 2 and parent_id = 0) AS commentNum,
|
d.release_at, d.img_width, d.img_height, d.is_repeat, d.count, u.type AS userType, if(u.type=1,u.name,a.name) userName,
|
if(u.type=1,u.nick_name,a.name) userNickName,
|
<if test='pageComActDiscussDTO.loginUserId != null '>
|
if(du.id IS NOT NULL,1,0) haveSign, if(ou.id IS NOT NULL,1,0) haveVote,
|
</if>
|
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 cadc on d.id = cadc.discuss_id
|
LEFT JOIN com_act_discuss_option do ON d.id = do.discuss_id
|
LEFT JOIN com_act_discuss_user du ON d.id = du.discuss_id
|
<if test='pageComActDiscussDTO.loginUserId != null '>
|
LEFT JOIN com_act_discuss_option_user ou ON do.id=ou.discuss_option_id AND ou.user_id=#{pageComActDiscussDTO.loginUserId}
|
</if>
|
WHERE d.is_del = 2 AND d.status != 1
|
<if test="pageComActDiscussDTO.communityId !=null and pageComActDiscussDTO.communityId !='' ">
|
AND d.community_id = ${pageComActDiscussDTO.communityId}
|
</if>
|
<if test="pageComActDiscussDTO.status !=null and pageComActDiscussDTO.status !='' ">
|
AND d.status = ${pageComActDiscussDTO.status}
|
</if>
|
<if test="pageComActDiscussDTO.keyWord !=null and pageComActDiscussDTO.keyWord !='' ">
|
AND d.discuss_subject like concat('%',#{pageComActDiscussDTO.keyWord},'%')
|
</if>
|
<if test="pageComActDiscussDTO.isPbMember == 0">
|
AND d.vote_scope != 3
|
</if>
|
<if test="pageComActDiscussDTO.isVolunteer == 0">
|
AND d.vote_scope != 2
|
</if>
|
<if test='pageComActDiscussDTO.type != null '>
|
AND d.`type` = #{pageComActDiscussDTO.type}
|
</if>
|
<if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""'>
|
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>
|
<if test='pageComActDiscussDTO.displayStatus != null and pageComActDiscussDTO.displayStatus == 1'>
|
AND d.`end_time` > now()
|
</if>
|
<if test='pageComActDiscussDTO.displayStatus != null and pageComActDiscussDTO.displayStatus == 2'>
|
AND d.`end_time` < now()
|
</if>
|
<if test="pageComActDiscussDTO.contentType != null">
|
and d.content_type = #{pageComActDiscussDTO.contentType}
|
</if>
|
GROUP BY d.id
|
) t ORDER BY t.create_at DESC
|
</select>
|
|
|
|
<select id="pageDiscussCommentAdmin" parameterType="com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO"
|
resultType="com.panzhihua.common.model.vos.community.ComActDiscussCommentVO">
|
SELECT
|
*
|
FROM
|
(
|
SELECT
|
u.user_id,
|
u.`name` userName,
|
u.nick_name userNickName,
|
u.image_url,
|
u.phone,
|
c.`comment`,
|
c.`parent_id`,
|
COUNT( DISTINCT cu.id ) num,
|
COUNT( c1.id ) replyNum,
|
c.create_at,
|
c.is_topping,
|
c.is_author,
|
c.id
|
FROM
|
com_act_discuss_comment c
|
JOIN sys_user u ON c.user_id = u.user_id
|
LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id
|
LEFT JOIN com_act_discuss_comment c1 ON c1.parent_id = c.id and c1.is_del = 2
|
WHERE
|
c.discuss_id = #{pageComActDiscussCommentDTO.id} and c.parent_id = 0 and c.is_del = 2
|
<if test = 'pageComActDiscussCommentDTO.keyWord != null and pageComActDiscussCommentDTO.keyWord.trim() != ""' >
|
AND (c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.keyWord }, '%' ) or
|
u.`name` LIKE concat(#{pageComActDiscussCommentDTO.keyWord}, '%' ) or
|
u.phone LIKE concat(#{pageComActDiscussCommentDTO.keyWord}, '%' ))
|
</if>
|
GROUP BY
|
c.id
|
) t
|
ORDER BY
|
t.is_topping DESC,t.create_at DESC
|
</select>
|
|
<select id="getDiscussCommentReplyList" resultType="com.panzhihua.common.model.vos.community.ComActDiscussCommentVO">
|
SELECT
|
cadc.id,
|
cadc.discuss_id,
|
cadc.`comment`,
|
cadc.create_at,
|
cadc.is_author,
|
cadc.user_id,
|
su.image_url as imageUrl,
|
IFNULL( su.`name`, su.nick_name ) AS userName
|
FROM
|
com_act_discuss_comment AS cadc
|
LEFT JOIN sys_user AS su ON su.user_id = cadc.user_id
|
WHERE
|
cadc.is_del = 2
|
AND cadc.parent_id = #{commentId}
|
order by cadc.create_at desc
|
limit 10
|
</select>
|
<select id="selectTypePercent" resultType="com.panzhihua.common.model.vos.community.StatisticsCommVO">
|
SELECT t1.filed, t1.num, ROUND( t1.num / t2.sum * 100, 2 ) AS percent
|
FROM
|
(SELECT IF(`type` = 1,'议事','投票') AS filed, COUNT(id) AS num FROM com_act_discuss
|
WHERE community_id = ${communityId} AND is_del = 2 GROUP BY filed) t1,
|
(SELECT COUNT(id) AS sum FROM com_act_discuss WHERE community_id = ${communityId} AND is_del = 2) t2
|
</select>
|
<select id="getTitles" resultType="java.lang.String">
|
SELECT discuss_subject FROM com_act_discuss WHERE community_id = ${communityId} AND `type` = #{type} AND is_del = 2 ORDER BY release_at DESC limit #{pageSize}
|
</select>
|
<select id="countByCommunityId" resultType="Map">
|
SELECT
|
COUNT( id ) AS totalNum,
|
(
|
SELECT
|
COUNT( id )
|
FROM
|
com_act_discuss
|
WHERE
|
community_id = ${communityId}
|
AND create_at BETWEEN DATE_ADD(curdate(),interval -day(curdate())+1 day)
|
AND now()) AS currentNum,
|
( SELECT COUNT( id ) FROM com_act_discuss WHERE community_id = ${communityId} AND TYPE = 1 ) AS imgNum,
|
(
|
SELECT
|
count( DISTINCT cadc.user_id )
|
FROM
|
com_act_discuss_comment AS cadc
|
LEFT JOIN com_act_discuss AS cad ON cad.id = cadc.discuss_id
|
WHERE
|
cad.type = 1
|
AND cad.community_id = ${communityId}
|
) AS imgPeopleNum,
|
(
|
SELECT
|
count( user_id )
|
FROM
|
(
|
SELECT DISTINCT
|
cadc.user_id
|
FROM
|
com_act_discuss_comment AS cadc
|
LEFT JOIN com_act_discuss AS cad ON cad.id = cadc.discuss_id
|
WHERE
|
cad.type = 2
|
AND cad.community_id = ${communityId} UNION ALL
|
SELECT DISTINCT
|
cadou.user_id
|
FROM
|
com_act_discuss_option_user AS cadou
|
LEFT JOIN com_act_discuss_option AS cado ON cado.id = cadou.discuss_option_id
|
LEFT JOIN com_act_discuss AS cad ON cad.id = cado.discuss_id
|
WHERE
|
cad.community_id = ${communityId}
|
) t
|
) AS votePeopleNum
|
FROM
|
com_act_discuss
|
WHERE
|
community_id = ${communityId}
|
</select>
|
<select id="pageCourtyardDiscuss" resultType="com.panzhihua.common.model.vos.community.ComActDiscussVO">
|
SELECT id, `type`, discuss_subject, photo_pah, create_at FROM com_act_discuss
|
WHERE community_id = #{pageBaseDTO.communityId}
|
AND content_type = 2 AND is_del = 2
|
<if test="pageBaseDTO.param3 != null">
|
AND `type` = #{pageBaseDTO.param3}
|
</if>
|
ORDER BY create_at DESC
|
</select>
|
<select id="getCourtyardBaseData"
|
resultType="com.panzhihua.common.model.vos.community.bigscreen.BigScreenCourtyardStatisticsInfo">
|
SELECT
|
(SELECT COUNT(id) FROM com_act_discuss WHERE community_id = #{communityId} AND content_type = 2 AND is_del = 2) AS discussTotal,
|
(SELECT COUNT(id) FROM com_act_discuss WHERE community_id = #{communityId} AND content_type = 2 AND is_del = 2 AND `type` = 1) AS ysTotal,
|
(SELECT COUNT(id) FROM com_act_discuss WHERE community_id = #{communityId} AND content_type = 2 AND is_del = 2 AND `type` = 2) AS tpTotal
|
</select>
|
|
|
<delete id="deleteId">
|
delete from com_act_discuss_comment where id=#{id}
|
</delete>
|
|
|
</mapper>
|