150 lines
4.9 KiB
XML
150 lines
4.9 KiB
XML
<?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.boge.modules.knowledge.service.dao.KnowledgeMapper">
|
|
|
|
<!-- 知识文档VO结果映射 -->
|
|
<resultMap id="knowledgeVOMap" type="com.boge.modules.knowledge.service.dto.KnowledgeVO">
|
|
<id column="id" property="id"/>
|
|
<result column="title" property="title"/>
|
|
<result column="subtitle" property="subtitle"/>
|
|
<result column="content" property="content"/>
|
|
<result column="summary" property="summary"/>
|
|
<result column="category_id" property="categoryId"/>
|
|
<result column="author_id" property="authorId"/>
|
|
<result column="author_name" property="authorName"/>
|
|
<result column="cover_image" property="coverImage"/>
|
|
<result column="view_count" property="viewCount"/>
|
|
<result column="like_count" property="likeCount"/>
|
|
<result column="collect_count" property="collectCount"/>
|
|
<result column="version" property="version"/>
|
|
<result column="status" property="status"/>
|
|
<result column="publish_time" property="publishTime"/>
|
|
<result column="expire_time" property="expireTime"/>
|
|
<result column="is_top" property="isTop"/>
|
|
<result column="tags" property="tags"/>
|
|
<result column="create_time" property="createTime"/>
|
|
<result column="update_time" property="updateTime"/>
|
|
</resultMap>
|
|
|
|
<!-- 分页查询知识文档列表 -->
|
|
<select id="queryPage" resultMap="knowledgeVOMap">
|
|
SELECT
|
|
k.id,
|
|
k.title,
|
|
k.subtitle,
|
|
k.summary,
|
|
k.category_id,
|
|
k.author_id,
|
|
u.username AS author_name,
|
|
k.cover_image,
|
|
k.view_count,
|
|
k.like_count,
|
|
k.collect_count,
|
|
k.version,
|
|
k.status,
|
|
k.publish_time,
|
|
k.expire_time,
|
|
k.is_top,
|
|
k.tags,
|
|
k.create_time,
|
|
k.update_time
|
|
FROM knowledge k
|
|
LEFT JOIN sys_user u ON k.author_id = u.user_id
|
|
<where>
|
|
<if test="query.title != null and query.title != ''">
|
|
AND k.title LIKE CONCAT('%', #{query.title}, '%')
|
|
</if>
|
|
<if test="query.categoryId != null">
|
|
AND k.category_id = #{query.categoryId}
|
|
</if>
|
|
<if test="query.authorId != null">
|
|
AND k.author_id = #{query.authorId}
|
|
</if>
|
|
<if test="query.status != null and query.status != ''">
|
|
AND k.status = #{query.status}
|
|
</if>
|
|
<if test="query.tag != null and query.tag != ''">
|
|
AND FIND_IN_SET(#{query.tag}, k.tags)
|
|
</if>
|
|
<if test="query.isTop != null">
|
|
AND k.is_top = #{query.isTop}
|
|
</if>
|
|
</where>
|
|
ORDER BY
|
|
<choose>
|
|
<when test="query.orderBy == 'view_count'">
|
|
k.view_count
|
|
</when>
|
|
<when test="query.orderBy == 'like_count'">
|
|
k.like_count
|
|
</when>
|
|
<when test="query.orderBy == 'publish_time'">
|
|
k.publish_time
|
|
</when>
|
|
<otherwise>
|
|
k.create_time
|
|
</otherwise>
|
|
</choose>
|
|
<choose>
|
|
<when test="query.order == 'asc'">
|
|
ASC
|
|
</when>
|
|
<otherwise>
|
|
DESC
|
|
</otherwise>
|
|
</choose>
|
|
</select>
|
|
|
|
<!-- 根据ID查询知识文档详情 -->
|
|
<select id="getKnowledgeDetail" resultMap="knowledgeVOMap">
|
|
SELECT
|
|
k.id,
|
|
k.title,
|
|
k.subtitle,
|
|
k.content,
|
|
k.plain_content,
|
|
k.summary,
|
|
k.category_id,
|
|
k.author_id,
|
|
u.username AS author_name,
|
|
k.cover_image,
|
|
k.view_count,
|
|
k.like_count,
|
|
k.collect_count,
|
|
k.version,
|
|
k.status,
|
|
k.publish_time,
|
|
k.expire_time,
|
|
k.is_top,
|
|
k.tags,
|
|
k.create_time,
|
|
k.update_time
|
|
FROM knowledge k
|
|
LEFT JOIN sys_user u ON k.author_id = u.user_id
|
|
WHERE k.id = #{id}
|
|
</select>
|
|
|
|
<!-- 增加浏览量 -->
|
|
<update id="increaseViewCount">
|
|
UPDATE knowledge
|
|
SET view_count = view_count + 1
|
|
WHERE id = #{id}
|
|
</update>
|
|
|
|
<!-- 增加点赞数 -->
|
|
<update id="increaseLikeCount">
|
|
UPDATE knowledge
|
|
SET like_count = like_count + 1
|
|
WHERE id = #{id}
|
|
</update>
|
|
|
|
<!-- 减少点赞数 -->
|
|
<update id="decreaseLikeCount">
|
|
UPDATE knowledge
|
|
SET like_count = CASE WHEN like_count > 0 THEN like_count - 1 ELSE 0 END
|
|
WHERE id = #{id}
|
|
</update>
|
|
|
|
</mapper>
|