From 5a788cdf58f32c1d6cffb7dd6ce7aecddf38accb Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期二, 18 二月 2025 09:01:54 +0800 Subject: [PATCH] 添加消息记录 --- ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml | 16 +++ ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java | 10 ++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java | 20 ++++ ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java | 69 +++++++++++++ inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java | 33 ++---- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java | 98 +++++++++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java | 34 ++++++ 7 files changed, 258 insertions(+), 22 deletions(-) diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java index 18a9488..45ef235 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java +++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java @@ -2,7 +2,6 @@ // //import cn.hutool.core.util.StrUtil; //import cn.hutool.json.JSONUtil; -//import com.aspose.words.*; //import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; //import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; //import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; @@ -13,27 +12,17 @@ //import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //import com.deepoove.poi.XWPFTemplate; //import com.deepoove.poi.data.Pictures; -//import com.itextpdf.text.BadElementException; -//import com.itextpdf.text.DocumentException; -//import com.itextpdf.text.pdf.PdfContentByte; -//import com.itextpdf.text.pdf.PdfReader; -//import com.itextpdf.text.pdf.PdfStamper; -//import com.yuanchu.mom.common.GetLook; -//import com.yuanchu.mom.common.InsOrderTypeConstants; -//import com.yuanchu.mom.common.PrintChina; -//import com.yuanchu.mom.dto.ReportPageDto; -//import com.yuanchu.mom.exception.ErrorException; -//import com.yuanchu.mom.mapper.*; -//import com.yuanchu.mom.pojo.*; -//import com.yuanchu.mom.properties.WechatProperty; -//import com.yuanchu.mom.service.InformationNotificationService; -//import com.yuanchu.mom.service.InsOrderService; -//import com.yuanchu.mom.service.InsReportService; -//import com.yuanchu.mom.utils.DateImageUtil; -//import com.yuanchu.mom.utils.IfsApiUtils; -//import com.yuanchu.mom.utils.QueryWrappers; -//import com.yuanchu.mom.utils.WxCpUtils; -//import com.yuanchu.mom.vo.Result; +//import com.ruoyi.common.properties.WechatProperty; +//import com.ruoyi.common.utils.QueryWrappers; +//import com.ruoyi.inspect.dto.ReportPageDto; +//import com.ruoyi.inspect.mapper.InsOrderStateMapper; +//import com.ruoyi.inspect.mapper.InsProductMapper; +//import com.ruoyi.inspect.mapper.InsReportMapper; +//import com.ruoyi.inspect.mapper.InsUnqualifiedRetestProductMapper; +//import com.ruoyi.inspect.pojo.InsReport; +//import com.ruoyi.inspect.service.InsOrderService; +//import com.ruoyi.inspect.service.InsReportService; +//import com.ruoyi.system.mapper.UserMapper; //import org.apache.poi.xwpf.usermodel.*; //import org.springframework.beans.factory.annotation.Value; //import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java new file mode 100644 index 0000000..df394b9 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java @@ -0,0 +1,69 @@ +package com.ruoyi.common.core.domain.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 娑堟伅閫氱煡 + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-04-23 02:14:30 + */ +@Getter +@Setter +@TableName("information_notification") +@ApiModel(value = "InformationNotification瀵硅薄", description = "娑堟伅閫氱煡") +public class InformationNotification implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭ID") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("鍒涘缓浜�") + private String createUser; + + @ApiModelProperty("鏇存柊鏃堕棿") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty("鍒涘缓鏃堕棿/鍙戦�佹椂闂�") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty("寰呭姙銆佹帴鏀躲�佸鏍搞�佹壒鍑嗐�侀璀︽彁閱掋�侀�氱煡鍏憡") + private String messageType; + + @ApiModelProperty("涓婚") + private String theme; + + @ApiModelProperty("鍐呭") + private String content; + + @ApiModelProperty("鍙戦�佷汉Id") + private Integer senderId; + + @ApiModelProperty("鏀朵欢浜�") + private Integer consigneeId; + + @ApiModelProperty("鏌ョ湅鐘舵�侊細宸茶锛屾湭璇�") + private Boolean viewStatus; + + @ApiModelProperty("娑堟伅鐘舵�侊紙鎷掔粷銆佹帴鏀讹級锛堟牴鎹秷鎭被鍨嬪睍绀猴級") + private Boolean messageStatus; + + @ApiModelProperty("璺宠浆璺緞") + private String jumpPath; + + @ApiModelProperty("璺宠浆Id") + private String jumpId; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java new file mode 100644 index 0000000..7b6a694 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java @@ -0,0 +1,10 @@ +package com.ruoyi.common.core.domain.entity; + +import lombok.Data; + +@Data +public class InformationNotificationDto extends InformationNotification{ + private String senderUser; + + private String consigneeUser; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java new file mode 100644 index 0000000..6eec64c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.entity.InformationNotification; +import com.ruoyi.common.core.domain.entity.InformationNotificationDto; + +/** + * <p> + * 娑堟伅閫氱煡 Mapper 鎺ュ彛 + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-04-23 02:14:30 + */ +public interface InformationNotificationMapper extends BaseMapper<InformationNotification> { + + IPage<InformationNotificationDto> getPage(Page page, String messageType, Integer userId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java new file mode 100644 index 0000000..3842f7d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java @@ -0,0 +1,34 @@ +package com.ruoyi.system.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.entity.InformationNotification; +import com.ruoyi.common.core.domain.entity.InformationNotificationDto; + +import java.util.Map; + +/** + * <p> + * 娑堟伅閫氱煡 鏈嶅姟绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-04-23 02:14:30 + */ +public interface InformationNotificationService extends IService<InformationNotification> { + + IPage<InformationNotificationDto> getPage(Page page, String messageType); + + void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead); + + Boolean checkForUnreadData(); + + void triggerModificationStatusToRead(Integer id); + + int addInformationNotification(InformationNotification informationNotification); + + Map<String, Object> getNumberFourTypesMessagesHomePage(); + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java new file mode 100644 index 0000000..31af676 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java @@ -0,0 +1,98 @@ +package com.ruoyi.system.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.InformationNotification; +import com.ruoyi.common.core.domain.entity.InformationNotificationDto; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.mapper.InformationNotificationMapper; +import com.ruoyi.system.service.InformationNotificationService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 娑堟伅閫氱煡 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-04-23 02:14:30 + */ +@Service +public class InformationNotificationServiceImpl extends ServiceImpl<InformationNotificationMapper, InformationNotification> implements InformationNotificationService { + + @Override + public IPage<InformationNotificationDto> getPage(Page page, String messageType) { + return baseMapper.getPage(page, messageType, SecurityUtils.getUserId().intValue()); + } + + @Override + public void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead) { + if (isMarkAllInformationRead) { + baseMapper.update(new InformationNotification(), Wrappers.<InformationNotification>lambdaUpdate() + .set(InformationNotification::getViewStatus, true) + .eq(InformationNotification::getConsigneeId, SecurityUtils.getUserId().intValue())); + } else { + baseMapper.delete(Wrappers.<InformationNotification>lambdaUpdate() + .eq(InformationNotification::getConsigneeId, SecurityUtils.getUserId().intValue()) + .eq(InformationNotification::getViewStatus, true)); + } + } + + @Override + public Boolean checkForUnreadData() { + Map<String, Integer> map1 = null; + try { + List<InformationNotification> informationNotifications = baseMapper.selectList( + Wrappers.<InformationNotification>lambdaQuery() + .eq(InformationNotification::getConsigneeId, SecurityUtils.getUserId().intValue()) + .eq(InformationNotification::getViewStatus, false) + .last("limit 1")); + return !informationNotifications.isEmpty(); + } catch (Exception e) { + } + return false; + } + + @Override + public void triggerModificationStatusToRead(Integer id) { + baseMapper.update(new InformationNotification(), Wrappers.<InformationNotification>lambdaUpdate() + .eq(InformationNotification::getId, id) + .set(InformationNotification::getViewStatus, true)); + } + + @Override + public int addInformationNotification(InformationNotification informationNotification) { + informationNotification.setViewStatus(false); + return baseMapper.insert(informationNotification); + } + + @Override + public Map<String, Object> getNumberFourTypesMessagesHomePage() { + Map<String, Object> map = new HashMap<>(); + int userId = SecurityUtils.getUserId().intValue(); + Long totalNumberOfMessages = baseMapper.selectCount(Wrappers.<InformationNotification>lambdaQuery() + .eq(InformationNotification::getConsigneeId, userId)); + Long totalNumberOfReadMessages = baseMapper.selectCount(Wrappers.<InformationNotification>lambdaQuery() + .eq(InformationNotification::getConsigneeId, userId) + .eq(InformationNotification::getViewStatus, true)); + LocalDate today = LocalDate.now(); + LocalDate sevenDaysAgo = today.minusDays(7); + Long totalNumberOfMessagesInThePastSevenDays = baseMapper.selectCount(Wrappers.<InformationNotification>lambdaQuery() + .eq(InformationNotification::getConsigneeId, userId) + .between(InformationNotification::getCreateTime, today, sevenDaysAgo)); + long remainingToDo = totalNumberOfMessages - totalNumberOfReadMessages; + map.put("totalNumberOfMessages", totalNumberOfMessages); + map.put("remainingToDo", remainingToDo); + map.put("totalNumberOfReadMessages", totalNumberOfReadMessages); + map.put("totalNumberOfMessagesInThePastSevenDays", totalNumberOfMessagesInThePastSevenDays); + return map; + } +} diff --git a/ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml b/ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml new file mode 100644 index 0000000..3936965 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.system.mapper.InformationNotificationMapper"> + + <select id="getPage" resultType="com.ruoyi.common.core.domain.entity.InformationNotificationDto"> + select i.*, u.name senderUser, u2.name consigneeUser + from information_notification i + left join user u on i.sender_id = u.id + left join user u2 on u2.id = i.consignee_id + where i.consignee_id = #{userId} + <if test="messageType != '' and messageType != null"> + and i.message_type = #{messageType} + </if> + order by i.create_time desc + </select> +</mapper> -- Gitblit v1.9.3