diff --git a/zyplayer-doc-core/pom.xml b/zyplayer-doc-core/pom.xml index b6eddf59..27b5dd71 100644 --- a/zyplayer-doc-core/pom.xml +++ b/zyplayer-doc-core/pom.xml @@ -52,5 +52,10 @@ pagehelper ${pagehelper.version} - + + com.baomidou + mybatis-plus-core + 3.3.0 + + diff --git a/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java index 4dbcc73a..ba34e27b 100644 --- a/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java +++ b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java @@ -1,214 +1,222 @@ -package com.zyplayer.doc.core.json; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializeConfig; -import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; -import com.github.pagehelper.PageInfo; -import io.swagger.annotations.ApiModelProperty; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Date; - -/** - * 文档返回数据格式 - * - * @author 暮光:城中城 - * @since 2018年8月21日 - */ -public class DocResponseJson implements ResponseJson { - private static SerializeConfig mapping = new SerializeConfig(); - static { - mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss")); - } - @ApiModelProperty(value = "状态码") - private Integer errCode; - @ApiModelProperty(value = "返回值说明") - private String errMsg; - @ApiModelProperty(value = "返回数据") - private Object data; - @ApiModelProperty(value = "总数") - private Long total; - @ApiModelProperty(value = "当前页数") - private Integer pageNum; - @ApiModelProperty(value = "每页条数") - private Integer pageSize; - @ApiModelProperty(value = "总页数") - private Integer totalPage; - - public DocResponseJson() { - this.errCode = 200; - } - - public DocResponseJson(Object data) { - this.setData(data); - this.errCode = 200; - } - - public DocResponseJson(int errCode, String errMsg) { - super(); - this.errCode = errCode; - this.errMsg = errMsg; - } - - public DocResponseJson(int errCode, String errMsg, Object data) { - super(); - this.setData(data); - this.errCode = errCode; - this.errMsg = errMsg; - } - - public DocResponseJson(Integer errCode) { - super(); - this.errCode = errCode; - } - - public Integer getErrCode() { - return errCode; - } - - public void setErrCode(Integer errCode) { - this.errCode = errCode; - } - - public String getErrMsg() { - return errMsg; - } - - public void setErrMsg(String errMsg) { - this.errMsg = errMsg; - } - - public Long getTotal() { - return total; - } - - public void setTotal(Long total) { - this.total = total; - } - - public Integer getPageNum() { - return pageNum; - } - - public void setPageNum(Integer pageNum) { - this.pageNum = pageNum; - } - - public Integer getPageSize() { - return pageSize; - } - - public void setPageSize(Integer pageSize) { - this.pageSize = pageSize; - } - - public Integer getTotalPage() { - return totalPage; - } - - public void setTotalPage(Integer totalPage) { - this.totalPage = totalPage; - } - - public Object getData() { - return data; - } - - public void setData(Object data) { - if (null != data) { - if (data instanceof PageInfo) { - PageInfo pageInfo = (PageInfo) data; - this.data = pageInfo.getList(); - this.total = pageInfo.getTotal(); - this.pageNum = pageInfo.getPageNum(); - this.pageSize = pageInfo.getPageSize(); - this.totalPage = pageInfo.getPages(); - } else { - this.data = data; - } - } - } - - /** - * 提示语 - * - * @author 暮光:城中城 - * @since 2018年8月7日 - * @return - */ - public static DocResponseJson warn(String errMsg) { - return new DocResponseJson(300, errMsg); - } - - /** - * 错误 - * - * @author 暮光:城中城 - * @since 2018年8月7日 - * @return - */ - public static DocResponseJson error(String errMsg) { - return new DocResponseJson(500, errMsg); - } - - /** - * 失败 - * - * @author 暮光:城中城 - * @since 2018年8月7日 - * @return - */ - public static DocResponseJson failure(int errCode, String errMsg) { - return new DocResponseJson(errCode, errMsg); - } - - /** - * 成功的返回方法 - * - * @author 暮光:城中城 - * @since 2018年8月7日 - * @return - */ - public static DocResponseJson ok() { - return new DocResponseJson<>(); - } - - /** - * 成功的返回方法 - * - * @author 暮光:城中城 - * @since 2018年8月7日 - * @return - */ - public static DocResponseJson ok(Object data) { - if (data == null) { - return DocResponseJson.ok(); - } - DocResponseJson responseJson = new DocResponseJson<>(); - responseJson.setData(data); - return responseJson; - } - - public String toJson() { - return JSON.toJSONString(this, mapping); - } - - public void send(HttpServletResponse response) { - try { - response.setStatus(200); - response.setContentType("application/json"); - response.setCharacterEncoding("UTF-8"); - response.setHeader("Cache-Control", "no-cache, must-revalidate"); - response.getWriter().write(toJson()); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public String toString() { - return "DefaultResponseJson [errCode=" + errCode + ", errMsg=" + errMsg + ", data=" + data + "]"; - } - -} +package com.zyplayer.doc.core.json; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializeConfig; +import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.ApiModelProperty; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Date; + +/** + * 文档返回数据格式 + * + * @author 暮光:城中城 + * @since 2018年8月21日 + */ +public class DocResponseJson implements ResponseJson { + private static SerializeConfig mapping = new SerializeConfig(); + static { + mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss")); + } + @ApiModelProperty(value = "状态码") + private Integer errCode; + @ApiModelProperty(value = "返回值说明") + private String errMsg; + @ApiModelProperty(value = "返回数据") + private Object data; + @ApiModelProperty(value = "总数") + private Long total; + @ApiModelProperty(value = "当前页数") + private Integer pageNum; + @ApiModelProperty(value = "每页条数") + private Integer pageSize; + @ApiModelProperty(value = "总页数") + private Integer totalPage; + + public DocResponseJson() { + this.errCode = 200; + } + + public DocResponseJson(Object data) { + this.setData(data); + this.errCode = 200; + } + + public DocResponseJson(int errCode, String errMsg) { + super(); + this.errCode = errCode; + this.errMsg = errMsg; + } + + public DocResponseJson(int errCode, String errMsg, Object data) { + super(); + this.setData(data); + this.errCode = errCode; + this.errMsg = errMsg; + } + + public DocResponseJson(Integer errCode) { + super(); + this.errCode = errCode; + } + + public Integer getErrCode() { + return errCode; + } + + public void setErrCode(Integer errCode) { + this.errCode = errCode; + } + + public String getErrMsg() { + return errMsg; + } + + public void setErrMsg(String errMsg) { + this.errMsg = errMsg; + } + + public Long getTotal() { + return total; + } + + public void setTotal(Long total) { + this.total = total; + } + + public Integer getPageNum() { + return pageNum; + } + + public void setPageNum(Integer pageNum) { + this.pageNum = pageNum; + } + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public Integer getTotalPage() { + return totalPage; + } + + public void setTotalPage(Integer totalPage) { + this.totalPage = totalPage; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + if (null != data) { + if (data instanceof PageInfo) { + PageInfo pageInfo = (PageInfo) data; + this.data = pageInfo.getList(); + this.total = pageInfo.getTotal(); + this.pageNum = pageInfo.getPageNum(); + this.pageSize = pageInfo.getPageSize(); + this.totalPage = pageInfo.getPages(); + } else if (data instanceof IPage) { + IPage iPage = (IPage) data; + this.data = iPage.getRecords(); + this.total = iPage.getTotal(); + this.pageNum = (int) iPage.getCurrent(); + this.pageSize = (int) iPage.getSize(); + this.totalPage = (int) iPage.getPages(); + } else { + this.data = data; + } + } + } + + /** + * 提示语 + * + * @author 暮光:城中城 + * @since 2018年8月7日 + * @return + */ + public static DocResponseJson warn(String errMsg) { + return new DocResponseJson(300, errMsg); + } + + /** + * 错误 + * + * @author 暮光:城中城 + * @since 2018年8月7日 + * @return + */ + public static DocResponseJson error(String errMsg) { + return new DocResponseJson(500, errMsg); + } + + /** + * 失败 + * + * @author 暮光:城中城 + * @since 2018年8月7日 + * @return + */ + public static DocResponseJson failure(int errCode, String errMsg) { + return new DocResponseJson(errCode, errMsg); + } + + /** + * 成功的返回方法 + * + * @author 暮光:城中城 + * @since 2018年8月7日 + * @return + */ + public static DocResponseJson ok() { + return new DocResponseJson<>(); + } + + /** + * 成功的返回方法 + * + * @author 暮光:城中城 + * @since 2018年8月7日 + * @return + */ + public static DocResponseJson ok(Object data) { + if (data == null) { + return DocResponseJson.ok(); + } + DocResponseJson responseJson = new DocResponseJson<>(); + responseJson.setData(data); + return responseJson; + } + + public String toJson() { + return JSON.toJSONString(this, mapping); + } + + public void send(HttpServletResponse response) { + try { + response.setStatus(200); + response.setContentType("application/json"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Cache-Control", "no-cache, must-revalidate"); + response.getWriter().write(toJson()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public String toString() { + return "DefaultResponseJson [errCode=" + errCode + ", errMsg=" + errMsg + ", data=" + data + "]"; + } + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java index 87eca58b..938cada7 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java @@ -13,6 +13,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.transaction.annotation.EnableTransactionManagement; +import javax.annotation.Resource; import javax.sql.DataSource; import java.util.Properties; @@ -54,6 +55,8 @@ public class MybatisPlusConfig { private String username; @Value("${zyplayer.doc.manage.datasource.password}") private String password; + @Resource + private PaginationInterceptor paginationInterceptor; @Bean(name = "manageDatasource") public DataSource manageDatasource() throws Exception { @@ -64,7 +67,7 @@ public class MybatisPlusConfig { public MybatisSqlSessionFactoryBean manageSqlSessionFactory() throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(manageDatasource()); - sqlSessionFactoryBean.setPlugins(new Interceptor[]{SQL_LOG_INTERCEPTOR, MYSQL_PAGE_HELPER}); + sqlSessionFactoryBean.setPlugins(new Interceptor[]{SQL_LOG_INTERCEPTOR, MYSQL_PAGE_HELPER, paginationInterceptor}); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/manage/*Mapper.xml")); diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/UserMessage.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/UserMessage.java new file mode 100644 index 00000000..70837ff3 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/UserMessage.java @@ -0,0 +1,197 @@ +package com.zyplayer.doc.data.repository.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 用户消息表 + *

+ * + * @author 暮光:城中城 + * @since 2020-06-23 + */ +public class UserMessage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 系统类型 1=manage 2=wiki 3=db + */ + private Integer sysType; + + /** + * 消息类型 1=普通文本消息 2=wiki文档创建 3=wiki文档删除 4=wiki文档编辑 5=wiki文档权限修改 6=wiki文档评论 7=wiki文档删除评论 + */ + private Integer msgType; + + /** + * 消息关联的数据ID + */ + private Long dataId; + + /** + * 消息关联的数据说明 + */ + private String dataDesc; + + /** + * 消息内容 + */ + private String msgContent; + + /** + * 消息状态 0=未读 1=已读 2=已删除 + */ + private Integer msgStatus; + + /** + * 操作人用户ID + */ + private Long operatorUserId; + + /** + * 操作人用户名 + */ + private String operatorUserName; + + /** + * 影响用户ID + */ + private Long affectUserId; + + /** + * 影响人用户名 + */ + private String affectUserName; + + /** + * 接收人用户ID + */ + private Long acceptUserId; + + /** + * 创建时间 + */ + private Date creationTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + public Integer getSysType() { + return sysType; + } + + public void setSysType(Integer sysType) { + this.sysType = sysType; + } + public Integer getMsgType() { + return msgType; + } + + public void setMsgType(Integer msgType) { + this.msgType = msgType; + } + public Long getDataId() { + return dataId; + } + + public void setDataId(Long dataId) { + this.dataId = dataId; + } + public String getDataDesc() { + return dataDesc; + } + + public void setDataDesc(String dataDesc) { + this.dataDesc = dataDesc; + } + public Integer getMsgStatus() { + return msgStatus; + } + + public void setMsgStatus(Integer msgStatus) { + this.msgStatus = msgStatus; + } + public Long getOperatorUserId() { + return operatorUserId; + } + + public void setOperatorUserId(Long operatorUserId) { + this.operatorUserId = operatorUserId; + } + public String getOperatorUserName() { + return operatorUserName; + } + + public void setOperatorUserName(String operatorUserName) { + this.operatorUserName = operatorUserName; + } + public Long getAcceptUserId() { + return acceptUserId; + } + + public void setAcceptUserId(Long acceptUserId) { + this.acceptUserId = acceptUserId; + } + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + @Override + public String toString() { + return "UserMessage{" + + "id=" + id + + ", sysType=" + sysType + + ", msgType=" + msgType + + ", dataId=" + dataId + + ", dataDesc=" + dataDesc + + ", msgStatus=" + msgStatus + + ", operatorUserId=" + operatorUserId + + ", operatorUserName=" + operatorUserName + + ", acceptUserId=" + acceptUserId + + ", creationTime=" + creationTime + + "}"; + } + + public String getMsgContent() { + return msgContent; + } + + public void setMsgContent(String msgContent) { + this.msgContent = msgContent; + } + + public Long getAffectUserId() { + return affectUserId; + } + + public void setAffectUserId(Long affectUserId) { + this.affectUserId = affectUserId; + } + + public String getAffectUserName() { + return affectUserName; + } + + public void setAffectUserName(String affectUserName) { + this.affectUserName = affectUserName; + } +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/UserMessageMapper.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/UserMessageMapper.java new file mode 100644 index 00000000..1aeed349 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/UserMessageMapper.java @@ -0,0 +1,16 @@ +package com.zyplayer.doc.data.repository.manage.mapper; + +import com.zyplayer.doc.data.repository.manage.entity.UserMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 用户消息表 Mapper 接口 + *

+ * + * @author 暮光:城中城 + * @since 2020-06-23 + */ +public interface UserMessageMapper extends BaseMapper { + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/consts/UserMsgSysType.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/consts/UserMsgSysType.java new file mode 100644 index 00000000..9f28440d --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/consts/UserMsgSysType.java @@ -0,0 +1,21 @@ +package com.zyplayer.doc.data.repository.support.consts; + +public enum UserMsgSysType { + // 系统类型 1=manage 2=wiki 3=db + MANAGE(1), WIKI(2), DB(2), + ; + + UserMsgSysType(int type) { + this.type = type; + } + + private int type; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/consts/UserMsgType.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/consts/UserMsgType.java new file mode 100644 index 00000000..3fa72240 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/consts/UserMsgType.java @@ -0,0 +1,23 @@ +package com.zyplayer.doc.data.repository.support.consts; + +public enum UserMsgType { + // 消息类型 1=普通文本消息 2=wiki文档创建 3=wiki文档删除 4=wiki文档编辑 5=wiki文档权限修改 + // 6=wiki文档评论 7=wiki文档删除评论 8=wiki文档上传附件 9=wiki文档修改了父级 10=wiki文档点赞 11=wiki文档附件删除 + SIMPLE(1), WIKI_PAGE_CREATE(2), WIKI_PAGE_DELETE(3), WIKI_PAGE_UPDATE(4), WIKI_PAGE_AUTH(5), + WIKI_PAGE_COMMENT(6), WIKI_PAGE_COMMENT_DEL(7), WIKI_PAGE_UPLOAD(8), WIKI_PAGE_PARENT(9), WIKI_PAGE_ZAN(10), WIKI_PAGE_FILE_DEL(11), + ; + + UserMsgType(int type) { + this.type = type; + } + + private int type; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java index 4b35208b..21cce963 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java @@ -20,7 +20,7 @@ public class CodeGenerator { // final String[] tableName = { "zyplayer_storage", "auth_info", "user_auth", "user_info", "db_datasource" }; // final String[] tableName = { "wiki_space", "wiki_page", "wiki_page_content", "wiki_page_file", "wiki_page_comment", "wiki_page_zan" }; // final String[] tableName = { "db_datasource", "es_datasource", "db_favorite" }; - final String[] tableName = { "db_transfer_task" }; + final String[] tableName = { "user_message" }; // 代码生成器 AutoGenerator mpg = new AutoGenerator(); diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/UserMessageService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/UserMessageService.java new file mode 100644 index 00000000..5ea14aa4 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/UserMessageService.java @@ -0,0 +1,22 @@ +package com.zyplayer.doc.data.service.manage; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zyplayer.doc.data.config.security.DocUserDetails; +import com.zyplayer.doc.data.repository.manage.entity.UserMessage; +import com.zyplayer.doc.data.repository.support.consts.UserMsgSysType; +import com.zyplayer.doc.data.repository.support.consts.UserMsgType; + +/** + *

+ * 用户消息表 服务类 + *

+ * + * @author 暮光:城中城 + * @since 2020-06-23 + */ +public interface UserMessageService extends IService { + + void addWikiMessage(UserMessage userMessage); + + UserMessage createUserMessage(DocUserDetails currentUser, Long pageId, String dataDesc, UserMsgSysType sysType, UserMsgType msgType); +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/UserMessageServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/UserMessageServiceImpl.java new file mode 100644 index 00000000..861d46c4 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/UserMessageServiceImpl.java @@ -0,0 +1,112 @@ +package com.zyplayer.doc.data.service.manage.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zyplayer.doc.data.config.security.DocUserDetails; +import com.zyplayer.doc.data.repository.manage.entity.UserMessage; +import com.zyplayer.doc.data.repository.manage.mapper.UserMessageMapper; +import com.zyplayer.doc.data.repository.support.consts.UserMsgSysType; +import com.zyplayer.doc.data.repository.support.consts.UserMsgType; +import com.zyplayer.doc.data.service.manage.UserMessageService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.Objects; + +/** + *

+ * 用户消息表 服务实现类 + *

+ * + * @author 暮光:城中城 + * @since 2020-06-23 + */ +@Service +public class UserMessageServiceImpl extends ServiceImpl implements UserMessageService { + + @Override + public UserMessage createUserMessage(DocUserDetails currentUser, Long dataId, String dataDesc, UserMsgSysType sysType, UserMsgType msgType) { + UserMessage userMessage = new UserMessage(); + userMessage.setDataId(dataId); + userMessage.setDataDesc(dataDesc); + userMessage.setSysType(sysType.getType()); + userMessage.setMsgType(msgType.getType()); + userMessage.setOperatorUserId(currentUser.getUserId()); + userMessage.setOperatorUserName(currentUser.getUsername()); + return userMessage; + } + + @Override + public void addWikiMessage(UserMessage userMessage) { + // 初始值 + userMessage.setMsgStatus(0); + userMessage.setCreationTime(new Date()); + // 操作人 + userMessage.setAcceptUserId(userMessage.getOperatorUserId()); + this.setWikiMsgContentForOperator(userMessage); + this.save(userMessage); + // 影响人 + if (userMessage.getAffectUserId() != null && !Objects.equals(userMessage.getAffectUserId(), userMessage.getOperatorUserId())) { + userMessage.setId(null); + userMessage.setAcceptUserId(userMessage.getAffectUserId()); + this.setWikiMsgContentForAffect(userMessage); + this.save(userMessage); + } + // 后期可以添加文档的关注人等 + } + + /** + * 给操作人发通知的内容 + * + * @param userMessage + */ + private void setWikiMsgContentForOperator(UserMessage userMessage) { + if (Objects.equals(UserMsgType.WIKI_PAGE_UPLOAD.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您在‘%s’文档内上传了附件", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_AUTH.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您修改了‘%s’文档内‘%s’的权限", userMessage.getDataDesc(), userMessage.getAffectUserName())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您评论了‘%s’文档", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT_DEL.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您删除了‘%s’文档的评论", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_PARENT.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您修改了‘%s’文档的父级", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_DELETE.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您删除了‘%s’文档", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_CREATE.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您创建了‘%s’文档", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_UPDATE.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您修改了‘%s’文档", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您赞同了‘%s’文档", userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_FILE_DEL.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您删除了‘%s’文档的一个附件", userMessage.getDataDesc())); + } + } + + /** + * 给影响人发通知的内容 + * + * @param userMessage + */ + private void setWikiMsgContentForAffect(UserMessage userMessage) { + if (Objects.equals(UserMsgType.WIKI_PAGE_UPLOAD.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("‘%s’为您的文档‘%s’上传了附件", userMessage.getOperatorUserName(), userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_AUTH.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您在‘%s’文档内的权限被‘%s’修改了", userMessage.getDataDesc(), userMessage.getOperatorUserName())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您的‘%s’文档收到了来自‘%s’的评论", userMessage.getDataDesc(), userMessage.getOperatorUserName())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT_DEL.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("‘%s’删除了您的文档‘%s’的一条评论", userMessage.getOperatorUserName(), userMessage.getDataDesc())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_PARENT.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’修改了父级", userMessage.getDataDesc(), userMessage.getOperatorUserName())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_DELETE.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’删除了", userMessage.getDataDesc(), userMessage.getOperatorUserName())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_UPDATE.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’修改了", userMessage.getDataDesc(), userMessage.getOperatorUserName())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您的‘%s’文档收到了‘%s’的赞同", userMessage.getDataDesc(), userMessage.getOperatorUserName())); + } else if (Objects.equals(UserMsgType.WIKI_PAGE_FILE_DEL.getType(), userMessage.getMsgType())) { + userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’删除了一个附件", userMessage.getDataDesc(), userMessage.getOperatorUserName())); + } + } +} 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 112ca0ce..545bea67 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 @@ -2,8 +2,14 @@ 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.config.security.DocUserDetails; +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.support.consts.UserMsgSysType; +import com.zyplayer.doc.data.repository.support.consts.UserMsgType; +import com.zyplayer.doc.data.service.manage.UserMessageService; import com.zyplayer.doc.data.service.manage.WikiPageService; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; @@ -25,6 +31,8 @@ public class WikiPageServiceImpl extends ServiceImpl i @Resource WikiPageMapper wikiPageMapper; + @Resource + UserMessageService userMessageService; @Override public void changeParent(WikiPage wikiPage, Integer beforeSeq, Integer afterSeq) { @@ -43,10 +51,27 @@ public class WikiPageServiceImpl extends ServiceImpl i wikiPage.setSeqNo(lastSeq + 1); } this.updateById(wikiPage); + // 给相关人发送消息 + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + UserMessage userMessage = userMessageService.createUserMessage(currentUser, wikiPage.getId(), wikiPage.getName(), UserMsgSysType.WIKI, UserMsgType.WIKI_PAGE_PARENT); + userMessage.setAffectUserId(wikiPage.getCreateUserId()); + userMessage.setAffectUserName(wikiPage.getCreateUserName()); + userMessageService.addWikiMessage(userMessage); } @Override public void deletePage(WikiPage wikiPage) { + // 给相关人发送消息 + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + UserMessage userMessage = userMessageService.createUserMessage(currentUser, wikiPage.getId(), wikiPage.getName(), UserMsgSysType.WIKI, UserMsgType.WIKI_PAGE_DELETE); + userMessage.setAffectUserId(wikiPage.getCreateUserId()); + userMessage.setAffectUserName(wikiPage.getCreateUserName()); + userMessageService.addWikiMessage(userMessage); + // 递归删除 + this.deletePageAndSon(wikiPage); + } + + private void deletePageAndSon(WikiPage wikiPage) { wikiPage.setDelFlag(1); this.updateById(wikiPage); @@ -60,7 +85,7 @@ public class WikiPageServiceImpl extends ServiceImpl i // 递归删除子页面 for (WikiPage page : wikiPageList) { wikiPage.setId(page.getId()); - this.deletePage(wikiPage); + this.deletePageAndSon(wikiPage); } } } diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/web/generator/GeneratorUserMessageController.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/web/generator/GeneratorUserMessageController.java new file mode 100644 index 00000000..fd33e88d --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/web/generator/GeneratorUserMessageController.java @@ -0,0 +1,20 @@ +package com.zyplayer.doc.data.web.generator; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 用户消息表 前端控制器 + *

+ * + * @author 暮光:城中城 + * @since 2020-06-23 + */ +@RestController +@RequestMapping("/user-message") +public class GeneratorUserMessageController { + +} diff --git a/zyplayer-doc-data/src/main/resources/mapper/manage/UserMessageMapper.xml b/zyplayer-doc-data/src/main/resources/mapper/manage/UserMessageMapper.xml new file mode 100644 index 00000000..589ba039 --- /dev/null +++ b/zyplayer-doc-data/src/main/resources/mapper/manage/UserMessageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/UserMessageController.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/UserMessageController.java new file mode 100644 index 00000000..9381934a --- /dev/null +++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/UserMessageController.java @@ -0,0 +1,94 @@ +package com.zyplayer.doc.manage.web.manage; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zyplayer.doc.core.annotation.AuthMan; +import com.zyplayer.doc.core.json.DocResponseJson; +import com.zyplayer.doc.core.json.ResponseJson; +import com.zyplayer.doc.data.config.security.DocUserDetails; +import com.zyplayer.doc.data.config.security.DocUserUtil; +import com.zyplayer.doc.data.repository.manage.entity.UserMessage; +import com.zyplayer.doc.data.service.manage.UserMessageService; +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.Arrays; + +/** + * 用户消息控制器 + * + * @author 暮光:城中城 + * @since 2020年6月25日 + */ +@AuthMan +@RestController +@RequestMapping("/user/message") +public class UserMessageController { + + @Resource + UserMessageService userMessageService; + + /** + * 消息列表 + * + * @param pageNum 当前页 + * @param pageSize 每页条数 + * @param msgStatus 消息状态 + * @return 数据列表 + */ + @PostMapping("/list") + public ResponseJson list(Long pageNum, Long pageSize, Integer msgStatus) { + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + IPage page = new Page<>(pageNum, pageSize); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("accept_user_id", currentUser.getUserId()); + if (msgStatus != null && msgStatus >= 0) { + wrapper.eq("msg_status", msgStatus); + } + userMessageService.page(page, wrapper); + return DocResponseJson.ok(page); + } + + /** + * 更新消息已读状态 + * + * @param ids 消息IDS + * @return 是否成功 + */ + @PostMapping("/read") + public ResponseJson read(String ids) { + this.update(ids, 1); + return DocResponseJson.ok(); + } + + /** + * 删除消息 + * + * @param ids 消息IDS + * @return 是否成功 + */ + @PostMapping("/delete") + public ResponseJson delete(String ids) { + this.update(ids, 2); + return DocResponseJson.ok(); + } + + /** + * 更新消息状态 + * + * @param ids 消息IDS + * @param status 状态 + */ + public void update(String ids, Integer status) { + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("id", Arrays.asList(ids.split(","))); + wrapper.eq("accept_user_id", currentUser.getUserId()); + UserMessage msgUp = new UserMessage(); + msgUp.setMsgStatus(status); + userMessageService.update(msgUp, wrapper); + } +} diff --git a/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.6.sql b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.6.sql index 0b9c0f44..a0b144ab 100644 --- a/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.6.sql +++ b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.6.sql @@ -11,6 +11,23 @@ ADD COLUMN `group_name` varchar(50) NULL COMMENT '数据源分组名'; ALTER TABLE `wiki_page` ADD COLUMN `editor_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '编辑框类型 1=HTML 2=Markdown'; +CREATE TABLE `user_message` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键自增ID', + `sys_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '系统类型 1=manage 2=wiki 3=db', + `msg_type` int NOT NULL DEFAULT 1 COMMENT '消息类型 1=普通文本消息 2=wiki文档创建 3=wiki文档删除 4=wiki文档编辑 5=wiki文档权限修改 6=wiki文档评论 7=wiki文档删除评论 8=wiki文档上传附件', + `data_id` bigint(20) NULL DEFAULT NULL COMMENT '消息关联的数据ID', + `data_desc` varchar(100) NULL DEFAULT NULL COMMENT '消息关联的数据说明', + `msg_content` varchar(255) NULL DEFAULT NULL COMMENT '消息内容', + `msg_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '消息状态 0=未读 1=已读 2=已删除', + `operator_user_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人用户ID', + `operator_user_name` varchar(20) NULL DEFAULT NULL COMMENT '操作人用户名', + `affect_user_id` bigint(20) NULL DEFAULT NULL COMMENT '影响人用户ID', + `affect_user_name` varchar(20) NULL DEFAULT NULL COMMENT '影响人用户名', + `accept_user_id` bigint(20) NULL DEFAULT NULL COMMENT '接收人用户ID', + `creation_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户消息表' ROW_FORMAT = Compact; + -- ------------------------全新的库:------------------------ /* Navicat Premium Data Transfer @@ -226,6 +243,7 @@ CREATE TABLE `wiki_page` ( `del_flag` tinyint(4) NOT NULL DEFAULT 0 COMMENT '0=有效 1=删除', `view_num` int(11) NOT NULL DEFAULT 0 COMMENT '阅读数', `seq_no` int(11) NOT NULL DEFAULT 0 COMMENT '顺序', + `editor_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '编辑框类型 1=HTML 2=Markdown', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; diff --git a/zyplayer-doc-ui/wiki-ui/.env.development b/zyplayer-doc-ui/wiki-ui/.env.development index 58e9a01d..fb7181ed 100644 --- a/zyplayer-doc-ui/wiki-ui/.env.development +++ b/zyplayer-doc-ui/wiki-ui/.env.development @@ -2,8 +2,8 @@ ENV = 'development' # base api -VUE_APP_BASE_API = 'http://local.zyplayer.com:8083/zyplayer-doc-manage' -# VUE_APP_BASE_API = 'http://doc.zyplayer.com/zyplayer-doc-manage' +# VUE_APP_BASE_API = 'http://local.zyplayer.com:8083/zyplayer-doc-manage' +VUE_APP_BASE_API = 'http://doc.zyplayer.com/zyplayer-doc-manage' VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/zyplayer-doc-ui/wiki-ui/package-lock.json b/zyplayer-doc-ui/wiki-ui/package-lock.json index 069f8105..010bce0b 100644 --- a/zyplayer-doc-ui/wiki-ui/package-lock.json +++ b/zyplayer-doc-ui/wiki-ui/package-lock.json @@ -1496,7 +1496,7 @@ }, "@webassemblyjs/ast": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.8.5.tgz", "integrity": "sha1-UbHF/mV2o0lTv0slPfnw1JDZ41k=", "dev": true, "requires": { @@ -1507,25 +1507,25 @@ }, "@webassemblyjs/floating-point-hex-parser": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.8.5.tgz", "integrity": "sha1-G6kmopI2E+3OSW/VsC6M6KX0lyE=", "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.8.5.tgz", "integrity": "sha1-xJ2tIvZFInxe22EL25aX8aq3Ifc=", "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.8.5.tgz", "integrity": "sha1-/qk+Qphj3V5DOFVfQikjhaZT8gQ=", "dev": true }, "@webassemblyjs/helper-code-frame": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.8.5.tgz", "integrity": "sha1-mnQP9I4/qjAisd/1RCPfmqKTwl4=", "dev": true, "requires": { @@ -1534,13 +1534,13 @@ }, "@webassemblyjs/helper-fsm": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.8.5.tgz", "integrity": "sha1-ugt9Oz9+RzPaYFnJMyJ12GBwJFI=", "dev": true }, "@webassemblyjs/helper-module-context": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.8.5.tgz", "integrity": "sha1-3vS5knsBAdyMu9jR7bW3ucguskU=", "dev": true, "requires": { @@ -1550,13 +1550,13 @@ }, "@webassemblyjs/helper-wasm-bytecode": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.8.5.tgz", "integrity": "sha1-U3p1Dt31weky83RCBlUckcG5PmE=", "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.8.5.tgz", "integrity": "sha1-dMpqa8vhnlCjtrRihH5pUD5r/L8=", "dev": true, "requires": { @@ -1568,7 +1568,7 @@ }, "@webassemblyjs/ieee754": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.8.5.tgz", "integrity": "sha1-cSMp2+8kDza/V70ve4+5v0FUQh4=", "dev": true, "requires": { @@ -1577,7 +1577,7 @@ }, "@webassemblyjs/leb128": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.8.5.tgz", "integrity": "sha1-BE7es06mefPgTNT9mCTV41dnrhA=", "dev": true, "requires": { @@ -1586,13 +1586,13 @@ }, "@webassemblyjs/utf8": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.8.5.tgz", "integrity": "sha1-qL87XY/+mGx8Hjc8y9wqCRXwztw=", "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.8.5.tgz", "integrity": "sha1-li2hKqWswcExyBxCMpkcgs5W4Bo=", "dev": true, "requires": { @@ -1608,7 +1608,7 @@ }, "@webassemblyjs/wasm-gen": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.8.5.tgz", "integrity": "sha1-VIQHZsLBAC62TtGr5yCt7XFPmLw=", "dev": true, "requires": { @@ -1621,7 +1621,7 @@ }, "@webassemblyjs/wasm-opt": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.8.5.tgz", "integrity": "sha1-sk2fa6UDlK8TSfUQr6j/y4pj0mQ=", "dev": true, "requires": { @@ -1633,7 +1633,7 @@ }, "@webassemblyjs/wasm-parser": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.8.5.tgz", "integrity": "sha1-IVdvDsiLkUJzV7hTY4NmjvfGa40=", "dev": true, "requires": { @@ -1647,7 +1647,7 @@ }, "@webassemblyjs/wast-parser": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.8.5.tgz", "integrity": "sha1-4Q7s1ULQ5705T2gnxJ899tTu+4w=", "dev": true, "requires": { @@ -1661,7 +1661,7 @@ }, "@webassemblyjs/wast-printer": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.8.5.tgz", + "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.8.5.tgz", "integrity": "sha1-EUu8SB/RDKDiOzVg+oEnSLC65bw=", "dev": true, "requires": { @@ -1672,13 +1672,13 @@ }, "@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz", + "resolved": "http://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz", "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", "dev": true }, "@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", + "resolved": "http://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", "dev": true }, @@ -1743,7 +1743,7 @@ }, "ajv-errors": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", "dev": true }, @@ -2442,7 +2442,7 @@ }, "buffer-from": { "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", "dev": true }, @@ -3096,7 +3096,7 @@ }, "concat-stream": { "version": "1.6.2", - "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", + "resolved": "http://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", "dev": true, "requires": { @@ -3171,7 +3171,7 @@ }, "copy-concurrently": { "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", + "resolved": "http://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", "dev": true, "requires": { @@ -3648,7 +3648,7 @@ }, "deepmerge": { "version": "1.5.2", - "resolved": "http://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz", + "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz", "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=" }, "default-gateway": { @@ -4328,7 +4328,7 @@ }, "esrecurse": { "version": "4.2.1", - "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", + "resolved": "http://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "dev": true, "requires": { @@ -4616,7 +4616,7 @@ }, "fast-deep-equal": { "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, @@ -4641,7 +4641,7 @@ }, "fast-json-stable-stringify": { "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, @@ -4665,7 +4665,7 @@ }, "figgy-pudding": { "version": "3.5.1", - "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz", + "resolved": "http://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz", "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=", "dev": true }, @@ -4792,7 +4792,7 @@ }, "flush-write-stream": { "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz", "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", "dev": true, "requires": { @@ -4866,7 +4866,7 @@ }, "from2": { "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz", + "resolved": "http://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { @@ -4896,7 +4896,7 @@ }, "fs-write-stream-atomic": { "version": "1.0.10", - "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", + "resolved": "http://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { @@ -4932,7 +4932,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4953,12 +4954,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4973,17 +4976,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -5100,7 +5106,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -5112,6 +5119,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5126,6 +5134,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5133,12 +5142,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -5157,6 +5168,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -5237,7 +5249,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -5249,6 +5262,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -5334,7 +5348,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -5370,6 +5385,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5389,6 +5405,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -5432,12 +5449,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -5963,7 +5982,7 @@ }, "iferr": { "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", + "resolved": "http://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, @@ -6025,7 +6044,7 @@ }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", + "resolved": "http://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, @@ -6501,7 +6520,7 @@ }, "json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", "dev": true }, @@ -6513,7 +6532,7 @@ }, "json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", "dev": true }, @@ -7284,7 +7303,7 @@ }, "move-concurrently": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { @@ -7502,7 +7521,7 @@ }, "normalize-wheel": { "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-wheel%2Fdownload%2Fnormalize-wheel-1.0.1.tgz", "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" }, "npm-run-path": { @@ -8718,7 +8737,7 @@ }, "promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, @@ -8764,7 +8783,7 @@ }, "pump": { "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", "dev": true, "requires": { @@ -8774,7 +8793,7 @@ }, "pumpify": { "version": "1.5.1", - "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz", + "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpumpify%2Fdownload%2Fpumpify-1.5.1.tgz", "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", "dev": true, "requires": { @@ -8785,7 +8804,7 @@ "dependencies": { "pump": { "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", "dev": true, "requires": { @@ -9172,7 +9191,7 @@ }, "resize-observer-polyfill": { "version": "1.5.1", - "resolved": "http://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", + "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=" }, "resolve": { @@ -9260,7 +9279,7 @@ }, "run-queue": { "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz", + "resolved": "http://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { @@ -9959,7 +9978,7 @@ }, "stream-each": { "version": "1.2.3", - "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz", + "resolved": "http://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz", "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", "dev": true, "requires": { @@ -9982,7 +10001,7 @@ }, "stream-shift": { "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz", "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, @@ -10169,7 +10188,7 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true } @@ -10194,7 +10213,7 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true } @@ -10236,7 +10255,7 @@ }, "through2": { "version": "2.0.5", - "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", "dev": true, "requires": { @@ -10398,7 +10417,7 @@ }, "typedarray": { "version": "0.0.6", - "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", + "resolved": "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, @@ -10488,7 +10507,7 @@ }, "unique-filename": { "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz", "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", "dev": true, "requires": { @@ -10576,7 +10595,7 @@ }, "uri-js": { "version": "4.2.2", - "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", + "resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", "dev": true, "requires": { diff --git a/zyplayer-doc-ui/wiki-ui/src/common/api/common.js b/zyplayer-doc-ui/wiki-ui/src/common/api/common.js index 62d7e945..14fcf334 100644 --- a/zyplayer-doc-ui/wiki-ui/src/common/api/common.js +++ b/zyplayer-doc-ui/wiki-ui/src/common/api/common.js @@ -2,9 +2,6 @@ import Qs from 'qs' import request from './request' export default { - commonUpload: data => { - return request({url: '/zyplayer-doc-wiki/common/upload', method: 'post', data: Qs.stringify(data)}); - }, getUserBaseInfo: data => { return request({url: '/zyplayer-doc-wiki/common/user/base', method: 'post', data: Qs.stringify(data)}); }, diff --git a/zyplayer-doc-ui/wiki-ui/src/common/api/page.js b/zyplayer-doc-ui/wiki-ui/src/common/api/page.js index 47a193d1..616eee7f 100644 --- a/zyplayer-doc-ui/wiki-ui/src/common/api/page.js +++ b/zyplayer-doc-ui/wiki-ui/src/common/api/page.js @@ -44,8 +44,8 @@ export default { assignPageUserAuth: data => { return request({url: '/zyplayer-doc-wiki/page/auth/assign', method: 'post', data: Qs.stringify(data)}); }, - updatePageFile: data => { - return request({url: '/zyplayer-doc-wiki/page/file/update', method: 'post', data: Qs.stringify(data)}); + deletePageFile: data => { + return request({url: '/zyplayer-doc-wiki/page/file/delete', method: 'post', data: Qs.stringify(data)}); }, pageCommentList: data => { return request({url: '/zyplayer-doc-wiki/page/comment/list', method: 'post', data: Qs.stringify(data)}); 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 cfd68a87..3049dfa6 100644 --- a/zyplayer-doc-ui/wiki-ui/src/components/layouts/GlobalLayout.vue +++ b/zyplayer-doc-ui/wiki-ui/src/components/layouts/GlobalLayout.vue @@ -29,7 +29,7 @@ - + diff --git a/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue b/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue index 096f2d20..fe6e9c07 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue @@ -227,7 +227,7 @@ }, initEditor() { this.editor = new WangEditor('#newPageContentDiv'); - this.editor.customConfig.uploadImgServer = process.env.VUE_APP_BASE_API + '/zyplayer-doc-wiki/common/wangEditor/upload'; + this.editor.customConfig.uploadImgServer = process.env.VUE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/wangEditor/upload'; this.editor.customConfig.zIndex = 100; this.editor.customConfig.uploadFileName = 'files'; this.editor.customConfig.uploadImgMaxLength = 1; diff --git a/zyplayer-doc-ui/wiki-ui/src/views/page/Show.vue b/zyplayer-doc-ui/wiki-ui/src/views/page/Show.vue index dedfe7a5..1d5e2669 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/page/Show.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/page/Show.vue @@ -1,12 +1,12 @@