diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..87afb26 Binary files /dev/null and b/.DS_Store differ diff --git a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/utils/ChineseDateTimeUtils.java b/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/utils/ChineseDateTimeUtils.java index e1fae76..3f6f7a2 100644 --- a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/utils/ChineseDateTimeUtils.java +++ b/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/utils/ChineseDateTimeUtils.java @@ -10,8 +10,8 @@ public class ChineseDateTimeUtils { * @param c 时间字符串 * @return */ - public static LocalDateTime getDateWithCode(String c){ - return getDateWithCodeAndLocalDateTime(c, LocalDateTime.now(), 0, 0); + public static LocalDateTime getDateWithString(String c){ + return getDateTime(c.replace("的", ""), LocalDateTime.now(), 0, 0); } private static int checkDayOfMonth(LocalDateTime localDateTime, int i){ @@ -47,7 +47,7 @@ public class ChineseDateTimeUtils { int i = checkDayOfMonth(localDateTime, ChineseToAlaboUtils.getLong(c.substring(0, index)).intValue()); - return getDateWithCodeAndLocalDateTime( + return getDateTime( c.substring(index + key.length()), localDateTime.withDayOfMonth(i).withHour(0).withMinute(0).withSecond(0), ampm, @@ -93,8 +93,8 @@ public class ChineseDateTimeUtils { * @param localDateTime 时间基础 * @return */ - public static LocalDateTime getDateWithCodeAndLocalDateTime(String c, LocalDateTime localDateTime){ - return getDateWithCodeAndLocalDateTime(c, localDateTime, 0, 0); + public static LocalDateTime getDateWithStringAndLocalDateTime(String c, LocalDateTime localDateTime){ + return getDateTime(c.replace("的", ""), localDateTime, 0, 0); } /** * 汉语时间字符串转时间 @@ -104,14 +104,18 @@ public class ChineseDateTimeUtils { * @param type 0:无感 1:月 2:时 3:分 * @return */ - public static LocalDateTime getDateWithCodeAndLocalDateTime(String c, LocalDateTime localDateTime, int ampm, int type){ + public static LocalDateTime getDateWithStringAndLocalDateTime(String c, LocalDateTime localDateTime, int ampm, int type){ + return getDateTime(c.replace("的", ""), localDateTime, ampm, type); + } + + private static LocalDateTime getDateTime(String c, LocalDateTime localDateTime, int ampm, int type){ DateEnum dateEnu = null; for(DateEnum enum1 : DateEnum.values()){ if(c.startsWith(enum1.getCode())){ dateEnu = enum1; localDateTime = dateEnu.getDateTime(localDateTime); c = c.substring(enum1.getCode().length()); - localDateTime = getDateWithCodeAndLocalDateTime(c, localDateTime, dateEnu.getAmPm(), 0); + localDateTime = getDateTime(c, localDateTime, dateEnu.getAmPm(), 0); break; } } @@ -264,7 +268,7 @@ public class ChineseDateTimeUtils { private static LocalDateTime setYear(String c, String key, LocalDateTime localDateTime, int ampm) { int index = c.indexOf(key); int i = ChineseToAlaboUtils.getLong(c.substring(0, index)).intValue(); - return getDateWithCodeAndLocalDateTime( + return getDateTime( c.substring(index + key.length()), localDateTime.withYear(i), ampm, @@ -305,7 +309,7 @@ public class ChineseDateTimeUtils { private static LocalDateTime setMonth(String c, String key, LocalDateTime localDateTime, int ampm) { int index = c.indexOf(key); int i = checkMonth(ChineseToAlaboUtils.getLong(c.substring(0, index)).intValue()); - return getDateWithCodeAndLocalDateTime( + return getDateTime( c.substring(index + key.length()), localDateTime.withMonth(i), ampm, @@ -324,7 +328,7 @@ public class ChineseDateTimeUtils { private static LocalDateTime setMinute(String c, String key, LocalDateTime localDateTime, int ampm) { int index = c.indexOf(key); int i = checkMinuteAndSecond(ChineseToAlaboUtils.getLong(c.substring(0, index)).intValue()); - return getDateWithCodeAndLocalDateTime( + return getDateTime( c.substring(index + key.length()), localDateTime.withMinute(i), ampm, @@ -352,7 +356,7 @@ public class ChineseDateTimeUtils { localDateTime = localDateTime.plusDays(1); } } - return getDateWithCodeAndLocalDateTime( + return getDateTime( c.substring(index + key.length()), localDateTime.withHour(i).withMinute(0).withSecond(0), ampm, 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 ca4afb3..194a866 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 @@ -99,4 +99,8 @@ public class DeviceUserBindEntity extends GenericEntity { @Column(name = "scence_id", length = 11) private Long scenceId; + @Comment("语音合成音色标识") + @Column(name = "tts", length = 11) + private String tts; + } \ 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 0181e85..b62d6b6 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 @@ -79,5 +79,10 @@ public class DeviceUserBindRequest implements java.io.Serializable { */ private Integer onLine; + /** + * 语音合成音色标识 + */ + private String tts; + } \ 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 163d9c5..5d68d8d 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 @@ -35,6 +35,7 @@ public class DeviceUserBindResp { categoryCode = entity.getCategoryCode(); u3dId = entity.getU3dId(); scenceId = entity.getScenceId(); + tts = entity.getTts(); } // private Long id; @@ -92,4 +93,10 @@ public class DeviceUserBindResp { * 最后离线时间 */ private Date lastOffLineTime; + + /** + * 语音合成音色标识 + */ + private String tts; + } \ No newline at end of file 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 11f5baa..9722482 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 @@ -109,6 +109,9 @@ public class DeviceUserBindService extends GenericReactiveCrudService geSingletNlp(String value) { - - return getHubFaLac(value); + if(SpringUtil.getProperty("lac.type").equals("suanfa")){ + return getHubFaLac(value); + } + return getSuanFaLac(value); } /** diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java index 39a5e58..db255fe 100644 --- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java +++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java @@ -1,6 +1,7 @@ package com.qiuguo.iot.user.api.controller.device; import cn.hutool.crypto.digest.MD5; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.qiuguo.iot.base.constans.RedisConstans; @@ -164,8 +165,8 @@ public class DeviceController { } pagerResult.setData(list); - return pagerResult; + }); } diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java index 7494ec8..1892179 100644 --- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java +++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java @@ -99,14 +99,15 @@ public class LogWebFilter implements WebFilter { joinBuffer.read(returnContent); DataBufferUtils.release(joinBuffer); String returnStr = new String(returnContent, StandardCharsets.UTF_8); - log.info("response:{}", returnStr); + log.info("flux response:{}", returnStr); return response.bufferFactory().wrap(returnContent); })); }else if(body instanceof Mono){ Mono monoBody = Mono.from(body); return super.writeWith(monoBody.map(dataBuffer -> { - log.info("response:{}", dataBuffer.toString(StandardCharsets.UTF_8)); - return response.bufferFactory().wrap(dataBuffer.toString(StandardCharsets.UTF_8).getBytes()); + String returnStr = dataBuffer.toString(StandardCharsets.UTF_8); + log.info("mono response:{}", returnStr); + return response.bufferFactory().wrap(returnStr.getBytes()); })); } return super.writeWith(body); 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 4eeee88..6328fa8 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 @@ -44,6 +44,7 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.reactive.socket.WebSocketSession; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; @@ -89,6 +90,9 @@ public class BaseWebSocketProcess { @Autowired AudioService audioService; + @Value("${tts.suanfa") + Boolean ttsSuanfa; + @Autowired protected SystemTalkBindU3dService systemTalkBindU3dService; @@ -672,20 +676,19 @@ public class BaseWebSocketProcess { } private void sendMsg(BaseSession baseSession, BaseMessageResp baseMessageResp) { - - sendMsg(baseSession, JSONObject.toJSONString(baseMessageResp)); - /* if(this instanceof BoxWebSocketHandler){ + if(ttsSuanfa && this instanceof BoxWebSocketHandler){ audioService.getAudioUrl(baseMessageResp.getText()).map(s ->{ log.info("音频地址:{}", s); BoxMessageResp boxMessageResp = new BoxMessageResp(); BeanUtils.copyProperties(baseMessageResp, boxMessageResp); boxMessageResp.setAudio(s); - sendMsg(baseSession, JSONObject.toJSONString(boxMessageResp));====== + sendMsg(baseSession, JSONObject.toJSONString(boxMessageResp)); return s; }).subscribeOn(Schedulers.single()).subscribe(); }else{ sendMsg(baseSession, JSONObject.toJSONString(baseMessageResp)); - }*/ + } + } private void sendMsg(BaseSession baseSession, String msg) { diff --git a/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml b/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml index 63bf785..6a0a133 100644 --- a/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml +++ b/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml @@ -40,7 +40,10 @@ tianqiapi: qiuguo: checktoken: url: https://exper.qiuguojihua.com/data/api.auth.center/get +tts: + suanfa: true lac: + type: suanfa hub: url: http://192.168.8.175:8866/predict/lac suanfa: