From 50dc46d73514e1969c1fec9067ab76af31c68f0a Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Mon, 1 Jun 2026 15:53:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E7=9D=A3=E7=AB=AF-=E5=85=AC=E5=91=8A?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/SysNoticeInfoController.java | 31 +++---- .../bo/EnforcementCarouselBannerBo.java | 3 + .../domain/bo/SysNoticeInfoBo.java | 3 + .../domain/vo/SysNoticeInfoVo.java | 12 +++ .../EnforcementCarouselBannerServiceImpl.java | 10 ++- ...forcementEducationServicesServiceImpl.java | 2 +- .../impl/SysNoticeInfoServiceImpl.java | 89 +++++++++++++++++-- 7 files changed, 125 insertions(+), 25 deletions(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/SysNoticeInfoController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/SysNoticeInfoController.java index 227de827..ee5788a4 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/SysNoticeInfoController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/SysNoticeInfoController.java @@ -2,6 +2,7 @@ package com.zdxt.enforcementcode.controller.web.supervision; import java.util.List; +import cn.dev33.satoken.annotation.SaIgnore; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; @@ -39,7 +40,7 @@ public class SysNoticeInfoController extends BaseController { /** * 查询系统公告信息主列表 */ - @SaCheckPermission("enforcementcode:noticeInfo:list") + @SaIgnore @GetMapping("/list") public TableDataInfo list(SysNoticeInfoBo bo, PageQuery pageQuery) { return sysNoticeInfoService.queryPageList(bo, pageQuery); @@ -61,32 +62,29 @@ public class SysNoticeInfoController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("enforcementcode:noticeInfo:query") - @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable String id) { + @SaIgnore + @GetMapping("/getInfo") + public R getInfo(String id) { return R.ok(sysNoticeInfoService.queryById(id)); } /** * 新增系统公告信息主 */ - @SaCheckPermission("enforcementcode:noticeInfo:add") + @SaIgnore @Log(title = "系统公告信息主", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody SysNoticeInfoBo bo) { + @PostMapping("/add") + public R add(@RequestBody SysNoticeInfoBo bo) { return toAjax(sysNoticeInfoService.insertByBo(bo)); } /** * 修改系统公告信息主 */ - @SaCheckPermission("enforcementcode:noticeInfo:edit") + @SaIgnore @Log(title = "系统公告信息主", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody SysNoticeInfoBo bo) { + @PostMapping("/edit") + public R edit(@RequestBody SysNoticeInfoBo bo) { return toAjax(sysNoticeInfoService.updateByBo(bo)); } @@ -95,11 +93,10 @@ public class SysNoticeInfoController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("enforcementcode:noticeInfo:remove") + @SaIgnore @Log(title = "系统公告信息主", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable String[] ids) { + @GetMapping("/remove") + public R remove(String[] ids) { return toAjax(sysNoticeInfoService.deleteWithValidByIds(List.of(ids), true)); } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java index f4ba5816..8bb4e18f 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java @@ -132,5 +132,8 @@ public class EnforcementCarouselBannerBo extends BaseEntity { */ private List fileList; + private Date startTime; + private Date endTime; + } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SysNoticeInfoBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SysNoticeInfoBo.java index 5c9ebd10..f8e4667e 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SysNoticeInfoBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SysNoticeInfoBo.java @@ -93,5 +93,8 @@ public class SysNoticeInfoBo extends BaseEntity { */ private String remark; + private Date startTime; + private Date endTime; + } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SysNoticeInfoVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SysNoticeInfoVo.java index e0c777dc..5a276277 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SysNoticeInfoVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SysNoticeInfoVo.java @@ -58,12 +58,24 @@ public class SysNoticeInfoVo implements Serializable { @ExcelProperty(value = "内容发布到 1-企业端 2-执法端 3-监督端 0-全部") private Integer targetPlatform; + /** + * 发布平台标签(字典翻译) + */ + @ExcelProperty(value = "发布平台名称") + private String targetPlatformLabel; + /** * 状态 1-待发布 2-已发布 3-已下架 */ @ExcelProperty(value = "状态 1-待发布 2-已发布 3-已下架") private Integer status; + /** + * 状态名称(字典翻译) + */ + @ExcelProperty(value = "状态名称") + private String statusLabel; + /** * 有效时间(由发布时间+显示天数计算,默认为空) */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java index 5e5e0829..404a3ec9 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java @@ -1,6 +1,7 @@ package com.zdxt.enforcementcode.service.impl; import com.zdxt.enforcementcode.domain.bean.EnforcementCarouselBanner; +import com.zdxt.enforcementcode.domain.bean.SysNoticeInfo; import com.zdxt.enforcementcode.domain.bo.ZdxtFileBo; import com.zdxt.enforcementcode.domain.vo.EnforcementEducationServicesVo; import com.zdxt.enforcementcode.domain.vo.ZdxtFileVo; @@ -142,7 +143,7 @@ public class EnforcementCarouselBannerServiceImpl implements IEnforcementCarouse } else { lqw.eq(bo.getTargetPlatform() != null, EnforcementCarouselBanner::getTargetPlatform, bo.getTargetPlatform()); } - lqw.eq(StringUtils.isNotBlank(bo.getTitle()), EnforcementCarouselBanner::getTitle, bo.getTitle()); + lqw.like(StringUtils.isNotBlank(bo.getTitle()), EnforcementCarouselBanner::getTitle, bo.getTitle()); lqw.eq(bo.getTargetPlatform() != null, EnforcementCarouselBanner::getTargetPlatform, bo.getTargetPlatform()); lqw.eq(bo.getCarouselPosition() != null, EnforcementCarouselBanner::getCarouselPosition, bo.getCarouselPosition()); lqw.eq(bo.getDisplayDays() != null, EnforcementCarouselBanner::getDisplayDays, bo.getDisplayDays()); @@ -158,6 +159,13 @@ public class EnforcementCarouselBannerServiceImpl implements IEnforcementCarouse lqw.like(StringUtils.isNotBlank(bo.getCreateByName()), EnforcementCarouselBanner::getCreateByName, bo.getCreateByName()); lqw.like(StringUtils.isNotBlank(bo.getUpdateByName()), EnforcementCarouselBanner::getUpdateByName, bo.getUpdateByName()); lqw.eq(bo.getIsDelete() != null, EnforcementCarouselBanner::getIsDelete, bo.getIsDelete()); + // 发布时间根据开始时间和结束时间进行范围过滤 + if (bo.getStartTime() != null) { + lqw.ge(EnforcementCarouselBanner::getCreateTime, bo.getStartTime()); + } + if (bo.getEndTime() != null) { + lqw.le(EnforcementCarouselBanner::getCreateTime, bo.getEndTime()); + } return lqw; } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java index 84f72337..19a50f92 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java @@ -243,7 +243,7 @@ public class EnforcementEducationServicesServiceImpl implements IEnforcementEduc Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(EnforcementEducationServices::getId); - lqw.eq(StringUtils.isNotBlank(bo.getTitle()), EnforcementEducationServices::getTitle, bo.getTitle()); + lqw.like(StringUtils.isNotBlank(bo.getTitle()), EnforcementEducationServices::getTitle, bo.getTitle()); lqw.eq(StringUtils.isNotBlank(bo.getPublishDeptIds()), EnforcementEducationServices::getPublishDeptIds, bo.getPublishDeptIds()); lqw.like(StringUtils.isNotBlank(bo.getPublishDeptNames()), EnforcementEducationServices::getPublishDeptNames, bo.getPublishDeptNames()); lqw.eq(bo.getTargetPlatform() != null, EnforcementEducationServices::getTargetPlatform, bo.getTargetPlatform()); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SysNoticeInfoServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SysNoticeInfoServiceImpl.java index 6e4cf3ab..6682634d 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SysNoticeInfoServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SysNoticeInfoServiceImpl.java @@ -3,6 +3,8 @@ package com.zdxt.enforcementcode.service.impl; import cn.hutool.core.util.IdUtil; import com.zdxt.enforcementcode.domain.bean.SysNoticeInfo; import com.zdxt.enforcementcode.domain.bo.enterprise.EnterpriseNoticeListInfoBo; +import com.zdxt.enforcementcode.domain.vo.EnforcementCarouselBannerVo; +import org.dromara.common.core.service.DictService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -12,12 +14,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.stereotype.Service; import com.zdxt.enforcementcode.domain.bo.SysNoticeInfoBo; import com.zdxt.enforcementcode.domain.vo.SysNoticeInfoVo; import com.zdxt.enforcementcode.mapper.SysNoticeInfoMapper; import com.zdxt.enforcementcode.service.ISysNoticeInfoService; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Collection; @@ -34,7 +38,7 @@ import java.util.Collection; public class SysNoticeInfoServiceImpl implements ISysNoticeInfoService { private final SysNoticeInfoMapper baseMapper; - + private final DictService dictService; /** * 企业端-系统公告信息主列表 * @param bo @@ -53,7 +57,46 @@ public class SysNoticeInfoServiceImpl implements ISysNoticeInfoService { */ @Override public SysNoticeInfoVo queryById(String id){ - return baseMapper.selectVoById(id); + + SysNoticeInfoVo sysNoticeInfoVo = baseMapper.selectVoById(id); + // 设置字典标签 + setDictLabels(sysNoticeInfoVo); + return sysNoticeInfoVo; + } + /** + * 为列表设置字典标签 + * + * @param records 记录列表 + */ + private void setDictLabels(List records) { + if (records == null || records.isEmpty()) { + return; + } + + records.forEach(this::setDictLabels); + } + /** + * 为单条记录设置字典标签 + * + * @param vo 记录对象 + */ + private void setDictLabels(SysNoticeInfoVo vo) { + if (vo == null) { + return; + } + + // 发布平台标签 + if (vo.getTargetPlatform() != null) { + String targetPlatformLabel = dictService.getDictLabel("web_publishing_platform", vo.getTargetPlatform().toString()); + vo.setTargetPlatformLabel(targetPlatformLabel); + } + + //状态标签 + if(vo.getStatus()!=null){ + String statusLabel = dictService.getDictLabel("web_status", vo.getStatus().toString()); + vo.setStatusLabel(statusLabel); + } + } /** @@ -67,6 +110,10 @@ public class SysNoticeInfoServiceImpl implements ISysNoticeInfoService { public TableDataInfo queryPageList(SysNoticeInfoBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + // 为每条记录设置字典标签和已读状态 + if (result.getRecords() != null && !result.getRecords().isEmpty()) { + setDictLabels(result.getRecords()); + } return TableDataInfo.build(result); } @@ -86,8 +133,16 @@ public class SysNoticeInfoServiceImpl implements ISysNoticeInfoService { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(SysNoticeInfo::getId); - lqw.eq(StringUtils.isNotBlank(bo.getNoticeContent()), SysNoticeInfo::getNoticeContent, bo.getNoticeContent()); - lqw.eq(bo.getPublishTime() != null, SysNoticeInfo::getPublishTime, bo.getPublishTime()); + lqw.like(StringUtils.isNotBlank(bo.getNoticeContent()), SysNoticeInfo::getNoticeContent, bo.getNoticeContent()); + + // 发布时间根据开始时间和结束时间进行范围过滤 + if (bo.getStartTime() != null) { + lqw.ge(SysNoticeInfo::getPublishTime, bo.getStartTime()); + } + if (bo.getEndTime() != null) { + lqw.le(SysNoticeInfo::getPublishTime, bo.getEndTime()); + } + lqw.eq(bo.getDisplayDays() != null, SysNoticeInfo::getDisplayDays, bo.getDisplayDays()); lqw.eq(bo.getTargetPlatform() != null, SysNoticeInfo::getTargetPlatform, bo.getTargetPlatform()); lqw.eq(bo.getStatus() != null, SysNoticeInfo::getStatus, bo.getStatus()); @@ -110,7 +165,18 @@ public class SysNoticeInfoServiceImpl implements ISysNoticeInfoService { public Boolean insertByBo(SysNoticeInfoBo bo) { SysNoticeInfo add = MapstructUtils.convert(bo, SysNoticeInfo.class); add.setId(IdUtil.simpleUUID()); - validEntityBeforeSave(add); + add.setPublishTime(new Date(System.currentTimeMillis())); + add.setCreateBy(LoginHelper.getUserId()!= null ? LoginHelper.getUserId() : null); + add.setCreateByName(LoginHelper.getUsername()!= null ? LoginHelper.getUsername() : null); + //1.显示时长为0,则表示永久显示 + //2.显示时长不为0,则根据显示时长计算有效时间 + if (bo.getDisplayDays() != null && bo.getDisplayDays() > 0) { + long effectiveTimeMillis = add.getPublishTime().getTime() + bo.getDisplayDays() * 24 * 60 * 60 * 1000; + add.setEffectiveTime(new Date(effectiveTimeMillis)); + } else { + // 永久显示,有效时间设为null或一个很远的未来时间 + add.setEffectiveTime(null); + } boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); @@ -127,7 +193,18 @@ public class SysNoticeInfoServiceImpl implements ISysNoticeInfoService { @Override public Boolean updateByBo(SysNoticeInfoBo bo) { SysNoticeInfo update = MapstructUtils.convert(bo, SysNoticeInfo.class); - validEntityBeforeSave(update); + //1.显示时长为0,则表示永久显示 + //2.显示时长不为0,则根据显示时长计算有效时间 + if (bo.getDisplayDays() != null && bo.getDisplayDays() > 0) { + long effectiveTimeMillis = update.getPublishTime().getTime() + bo.getDisplayDays() * 24 * 60 * 60 * 1000; + update.setEffectiveTime(new Date(effectiveTimeMillis)); + } else { + // 永久显示,有效时间设为null或一个很远的未来时间 + update.setEffectiveTime(null); + } + update.setUpdateTime(new Date(System.currentTimeMillis())); + update.setUpdateBy(LoginHelper.getUserId()!= null ? LoginHelper.getUserId() : null); + update.setUpdateByName(LoginHelper.getUsername()!= null ? LoginHelper.getUsername() : null); return baseMapper.updateById(update) > 0; }