forked from rongchao/epmet-cloud-rizhao
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
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>
|
|
|