This commit is contained in:
wulin 2023-10-13 15:05:05 +08:00
parent d17b974c74
commit aad9bd45c4
2 changed files with 40 additions and 28 deletions

View File

@ -35,7 +35,7 @@ public class U3dMsg {
/**
* 扩展参数
*/
private String extParam;
private String exParam;
/**
* 坐标x
*/

View File

@ -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();
}
}