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