From aad9bd45c4df0b99e30ec54bfe1667dd47c9ce04 Mon Sep 17 00:00:00 2001 From: wulin Date: Fri, 13 Oct 2023 15:05:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8D=A2=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qiuguo/iot/data/resp/u3d/U3dMsg.java | 2 +- .../api/handler/BaseWebSocketProcess.java | 66 +++++++++++-------- 2 files changed, 40 insertions(+), 28 deletions(-) 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 bca6c24..0ac8ec7 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 @@ -35,7 +35,7 @@ public class U3dMsg { /** * 扩展参数 */ - private String extParam; + private String exParam; /** * 坐标x */ 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 a970f1f..5f0a18d 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 @@ -10,12 +10,12 @@ 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.SystemTalkAnswerConfigEntity; import com.qiuguo.iot.data.entity.system.SystemTalkBindDeviceEntity; import com.qiuguo.iot.data.entity.system.SystemTalkBindU3dEntity; import com.qiuguo.iot.data.request.device.DeviceUserBindRequest; import com.qiuguo.iot.data.request.qwen.TongYiCommunicationRest; import com.qiuguo.iot.data.request.system.SystemTalkBindDeviceRequest; +import com.qiuguo.iot.data.request.system.SystemTalkBindU3dRequest; 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; @@ -107,7 +107,7 @@ public class BaseWebSocketProcess { systemTalkBindDeviceService.selectSystemTalkBindDeviceByRequest(systemTalkBindDeviceRequest).map(sd -> { TuyaQuery query = new TuyaQuery(); query.setDeviceId(db.getOtherDeviceId()); - query.setValue(u3dMsg.getExtParam()); + query.setValue(u3dMsg.getExParam()); query.setUserHandlingDeviceId(sd.getUserHandlingId()); tuyaDeviceService.controlDevice(query).map(isOk ->{ log.info("U3D打开设备调用情况{}", isOk); @@ -176,19 +176,20 @@ public class BaseWebSocketProcess { sendMq(JSONObject.toJSONString(u3dMsg)); } - private void toU3DMq(Action action, SystemTalkBindU3dEntity systemTalkBindU3dEntity, Long metaId){ + private void toU3DMq(SystemTalkBindU3dEntity systemTalkBindU3dEntity, Long metaId){ U3dMsg u3dMsg = new U3dMsg(); u3dMsg.setMsgType(systemTalkBindU3dEntity.getU3dType()); u3dMsg.setMetaId(metaId); - u3dMsg.setScenceId(action.getDeviceUserBindEntity().getScenceId()); + //u3dMsg.setScenceId(action.getDeviceUserBindEntity().getScenceId()); + u3dMsg.setExParam(systemTalkBindU3dEntity.getAnswerAction()); u3dMsg.setStatusId(systemTalkBindU3dEntity.getU3dStatusId()); sendMq(JSONObject.toJSONString(u3dMsg)); } private void sendMq(String msg){ - log.info("通知U3DMQ"); + log.info("通知U3DMQ{}", msg); try{ //发送消息到MQ,通知U3D mqService.sendMessageWithConfirmation(YunxiRabbitConst.EXCHANGE_YUNXI_EVENT, @@ -392,29 +393,40 @@ public class BaseWebSocketProcess { DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy年M月d日 H时m分 星期E"); sendMessage(action, baseSession, action.getTime().getDetailTime().format(df), AskTypeEnum.TTS.getCode()); }else if(action.getSystemTalkAnswerConfigEntity().getAnswerType().equals(AskTypeEnum.U3D.getCode())){ - systemTalkBindU3dService.selectSystemTalkBindU3dBySystemTalkId(action.getSystemTalkAnswerConfigEntity().getId()) - .defaultIfEmpty(new SystemTalkBindU3dEntity()) - .map(systemTalkBindU3d ->{ - if(systemTalkBindU3d.getId() == null){ - sendMessage(action, baseSession, "暂时不支持该指令", AskTypeEnum.TTS.getCode()); - return systemTalkBindU3d; - } - //数字人的id直接用用户id来代替 - if(U3dMsgTypeEnum.DANCE.getCode().equals(systemTalkBindU3d.getU3dType())){ - //推送客户端跳舞 - BoxMessageResp resp = new BoxMessageResp(); - resp.setType(AskTypeEnum.U3D.getCode()); - resp.setText("开始跳舞"); - ActionResp actionResp = new ActionResp(); - actionResp.setType(7); - resp.setAction(actionResp); - sendMessage(action, baseSession, resp); - }else{ - //推送MQ换装 - toU3DMq(action, systemTalkBindU3d, baseSession.getUserId()); - } + SystemTalkBindU3dRequest request = new SystemTalkBindU3dRequest(); + request.setSystemTalkId(action.getSystemTalkAnswerConfigEntity().getId()); + request.setAskCommon(action.getActionCommand()); + systemTalkBindU3dService.selectSystemTalkBindU3dByRequest(request) + .defaultIfEmpty(new SystemTalkBindU3dEntity()) + .map(systemTalkBindU3d ->{ + if(systemTalkBindU3d.getId() == null){ + sendMessage(action, baseSession, "暂时不支持该指令", AskTypeEnum.TTS.getCode()); + return systemTalkBindU3d; + } + //数字人的id直接用用户id来代替 + if(U3dMsgTypeEnum.DANCE.getCode().equals(systemTalkBindU3d.getU3dType())){ + //推送客户端跳舞 + BoxMessageResp resp = new BoxMessageResp(); + resp.setType(AskTypeEnum.U3D.getCode()); + resp.setText("开始跳舞"); + ActionResp actionResp = new ActionResp(); + actionResp.setType(7); + resp.setAction(actionResp); + sendMessage(action, baseSession, resp); + }else{ + //推送MQ换装 + toU3DMq(systemTalkBindU3d, baseSession.getUserId()); + DeviceUserTalkRecordEntity talkRecord = new DeviceUserTalkRecordEntity(); + talkRecord.setAskType(AskTypeEnum.U3D.getCode()); + talkRecord.setAskValue(action.getAsk()); + talkRecord.setAskKey(action.getAction()); + talkRecord.setAnswerValue("正在" + action.getAction() + ",请稍候"); + talkRecord.setUserId(baseSession.getUserId()); + talkRecord.setDeviceId(baseSession.getDeviceId()); + deviceUserTalkRecordService.insertDeviceUserTalkRecord(talkRecord).subscribe(); + } - return systemTalkBindU3d; + return systemTalkBindU3d; }).subscribe(); } }