日照智慧社区接口服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

427 lines
15 KiB

<?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.epmet.dao.ArticleDao">
<!-- 政府端:(已发布、已下线)文章详情 属性 -->
<select id="queryGovArticleDetail" parameterType="java.lang.String" resultType="com.epmet.dto.result.GovArticleDetailResultDTO">
SELECT
id AS ARTICLE_ID,
TITLE,
PUBLISHER_NAME,
PUBLISH_DATE,
( SELECT count( 1 ) FROM article_visit_record avr WHERE avr.DEL_FLAG = '0' AND avr.ARTICLE_ID =#{articleId}) AS VISIT_RECORD_COUNT,
PUBLISH_RANGE_DESC,
TAGS,
STATUS_FLAG,
DRAFT_ID
FROM
article
WHERE
DEL_FLAG = '0'
AND id =#{articleId}
</select>
<!-- 政府端:(已发布、已下线)文章详情 内容 -->
<select id="queryGovArticleContent" parameterType="java.lang.String" resultType="com.epmet.dto.result.GovArticleContentDTO">
SELECT
ac.CONTENT_TYPE,
ac.CONTENT,
ac.FILE_NAME
FROM
article_content ac
WHERE
ac.DEL_FLAG = '0'
and ac.ARTICLE_ID=#{articleId}
ORDER BY
ac.ORDER_NUM ASC
</select>
<!-- 校验 客户在本网格是否发布过文章 -->
<select id="checkPublishArticle" resultType="integer" parameterType="com.epmet.dto.form.ResiTagListFormDTO">
SELECT
COUNT(*) AS articleCounts
FROM
article_publish_range
WHERE
del_flag = 0
AND grid_id = #{gridId}
AND customer_id = #{customerId}
</select>
<select id="selectArticleListForAgency" resultType="com.epmet.dto.result.PublishedListResultDTO">
SELECT
a.ID AS "articleId",
a.TITLE AS "title",
IFNULL(a.PREVIEW_CONTENT, "") AS "previewContent",
a.PUBLISHER_NAME AS "publisherName",
a.PUBLISH_DATE AS "publishDate",
IFNULL(a.TAGS, "") AS "tags"
FROM article a
WHERE a.DEL_FLAG = '0'
AND a.STATUS_FLAG = 'published'
AND a.CUSTOMER_ID = #{customerId}
<if test="tagIdList !=null and tagIdList.size() > 0">
<foreach collection="tagIdList" item="tagId" separator=" ">
AND EXISTS(
SELECT 1
FROM ARTICLE_TAGS
WHERE DEL_FLAG = '0'
AND ARTICLE_ID = a.ID
AND TAG_ID=#{tagId}
)
</foreach>
</if>
ORDER BY PUBLISH_DATE DESC, UPDATED_TIME DESC
</select>
<select id="selectArticleListForGrid" resultType="com.epmet.dto.result.PublishedListResultDTO">
SELECT
articleId,
title,
previewContent,
publisherName,
publishDate,
tags
FROM
(SELECT
a.ID AS "articleId",
a.TITLE AS "title",
IFNULL(a.PREVIEW_CONTENT, "") AS "previewContent",
a.PUBLISHER_NAME AS "publisherName",
a.PUBLISH_DATE AS "publishDate",
IFNULL(a.TAGS, "") AS "tags",
a.UPDATED_TIME
FROM article a
WHERE a.DEL_FLAG = '0'
AND a.STATUS_FLAG = 'published'
AND a.CUSTOMER_ID = #{customerId}
<foreach item="gridId" collection="gridList" open="AND (" separator="or" close=")" index="">
a.GRID_ID = #{gridId}
</foreach>
UNION
SELECT DISTINCT
aa.ID AS "articleId",
aa.TITLE AS "title",
IFNULL(aa.PREVIEW_CONTENT, "") AS "previewContent",
aa.PUBLISHER_NAME AS "publisherName",
aa.PUBLISH_DATE AS "publishDate",
IFNULL(aa.TAGS, "") AS "tags",
aa.UPDATED_TIME
FROM article aa
INNER JOIN article_publish_range apr ON aa.ID = apr.ARTICLE_ID AND apr.DEL_FLAG = 0 AND apr.PUBLISH_STATUS = 'published'
WHERE aa.DEL_FLAG = '0'
AND aa.STATUS_FLAG = 'published'
AND aa.CUSTOMER_ID = #{customerId}
<foreach item="gridId" collection="gridList" open="AND (" separator="or" close=")" index="">
apr.GRID_ID = #{gridId}
</foreach>
) t
WHERE
1 = 1
<if test="tagIdList !=null and tagIdList.size() > 0">
<foreach collection="tagIdList" item="tagId" separator=" ">
AND EXISTS(
SELECT 1
FROM ARTICLE_TAGS
WHERE DEL_FLAG = '0'
AND ARTICLE_ID = t.articleId
AND TAG_ID=#{tagId}
)
</foreach>
</if>
ORDER BY publishDate DESC, UPDATED_TIME DESC
</select>
<select id="selectOfflineList" resultType="com.epmet.dto.result.OfflineListResultDTO">
SELECT DISTINCT
a.ID AS "articleId",
a.TITLE AS "title",
IFNULL(a.PREVIEW_CONTENT, "") AS "previewContent",
a.PUBLISHER_NAME AS "publisherName",
a.OFF_LINE_TIME AS "publishDate"
FROM article a
WHERE a.DEL_FLAG = '0'
AND a.STATUS_FLAG = 'offline'
ORDER BY a.OFF_LINE_TIME DESC
</select>
<!-- 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 参数:网格Id、客户定制化显示条数 -->
<select id="selectTopArticleMsg" resultType="com.epmet.dto.result.ArticleBannerResultDTO">
SELECT
art.ID AS articleId,
art.TITLE,
IFNULL(artcover.IMG_URL,'') AS coverImg
FROM
ARTICLE art
LEFT JOIN (
SELECT
cover.ARTICLE_ID,
cover.IMG_URL
FROM
ARTICLE_COVER cover
WHERE
NOT EXISTS(
SELECT 1 FROM ARTICLE_COVER WHERE DEL_FLAG = '0' AND ARTICLE_ID = cover.ARTICLE_ID AND AUDIT_STATUS = 'pass' AND cover.CREATED_TIME <![CDATA[<]]> CREATED_TIME)
AND cover.DEL_FLAG = '0'
AND cover.AUDIT_STATUS = 'pass'
) artcover ON art.ID = artcover.ARTICLE_ID
INNER JOIN ARTICLE_PUBLISH_RANGE prange
ON art.ID = prange.ARTICLE_ID
AND
prange.DEL_FLAG = '0'
AND
prange.PUBLISH_STATUS = 'published'
AND
prange.GRID_ID = #{gridId}
WHERE
art.DEL_FLAG = '0'
AND
art.STATUS_FLAG = 'published'
AND
art.IS_TOP = 1
ORDER BY art.PUBLISH_DATE DESC , art.CREATED_TIME DESC
LIMIT #{num}
</select>
<!-- 根据网格Id查找最新文章的相关信息列表 用处:居民端首页最新文章列表 参数:网格Id、客户定制化显示条数 -->
<select id="selectLatestArticleMsg" resultType="com.epmet.dto.result.ArticleLatestResultDTO">
SELECT
art.ID AS articleId,
art.TITLE AS articleTitle ,
IFNULL(artcover.IMG_URL,'') AS articleCoverImg,
art.PUBLISHER_NAME AS publishName,
art.PUBLISH_DATE AS publishDate,
group_concat(tag.TAG_NAME) tags #条件筛选用
FROM
ARTICLE art
LEFT JOIN article_tags tag ON tag.ARTICLE_ID = art.ID AND tag.DEL_FLAG = '0'
LEFT JOIN (
SELECT
cover.ARTICLE_ID,
cover.IMG_URL
FROM
ARTICLE_COVER cover
WHERE
NOT EXISTS(
SELECT 1 FROM ARTICLE_COVER WHERE DEL_FLAG = '0' AND ARTICLE_ID = cover.ARTICLE_ID AND AUDIT_STATUS = 'pass' AND cover.CREATED_TIME <![CDATA[<]]> CREATED_TIME)
AND cover.DEL_FLAG = '0'
AND cover.AUDIT_STATUS = 'pass'
) artcover ON art.ID = artcover.ARTICLE_ID
INNER JOIN ARTICLE_PUBLISH_RANGE prange
ON art.ID = prange.ARTICLE_ID
AND
prange.DEL_FLAG = '0'
AND
prange.PUBLISH_STATUS = 'published'
AND
prange.GRID_ID = #{gridId}
WHERE
art.DEL_FLAG = '0'
AND
art.STATUS_FLAG = 'published'
GROUP BY art.ID
HAVING 1 = 1
<if test="tagName != null and tagName != ''">
AND FIND_IN_SET(#{tagName},tags)
</if>
<if test="excludeTagName != null and excludeTagName != ''">
AND !FIND_IN_SET(#{excludeTagName},tags)
</if>
ORDER BY art.PUBLISH_DATE DESC , art.CREATED_TIME DESC
LIMIT #{num}
</select>
<!-- 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 参数:网格Id、标签Id列表、客户定制化显示条数 -->
<select id="selectArticleList" resultType="com.epmet.dto.result.ArticleListResultDTO">
SELECT
art.ID AS articleId,
art.TITLE AS articleTitle,
art.PUBLISHER_NAME AS publishName,
art.PUBLISH_DATE AS publishDate,
IFNULL(art.PREVIEW_CONTENT,'') AS articleContent,
IFNULL(art.TAGS,'') AS tagName
FROM
ARTICLE art
INNER JOIN ARTICLE_PUBLISH_RANGE prange
ON art.ID = prange.ARTICLE_ID
AND
prange.DEL_FLAG = '0'
AND
prange.PUBLISH_STATUS = 'published'
AND
prange.GRID_ID = #{gridId}
<where>
art.DEL_FLAG = '0'
AND art.STATUS_FLAG = 'published'
<if test="null != tagIdList and tagIdList.size > 0">
<foreach collection="tagIdList" item="tagId" separator=" ">
AND EXISTS(
SELECT 1
FROM ARTICLE_TAGS
WHERE DEL_FLAG = '0'
AND ARTICLE_ID = art.ID
AND TAG_ID=#{tagId}
)
</foreach>
</if>
</where>
ORDER BY art.PUBLISH_DATE DESC , art.CREATED_TIME DESC
</select>
<!-- 文章详情ResultMap -->
<resultMap id="articleDetailMap" type="com.epmet.dto.result.ArticleDetailResultDTO">
<id property="articleId" column="articleId"/>
<result property="articleTitle" column="articleTitle"/>
<result property="publishUnitDesc" column="publishUnitDesc"/>
<result property="publishDate" column="publishDate"/>
<result property="tags" column="tags"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="visitRecordCount" column="visitRecordCount" />
<collection property="articleContentList" ofType="com.epmet.dto.result.ArticleContentResultDTO">
<result property="content" column="CONTENT" />
<result property="contentType" column="CONTENT_TYPE" />
<result property="fileName" column="FILE_NAME" />
</collection>
</resultMap>
<!-- 查询文章详情 用处:居民端查看文章详情 -->
<select id="selectArticleDetail" resultMap="articleDetailMap">
SELECT
art.ID AS articleId,
art.TITLE AS articleTitle,
art.PUBLISHER_NAME AS publishUnitDesc,
art.PUBLISH_DATE AS publishDate,
IFNULL(art.TAGS,'') AS tags,
content2.CONTENT,
content2.CONTENT_TYPE,
content2.FILE_NAME,
(SELECT COUNT(1) FROM ARTICLE_VISIT_RECORD WHERE DEL_FLAG = '0' AND ARTICLE_ID = #{articleId} AND GRID_ID = #{gridId}) AS visitRecordCount,
art.CUSTOMER_ID
FROM
ARTICLE art
LEFT JOIN (
SELECT
content.ARTICLE_ID,
content.CONTENT,
content.CONTENT_TYPE,
content.FILE_NAME,
content.ORDER_NUM
FROM
ARTICLE_CONTENT content
WHERE
DEL_FLAG = '0'
AND ARTICLE_ID = #{articleId}
AND NOT EXISTS ( SELECT 1 FROM ARTICLE_CONTENT WHERE DEL_FLAG = '0' AND ORDER_NUM = content.ORDER_NUM AND ARTICLE_ID = #{articleId} AND content.CREATED_TIME <![CDATA[<]]> CREATED_TIME )
GROUP BY
ORDER_NUM
ORDER BY
ORDER_NUM ASC
) content2 ON art.ID = content2.ARTICLE_ID
INNER JOIN ARTICLE_PUBLISH_RANGE prange
ON art.ID = prange.ARTICLE_ID AND prange.DEL_FLAG = '0' AND prange.GRID_ID = #{gridId} AND prange.PUBLISH_STATUS = 'published'
WHERE
art.DEL_FLAG = '0'
AND art.ID = #{articleId}
ORDER BY content2.ORDER_NUM ASC
</select>
<!-- 根据draftId获取文章id -->
<select id="getArticleIdByDraftId" resultType="java.lang.String">
SELECT
a.id AS id
FROM
article a
LEFT JOIN draft d ON d.id = a.draft_id
WHERE
a.del_flag = 0
AND d.del_flag =0
AND d.status_flag = 'published'
AND a.draft_id = #{draftId}
</select>
<!-- 专题下的文章 -->
<select id="subjectArticleList" resultType="com.epmet.dto.result.SubjectArticleListResultDTO">
SELECT
art.ID AS articleId,
art.TITLE AS articleTitle,
art.PUBLISHER_NAME AS publisherName,
art.PUBLISH_DATE AS publishDate,
IFNULL( art.PREVIEW_CONTENT, '' ) AS articleContent,
IFNULL( art.TAGS, '' ) AS tagNames,
IFNULL(ac.IMG_URL,'') AS articleCoverImg
FROM ARTICLE art
LEFT JOIN ARTICLE_PUBLISH_RANGE prange ON
(art.ID = prange.ARTICLE_ID AND prange.DEL_FLAG = '0' AND prange.PUBLISH_STATUS = 'published' AND prange.GRID_ID = #{gridId} )
LEFT JOIN article_tags ats ON (ats.ARTICLE_ID = art.ID)
LEFT JOIN article_cover ac ON (ac.ARTICLE_ID = art.ID AND ac.DEL_FLAG = 0)
WHERE
art.DEL_FLAG = '0'
AND art.STATUS_FLAG = 'published'
AND ats.TAG_ID = #{tagId}
ORDER BY
art.PUBLISH_DATE DESC,
art.CREATED_TIME DESC
</select>
<!-- 专题列表查询 -->
<select id="subjectList" resultType="com.epmet.dto.result.SubjectListResultDTO">
SELECT
ss.ID AS specialSubjectId,
ss.TAG_ID,
tc.TAG_NAME,
tc.TAG_COLOR
FROM special_subject ss
LEFT JOIN tag_customer tc ON (tc.ID = ss.TAG_ID AND tc.DEL_FLAG = 0)
WHERE ss.DEL_FLAG = '0'
AND (
<foreach collection="pidList" item="pid" separator=" OR ">
ss.ADD_ORG_ID = #{pid}
</foreach>
)
order by
<foreach collection="pidList" item="pid" separator=" , ">
#{pid}
</foreach>
</select>
<select id="selectArticleListByTag" resultType="com.epmet.dto.result.ArticleListResultDTO">
SELECT
art.ID AS articleId,
art.TITLE AS articleTitle,
art.PUBLISHER_NAME AS publishName,
ac.IMG_URL AS articleCoverImg,
date_format(art.PUBLISH_DATE,'%Y-%m-%d') AS publishDate,
IFNULL(art.PREVIEW_CONTENT,'') AS articleContent,
IFNULL(art.TAGS,'') AS tagName
FROM
ARTICLE art
INNER JOIN article_cover ac ON art.ID = ac.ARTICLE_ID
INNER JOIN ARTICLE_PUBLISH_RANGE prange
ON art.ID = prange.ARTICLE_ID
AND
prange.DEL_FLAG = '0'
AND
prange.PUBLISH_STATUS = 'published'
WHERE
art.DEL_FLAG = '0'
AND art.STATUS_FLAG = 'published'
AND EXISTS(
SELECT 1
FROM ARTICLE_TAGS
WHERE DEL_FLAG = '0'
AND ARTICLE_ID = art.ID
AND TAG_ID=#{tagId}
)
ORDER BY art.PUBLISH_DATE DESC , art.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
</mapper>