diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/WikiPageTemplate.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/WikiPageTemplate.java new file mode 100644 index 00000000..5b712e62 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/WikiPageTemplate.java @@ -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; +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/WikiPageMapper.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/WikiPageMapper.java index 3e1213c1..9be82030 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/WikiPageMapper.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/WikiPageMapper.java @@ -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; + /** *

* Mapper 接口 @@ -24,6 +28,9 @@ public interface WikiPageMapper extends BaseMapper { @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 getWikiPageTemplateInfos(@Param("spaceId") Long spaceId); + void updateChildrenSeq(@Param("spaceId") Long spaceId, @Param("parentId") Long parentId); } diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/WikiPageTemplateMapper.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/WikiPageTemplateMapper.java new file mode 100644 index 00000000..92a5e594 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/WikiPageTemplateMapper.java @@ -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; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 暮光:城中城 + * @since 2019-03-09 + */ +public interface WikiPageTemplateMapper extends BaseMapper { + + List getAllTemplate(@Param("user") Long user, @Param("name") String name, @Param("share") boolean share, @Param("tags") List tags, @Param("pageNum") Long pageNum); + + List 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); + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/vo/WikiPageTemplateInfoVo.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/vo/WikiPageTemplateInfoVo.java new file mode 100644 index 00000000..f36a4a23 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/vo/WikiPageTemplateInfoVo.java @@ -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; +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/vo/WikiTemplateTagVo.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/vo/WikiTemplateTagVo.java new file mode 100644 index 00000000..fce46f88 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/vo/WikiTemplateTagVo.java @@ -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; +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiPageService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiPageService.java index 8a295cba..1301c96c 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiPageService.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiPageService.java @@ -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; /** *

@@ -16,4 +19,6 @@ public interface WikiPageService extends IService { void changeParent(WikiPage wikiPage, Integer beforeSeq, Integer afterSeq); void deletePage(WikiPage wikiPage); + + public List wikiPageTemplateInfos(Long spaceId); } diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiPageTemplateService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiPageTemplateService.java new file mode 100644 index 00000000..fcbf9fbf --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiPageTemplateService.java @@ -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; + +/** + *

+ * 服务类 + *

+ * + * @author 暮光:城中城 + * @since 2019-03-09 + */ +public interface WikiPageTemplateService extends IService { + public List getAllTags( Long user, boolean open); + + WikiPageTemplate getWikiPageTemplateBySpaceAndPage(Long spaceId, Long pageId); + + List filterAll(Long user, String name, boolean open, List tags, Long pageNum); + + Long total(Long user, String name, boolean open, List tags); +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiPageServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiPageServiceImpl.java index f4090bd1..c96e3688 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiPageServiceImpl.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiPageServiceImpl.java @@ -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 i this.deletePageAndSon(wikiPage); } } + + public List wikiPageTemplateInfos(Long spaceId){ + return wikiPageMapper.getWikiPageTemplateInfos(spaceId); + } } diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiPageTemplateServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiPageTemplateServiceImpl.java new file mode 100644 index 00000000..2633e766 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiPageTemplateServiceImpl.java @@ -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 implements WikiPageTemplateService { + @Override + public List getAllTags(Long user, boolean open) { + List 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 filterAll(Long user, String name, boolean open, List tags, Long pageNum) { + Long offset = 0L; + if (null != pageNum && pageNum != 0L) { + offset = (pageNum - 1) * 8; + } + List 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 tags) { + Long num = getBaseMapper().getAllTemplateCount(user, name, open, tags); + return num; + } +} diff --git a/zyplayer-doc-data/src/main/resources/mapper/manage/WikiPageTemplateMapper.xml b/zyplayer-doc-data/src/main/resources/mapper/manage/WikiPageTemplateMapper.xml new file mode 100644 index 00000000..658653e7 --- /dev/null +++ b/zyplayer-doc-data/src/main/resources/mapper/manage/WikiPageTemplateMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + where del_flag = 0 and b.id is not null + and b.share_status = #{share} + + and b.create_user_id = #{user} + + + and a.name like #{name} + + + and b.tag_name in + #{item} + + + diff --git a/zyplayer-doc-manage/src/main/resources/sql/full/full.sql b/zyplayer-doc-manage/src/main/resources/sql/full/full.sql index 5c436b2d..e51a6421 100644 --- a/zyplayer-doc-manage/src/main/resources/sql/full/full.sql +++ b/zyplayer-doc-manage/src/main/resources/sql/full/full.sql @@ -441,6 +441,18 @@ CREATE TABLE `backup_task` ( PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '备份任务信息'; +CREATE TABLE `wiki_page_template` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '模板信息逐渐', + `space_id` bigint(20) NULL DEFAULT NULL COMMENT '空间id', + `page_id` bigint(20) NULL DEFAULT NULL COMMENT '模板挂载文档id', + `tag_name` varchar(200) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '标签信息', + `share_status` tinyint(1) NULL DEFAULT NULL COMMENT '模板公开状态(0-个人模板1-公共模板)', + `created` datetime NULL DEFAULT NULL COMMENT '创建时间', + `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人id', + `create_user` varchar(200) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '创建人名称', + `yn` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COMMENT = '模板信息表'; -- -------------------插入必要的数据------------------- -- 用户信息 INSERT INTO `user_info` (id, user_no, password, user_name, email, del_flag, creation_time, update_time, sex) diff --git a/zyplayer-doc-ui/wiki-ui/src/assets/api/page.js b/zyplayer-doc-ui/wiki-ui/src/assets/api/page.js index 0fa7cc0d..7307342c 100644 --- a/zyplayer-doc-ui/wiki-ui/src/assets/api/page.js +++ b/zyplayer-doc-ui/wiki-ui/src/assets/api/page.js @@ -36,5 +36,9 @@ export default { openPageList: (data) => request({url: '/zyplayer-doc-wiki/open-api/page/list', method: 'post', data: Qs.stringify(data)}), openSpaceInfo: (data) => request({url: '/zyplayer-doc-wiki/open-api/space/info', method: 'post', data: Qs.stringify(data)}), openPageNews: (data) => request({url: '/zyplayer-doc-wiki/open-api/page/news', method: 'post', data: Qs.stringify(data)}), + addTemplate: (data) => request({url: '/zyplayer-doc-wiki/template/add', method: 'post', data: Qs.stringify(data)}), + getTemplate: (data) => request({url: '/zyplayer-doc-wiki/template/filterAll', method: 'post', data: Qs.stringify(data,{arrayFormat:"indices",allowDots:true})}), + useTemplate: (data) => request({url: '/zyplayer-doc-wiki/template/use', method: 'post', data: Qs.stringify(data)}), + getTags: (data) => request({url: '/zyplayer-doc-wiki/template/allTags', method: 'post', data: Qs.stringify(data)}), xxxxxxxxxxxx: (data) => request({url: 'update', method: 'post', data: Qs.stringify(data)}), } diff --git a/zyplayer-doc-ui/wiki-ui/src/components/layouts/AddMenu.vue b/zyplayer-doc-ui/wiki-ui/src/components/layouts/AddMenu.vue index 6be84950..ef5058c3 100644 --- a/zyplayer-doc-ui/wiki-ui/src/components/layouts/AddMenu.vue +++ b/zyplayer-doc-ui/wiki-ui/src/components/layouts/AddMenu.vue @@ -21,6 +21,10 @@ 创建文件夹 + + + 从模板创建 + { + emit('createWikiByTemplate', id) + } + const createWiki = (editorType, parentId) => { if (props.choiceSpace > 0) { let name = "新建文档" diff --git a/zyplayer-doc-ui/wiki-ui/src/components/layouts/GlobalLayout.vue b/zyplayer-doc-ui/wiki-ui/src/components/layouts/GlobalLayout.vue index 5641fe15..d636652e 100644 --- a/zyplayer-doc-ui/wiki-ui/src/components/layouts/GlobalLayout.vue +++ b/zyplayer-doc-ui/wiki-ui/src/components/layouts/GlobalLayout.vue @@ -18,6 +18,7 @@ :choosePageId="choosePageId" :nowPageId = "nowPageId" :funcId = "0" + @createWikiByTemplate="createWikiByTemplate" @choosePageIdFunc="choosePageIdFunc" @doGetPageList="doGetPageList" /> @@ -36,10 +37,13 @@ + + {{filterShareStatus(data.shareStatus)}} + - - {{ node.label }} - + + {{ node.label }} +
@@ -60,13 +65,17 @@ 重命名 - + 删除 + + @@ -80,6 +89,10 @@ 迁移文档 + + + 设为模板 + @@ -164,6 +177,7 @@ + nowPageId ,()=>{ leftSideBarDir.value.assisSetCurrentKey(); @@ -287,6 +303,22 @@ getSelfUserInfo() }); + const openTemplateCreate = (exsit) =>{ + templateManageRef.value.showTemplateCreate(exsit) + } + + const createWikiByTemplate = () =>{ + templateManageRef.value.showTemplateManage() + + } + + const filterShareStatus = (data) =>{ + if (data === 1){ + return '公共模板' + } + return '个人模板' + } + const openMoveMenu = (onlyMove) =>{ onlyMoveMode.value = onlyMove visibleMoveMenu.value =true @@ -326,8 +358,13 @@ moveToWikiPageList.value = [] } - const deleteWikiPage = () => { - ElMessageBox.confirm('确定要删除此页面及其所有子页面吗?', '提示', { + + const deleteWikiPage = (share) => { + let msg = '确定要删除此页面及其所有子页面吗?' + if (share !== undefined){ + msg='选中的页面是:' +filterShareStatus(share)+'删除后无法使用此模板! 确定要删除此页面及其所有子页面吗?' + } + ElMessageBox.confirm(msg, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', diff --git a/zyplayer-doc-ui/wiki-ui/src/components/template/TemplateManage.vue b/zyplayer-doc-ui/wiki-ui/src/components/template/TemplateManage.vue new file mode 100644 index 00000000..e0819460 --- /dev/null +++ b/zyplayer-doc-ui/wiki-ui/src/components/template/TemplateManage.vue @@ -0,0 +1,324 @@ +