diff --git a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDoc.java b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDoc.java index e8e426f4e..bfc1b59de 100644 --- a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDoc.java +++ b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDoc.java @@ -157,6 +157,11 @@ public class CmsDoc extends BaseSortEntity { */ private String auditEditableStatus; + /** + * 关键词 + */ + private String keywords; + public CmsDir copyToCmsDir() { CmsDir cmsDir = new CmsDir(); cmsDir.setId(id); @@ -224,6 +229,7 @@ public class CmsDoc extends BaseSortEntity { cmsDocDto.setAuditStatus(auditStatus); cmsDocDto.setAuditType(auditType); cmsDocDto.setCreateBy(createBy); + cmsDocDto.setKeywords(keywords); return cmsDocDto; } diff --git a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocBaseDto.java b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocBaseDto.java index 6009f4c23..0c76dcb77 100644 --- a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocBaseDto.java +++ b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocBaseDto.java @@ -96,6 +96,11 @@ public class CmsDocBaseDto { @ApiModelProperty("文章创建者") private String createBy; + /** + * 关键词 + */ + @ApiModelProperty("关键词") + private String keywords; public void setPublishTime(Date publishTime) { if (publishTime != null) { diff --git a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocDto.java b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocDto.java index aaa6a4f07..3389ee646 100644 --- a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocDto.java +++ b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocDto.java @@ -65,6 +65,11 @@ public class CmsDocDto { @ApiModelProperty("是否在栏目下修改") private boolean isChangeOnDir; + /** + * 关键词 + */ + @ApiModelProperty("关键词") + private String keywords; public String getName() { if (name != null) { diff --git a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocInputDto.java b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocInputDto.java index 57680719e..b153a4684 100644 --- a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocInputDto.java +++ b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocInputDto.java @@ -45,6 +45,11 @@ public class CmsDocInputDto { */ @ApiModelProperty("文本编辑器类型") private String editorType; + /** + * 关键词 + */ + @ApiModelProperty("关键词") + private String keywords; public String getContent() { String base64decodedString; @@ -78,6 +83,7 @@ public class CmsDocInputDto { cmsDoc.setHeadImg(this.getHeadImg()); cmsDoc.setDeptId(dirDoc.getDeptId()); cmsDoc.setEditorType(this.editorType); + cmsDoc.setKeywords(this.keywords); return cmsDoc; } } diff --git a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocSearchVo.java b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocSearchVo.java index 5fb467dd1..655de8514 100644 --- a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocSearchVo.java +++ b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/domain/CmsDocSearchVo.java @@ -78,4 +78,9 @@ public class CmsDocSearchVo { */ @ApiModelProperty(value = "创建者", hidden = true) private String createBy; + /** + * 关键词 + */ + @ApiModelProperty("关键词") + private String keywords; } diff --git a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocCommentServiceImpl.java b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocCommentServiceImpl.java index c9d382a6d..bb517f0d5 100644 --- a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocCommentServiceImpl.java +++ b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocCommentServiceImpl.java @@ -166,7 +166,7 @@ public class CmsDocCommentServiceImpl implements ICmsDocCommentService { return true; } // 判断是否为当前组织下的专区管理员 - return deptId.equals(SecurityUtils.getUserIdentity().getDeptId()) + return deptId.equals(SecurityUtils.getDeptId()) && SystemRole.ZONE_ADMIN.getRoleKey().equals(SecurityUtils.getRoleKey()); } diff --git a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocServiceImpl.java b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocServiceImpl.java index 4e0d73e06..fcdfce62e 100644 --- a/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocServiceImpl.java +++ b/microservices-modules/microservices-modules-cms/src/main/java/com/microservices/cms/doc/service/impl/CmsDocServiceImpl.java @@ -677,6 +677,17 @@ public class CmsDocServiceImpl implements ICmsDocService { if (!hasRepoRelatedChanged(oldCmsDoc, cmsDocDto)) { return cmsDocMapper.updateCmsDoc(oldCmsDoc) > 0; } + // 当文章名称发生更改时,判断文章名是否在当前栏目下已存在 + if (StringUtils.isNotEmpty(cmsDocDto.getName()) && !cmsDocDto.getName().equals(oldCmsDoc.getName())) { + String dirName = oldCmsDoc.getDirName(); + if (cmsDocDto.getDirId() != null) { + CmsDir cmsDir = selectCmsDirById(cmsDocDto.getDirId(), false); + if (!cmsDir.getName().equals(dirName)) { + dirName = cmsDir.getName(); + } + } + checkDocName(cmsDocDto.getName(), oldCmsDoc.getDeptId(), dirName); + } //用户为专区管理员或专区无审核机制时,直接更新文章及仓库主分支 if (isCurrentUserZoneAdmin(oldCmsDoc.getDeptId()) || isNoAuditRequired(oldCmsDoc.getDeptId())) { //专区管理员重新编辑并提交审核未通过文章 或 重新编辑并提交待审核文章时专区不需审核机制 @@ -700,6 +711,7 @@ public class CmsDocServiceImpl implements ICmsDocService { oldCmsDoc = cmsAsyncService.updateCmsDocDatabaseAndUpdateForGitLink(oldCmsDoc, cmsDocDto, branchName); oldCmsDoc.setAuditStatus(DocAuditStatus.AUDIT_PASS.getAuditCode()); oldCmsDoc.setAuditTmpBranchName(null); + oldCmsDoc.setKeywords(cmsDocDto.getKeywords()); return updateCmsCommonDatabase(oldCmsDoc, CmsConstants.BRANCH_MASTER) > 0; } else { @@ -761,6 +773,7 @@ public class CmsDocServiceImpl implements ICmsDocService { } } + oldCmsDoc.setKeywords(cmsDocDto.getKeywords()); oldCmsDoc.setSummary(cmsDocDto.getSummary()); oldCmsDoc.setHeadImg(cmsDocDto.getHeadImg()); return isChangeName || isChangeContent || isChangeDir; @@ -1133,16 +1146,7 @@ public class CmsDocServiceImpl implements ICmsDocService { } private boolean insertCommonCmsDoc(CmsDoc cmsDoc, String message, String content) { - //检查该文件是否已存在 - CmsDoc oldCmsDoc = cmsDocMapper.selectCmsDocByNameAndDeptId(cmsDoc.getName(), cmsDoc.getDeptId(), cmsDoc.getDirName()); - if (oldCmsDoc != null) { - if (oldCmsDoc.getIsDir()) { - throw new ServiceException("该栏目已存在(栏目名称[" + cmsDoc.getName() + "])"); - } else { - throw new ServiceException("该文章已存在(文章名称[" + cmsDoc.getName() + "])"); - } - - } + checkDocName(cmsDoc.getName(), cmsDoc.getDeptId(), cmsDoc.getDirName()); createFileByGitLink(cmsDoc, message, content); boolean success = insertCmsDocDatabase(cmsDoc, content); // 推送文章地址到搜索引擎 @@ -1150,6 +1154,19 @@ public class CmsDocServiceImpl implements ICmsDocService { return success; } + private void checkDocName(String docName, Long deptId, String dirName) { + //检查该文件是否已存在 + CmsDoc oldCmsDoc = cmsDocMapper.selectCmsDocByNameAndDeptId(docName, deptId, dirName); + if (oldCmsDoc != null) { + if (oldCmsDoc.getIsDir()) { + throw new ServiceException("该栏目已存在(栏目名称[%s])", docName); + } else { + throw new ServiceException("该文章在当前栏目下已存在(文章名称[%s],栏目名称[%s])", docName, dirName); + } + + } + } + private boolean insertCmsDocWithAudit(CmsDoc cmsDoc, String message, String content) { //检查该文件是否已存在 CmsDoc oldCmsDoc = cmsDocMapper.selectCmsDocByNameAndDeptId(cmsDoc.getName(), cmsDoc.getDeptId(), cmsDoc.getDirName()); diff --git a/microservices-modules/microservices-modules-cms/src/main/resources/mapper/cms/CmsDocMapper.xml b/microservices-modules/microservices-modules-cms/src/main/resources/mapper/cms/CmsDocMapper.xml index 332fec54d..efc76a540 100644 --- a/microservices-modules/microservices-modules-cms/src/main/resources/mapper/cms/CmsDocMapper.xml +++ b/microservices-modules/microservices-modules-cms/src/main/resources/mapper/cms/CmsDocMapper.xml @@ -36,6 +36,7 @@ + @@ -69,6 +70,7 @@ audit_status, audit_type, audit_tmp_branch_name, + keywords, audit_pr_number from cms_doc @@ -100,6 +102,7 @@ cd.issue_id, cd.is_homepage, cd.editor_type, + cd.keywords, cd.is_dir from cms_doc cd @@ -163,6 +166,7 @@ and name like concat('%', #{name}, '%') + and keywords like concat('%', #{keywords}, '%') and file_name like concat('%', #{fileName}, '%') and file_path = #{filePath} and publish_time = #{publishTime} @@ -309,6 +313,7 @@ audit_type, audit_tmp_branch_name, audit_pr_number, + keywords, #{createBy}, @@ -341,6 +346,7 @@ #{auditType}, #{auditTmpBranchName}, #{auditPrNumber}, + #{keywords}, @@ -376,6 +382,7 @@ audit_type = #{auditType}, audit_tmp_branch_name = #{auditTmpBranchName}, audit_pr_number = #{auditPrNumber}, + keywords = #{keywords}, where id = #{id} diff --git a/sql/update/20240603110330_zone_add_role_menu.sql b/sql/update/20240603110330_zone_add_role_menu.sql new file mode 100644 index 000000000..ca2985304 --- /dev/null +++ b/sql/update/20240603110330_zone_add_role_menu.sql @@ -0,0 +1,7 @@ +-- 专区管理员增加修改组织权限 +SET FOREIGN_KEY_CHECKS = 0; + +INSERT INTO sys_role_menu (role_id, menu_id) +VALUES (5, 1019); + +SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/sql/update/20240627090118_zone_alert_cmd_doc_add_keywords.sql b/sql/update/20240627090118_zone_alert_cmd_doc_add_keywords.sql new file mode 100644 index 000000000..b61f67dbb --- /dev/null +++ b/sql/update/20240627090118_zone_alert_cmd_doc_add_keywords.sql @@ -0,0 +1,3 @@ +-- 专区文章表增加Keywords关键字 +alter table cms_doc + add keywords varchar(255) null comment '关键词'; \ No newline at end of file