新增模板相关功能

This commit is contained in:
Sh1yu
2023-08-24 09:28:16 +08:00
parent e393a71a93
commit ffbbe33a9f
24 changed files with 1442 additions and 518 deletions

View File

@@ -0,0 +1,24 @@
package com.zyplayer.doc.data.repository.manage.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("wiki_page_template")
public class WikiPageTemplate implements Serializable {
@TableId(value = "id" , type = IdType.AUTO)
private Long id;
private Long spaceId;
private Long pageId;
private String tagName;
private Boolean shareStatus;
private Date created;
private Long createUserId;
private String createUser;
private Integer yn;
}

View File

@@ -2,10 +2,14 @@ package com.zyplayer.doc.data.repository.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageTemplate;
import com.zyplayer.doc.data.repository.manage.vo.WikiPageTemplateInfoVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* <p>
* Mapper 接口
@@ -24,6 +28,9 @@ public interface WikiPageMapper extends BaseMapper<WikiPage> {
@Select("select max(seq_no) from wiki_page where space_id = #{spaceId} and parent_id=#{parentId} and del_flag=0")
Integer getLastSeq(@Param("spaceId") Long spaceId, @Param("parentId") Long parentId);
@Select("SELECT a.*,b.tag_name AS tags,b.share_status as shareStatus from wiki_page a left join wiki_page_template b on a.space_id =b.space_id and a.id = b.page_id where a.del_flag = 0 and a.space_id =#{spaceId}")
List<WikiPageTemplateInfoVo> getWikiPageTemplateInfos(@Param("spaceId") Long spaceId);
void updateChildrenSeq(@Param("spaceId") Long spaceId, @Param("parentId") Long parentId);
}

View File

@@ -0,0 +1,30 @@
package com.zyplayer.doc.data.repository.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageTemplate;
import com.zyplayer.doc.data.repository.manage.vo.WikiPageTemplateInfoVo;
import com.zyplayer.doc.data.repository.manage.vo.WikiTemplateTagVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 暮光:城中城
* @since 2019-03-09
*/
public interface WikiPageTemplateMapper extends BaseMapper<WikiPageTemplate> {
List<WikiPageTemplateInfoVo> getAllTemplate(@Param("user") Long user, @Param("name") String name, @Param("share") boolean share, @Param("tags") List tags, @Param("pageNum") Long pageNum);
List<WikiTemplateTagVo> getAllTags(@Param("user") Long user,@Param("open") boolean open);
Long getAllTemplateCount(@Param("user") Long user, @Param("name") String name, @Param("share") boolean share, @Param("tags") List tags);
}

View File

@@ -0,0 +1,123 @@
package com.zyplayer.doc.data.repository.manage.vo;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class WikiPageTemplateInfoVo{
private Long id;
/**
* 空间ID
*/
private Long spaceId;
/**
* 名字
*/
private String name;
/**
* 父ID
*/
private Long parentId;
/**
* 节点类型 0=有子节点 1=终节点
*/
private Integer nodeType;
/**
* 赞的数量
*/
private Integer zanNum;
/**
* 编辑类型 0=可编辑 1=不允许编辑
*/
private Integer editType;
/**
* 是否收藏 0=否 1=是
*/
private Integer favorite;
/**
* 创建人ID
*/
private Long createUserId;
/**
* 创建人名字
*/
private String createUserName;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改人ID
*/
private Long updateUserId;
/**
* 修改人名字
*/
private String updateUserName;
/**
* 修改时间
*/
private Date updateTime;
/**
* 0=有效 1=删除
*/
private Integer delFlag;
/**
* 阅读数
*/
private Integer viewNum;
/**
* 顺序
*/
private Integer seqNo;
/**
* 编辑框类型 1=HTML 2=Markdown
*/
private Integer editorType;
/**
* 模板分享状态 0=个人模板 1=共享模板
*/
private Integer shareStatus;
/**
* 模板ID
*/
private Integer templateId;
/**
* 标签
*/
private String tags;
/**
* 标题
*/
private String title;
/**
* 模板的内容
*/
private String content;
}

View File

@@ -0,0 +1,19 @@
package com.zyplayer.doc.data.repository.manage.vo;
import lombok.Data;
import java.util.Date;
@Data
public class WikiTemplateTagVo {
/**
* 是否展示
*/
private boolean show = true;
/**
* 标签名
*/
private String tagName;
}

View File

@@ -2,6 +2,9 @@ package com.zyplayer.doc.data.service.manage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyplayer.doc.data.repository.manage.vo.WikiPageTemplateInfoVo;
import java.util.List;
/**
* <p>
@@ -16,4 +19,6 @@ public interface WikiPageService extends IService<WikiPage> {
void changeParent(WikiPage wikiPage, Integer beforeSeq, Integer afterSeq);
void deletePage(WikiPage wikiPage);
public List<WikiPageTemplateInfoVo> wikiPageTemplateInfos(Long spaceId);
}

View File

@@ -0,0 +1,28 @@
package com.zyplayer.doc.data.service.manage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageTemplate;
import com.zyplayer.doc.data.repository.manage.vo.WikiPageTemplateInfoVo;
import com.zyplayer.doc.data.repository.manage.vo.WikiTemplateTagVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author 暮光:城中城
* @since 2019-03-09
*/
public interface WikiPageTemplateService extends IService<WikiPageTemplate> {
public List<WikiTemplateTagVo> getAllTags( Long user, boolean open);
WikiPageTemplate getWikiPageTemplateBySpaceAndPage(Long spaceId, Long pageId);
List<WikiPageTemplateInfoVo> filterAll(Long user, String name, boolean open, List<String> tags, Long pageNum);
Long total(Long user, String name, boolean open, List<String> tags);
}

View File

@@ -8,6 +8,7 @@ import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.UserMessage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageMapper;
import com.zyplayer.doc.data.repository.manage.vo.WikiPageTemplateInfoVo;
import com.zyplayer.doc.data.repository.support.consts.DocSysType;
import com.zyplayer.doc.data.repository.support.consts.UserMsgType;
import com.zyplayer.doc.data.service.manage.UserMessageService;
@@ -91,4 +92,8 @@ public class WikiPageServiceImpl extends ServiceImpl<WikiPageMapper, WikiPage> i
this.deletePageAndSon(wikiPage);
}
}
public List<WikiPageTemplateInfoVo> wikiPageTemplateInfos(Long spaceId){
return wikiPageMapper.getWikiPageTemplateInfos(spaceId);
}
}

View File

@@ -0,0 +1,48 @@
package com.zyplayer.doc.data.service.manage.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageTemplate;
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageTemplateMapper;
import com.zyplayer.doc.data.repository.manage.vo.WikiPageTemplateInfoVo;
import com.zyplayer.doc.data.repository.manage.vo.WikiTemplateTagVo;
import com.zyplayer.doc.data.service.manage.WikiPageTemplateService;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class WikiPageTemplateServiceImpl extends ServiceImpl<WikiPageTemplateMapper, WikiPageTemplate> implements WikiPageTemplateService {
@Override
public List<WikiTemplateTagVo> getAllTags(Long user, boolean open) {
List<WikiTemplateTagVo> all = getBaseMapper().getAllTags(user,open);
return all;
}
@Override
public WikiPageTemplate getWikiPageTemplateBySpaceAndPage(Long spaceId, Long pageId) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("space_id", spaceId);
queryWrapper.eq("page_id", pageId);
WikiPageTemplate template = getBaseMapper().selectOne(queryWrapper);
return template;
}
@Override
public List<WikiPageTemplateInfoVo> filterAll(Long user, String name, boolean open, List<String> tags, Long pageNum) {
Long offset = 0L;
if (null != pageNum && pageNum != 0L) {
offset = (pageNum - 1) * 8;
}
List<WikiPageTemplateInfoVo> all = getBaseMapper().getAllTemplate(user, StringUtils.isBlank(name) ? null : "%" + name + "%", open, tags, offset);
return all;
}
@Override
public Long total(Long user, String name, boolean open, List<String> tags) {
Long num = getBaseMapper().getAllTemplateCount(user, name, open, tags);
return num;
}
}

View File

@@ -0,0 +1,42 @@
<?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.zyplayer.doc.data.repository.manage.mapper.WikiPageTemplateMapper">
<select id="getAllTemplate" resultType="com.zyplayer.doc.data.repository.manage.vo.WikiPageTemplateInfoVo">
SELECT a.*,b.tag_name As tags,b.share_status as shareStatus,c.content,b.id as templateId from wiki_page a
left join wiki_page_template b on a.space_id = b.space_id and a.id = b.page_id
left join wiki_page_content c on a.id = c.page_id
<include refid="queryTemplateByCondition"></include>
order by b.id
limit 8 offset #{pageNum}
</select>
<select id="getAllTemplateCount" resultType="java.lang.Long">
SELECT count(*) from wiki_page a
LEFT JOIN wiki_page_template b on a.space_id = b.space_id and a.id = b.page_id
left join wiki_page_content c on a.id = c.page_id
<include refid="queryTemplateByCondition"></include>
</select>
<select id="getAllTags" resultType="com.zyplayer.doc.data.repository.manage.vo.WikiTemplateTagVo">
select DISTINCT tag_name
from wiki_page_template
where tag_name is not null
and tag_name != ''
and share_status = #{open}
<if test="!open">
and create_user_id = #{user}
</if>
</select>
<sql id="queryTemplateByCondition">
where del_flag = 0 and b.id is not null
and b.share_status = #{share}
<if test="!share">
and b.create_user_id = #{user}
</if>
<if test="name != null and name != ''">
and a.name like #{name}
</if>
<if test="tags != null and tags.size >0 ">
and b.tag_name in
<foreach collection="tags" open="(" close=")" item="item" separator=",">#{item}</foreach>
</if>
</sql>
</mapper>