From bbbddff6abd09b97fbf0ea8f0b321c563add7d1f Mon Sep 17 00:00:00 2001
From: "W.Y" <343887809@qq.com>
Date: Mon, 9 Oct 2023 20:33:58 +0800
Subject: [PATCH 1/2] =?UTF-8?q?[optimization]=20=E9=80=9A=E4=B9=89?=
=?UTF-8?q?=E5=8D=83=E9=97=AE=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../qiuguo/iot/data/request}/QGResponse.java | 2 +-
.../request}/TongYiCommunicationRest.java | 4 +-
iot-common/iot-third/pom.xml | 4 +
.../qiuguo/iot/third/service/QWenService.java | 88 +++++++++++++++++++
.../api/controller/tongyi/TYController.java | 5 +-
5 files changed, 97 insertions(+), 6 deletions(-)
rename {iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi => iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request}/QGResponse.java (94%)
rename {iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi => iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request}/TongYiCommunicationRest.java (71%)
create mode 100644 iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/QWenService.java
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi/QGResponse.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/QGResponse.java
similarity index 94%
rename from iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi/QGResponse.java
rename to iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/QGResponse.java
index aff3546..9ba914f 100644
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi/QGResponse.java
+++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/QGResponse.java
@@ -1,4 +1,4 @@
-package com.qiuguo.iot.user.api.rest.tongyi;
+package com.qiuguo.iot.data.request;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi/TongYiCommunicationRest.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/TongYiCommunicationRest.java
similarity index 71%
rename from iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi/TongYiCommunicationRest.java
rename to iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/TongYiCommunicationRest.java
index db33a50..5465b70 100644
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/rest/tongyi/TongYiCommunicationRest.java
+++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/TongYiCommunicationRest.java
@@ -1,4 +1,4 @@
-package com.qiuguo.iot.user.api.rest.tongyi;
+package com.qiuguo.iot.data.request;
import lombok.Data;
@@ -6,6 +6,6 @@ import lombok.Data;
public class TongYiCommunicationRest {
private Integer isWhiteList;//是否为白名单
private String text;//消息
- private String deviceId;//设备序列号
+ private String onlyId;//设备序列号 唯一
private String status; //状态,0:已完成,1.未发起,2.发起中
}
diff --git a/iot-common/iot-third/pom.xml b/iot-common/iot-third/pom.xml
index 44e7320..a15e2be 100644
--- a/iot-common/iot-third/pom.xml
+++ b/iot-common/iot-third/pom.xml
@@ -58,6 +58,10 @@
org.springframework.amqp
spring-rabbit
+
+ org.springframework.data
+ spring-data-redis
+
diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/QWenService.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/QWenService.java
new file mode 100644
index 0000000..be251cd
--- /dev/null
+++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/QWenService.java
@@ -0,0 +1,88 @@
+package com.qiuguo.iot.third.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.qiuguo.iot.base.constans.RedisConstans;
+import com.qiuguo.iot.base.utils.WebClientUtils;
+
+import com.qiuguo.iot.data.request.QGResponse;
+import com.qiuguo.iot.data.request.TongYiCommunicationRest;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
+import org.springframework.data.redis.core.ReactiveValueOperations;
+import org.springframework.util.ObjectUtils;
+import reactor.core.publisher.Mono;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+@Slf4j
+public class QWenService {
+
+ @Resource
+ private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
+
+
+ public Mono communication(TongYiCommunicationRest rest){
+ ReactiveValueOperations operations = reactiveStringRedisTemplate.opsForValue();
+ return operations.get(RedisConstans.TY_QUEUE_LIST+rest.getOnlyId()).defaultIfEmpty("").flatMap(res -> {
+ JSONArray objects = JSONArray.parseArray(res);
+ List list = new LinkedList<>();
+ try {
+ if (!ObjectUtils.isEmpty(objects)){
+ list = JSONObject.parseArray(res, TongYiCommunicationRest.class);
+ if (rest.getIsWhiteList() == 0) {
+ //是白名单,插入头部
+ log.info("收到白名单对应信息,接收参数为:{}", rest);
+ list.add(0,rest);
+ }
+ }
+ //不是白名单插入尾部
+ list.add(rest);
+ operations.set(RedisConstans.TY_QUEUE_LIST+rest.getOnlyId(), JSONArray.toJSONString(list)).subscribe();
+ //通知Redis让Redis进行消费
+ HashMap map = new HashMap<>();
+ map.put("task_type", "qwen");
+ map.put("text", rest.getText());
+ return httpTY(map) ;
+ }catch (Exception e){
+ log.error("调用异常:");
+ return Mono.just(new QGResponse().getData());
+ }finally {
+ reactiveStringRedisTemplate.delete(RedisConstans.TY_QUEUE_LIST+rest.getOnlyId()).subscribe();
+ }
+ });
+ }
+
+ public static Mono httpTY(HashMap map){
+
+ return WebClientUtils.post("http://192.168.8.211:5010/qg_human/qwen", new JSONObject(map)).flatMap(jsonObject -> {
+ long time = new Date().getTime();
+ QGResponse qgResponse = jsonObject.toJavaObject(QGResponse.class);
+ log.info("发起TY请求,响应时间时间为:{}", new Date().getTime()-time);
+ if (qgResponse.getStatusCode() == 0) {
+ //成功
+ log.info("通知成功:"+ qgResponse.getData());
+ return Mono.just(qgResponse.getData());
+ }
+ //失败
+ log.info("通知失败:"+ map);
+
+ return Mono.just(qgResponse.getData());
+ });
+ }
+
+ public static void main(String[] args) {
+ HashMap map = new HashMap<>();
+ map.put("task_type", "qwen");
+ map.put("text", "你好");
+ try {
+ Mono qgResponseMono = httpTY(map);
+ System.out.println(qgResponseMono.block());
+ }catch (Exception e) {
+ log.info("异常:{}", e);
+ }
+
+ }
+
+}
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java
index 70142c2..a664ec2 100644
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java
+++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java
@@ -4,8 +4,8 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.qiuguo.iot.base.constans.RedisConstans;
import com.qiuguo.iot.base.utils.WebClientUtils;
-import com.qiuguo.iot.user.api.rest.tongyi.QGResponse;
-import com.qiuguo.iot.user.api.rest.tongyi.TongYiCommunicationRest;
+import com.qiuguo.iot.data.request.QGResponse;
+import com.qiuguo.iot.data.request.TongYiCommunicationRest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import org.springframework.data.redis.core.ReactiveValueOperations;
@@ -18,7 +18,6 @@ import reactor.core.publisher.Mono;
import javax.annotation.Resource;
import java.util.*;
-import java.util.function.Function;
@RestController
@RequestMapping("/TY")
From 2a3714dadceffc85cf2cc3c7ec62907c6d7fefb6 Mon Sep 17 00:00:00 2001
From: "W.Y" <343887809@qq.com>
Date: Mon, 9 Oct 2023 20:34:15 +0800
Subject: [PATCH 2/2] =?UTF-8?q?[optimization]=20=E9=80=9A=E4=B9=89?=
=?UTF-8?q?=E5=8D=83=E9=97=AE=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../api/controller/tongyi/TYController.java | 94 -------------------
1 file changed, 94 deletions(-)
delete mode 100644 iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java
deleted file mode 100644
index a664ec2..0000000
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/tongyi/TYController.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.qiuguo.iot.user.api.controller.tongyi;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.qiuguo.iot.base.constans.RedisConstans;
-import com.qiuguo.iot.base.utils.WebClientUtils;
-import com.qiuguo.iot.data.request.QGResponse;
-import com.qiuguo.iot.data.request.TongYiCommunicationRest;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
-import org.springframework.data.redis.core.ReactiveValueOperations;
-import org.springframework.util.ObjectUtils;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import reactor.core.publisher.Mono;
-
-import javax.annotation.Resource;
-import java.util.*;
-
-@RestController
-@RequestMapping("/TY")
-@Slf4j
-public class TYController {
-
- @Resource
- private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
-
-
- @PostMapping("communication")
- public Mono communication(@RequestBody TongYiCommunicationRest rest){
- ReactiveValueOperations operations = reactiveStringRedisTemplate.opsForValue();
- return operations.get(RedisConstans.TY_QUEUE_LIST+rest.getDeviceId()).defaultIfEmpty("").flatMap(res -> {
- JSONArray objects = JSONArray.parseArray(res);
- List list = new LinkedList<>();
- try {
- if (!ObjectUtils.isEmpty(objects)){
- list = JSONObject.parseArray(res, TongYiCommunicationRest.class);
- if (rest.getIsWhiteList() == 0) {
- //是白名单,插入头部
- log.info("收到白名单对应信息,接收参数为:{}", rest);
- list.add(0,rest);
- }
- }
- //不是白名单插入尾部
- list.add(rest);
- operations.set(RedisConstans.TY_QUEUE_LIST+rest.getDeviceId(), JSONArray.toJSONString(list)).subscribe();
- //通知Redis让Redis进行消费
- HashMap map = new HashMap<>();
- map.put("task_type", "qwen");
- map.put("text", rest.getText());
- return httpTY(map) ;
- }catch (Exception e){
- log.error("调用异常:");
- return Mono.just(new QGResponse().getData());
- }finally {
- reactiveStringRedisTemplate.delete(RedisConstans.TY_QUEUE_LIST+rest.getDeviceId()).subscribe();
- }
- });
- }
-
- public static Mono httpTY(HashMap map){
-
- return WebClientUtils.post("http://192.168.8.211:5010/qg_human/qwen", new JSONObject(map)).flatMap(jsonObject -> {
- long time = new Date().getTime();
- QGResponse qgResponse = jsonObject.toJavaObject(QGResponse.class);
- log.info("发起TY请求,响应时间时间为:{}", new Date().getTime()-time);
- if (qgResponse.getStatusCode() == 0) {
- //成功
- log.info("通知成功:"+ qgResponse.getData());
- return Mono.just(qgResponse.getData());
- }
- //失败
- log.info("通知失败:"+ map);
-
- return Mono.just(qgResponse.getData());
- });
- }
-
- public static void main(String[] args) {
- HashMap map = new HashMap<>();
- map.put("task_type", "qwen");
- map.put("text", "你好");
- try {
- Mono qgResponseMono = httpTY(map);
- System.out.println(qgResponseMono.block());
- }catch (Exception e) {
- log.info("异常:{}", e);
- }
-
- }
-
-}