From 9cb7be0fc97fba1142d106263a9cc15947b416e0 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Thu, 7 Aug 2025 12:03:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=85=AC=E5=91=8A=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E9=A6=96=E9=A1=B5=E5=92=8C=E7=AE=A1=E7=90=86=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=8C=83=E5=9B=B4=E3=80=81=E6=93=8D=E4=BD=9C=E6=9D=83?= =?UTF-8?q?=E9=99=90=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/notice/NoticeController.java | 4 +-- .../system/dal/mysql/notice/NoticeMapper.java | 13 +++++---- .../system/service/notice/NoticeService.java | 8 ++++++ .../service/notice/NoticeServiceImpl.java | 27 +++++++++++-------- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/NoticeController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/NoticeController.java index 2b7a444aa..5191eae16 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/NoticeController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/NoticeController.java @@ -72,9 +72,7 @@ public class NoticeController { @GetMapping("/homepage") @Operation(summary = "获取首页通知公告列表") public CommonResult> getHomePageNoticePage(@Validated NoticePageReqVO pageReqVO) { - // 首页只看生效的公告 - pageReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - PageResult pageResult = noticeService.getNoticePage(pageReqVO); + PageResult pageResult = noticeService.getHomePageNoticePage(pageReqVO); return success(BeanUtils.toBean(pageResult, NoticeRespVO.class)); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/notice/NoticeMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/notice/NoticeMapper.java index 7a7af7993..9031b3d95 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/notice/NoticeMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/notice/NoticeMapper.java @@ -1,9 +1,11 @@ package com.cf.imes.module.system.dal.mysql.notice; +import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.organ.core.context.OrganContextHolder; +import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.notice.vo.NoticePageReqVO; import com.cf.imes.module.system.dal.dataobject.notice.NoticeDO; import com.cf.imes.module.system.enums.notice.NoticeSourceEnum; @@ -12,13 +14,13 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface NoticeMapper extends BaseMapperX { - default PageResult selectPage(NoticePageReqVO reqVO) { - if (NoticeSourceEnum.SYSTEM.getSource().equals(reqVO.getSource())) { + default PageResult selectHomePageNoticePage(NoticePageReqVO reqVO) { + if (SecurityFrameworkUtils.isSuperAdmin()) { // 超管只看内置的 return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(NoticeDO::getTitle, reqVO.getTitle()) - .eqIfPresent(NoticeDO::getStatus, reqVO.getStatus()) - .eqIfPresent(NoticeDO::getSource, NoticeSourceEnum.SYSTEM) + .eq(NoticeDO::getSource, NoticeSourceEnum.SYSTEM) + .eq(NoticeDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) .orderByDesc(NoticeDO::getId)); } // 普通用户查机构下的和内置的 @@ -29,7 +31,8 @@ public interface NoticeMapper extends BaseMapperX { .eq(NoticeDO::getOrganId, OrganContextHolder.getOrganId()) .eq(NoticeDO::getSource, NoticeSourceEnum.CUSTOM)) .or(wrapper -> wrapper.eq(NoticeDO::getSource, NoticeSourceEnum.SYSTEM))) - .orderByDesc(NoticeDO::getId)); + .orderByDesc(NoticeDO::getId) + .eq(NoticeDO::getStatus, CommonStatusEnum.ENABLE.getStatus())); } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeService.java index 50c098cb2..fec2ca6b9 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeService.java @@ -40,6 +40,14 @@ public interface NoticeService { */ PageResult getNoticePage(NoticePageReqVO reqVO); + /** + * 获取首页工作台-通知公告分页列表 + * + * @param reqVO + * @return + */ + PageResult getHomePageNoticePage(NoticePageReqVO reqVO); + /** * 获得通知公告 * diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeServiceImpl.java index d3696f596..a6860b9e6 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/notice/NoticeServiceImpl.java @@ -59,8 +59,6 @@ public class NoticeServiceImpl implements NoticeService { getSelf().validateNameExists(updateReqVO); // 更新通知公告 NoticeDO updateObj = BeanUtils.toBean(updateReqVO, NoticeDO.class); - // 超管创建的都是内置公告 - modifySource(updateObj); noticeMapper.updateById(updateObj); } @@ -73,14 +71,17 @@ public class NoticeServiceImpl implements NoticeService { } @Override - @OrganIgnore public PageResult getNoticePage(NoticePageReqVO reqVO) { - boolean isSuperAdmin = SecurityFrameworkUtils.isSuperAdmin(); - // 超管查看内置公告 - if (isSuperAdmin) { - reqVO.setSource(NoticeSourceEnum.SYSTEM.getSource()); - } - return noticeMapper.selectPage(reqVO); + return noticeMapper.selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(NoticeDO::getTitle, reqVO.getTitle()) + .eqIfPresent(NoticeDO::getStatus, reqVO.getStatus()) + .orderByDesc(NoticeDO::getId)); + } + + @Override + @OrganIgnore + public PageResult getHomePageNoticePage(NoticePageReqVO reqVO) { + return noticeMapper.selectHomePageNoticePage(reqVO); } @Override @@ -97,11 +98,15 @@ public class NoticeServiceImpl implements NoticeService { if (notice == null) { throw ServiceExceptionUtil.exception(ErrorCodeConstants.NOTICE_NOT_FOUND); } - if (!NoticeSourceEnum.SYSTEM.equals(notice.getSource()) && !notice.getOrganId().equals(OrganContextHolder.getOrganId())) { + boolean superAdmin = SecurityFrameworkUtils.isSuperAdmin(); + // 公告和操作人非统一组织,只有超管可以编辑和删除 + if (NoticeSourceEnum.CUSTOM.equals(notice.getSource()) + && !notice.getOrganId().equals(OrganContextHolder.getOrganId()) + && !superAdmin) { throw ServiceExceptionUtil.exception(ErrorCodeConstants.NOTICE_NOT_FOUND); } // 只有超管可以操作内置公告 - if (NoticeSourceEnum.SYSTEM.equals(notice.getSource()) && !SecurityFrameworkUtils.isSuperAdmin()) { + if (NoticeSourceEnum.SYSTEM.equals(notice.getSource()) && !superAdmin) { throw ServiceExceptionUtil.exception(ErrorCodeConstants.NOTICE_BUILDIN_MODIFY_PERMISSION_ERROR); } }