From 604d80147cede277e706bb7edc912c6f119d9ee2 Mon Sep 17 00:00:00 2001 From: wulin Date: Thu, 12 Oct 2023 15:54:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0U3D=20MQ=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/device/DeviceUserBindEntity.java | 7 +++++++ .../system/SystemTalkAnswerConfigEntity.java | 4 ++++ .../entity/user/UserHandlingDeviceEntity.java | 1 + .../request/device/DeviceUserBindRequest.java | 12 +++++++++++ .../system/SystemTalkAnswerConfigRequest.java | 5 +++++ .../user/UserHandlingDeviceRequest.java | 5 +++++ .../data/resp/device/DeviceUserBindResp.java | 10 ++++++++++ .../system/SystemTalkAnswerConfigResp.java | 5 +++++ .../com/qiuguo/iot/data/resp/u3d/U3dMsg.java | 4 ++++ .../service/device/DeviceUserBindService.java | 20 +++++++++++++++++++ .../system/SystemTalkAnswerConfigService.java | 12 +++++++++++ .../qiuguo/iot/third/service/NlpService.java | 3 ++- .../api/handler/BaseWebSocketProcess.java | 20 +++++++++++++++++++ 13 files changed, 107 insertions(+), 1 deletion(-) diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java index 047ebab..ca4afb3 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java @@ -92,4 +92,11 @@ public class DeviceUserBindEntity extends GenericEntity { @Column(name = "category_code", length = 20, nullable = false) private String categoryCode; + @Comment("U3D对应物品ID") + @Column(name = "u3d_id", length = 11) + private Long u3dId; + @Comment("U3D场景ID") + @Column(name = "scence_id", length = 11) + private Long scenceId; + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/system/SystemTalkAnswerConfigEntity.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/system/SystemTalkAnswerConfigEntity.java index 7d2bb97..8e0a63e 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/system/SystemTalkAnswerConfigEntity.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/system/SystemTalkAnswerConfigEntity.java @@ -77,4 +77,8 @@ public class SystemTalkAnswerConfigEntity extends GenericEntity { @Column(name = "play_type", nullable = false) private Integer playType; + @Comment("U3D对应的状态ID") + @Column(name = "u3d_status_id", length = 11, nullable = false, unique = true) + private Long u3dStatusId; + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/user/UserHandlingDeviceEntity.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/user/UserHandlingDeviceEntity.java index 27dd431..40ef7ea 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/user/UserHandlingDeviceEntity.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/user/UserHandlingDeviceEntity.java @@ -69,4 +69,5 @@ public class UserHandlingDeviceEntity extends GenericEntity { @Column(name = "modify_time") private Date modifyTime; + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java index 97bf5df..0181e85 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java @@ -64,8 +64,20 @@ public class DeviceUserBindRequest implements java.io.Serializable { //分类字段名称 private String categoryCode; + + /** + * U3D对应物品ID + */ + private Long u3dId; + + /** + * U3D场景ID + */ + private Long scenceId; /** * 是否在线 0 不在线 1 在线 */ private Integer onLine; + + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/system/SystemTalkAnswerConfigRequest.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/system/SystemTalkAnswerConfigRequest.java index c525e45..5364602 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/system/SystemTalkAnswerConfigRequest.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/system/SystemTalkAnswerConfigRequest.java @@ -62,4 +62,9 @@ public class SystemTalkAnswerConfigRequest implements java.io.Serializable { */ private Integer playType; + + /** + * U3D对应的状态ID + */ + private Long u3dStatusId; } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/user/UserHandlingDeviceRequest.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/user/UserHandlingDeviceRequest.java index 55e1269..191a9ef 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/user/UserHandlingDeviceRequest.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/user/UserHandlingDeviceRequest.java @@ -1,5 +1,8 @@ package com.qiuguo.iot.data.request.user; import lombok.Data; +import org.hswebframework.ezorm.rdb.mapping.annotation.Comment; + +import javax.persistence.Column; import java.util.Date; /** *

@@ -54,4 +57,6 @@ public class UserHandlingDeviceRequest implements java.io.Serializable { //搜索结束 private Date modifyTimeEnd; + + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java index 5e0ad26..163d9c5 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java @@ -33,6 +33,8 @@ public class DeviceUserBindResp { village = entity.getVillage(); address = entity.getAddress(); categoryCode = entity.getCategoryCode(); + u3dId = entity.getU3dId(); + scenceId = entity.getScenceId(); } // private Long id; @@ -70,6 +72,14 @@ public class DeviceUserBindResp { private String address; //分类字段名称 private String categoryCode; + /** + * U3D对应物品ID + */ + private Long u3dId; + /** + * U3D场景ID + */ + private Long scenceId; /** * 是否在线0 b不在线 1在线 */ diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/system/SystemTalkAnswerConfigResp.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/system/SystemTalkAnswerConfigResp.java index 220761d..31a5aff 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/system/SystemTalkAnswerConfigResp.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/system/SystemTalkAnswerConfigResp.java @@ -40,4 +40,9 @@ public class SystemTalkAnswerConfigResp { */ private Integer playType; + + /** + * U3D对应的状态ID + */ + private Long u3dStatusId; } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/u3d/U3dMsg.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/u3d/U3dMsg.java index f66164d..bca6c24 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/u3d/U3dMsg.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/u3d/U3dMsg.java @@ -32,6 +32,10 @@ public class U3dMsg { */ private Long typeId; + /** + * 扩展参数 + */ + private String extParam; /** * 坐标x */ diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java index 55eac29..eba5ddd 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java @@ -112,6 +112,12 @@ public class DeviceUserBindService extends GenericReactiveCrudService getActionWithLacSingle(Long userId, String text){ - if(userId != null) { + if(userId == null) { userId = 0L; } DeviceUserBindRequest request = new DeviceUserBindRequest(); @@ -60,6 +60,7 @@ public class NlpService { if(entity.getAnswerType().equals(KeyTypeEnum.SYSTEM_COMMAND.getCode())) { systemTalkKeyAndDeviceName.setType(KeyTypeEnum.SYSTEM_COMMAND.getCode()); }else{ + //只要内容中含有改词的都直接使用系统配置回答,而不会调用千问 systemTalkKeyAndDeviceName.setType(KeyTypeEnum.QIUGUO_NAME.getCode()); } systemTalkKeyAndDeviceName.setIndex(i++); diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java index 3c2ed8e..6c60c63 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java @@ -8,6 +8,7 @@ import com.qiuguo.iot.base.utils.StringUtils; import com.qiuguo.iot.box.websocket.api.domain.BaseSession; import com.qiuguo.iot.box.websocket.api.domain.box.BoxSession; import com.qiuguo.iot.box.websocket.api.domain.box.resp.BoxMessageResp; +import com.qiuguo.iot.data.constants.YunxiRabbitConst; import com.qiuguo.iot.data.entity.device.DeviceUserBindEntity; import com.qiuguo.iot.data.entity.device.DeviceUserTalkRecordEntity; import com.qiuguo.iot.data.entity.system.SystemTalkBindDeviceEntity; @@ -17,8 +18,10 @@ import com.qiuguo.iot.data.request.system.SystemTalkBindDeviceRequest; import com.qiuguo.iot.data.request.third.ThirdWeatherInfoRequest; import com.qiuguo.iot.data.resp.third.MusicResp; import com.qiuguo.iot.data.resp.third.weather.TianqiapiItemResp; +import com.qiuguo.iot.data.resp.u3d.U3dMsg; import com.qiuguo.iot.data.service.device.DeviceUserBindService; import com.qiuguo.iot.data.service.device.DeviceUserTalkRecordService; +import com.qiuguo.iot.data.service.mq.MqService; import com.qiuguo.iot.data.service.system.SystemAddressService; import com.qiuguo.iot.data.service.system.SystemTalkBindDeviceService; import com.qiuguo.iot.third.nlp.action.Action; @@ -66,6 +69,9 @@ public class BaseWebSocketProcess { @Autowired protected QWenService qwenService; + @Autowired + protected MqService mqService; + protected static ConcurrentHashMap userGroup = new ConcurrentHashMap<>(); @@ -316,12 +322,26 @@ public class BaseWebSocketProcess { tuyaDeviceService.controlDevice(query).map(isOk ->{ String msg = ""; if(isOk.getCode().equals(RespCodeEnum.SUCESS.getCode())){ + if(action.getDeviceUserBindEntity().getU3dId() != null){ + log.info("通知U3DMQ"); + U3dMsg u3dMsg = new U3dMsg(); + u3dMsg.setMsgType(100); + u3dMsg.setMetaId(action.getDeviceUserBindEntity().getU3dId()); + u3dMsg.setScenceId(action.getDeviceUserBindEntity().getScenceId()); + u3dMsg.setStatusId(action.getSystemTalkAnswerConfigEntity().getU3dStatusId()); + //发送消息到MQ,通知U3D + mqService.sendMessage(YunxiRabbitConst.EXCHANGE_YUNXI_EVENT, + YunxiRabbitConst.ROUTE_KEY_YUNXI, + JSONObject.toJSONString(u3dMsg)).subscribe(); + } + //通知打开灯成功 msg = systemTalkBindDeviceEntity.getAnswerValue().replaceAll("#name#", deviceName); if(StringUtils.isNotEmpty(action.getStatus())){ msg = msg.replace("#value#", action.getStatus()); } + log.info("执行指令"); }else{ //通知开灯失败;