diff --git a/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java b/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java index 9da477c..da0e312 100644 --- a/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java +++ b/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java @@ -39,9 +39,9 @@ public class AssistantService { message1.put("role", "system"); String prompt = "模仿语音助手,对用户的问题给出简短的回答"; if ("Chinese".equals(language)) { - prompt += "用中文回答"; + prompt += ",用中文回答"; } else if ("English".equals(language)) { - prompt += "用英文回答"; + prompt += ",用英文回答"; } message1.put("content", prompt); Map message2 = new HashMap<>(); diff --git a/user-8072/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java b/user-8072/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java index 993c05f..3f27ac6 100644 --- a/user-8072/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java +++ b/user-8072/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java @@ -11,11 +11,7 @@ import jakarta.websocket.*; import jakarta.websocket.server.PathParam; import jakarta.websocket.server.ServerEndpoint; import org.springframework.amqp.core.ExchangeTypes; -import org.springframework.amqp.rabbit.annotation.Exchange; -import org.springframework.amqp.rabbit.annotation.Queue; -import org.springframework.amqp.rabbit.annotation.QueueBinding; -import org.springframework.amqp.rabbit.annotation.RabbitHandler; -import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.rabbit.annotation.*; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; @@ -28,7 +24,6 @@ import java.text.ParseException; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import static jakarta.websocket.CloseReason.CloseCodes.CLOSED_ABNORMALLY; @@ -70,6 +65,7 @@ public class WebSocketServer implements ApplicationContextAware { if (relationService.ifIgnored(msg.getToId(), msg.getFromId())) { session.getBasicRemote().sendText("您已被对方屏蔽"); } else { + messageService.insertMessage(msg); rabbitTemplate.convertAndSend("exchange1", "", JSON.toJSONString(msg)); } } @@ -133,10 +129,11 @@ public class WebSocketServer implements ApplicationContextAware { value = @Queue(), exchange = @Exchange(value = "exchange1",type = ExchangeTypes.FANOUT) )) - public void sendMsg(String message) throws IOException, ParseException { + public void sendMsg(String message) throws IOException { Message msg = JSON.parseObject(message, Message.class); if (sessionMap.containsKey(msg.getToId())) { sessionMap.get(msg.getToId()).getBasicRemote().sendText(JSON.toJSONString(msg)); + messageService.deleteMessage(msg); } } } diff --git a/user-8072/src/main/java/com/ivmiku/tutorial/service/MessageService.java b/user-8072/src/main/java/com/ivmiku/tutorial/service/MessageService.java index d7e3c88..779c1d5 100644 --- a/user-8072/src/main/java/com/ivmiku/tutorial/service/MessageService.java +++ b/user-8072/src/main/java/com/ivmiku/tutorial/service/MessageService.java @@ -104,9 +104,12 @@ public class MessageService { * @return 查询结果 */ public List getUnreadMsg(String userId) { - List result = redisUtil.listGet("unread:" + userId, 0, -1); - redisUtil.listClear(userId); - return result; + if (redisUtil.ifExist("unread:" + userId)) { + List result = redisUtil.listGet("unread:" + userId, 0, -1); + redisUtil.listClear("unread:" + userId); + return result; + } + return new ArrayList<>(); } /** @@ -233,4 +236,13 @@ public class MessageService { } } } + + public void insertMessage(Message message) { + String id = message.getToId(); + redisUtil.listAdd("unread:" + id, message); + } + + public void deleteMessage(Message message) { + redisUtil.deleteFromList(message); + } } diff --git a/user-8072/src/main/java/com/ivmiku/tutorial/utils/RedisUtil.java b/user-8072/src/main/java/com/ivmiku/tutorial/utils/RedisUtil.java index 3af4268..fb0c172 100644 --- a/user-8072/src/main/java/com/ivmiku/tutorial/utils/RedisUtil.java +++ b/user-8072/src/main/java/com/ivmiku/tutorial/utils/RedisUtil.java @@ -122,4 +122,9 @@ public class RedisUtil { public String getKey(String userId) { return (String) redisTemplate.opsForValue().get("sessionkey:" + userId); } + + public void deleteFromList(Message message) { + String id = message.getToId(); + redisTemplate.opsForList().remove("unread:" + id, 0, message); + } } diff --git a/user-8072/src/main/resources/application-dev.properties b/user-8072/src/main/resources/application-dev.properties index 90fc9fb..449d2b6 100644 --- a/user-8072/src/main/resources/application-dev.properties +++ b/user-8072/src/main/resources/application-dev.properties @@ -11,8 +11,10 @@ server.port=8072 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root -spring.datasource.password=123456 +spring.datasource.password=12345abcde spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tutorial?useUnicode=true&characterEncoding=utf8&useSSL=false&ServerTimezone=Asia/Shanghai -dubbo.application.qos-enable=false \ No newline at end of file +dubbo.application.qos-enable=false + +spring.rabbitmq.port=5672 \ No newline at end of file