feat(UserMessage):添加好友聊天功能,可以与其它用户进行简单的文本聊天

Change-Id: Idd701e827313babd721aef5559f3a714a7198d82
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 4fe1dc0..0f7fa42 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -46,6 +46,7 @@
         <dependency>
             <groupId>com.mysql</groupId>
             <artifactId>mysql-connector-j</artifactId>
+            <version>8.2.0</version>
         </dependency>
 
         <!-- 核心模块-->
@@ -66,6 +67,23 @@
             <artifactId>ruoyi-generator</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.hibernate.validator</groupId>
+            <artifactId>hibernate-validator</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>annotationProcessor</scope>
+        </dependency>
+
+
     </dependencies>
 
     <build>
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMessageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMessageController.java
new file mode 100644
index 0000000..d6b030c
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMessageController.java
@@ -0,0 +1,28 @@
+package com.ruoyi.web.controller.system;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.system.domain.SysUserMessage;
+import com.ruoyi.system.service.ISysUserMessageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/system/user/message")
+public class SysUserMessageController extends BaseController {
+    @Autowired
+    private ISysUserMessageService messageService;
+
+    @PreAuthorize("@ss.hasPermi('system:user:message:add')")
+    @PostMapping
+    public AjaxResult sendMessage(@RequestBody SysUserMessage message) {
+        message.setSenderId(getUserId());
+        return toAjax(messageService.sendMessage(message));
+    }
+
+    @GetMapping("/list")
+    public AjaxResult list(@RequestParam Long userId1, @RequestParam Long userId2) {
+        return AjaxResult.success(messageService.getMessageList(userId1, userId2));
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml
index 51f3f3c..c688993 100644
--- a/ruoyi-system/pom.xml
+++ b/ruoyi-system/pom.xml
@@ -16,12 +16,31 @@
     </description>
 
     <dependencies>
-
         <!-- 通用工具-->
+
         <dependency>
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>annotationProcessor</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
 
     </dependencies>
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserMessage.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserMessage.java
new file mode 100644
index 0000000..0796dd5
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserMessage.java
@@ -0,0 +1,27 @@
+package com.ruoyi.system.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+
+@Data
+public class SysUserMessage extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Excel(name = "消息ID")
+    private Long messageId;
+
+    @Excel(name = "发送者ID")
+    @NotNull(message = "发送者ID不能为空")
+    private Long senderId;
+
+    @Excel(name = "接收者ID")
+    @NotNull(message = "接收者ID不能为空")
+    private Long receiverId;
+
+    @Excel(name = "消息内容")
+    @NotBlank(message = "消息内容不能为空")
+    private String content;
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMessageMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMessageMapper.java
new file mode 100644
index 0000000..6e2fc1d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMessageMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.SysUserMessage;
+import java.util.List;
+
+public interface SysUserMessageMapper {
+    int insertMessage(SysUserMessage message);
+    List<SysUserMessage> selectMessageListByUserIds(Long userId1, Long userId2);
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMessageService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMessageService.java
new file mode 100644
index 0000000..1bcc9f5
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMessageService.java
@@ -0,0 +1,9 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.SysUserMessage;
+import java.util.List;
+
+public interface ISysUserMessageService {
+    int sendMessage(SysUserMessage message);
+    List<SysUserMessage> getMessageList(Long userId1, Long userId2);
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMessageServiceImpl.java
new file mode 100644
index 0000000..94c9e6e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMessageServiceImpl.java
@@ -0,0 +1,24 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.system.domain.SysUserMessage;
+import com.ruoyi.system.mapper.SysUserMessageMapper;
+import com.ruoyi.system.service.ISysUserMessageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+@Service
+public class SysUserMessageServiceImpl implements ISysUserMessageService {
+    @Autowired
+    private SysUserMessageMapper messageMapper;
+
+    @Override
+    public int sendMessage(SysUserMessage message) {
+        return messageMapper.insertMessage(message);
+    }
+
+    @Override
+    public List<SysUserMessage> getMessageList(Long userId1, Long userId2) {
+        return messageMapper.selectMessageListByUserIds(userId1, userId2);
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMessageMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMessageMapper.xml
new file mode 100644
index 0000000..79fe8b7
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMessageMapper.xml
@@ -0,0 +1,25 @@
+<?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.SysUserMessageMapper">
+    <resultMap id="SysUserMessageMap" type="com.ruoyi.system.domain.SysUserMessage">
+        <id property="messageId" column="message_id"/>
+        <result property="senderId" column="sender_id"/>
+        <result property="receiverId" column="receiver_id"/>
+        <result property="content" column="content"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+
+    <insert id="insertMessage" parameterType="com.ruoyi.system.domain.SysUserMessage">
+        insert into sys_user_message (sender_id, receiver_id, content, create_time)
+        values (#{senderId}, #{receiverId}, #{content}, sysdate())
+    </insert>
+
+    <select id="selectMessageListByUserIds" resultMap="SysUserMessageMap">
+        select message_id, sender_id, receiver_id, content, create_time
+        from sys_user_message
+        where (sender_id = #{userId1} and receiver_id = #{userId2})
+           or (sender_id = #{userId2} and receiver_id = #{userId1})
+            and del_flag = '0'
+        order by create_time asc
+    </select>
+</mapper>
\ No newline at end of file