implements WikiSpaceService {
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java
index 3a0f5f2c..f93bd5be 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java
@@ -49,6 +49,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
"/login/**", "/static/manage/login.html",
// 开放接口的静态文件和接口
"/open-doc.html", "/webjars/open-doc/**", "/swagger-mg-ui/open-doc/**",
+ "/open-wiki.html", "/webjars/doc-wiki/**", "/zyplayer-doc-wiki/open-api/**",
// http代理请求接口,有白名单限制,也不怕随便请求到内网资源了
"/swagger-mg-ui/http/**",
// 静态资源
diff --git a/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.1.sql b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.1.sql
index 5a46f4c1..61fac84e 100644
--- a/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.1.sql
+++ b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.1.sql
@@ -1,17 +1,17 @@
/*
Navicat Premium Data Transfer
- Source Server : localhost
+ Source Server : 127.0.0.1
Source Server Type : MySQL
- Source Server Version : 50725
- Source Host : localhost:3306
+ Source Server Version : 50724
+ Source Host : 127.0.0.1:3306
Source Schema : zyplayer_doc_manage
Target Server Type : MySQL
- Target Server Version : 50725
+ Target Server Version : 50724
File Encoding : 65001
- Date: 11/03/2019 23:20:13
+ Date: 13/03/2019 19:36:34
*/
SET NAMES utf8mb4;
@@ -116,17 +116,18 @@ CREATE TABLE `wiki_page` (
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
`del_flag` tinyint(4) NOT NULL DEFAULT 0 COMMENT '0=有效 1=删除',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of wiki_page
-- ----------------------------
-INSERT INTO `wiki_page` VALUES (1, 1, '关于zyplayer-doc工具', 0, 0, 0, 1, 1, '暮光:城中城', '2019-03-09 14:01:41', 1, '暮光:城中城', '2019-03-09 15:30:22', 0);
-INSERT INTO `wiki_page` VALUES (2, 1, '开发规划', 0, 0, 0, 1, 1, '暮光:城中城', '2019-03-09 14:14:02', 1, '暮光:城中城', '2019-03-09 15:43:58', 0);
-INSERT INTO `wiki_page` VALUES (3, 1, '升级日志', 0, 0, 0, 1, 1, '暮光:城中城', '2019-03-09 14:16:20', 1, '暮光:城中城', '2019-03-09 15:46:05', 0);
-INSERT INTO `wiki_page` VALUES (4, 1, '贡献人员列表', 0, 0, 0, 1, 1, '暮光:城中城', '2019-03-09 15:16:15', 1, '暮光:城中城', '2019-03-11 23:19:15', 0);
-INSERT INTO `wiki_page` VALUES (5, 1, 'zyplayer-doc-swagger', 0, 0, 0, 1, 1, '暮光:城中城', '2019-03-09 15:33:14', NULL, NULL, NULL, 0);
-INSERT INTO `wiki_page` VALUES (6, 1, '如何使用', 5, 0, 0, 1, 1, '暮光:城中城', '2019-03-09 15:33:33', 1, '暮光:城中城', '2019-03-09 15:33:46', 0);
+INSERT INTO `wiki_page` VALUES (1, 1, '关于zyplayer-doc工具', 0, 0, 0, 0, 1, '暮光:城中城', '2019-03-09 14:01:41', 1, '暮光:城中城', '2019-03-09 15:30:22', 0);
+INSERT INTO `wiki_page` VALUES (2, 1, '开发规划', 0, 0, 0, 0, 1, '暮光:城中城', '2019-03-09 14:14:02', 1, '暮光:城中城', '2019-03-09 15:43:58', 0);
+INSERT INTO `wiki_page` VALUES (3, 1, '升级日志', 0, 0, 0, 0, 1, '暮光:城中城', '2019-03-09 14:16:20', 1, '暮光:城中城', '2019-03-09 15:46:05', 0);
+INSERT INTO `wiki_page` VALUES (4, 1, '贡献人员列表', 0, 0, 0, 0, 1, '暮光:城中城', '2019-03-09 15:16:15', 1, '暮光:城中城', '2019-03-13 17:43:12', 0);
+INSERT INTO `wiki_page` VALUES (5, 1, 'zyplayer-doc-swagger', 0, 0, 0, 0, 1, '暮光:城中城', '2019-03-09 15:33:14', NULL, NULL, NULL, 0);
+INSERT INTO `wiki_page` VALUES (6, 1, '如何使用', 5, 0, 0, 0, 1, '暮光:城中城', '2019-03-09 15:33:33', 1, '暮光:城中城', '2019-03-09 15:33:46', 0);
+INSERT INTO `wiki_page` VALUES (7, 2, '所有格式测试', 0, 0, 0, 0, 1, '暮光:城中城', '2019-03-12 12:21:26', NULL, NULL, NULL, 0);
-- ----------------------------
-- Table structure for wiki_page_comment
@@ -161,17 +162,19 @@ CREATE TABLE `wiki_page_content` (
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_page_id`(`page_id`) USING BTREE COMMENT '页面ID'
-) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of wiki_page_content
-- ----------------------------
+
INSERT INTO `wiki_page_content` VALUES (1, 1, '一入开源深似海
源码地址:https://gitee.com/zyplayer/zyplayer-doc体验地址:http://doc.zyplayer.com/zyplayer-doc-manage/static/manage/home.html 账号:zyplayer 密码:123456
更多实用功能请提交评论或加群交流!谢谢!
QQ群:466363173
tips:想要编辑本文请修改表:wiki_page的edit_type字段值为0才行哦~
有什么问题可以来评论本文章哦!当然,如果你是部署在你们自己本地的我肯定看不到此文章的评论
可以到本工具官网下评论此文章,我会随时去查看的!
唯一官网地址:http://doc.zyplayer.com
欢迎提交各种变态无理的要求~
', 1, '暮光:城中城', '2019-03-09 14:01:41', 1, '暮光:城中城', '2019-03-09 15:30:22');
INSERT INTO `wiki_page_content` VALUES (2, 2, 'zyplayer-doc-manage:
1、首页做大的调整优化,希望使用element重构一下
2、人员导入方案,权限优化,人员管理细化
zyplayer-doc-wiki:
1、支持页面权限控制,包括查看、编辑、删除、评论的权限
2、支持把一个空间里的文档一键同步到git的wiki上,统一管理文档
3、支持微信文章拉取保存
4、支持历史记录查看
5、支持提供多种编辑器选择,更大的选择空间
6、支持全局搜索、文章内搜索等,当前只支持标题搜索,尴尬
7、支持开放一个空间里的文档无需登录即可访问
8、url动态变动,这样就可以复制指定文章的地址了
9、参考https://www.kancloud.cn,取其精华
欢迎加入开发!
如果您觉得哪里不好用也可以拉取源码下来改了后提交PR
源码地址:https://gitee.com/zyplayer/zyplayer-doc
更多实用功能请提交评论或加群交流!谢谢!
QQ群:466363173
', 1, '暮光:城中城', '2019-03-09 14:14:02', 1, '暮光:城中城', '2019-03-09 15:43:58');
INSERT INTO `wiki_page_content` VALUES (3, 3, 'V1.0.1 2019-03-09
1、增加zyplayer-doc-wiki模块
- 支持空间隔离
- 支持附件上传
- 拖动可以改变wiki顺序
- 基本的文档创建、编辑、评论、删除、搜索等功能
2、dubbo文档支持使用元数据生成参数和返回值,dubbo2.7.0新特性
3、框架进行了大的拆分,表修改较多
4、增加升级通知
5、细节优化
V1.0.0 2019-02-15
第一个版本发布
1、zyplayer-doc-swagger,swagger接口文档展示方案,在之前的项目中有许多改进,坚持文档生成和展示分离,有较多需要服务端支持的功能,不对各项目做过多的入侵即可使用,可动态对文档进行开放访问
2、zyplayer-doc-dubbo,支持对dubbo服务的自动扫描,直观展示所有的服务,文档的展示、文档编辑和在线接口调试,不需要对已有的服务做任何改动,支持zookeeper、nacos注册中心的服务扫描
3、zyplayer-doc-db,数据库文档工具,具有数据库表、字段文档的查看/修改,文档导出等功能,支持mysql和sqlserver数据库
4、zyplayer-doc-manage,管理以上几个服务,spring boot项目,spring security做权限管理,可直接运行
', 1, '暮光:城中城', '2019-03-09 14:16:20', 1, '暮光:城中城', '2019-03-09 15:46:05');
-INSERT INTO `wiki_page_content` VALUES (4, 4, '开发人员列表:
暮光:城中城
', 1, '暮光:城中城', '2019-03-09 15:16:15', 1, '暮光:城中城', '2019-03-11 23:19:15');
+INSERT INTO `wiki_page_content` VALUES (4, 4, '开发人员列表:
暮光:城中城
', 1, '暮光:城中城', '2019-03-09 15:16:15', 1, '暮光:城中城', '2019-03-13 17:43:12');
INSERT INTO `wiki_page_content` VALUES (5, 5, 'zyplayer-doc-swagger 使用文档目录
', 1, '暮光:城中城', '2019-03-09 15:33:14', NULL, NULL, NULL);
INSERT INTO `wiki_page_content` VALUES (6, 6, '最不喜欢写文档了。。。
', 1, '暮光:城中城', '2019-03-09 15:33:33', 1, '暮光:城中城', '2019-03-09 15:33:46');
+INSERT INTO `wiki_page_content` VALUES (7, 7, 'H2
加粗
字体大小
宋体宋体宋体宋体宋体
斜体斜体斜体
下划线下划线下划线
删除线删除线删除线
字体颜色
背景颜色
链接:百度一下
- 有序列表
- xxx
- xxx
文字居中
文字靠右
xxxxx
表情:![\"[坏笑]\"](\"http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/pcmoren_huaixiao_org.png\")
表格:
| ID | 名字 | 邮箱 | 说明 | 时间 |
|---|
| xx | xx | xx | xx | xx |
| | | | | |
代码:
public static void main(String[] args) {
System.out.println(\"hello world\");
}
', 1, '暮光:城中城', '2019-03-12 12:21:26', NULL, NULL, NULL);
-- ----------------------------
-- Table structure for wiki_page_file
@@ -207,13 +210,12 @@ CREATE TABLE `wiki_page_zan` (
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`yn` tinyint(4) NULL DEFAULT NULL COMMENT '是否有效 0=无效 1=有效',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of wiki_page_zan
-- ----------------------------
INSERT INTO `wiki_page_zan` VALUES (1, 1, NULL, 1, '暮光:城中城', '2019-03-09 22:19:44', 0);
-INSERT INTO `wiki_page_zan` VALUES (2, 2, NULL, 1, '暮光:城中城', '2019-03-11 23:18:43', 0);
-- ----------------------------
-- Table structure for wiki_space
@@ -226,18 +228,21 @@ CREATE TABLE `wiki_space` (
`space_explain` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
`edit_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '编辑类型 0=可编辑 1=不允许编辑',
`tree_lazy_load` tinyint(4) NOT NULL DEFAULT 0 COMMENT '目录延迟加载 0=否 1=是',
+ `open_doc` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否是开放文档 0=否 1=是',
+ `uuid` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '唯一UUID',
`create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人ID',
`create_user_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人名字',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`del_flag` tinyint(4) NOT NULL DEFAULT 0 COMMENT '删除标记 0=正常 1=已删除',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of wiki_space
-- ----------------------------
-INSERT INTO `wiki_space` VALUES (1, 'zyplayer-doc交流专用', 1, '交流本工具的空间', 1, 0, 1, '暮光:城中城', '2019-03-09 13:59:14', 0);
-INSERT INTO `wiki_space` VALUES (2, '体验专用空间', 1, '', 1, 0, 1, '暮光:城中城', '2019-03-09 14:24:30', 0);
+INSERT INTO `wiki_space` VALUES (1, 'zyplayer-doc交流专用', 1, '', 0, 0, 1, '23f3f59a60824d21af9f7c3bbc9bc3cb', 1, '暮光:城中城', '2019-03-09 13:59:14', 0);
+INSERT INTO `wiki_space` VALUES (2, '体验专用空间', 2, '', 0, 0, 0, '91995a9a67bf45db9b5e58266517393e', 1, '暮光:城中城', '2019-03-09 14:24:30', 0);
+INSERT INTO `wiki_space` VALUES (3, 'xxx', 1, '', 0, 0, 0, 'cb2f5ff14d8d4066a79249d317eaa449', 1, '暮光:城中城', '2019-03-13 17:44:53', 1);
-- ----------------------------
-- Table structure for zyplayer_storage
@@ -246,14 +251,15 @@ DROP TABLE IF EXISTS `zyplayer_storage`;
CREATE TABLE `zyplayer_storage` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增ID',
`doc_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数名字',
- `doc_value` varchar(2048) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数值',
+ `doc_value` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数值',
`creation_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `key`(`doc_key`) USING BTREE COMMENT 'key唯一索引'
-) ENGINE = InnoDB AUTO_INCREMENT = 48 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '存储网页上相关的数据' ROW_FORMAT = Compact;
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '存储网页上相关的数据' ROW_FORMAT = Compact;
-- ----------------------------
-- Records of zyplayer_storage
-- ----------------------------
+
SET FOREIGN_KEY_CHECKS = 1;
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiOpenApiController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiOpenApiController.java
new file mode 100644
index 00000000..4cc53966
--- /dev/null
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiOpenApiController.java
@@ -0,0 +1,114 @@
+package com.zyplayer.doc.wiki.controller;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.zyplayer.doc.core.json.DocResponseJson;
+import com.zyplayer.doc.core.json.ResponseJson;
+import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
+import com.zyplayer.doc.data.repository.manage.entity.WikiPageContent;
+import com.zyplayer.doc.data.repository.manage.entity.WikiPageFile;
+import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
+import com.zyplayer.doc.data.service.manage.WikiPageContentService;
+import com.zyplayer.doc.data.service.manage.WikiPageFileService;
+import com.zyplayer.doc.data.service.manage.WikiPageService;
+import com.zyplayer.doc.data.service.manage.WikiSpaceService;
+import com.zyplayer.doc.wiki.controller.vo.WikiPageContentVo;
+import com.zyplayer.doc.wiki.controller.vo.WikiPageVo;
+import org.dozer.Mapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 文档控制器
+ *
+ * @author 暮光:城中城
+ * @since 2019年2月17日
+ */
+@RestController
+@RequestMapping("/zyplayer-doc-wiki/open-api")
+public class WikiOpenApiController {
+ private static Logger logger = LoggerFactory.getLogger(WikiOpenApiController.class);
+
+ @Resource
+ WikiPageService wikiPageService;
+ @Resource
+ WikiSpaceService wikiSpaceService;
+ @Resource
+ WikiPageContentService wikiPageContentService;
+ @Resource
+ WikiPageFileService wikiPageFileService;
+ @Resource
+ Mapper mapper;
+
+ @PostMapping("/page/list")
+ public ResponseJson> list(String space) {
+ UpdateWrapper wrapperSpace = new UpdateWrapper<>();
+ wrapperSpace.eq("uuid", space);
+ WikiSpace wikiSpace = wikiSpaceService.getOne(wrapperSpace);
+ // 不存在或未开放
+ if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) {
+ return DocResponseJson.warn("未找到该文档");
+ }
+ UpdateWrapper wrapper = new UpdateWrapper<>();
+ wrapper.eq("del_flag", 0);
+ wrapper.eq("space_id", wikiSpace.getId());
+ List authList = wikiPageService.list(wrapper);
+ Map> listMap = authList.stream().map(val -> mapper.map(val, WikiPageVo.class)).collect(Collectors.groupingBy(WikiPageVo::getParentId));
+ List nodePageList = listMap.get(0L);
+ this.setChildren(listMap, nodePageList);
+ return DocResponseJson.ok(nodePageList);
+ }
+
+ @PostMapping("/page/detail")
+ public ResponseJson detail(String space, Long pageId) {
+ UpdateWrapper wrapperSpace = new UpdateWrapper<>();
+ wrapperSpace.eq("uuid", space);
+ WikiSpace wikiSpace = wikiSpaceService.getOne(wrapperSpace);
+ // 不存在或未开放
+ if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) {
+ return DocResponseJson.warn("未找到该文档");
+ }
+ WikiPage wikiPageSel = wikiPageService.getById(pageId);
+ // 不存在或不属于该空间
+ if (wikiPageSel == null || !Objects.equals(wikiPageSel.getSpaceId(), wikiSpace.getId())) {
+ return DocResponseJson.warn("未找到该文档");
+ }
+ UpdateWrapper wrapper = new UpdateWrapper<>();
+ wrapper.eq("page_id", pageId);
+ WikiPageContent pageContent = wikiPageContentService.getOne(wrapper);
+ UpdateWrapper wrapperFile = new UpdateWrapper<>();
+ wrapperFile.eq("page_id", pageId);
+ wrapperFile.eq("del_flag", 0);
+ List pageFiles = wikiPageFileService.list(wrapperFile);
+ for (WikiPageFile pageFile : pageFiles) {
+ pageFile.setFileUrl("zyplayer-doc-wiki/common/file?uuid=" + pageFile.getUuid());
+ }
+ WikiPageContentVo vo = new WikiPageContentVo();
+ vo.setWikiPage(wikiPageSel);
+ vo.setPageContent(pageContent);
+ vo.setFileList(pageFiles);
+ return DocResponseJson.ok(vo);
+ }
+
+ private void setChildren(Map> listMap, List nodePageList) {
+ if (nodePageList == null || listMap == null) {
+ return;
+ }
+ for (WikiPageVo page : nodePageList) {
+ List wikiPageVos = listMap.get(page.getId());
+ if (wikiPageVos != null && wikiPageVos.size() > 0) {
+ page.setChildren(wikiPageVos);
+ this.setChildren(listMap, wikiPageVos);
+ }
+ }
+ }
+}
+
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
index 3f8be220..72600d0e 100644
--- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
@@ -24,10 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -106,7 +103,8 @@ public class WikiPageController {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPageContent pageContent = new WikiPageContent();
pageContent.setContent(content);
- if (wikiPage.getDelFlag() == 0 && StringUtils.isBlank(wikiPage.getName())) {
+ Integer delFlag = Optional.ofNullable(wikiPage.getDelFlag()).orElse(0);
+ if (delFlag == 0 && StringUtils.isBlank(wikiPage.getName())) {
return DocResponseJson.warn("标题不能为空!");
}
Long id = wikiPage.getId();
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java
index d592f85b..86db9f9f 100644
--- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java
@@ -1,5 +1,6 @@
package com.zyplayer.doc.wiki.controller;
+import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson;
@@ -37,14 +38,8 @@ public class WikiSpaceController {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
UpdateWrapper wrapper = new UpdateWrapper<>();
wrapper.eq("del_flag", 0);
- if(wikiSpace.getType() == null) {
- wrapper.in("type", 1, 2);
- } else if(wikiSpace.getType() == 1 || wikiSpace.getType() == 2) {
- wrapper.eq(wikiSpace.getType() != null, "type", wikiSpace.getType());
- wrapper.eq(Objects.equals(wikiSpace.getType(), 2), "create_user_id", wikiSpace.getCreateUserId());
- } else if(wikiSpace.getType() == 3) {
- wrapper.eq("create_user_id", currentUser.getUserId());
- }
+ wrapper.in("type", 1, 2);
+ //wrapper.or().eq("type", 3).eq("create_user_id", currentUser.getUserId());
List authList = wikiSpaceService.list(wrapper);
return DocResponseJson.ok(authList);
}
@@ -57,9 +52,11 @@ public class WikiSpaceController {
if (Objects.equals(wikiSpaceSel.getEditType(), 1)) {
return DocResponseJson.warn("当前空间不允许编辑!");
}
+ wikiSpace.setUuid(null);
wikiSpaceService.updateById(wikiSpace);
} else {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
+ wikiSpace.setUuid(RandomUtil.simpleUUID());
wikiSpace.setCreateTime(new Date());
wikiSpace.setCreateUserId(currentUser.getUserId());
wikiSpace.setCreateUserName(currentUser.getUsername());
diff --git a/zyplayer-doc-wiki/src/main/resources/doc-wiki.html b/zyplayer-doc-wiki/src/main/resources/doc-wiki.html
index c01caae9..2690c83c 100644
--- a/zyplayer-doc-wiki/src/main/resources/doc-wiki.html
+++ b/zyplayer-doc-wiki/src/main/resources/doc-wiki.html
@@ -33,7 +33,9 @@
+ :expand-on-click-node="false" :default-expanded-keys="wikiPageExpandedKeys"
+ node-key="id"
+ style="background-color: #fafafa;">
@@ -168,9 +170,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
保存修改
立即创建
@@ -184,6 +205,12 @@
+
+
+ {{scope.row.uuid}}
+ 暂未开放
+
+
@@ -254,7 +281,7 @@
nowSpaceShow: {},
newSpaceDialogVisible: false,
manageSpaceDialogVisible: false,
- newSpaceForm: {id: '', name: '', spaceExplain: '', treeLazyLoad: 0},
+ newSpaceForm: {id: '', name: '', spaceExplain: '', treeLazyLoad: 0, openDoc: 0, uuid: '', type: 1},
newSpaceFormRules: {
name: [
{required: true, message: '请输入空间名', trigger: 'blur'},
@@ -272,6 +299,7 @@
// 页面展示相关
wikiPageList:[],
wikiPage: {},
+ wikiPageExpandedKeys: [],
pageContent: {},
pageFileList: [],
uploadFileList: [],
@@ -282,14 +310,33 @@
commentTextInput: "",
commentList: [],
recommentInfo: {},
+ // 页面跳转相关
+ initOver: false,
+ urlParam: {
+ pageId: 0
+ },
}
},
watch: {
-
+ urlParam: {
+ handler(newVal, oldVal) {
+ if (!this.initOver) return;
+ var params = urlToParam(newVal).slice(1);
+ window.history.pushState(null, null, '?' + params);
+ console.log(newVal, oldVal, params);
+ var oldPageId = oldVal.pageId || 0;
+ if (!!newVal.pageId && newVal.pageId > 0 && newVal.pageId !== oldPageId) {
+ this.wikiPageExpandedKeys = [parseInt(newVal.pageId)];
+ this.loadPageDetail(newVal.pageId);
+ }
+ },
+ deep: true, immediate: true
+ }
},
mounted: function () {
this.init();
this.loadSpaceList();
+ this.initOver = true;
},
methods: {
filterPageNode(value, data) {
@@ -299,7 +346,7 @@
editSpaceInfo(row) {
app.newSpaceForm = {
id: row.id, name: row.name, spaceExplain: row.spaceExplain,
- treeLazyLoad: row.treeLazyLoad
+ treeLazyLoad: row.treeLazyLoad, openDoc: row.openDoc, type: row.type
};
app.newSpaceDialogVisible = true;
},
@@ -356,6 +403,8 @@
var param = {
id: app.newSpaceForm.id,
name: app.newSpaceForm.name,
+ type: app.newSpaceForm.type,
+ openDoc: app.newSpaceForm.openDoc,
spaceExplain: app.newSpaceForm.spaceExplain,
treeLazyLoad: app.newSpaceForm.treeLazyLoad,
};
@@ -374,7 +423,7 @@
app.rightContentType = 0;
app.doGetPageList(null);
}
- app.newSpaceForm = {id: '', name: '', spaceExplain: '', treeLazyLoad: 0};
+ app.newSpaceForm = {id: '', name: '', spaceExplain: '', treeLazyLoad: 0, openDoc: 0, uuid: '', type: 1};
app.newSpaceDialogVisible = false;
}
});
@@ -493,7 +542,7 @@
cancelButtonText: '继续编辑',
type: 'warning'
}).then(() => {
- if (isEmpty(this.lastClickNode.label)) {
+ if (isEmpty(this.lastClickNode.name)) {
this.rightContentType = 0;
} else {
this.rightContentType = 1;
@@ -541,7 +590,7 @@
},
spaceChangeEvents(data) {
if (data == 0) {
- app.newSpaceForm = {id: '', name: '', spaceExplain: '', treeLazyLoad: 0};
+ app.newSpaceForm = {id: '', name: '', spaceExplain: '', treeLazyLoad: 0, openDoc: 0, uuid: '', type: 1};
app.choiceSpace = app.nowSpaceId;
app.newSpaceDialogVisible = true;
} else if (data == -1) {
@@ -590,6 +639,7 @@
app.pageContent = json.data.pageContent || {};
app.pageFileList = json.data.fileList || [];
app.uploadFormData = {pageId: app.wikiPage.id};
+ app.urlParam.pageId = app.wikiPage.id;
}
});
this.loadCommentList(pageId);
@@ -681,6 +731,23 @@
page.newPageContentEditor.customConfig.zIndex = 100;
page.newPageContentEditor.customConfig.pasteFilterStyle = false;
page.newPageContentEditor.create();
+ // 初始化页面参数
+ var url = document.location.toString();
+ if (url.indexOf("?") >= 0) {
+ var urlParam = {};
+ for (var key in this.urlParam) {
+ urlParam[key] = this.urlParam[key];
+ }
+ var params = url.split("?")[1];
+ var paramArr = params.split("&");
+ for (var i = 0; i < paramArr.length; i++) {
+ if (paramArr[i].indexOf("=") > 0) {
+ var param = paramArr[i].split("=");
+ urlParam[param[0]] = param[1];
+ }
+ }
+ this.urlParam = urlParam;
+ }
}
}
});
diff --git a/zyplayer-doc-wiki/src/main/resources/open-wiki.html b/zyplayer-doc-wiki/src/main/resources/open-wiki.html
new file mode 100644
index 00000000..862bcdfa
--- /dev/null
+++ b/zyplayer-doc-wiki/src/main/resources/open-wiki.html
@@ -0,0 +1,310 @@
+
+
+
+
+
+ wiki文档管理系统
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
本文档使用zyplayer-doc构建
+
+
+
+
+
+ 欢迎使用在线文档
+
+ {{nowSpaceShow.name}}
+ · {{nowSpaceShow.spaceExplain}}
+
+
+
+
+
+
{{wikiPage.name}}
+
+ 最后修改:{{wikiPage.updateTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+ zyplayer-doc
+
+
+ 暮光:城中城
+
+
+ 欢迎加群讨论,QQ群号:466363173,欢迎提交需求,欢迎使用和加入开发!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/zyplayer-doc-wiki/src/main/resources/webjars/doc-wiki/js/common.js b/zyplayer-doc-wiki/src/main/resources/webjars/doc-wiki/js/common.js
index 7af28afc..a32af8bf 100644
--- a/zyplayer-doc-wiki/src/main/resources/webjars/doc-wiki/js/common.js
+++ b/zyplayer-doc-wiki/src/main/resources/webjars/doc-wiki/js/common.js
@@ -35,6 +35,21 @@ function validateResult(result) {
return false;
}
+function urlToParam(param, key, encode) {
+ if (param == null) return '';
+ var paramStr = '';
+ var t = typeof (param);
+ if (t == 'string' || t == 'number' || t == 'boolean') {
+ paramStr += '&' + key + '=' + ((encode == null || encode) ? encodeURIComponent(param) : param);
+ } else {
+ for (var i in param) {
+ var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
+ paramStr += urlToParam(param[i], k, encode);
+ }
+ }
+ return paramStr;
+}
+
function getNowDate() {
var date = new Date();
var month = date.getMonth() + 1;