From 1b7d5c5451534500efbdcec1a61fb344d96a7c1b Mon Sep 17 00:00:00 2001 From: sh Date: Thu, 6 Nov 2025 15:03:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9pc=E5=B7=B2=E8=AF=BB=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/cms/CmsNoticeController.java | 35 +++++++++++++- .../java/com/ruoyi/cms/domain/Notice.java | 2 +- .../com/ruoyi/cms/domain/vo/NoticeTotal.java | 18 +++++++ .../com/ruoyi/cms/mapper/NoticeMapper.java | 3 ++ .../ruoyi/cms/service/IAppNoticeService.java | 5 ++ .../service/impl/AppNoticeServiceImpl.java | 48 +++++++++++++------ .../impl/EmployeeConfirmServiceImpl.java | 13 ++--- .../java/com/ruoyi/cms/util/NoticeUtils.java | 14 ++++++ .../java/com/ruoyi/cms/util/StringUtil.java | 10 ---- .../resources/mapper/app/NoticeMapper.xml | 8 ++++ .../com/ruoyi/common/utils/DateUtils.java | 15 ++++++ 11 files changed, 137 insertions(+), 34 deletions(-) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/NoticeTotal.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/NoticeUtils.java diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsNoticeController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsNoticeController.java index e5fead5..8a9cb73 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsNoticeController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsNoticeController.java @@ -2,10 +2,11 @@ package com.ruoyi.cms.controller.cms; import com.ruoyi.cms.domain.AppNotice; import com.ruoyi.cms.domain.Notice; +import com.ruoyi.cms.domain.vo.NoticeTotal; import com.ruoyi.cms.service.IAppNoticeService; import com.ruoyi.cms.service.IAppUserService; +import com.ruoyi.cms.util.NoticeUtils; import com.ruoyi.cms.util.RoleUtils; -import com.ruoyi.cms.util.StringUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; @@ -152,7 +153,8 @@ public class CmsNoticeController extends BaseController } } startPage(); - notice.setIsRead(StringUtil.NOTICE_YD); + notice.setIsRead(NoticeUtils.NOTICE_YD); + notice.setRemark(NoticeUtils.NOTICE_TYPE); List notices = noticeService.selectListAppNotices(notice); return getDataTable(notices); } @@ -177,4 +179,33 @@ public class CmsNoticeController extends BaseController noticeService.readSysNotices(id,userId); return AjaxResult.success(); } + + /** + * 获取消息条数 + */ + @ApiOperation("获取移动端用户消息条数") + @GetMapping("/noticTotal") + public AjaxResult getNoticTotal(Notice notice){ + if(!SecurityUtils.isLogin()){ + error(HttpStatus.ERROR,"未登录!"); + } + if(notice.getUserId()==null){ + String idCard= RoleUtils.getCurrentUseridCard(); + AppUser appUser=appUserService.selectAppuserByIdcard(idCard); + if(appUser==null){ + error(HttpStatus.ERROR,"用户信息未完善,请完善身份证信息!"); + }else{ + notice.setUserId(appUser.getUserId()); + } + } + startPage(); + NoticeTotal notices = noticeService.noticTotal(notice); + return success(notices); + } + + @ApiOperation("获取移动端用户消息条数") + @DeleteMapping("/deleteNotice/{ids}") + public AjaxResult deleteNotice(@PathVariable Long[] ids){ + return success(noticeService.removeNotice(ids)); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java index 3ff92b8..584a6aa 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Notice.java @@ -37,7 +37,7 @@ public class Notice extends BaseEntity @ApiModelProperty("日期") private Date date; - @ApiModelProperty("通知类型") + @ApiModelProperty("通知类型 1系统通知(包括录用) 2职位上新") private String noticeType; @ApiModelProperty("公告内容") diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/NoticeTotal.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/NoticeTotal.java new file mode 100644 index 0000000..18ef881 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/NoticeTotal.java @@ -0,0 +1,18 @@ +package com.ruoyi.cms.domain.vo; + +import lombok.Data; + +/** + * 消息条数 + */ +@Data +public class NoticeTotal { + /** + * 未读消息 + */ + private Integer qbxx; + /** + * 全部未读 + */ + private Integer wdxx; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/NoticeMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/NoticeMapper.java index b7677ff..a177e3e 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/NoticeMapper.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/NoticeMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.cms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.cms.domain.Notice; +import com.ruoyi.cms.domain.vo.NoticeTotal; import java.util.List; @@ -10,4 +11,6 @@ public interface NoticeMapper extends BaseMapper { List getNoticlist(Notice notice); + + NoticeTotal noticTotal(Notice notice); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppNoticeService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppNoticeService.java index de77a9c..e278d2c 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppNoticeService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppNoticeService.java @@ -6,6 +6,7 @@ import com.ruoyi.cms.domain.AppNotice; import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.Notice; import com.ruoyi.cms.domain.vo.AppNoticeVO; +import com.ruoyi.cms.domain.vo.NoticeTotal; import java.util.List; @@ -89,4 +90,8 @@ public interface IAppNoticeService * @return */ List selectListAppNotices(Notice notice); + + NoticeTotal noticTotal(Notice notice); + + int removeNotice(Long[] ids); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppNoticeServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppNoticeServiceImpl.java index 9febbd5..13d01b4 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppNoticeServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppNoticeServiceImpl.java @@ -3,14 +3,17 @@ package com.ruoyi.cms.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.cms.domain.*; +import com.ruoyi.cms.domain.vo.NoticeTotal; import com.ruoyi.cms.mapper.*; import com.ruoyi.cms.service.IAppNoticeService; +import com.ruoyi.cms.util.NoticeUtils; import com.ruoyi.cms.util.StringUtil; import com.ruoyi.common.core.domain.entity.AppUser; import com.ruoyi.common.utils.SiteSecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -127,7 +130,7 @@ public class AppNoticeServiceImpl implements IAppNoticeService Notice notice = new Notice(); notice.setUserId(appUser.getUserId()); notice.setTitle("职位上新"); - notice.setIsRead(StringUtil.NOTICE_WD); + notice.setIsRead(NoticeUtils.NOTICE_WD); notice.setDate(new Date()); //todo update number of job notice.setSubTitle("这里有10个岗位很适合你,快来看看吧"); @@ -169,14 +172,14 @@ public class AppNoticeServiceImpl implements IAppNoticeService List longs = StringUtil.convertStringToLongList(ids); List notices = noticeInfoMapper.selectBatchIds(longs); notices.forEach(notice -> { - notice.setIsRead(StringUtil.NOTICE_YD); + notice.setIsRead(NoticeUtils.NOTICE_YD); noticeInfoMapper.updateById(notice); }); List notices1 = noticeInfoMapper.selectList(Wrappers.lambdaQuery().eq(Notice::getUserId, SiteSecurityUtils.getUserId()).eq(Notice::getRemark, "notice_bar").eq(Notice::getTitle, "系统通知").orderByDesc(Notice::getCreateTime).last("limit 1")); Notice notice = notices1.get(0); notice.setNotReadCount(notice.getNotReadCount() - longs.size()); if(notice.getNotReadCount()==0){ - notice.setIsRead(StringUtil.NOTICE_YD); + notice.setIsRead(NoticeUtils.NOTICE_YD); } noticeInfoMapper.updateById(notice); } @@ -186,7 +189,7 @@ public class AppNoticeServiceImpl implements IAppNoticeService List longs = StringUtil.convertStringToLongList(ids); List notices = noticeInfoMapper.selectBatchIds(longs); notices.forEach(notice -> { - notice.setIsRead(StringUtil.NOTICE_YD); + notice.setIsRead(NoticeUtils.NOTICE_YD); notice.setNotReadCount(0); noticeInfoMapper.updateById(notice); }); @@ -201,8 +204,8 @@ public class AppNoticeServiceImpl implements IAppNoticeService @Override public List selectListAppNotRead(Notice notice) { - notice.setRemark(StringUtil.NOTICE_TYPE); - notice.setIsRead(StringUtil.NOTICE_WD); + notice.setRemark(NoticeUtils.NOTICE_TYPE); + notice.setIsRead(NoticeUtils.NOTICE_WD); //List sysNoticeList = noticeInfoMapper.selectList(Wrappers.lambdaQuery().eq(Notice::getUserId, notice.getUserId()).eq(Notice::getRemark,"notice_bar").eq(Notice::getIsRead,0).orderByDesc(Notice::getCreateTime)); return noticeInfoMapper.getNoticlist(notice); } @@ -212,26 +215,41 @@ public class AppNoticeServiceImpl implements IAppNoticeService List longs = StringUtil.convertStringToLongList(ids); List notices = noticeInfoMapper.selectBatchIds(longs); notices.forEach(notice -> { - notice.setIsRead(StringUtil.NOTICE_YD); - noticeInfoMapper.updateById(notice); + Notice upNotic=new Notice(); + upNotic.setNoticeId(notice.getNoticeId()); + upNotic.setIsRead(NoticeUtils.NOTICE_YD); + noticeInfoMapper.updateById(upNotic); }); - List notices1 = noticeInfoMapper.selectList(Wrappers.lambdaQuery().eq(Notice::getUserId, userId).eq(Notice::getRemark, "notice_bar").eq(Notice::getTitle, "系统通知").orderByDesc(Notice::getCreateTime).last("limit 1")); - Notice notice = notices1.get(0); - notice.setNotReadCount(notice.getNotReadCount() - longs.size()); - if(notice.getNotReadCount()==0){ - notice.setIsRead(StringUtil.NOTICE_YD); + List notices1 = noticeInfoMapper.selectList(Wrappers.lambdaQuery().eq(Notice::getUserId, userId).eq(Notice::getRemark, "notice_bar").orderByDesc(Notice::getCreateTime).last("limit 1")); + if(notices1!=null&¬ices1.size()>0){ + Notice parmNotice = notices1.get(0); + Notice notice=new Notice(); + notice.setNoticeId(parmNotice.getNoticeId()); + notice.setNotReadCount(parmNotice.getNotReadCount()!=null?parmNotice.getNotReadCount() - longs.size():0); + if(notice.getNotReadCount()==0){ + notice.setIsRead(NoticeUtils.NOTICE_YD); + } + noticeInfoMapper.updateById(notice); } - noticeInfoMapper.updateById(notice); } @Override public List selectListAppNotics(Notice notice) { - notice.setRemark(StringUtil.NOTICE_TYPE); + notice.setRemark(NoticeUtils.NOTICE_TYPE); return noticeInfoMapper.getNoticlist(notice); } public List selectListAppNotices(Notice notice){ return noticeInfoMapper.getNoticlist(notice); } + + public NoticeTotal noticTotal(Notice notice){ + return noticeInfoMapper.noticTotal(notice); + } + + public int removeNotice(Long[] ids){ + int t=noticeInfoMapper.deleteBatchIds(Arrays.asList(ids)); + return t; + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/EmployeeConfirmServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/EmployeeConfirmServiceImpl.java index cf7382f..66cb2d0 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/EmployeeConfirmServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/EmployeeConfirmServiceImpl.java @@ -7,6 +7,7 @@ import com.ruoyi.cms.mapper.EmployeeConfirmMapper; import com.ruoyi.cms.mapper.JobApplyMapper; import com.ruoyi.cms.mapper.NoticeMapper; import com.ruoyi.cms.service.EmployeeConfirmService; +import com.ruoyi.cms.util.NoticeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -39,12 +40,12 @@ public class EmployeeConfirmServiceImpl implements EmployeeConfirmService { jobApplyMapper.updateById(apply); } //添加消息 - /*Notice notice=new Notice(); - notice.setUserId(); - notice.setBussinessId(); - notice.setIsRead(0); - notice - noticeMapper.insert(notice);*/ + Notice notice=new Notice(); + notice.setUserId(employeeConfirm.getUserId()); + notice.setBussinessId(employeeConfirm.getId()); + notice.setIsRead(NoticeUtils.NOTICE_WD); + notice.setTitle(""); + noticeMapper.insert(notice); return t; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/NoticeUtils.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/NoticeUtils.java new file mode 100644 index 0000000..6764de3 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/NoticeUtils.java @@ -0,0 +1,14 @@ +package com.ruoyi.cms.util; + +public class NoticeUtils { + /** + * 消息已读 + */ + public static final String NOTICE_YD="1"; + /** + * 消息未读 + */ + public static final String NOTICE_WD="0"; + + public static final String NOTICE_TYPE="notice_bar"; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java index 1a750fd..aec57d0 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java @@ -25,16 +25,6 @@ public class StringUtil { * pc端-企业 */ public static final String SYS_QY = "100"; - /** - * 消息已读 - */ - public static final String NOTICE_YD="1"; - /** - * 消息未读 - */ - public static final String NOTICE_WD="0"; - - public static final String NOTICE_TYPE="notice_bar"; public static Boolean isEmptyOrNull(String s){ if(Objects.isNull(s)){return true;} diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/NoticeMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/NoticeMapper.xml index 8666439..798d596 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/NoticeMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/NoticeMapper.xml @@ -20,4 +20,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time desc + + \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index fb2ae21..108cd1b 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -18,6 +18,9 @@ import org.apache.commons.lang3.time.DateFormatUtils; */ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + // 固定东八区时区 + private static final ZoneId ZONE_ID = ZoneId.of("Asia/Shanghai"); + public static String YYYY = "yyyy"; public static String YYYY_MM = "yyyy-MM"; @@ -188,4 +191,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } + + /** + * Date 转 LocalDateTime(东八区) + */ + public static LocalDateTime dateToLocalDateTime(Date date) { + if (date == null) { + date=new Date(); + } + return date.toInstant() + .atZone(ZONE_ID) + .toLocalDateTime(); + } }