Explorar el Código

Merge remote-tracking branch 'origin/dev' into dev

xuxiaofei hace 2 años
padre
commit
09e2766837

+ 3 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/event/offline/KeepliveTimeoutListener.java

@@ -1,6 +1,7 @@
 package com.zd.alg.iot.vmp.gb28181.event.offline;
 
 import com.zd.alg.iot.vmp.gb28181.event.EventPublisher;
+import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,6 +18,7 @@ import com.zd.alg.iot.vmp.common.VideoManagerConstants;
  * @date:   2020年5月6日 上午11:35:46
  */
 @Component
+@Slf4j
 public class KeepliveTimeoutListener extends KeyExpirationEventMessageListener {
 
     private Logger logger = LoggerFactory.getLogger(KeepliveTimeoutListener.class);
@@ -35,6 +37,7 @@ public class KeepliveTimeoutListener extends KeyExpirationEventMessageListener {
      */
     @Override
     public void onMessage(Message message, byte[] pattern) {
+
         //  获取失效的key
         String expiredKey = message.toString();
         if(!expiredKey.startsWith(VideoManagerConstants.KEEPLIVEKEY_PREFIX)){

+ 30 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/speaker/controller/SpeakerController.java

@@ -200,8 +200,10 @@ public class SpeakerController {
     }
 
 
-    /***
-     * 文字转语音播放
+    /**
+     * 语音播放
+     * @param text 播放音乐路径
+     * @param playVo 播放实体
      * @return
      */
     @PostMapping("/textParseUrlAppIps")
@@ -212,7 +214,7 @@ public class SpeakerController {
         }
         text=text.replace("https","http");
         text=text.replace("http://lab.sxitdlc.com/sudalabSystem/","http://10.20.10.7/labSystem/");
-        iSpeakerService.textParseVoiceAppIps(text,playVo);
+        iSpeakerService.textParseVoiceAppIps(text,playVo,1);
         Map<String,Object> map=new HashMap<>();
         map.put("text",text);
         String date=DateUtils.parseDateToStr("HH:MM",new Date());
@@ -220,6 +222,31 @@ public class SpeakerController {
         return AjaxResult.success(map);
     }
 
+
+    /**
+     * 语音播放
+     * @param text 播放音乐路径
+     * @param playVo 播放实体
+     * @param playNum 播放次数
+     * @return
+     */
+    @PostMapping("/textMoreParseUrlAppIps")
+    @ApiOperation(value = "文字转语音小程序播放地址", notes = "文字转语音小程序播放地址")
+    public AjaxResult textParseUrlAppIps(@RequestParam(required = true) String text,@RequestBody List<PlayVo> playVo,Integer playNum) {
+        if(StringUtils.isEmpty(text) || playVo.size()==0){
+            return AjaxResult.error("参数有误,请检查参数!");
+        }
+        text=text.replace("https","http");
+        text=text.replace("http://lab.sxitdlc.com/sudalabSystem/","http://10.20.10.7/labSystem/");
+        iSpeakerService.textParseVoiceAppIps(text,playVo,playNum);
+        Map<String,Object> map=new HashMap<>();
+        map.put("text",text);
+        String date=DateUtils.parseDateToStr("HH:MM",new Date());
+        map.put("date",date);
+        return AjaxResult.success(map);
+    }
+
+
     /**
      * 停止播放
      * @param sn

+ 1 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/speaker/service/ISpeakerService.java

@@ -90,7 +90,7 @@ public interface ISpeakerService {
      * @param playVo
      * @return
      */
-    void textParseVoiceAppIps(String texts, List<PlayVo> playVo);
+    void textParseVoiceAppIps(String texts, List<PlayVo> playVo,Integer playNum);
 
     /**
      * 文字转硬盘播放

+ 34 - 20
zd-modules/zd-algorithm/src/main/java/com/zd/alg/speaker/service/impl/SpeakerServiceImpl.java

@@ -174,26 +174,15 @@ public class SpeakerServiceImpl implements ISpeakerService {
     }
 
     @Override
-    public void textParseVoiceAppIps(String texts,List<PlayVo> playVoList) {
+    public void textParseVoiceAppIps(String texts,List<PlayVo> playVoList,Integer playNum) {
         if (playVoList.size() == 1) {
-            commonTextUrlVoice(texts, playVoList);
+            commonTextUrlVoice(texts, playVoList,playNum);
         } else {
-            PlayBatchVo playBatchVo = new PlayBatchVo();
-            BeanUtils.copyProperties(playVoList.get(0), playBatchVo);
-            List<UrlVo> urlVoList = getUrlList(texts);
-            if (null != playBatchVo.getParams()) {
-                playBatchVo.getParams().setTid(UUID.randomUUID().toString());
-                playBatchVo.getParams().setUrls(urlVoList);
-            }
-            List<String> snsList = new ArrayList<>();
-            for (PlayVo playVo : playVoList) {
-                snsList.add(playVo.getSn());
-            }
             String deviceIp =playVoList.get(0).getDeviceIp();
-            playBatchVo.setSns(snsList.toArray(new String[snsList.size()]));
+            PlayBatchVo playBatchVo=commonPatchTextUrlVoice(texts,playVoList,playNum);
             boolean isTrue = invokePost(JSONObject.toJSON(playBatchVo).toString(), deviceIp,1, playVoList.get(0).getPort());
             if (isTrue) {
-                textParseVoiceAppIps(texts,playVoList);
+                textParseVoiceAppIps(texts,playVoList,playNum);
             }
         }
     }
@@ -231,10 +220,12 @@ public class SpeakerServiceImpl implements ISpeakerService {
         return false;
     }
 
-    private List<UrlVo> getUrlList(String texts) {
+    private List<UrlVo> getUrlList(String texts,Integer playNum) {
         List<UrlVo> urlVoList = new ArrayList<>();
-        UrlVo urlVo = new UrlVo(texts.substring(0, 1), texts);
-        urlVoList.add(urlVo);
+        for(int i=0;i<playNum;i++){
+            UrlVo urlVo = new UrlVo(texts.substring(0, 1), texts);
+            urlVoList.add(urlVo);
+        }
         return urlVoList;
     }
 
@@ -275,10 +266,10 @@ public class SpeakerServiceImpl implements ISpeakerService {
      * @param texts
      * @param playVoList
      */
-    private void commonTextUrlVoice(String texts,List<PlayVo> playVoList) {
+    private void commonTextUrlVoice(String texts,List<PlayVo> playVoList,Integer playNum) {
         for (PlayVo play : playVoList) {
             String deviceIp=play.getDeviceIp();
-            List<UrlVo> urlVoList = getUrlList(texts);
+            List<UrlVo> urlVoList = getUrlList(texts,playNum);
             if (null != play.getParams()) {
                 play.getParams().setTid(UUID.randomUUID().toString());
                 play.getParams().setUrls(urlVoList);
@@ -291,6 +282,29 @@ public class SpeakerServiceImpl implements ISpeakerService {
         }
     }
 
+
+    /**
+     * 公共的语音路径播放
+     * commonTextUrlVoice
+     * @param texts
+     * @param playVoList
+     */
+    private PlayBatchVo commonPatchTextUrlVoice(String texts,List<PlayVo> playVoList,Integer playNum) {
+        PlayBatchVo playBatchVo = new PlayBatchVo();
+        BeanUtils.copyProperties(playVoList.get(0), playBatchVo);
+        List<UrlVo> urlVoList = getUrlList(texts,playNum);
+        if (null != playBatchVo.getParams()) {
+            playBatchVo.getParams().setTid(UUID.randomUUID().toString());
+            playBatchVo.getParams().setUrls(urlVoList);
+        }
+        List<String> snsList = new ArrayList<>();
+        for (PlayVo playVo : playVoList) {
+            snsList.add(playVo.getSn());
+        }
+        playBatchVo.setSns(snsList.toArray(new String[snsList.size()]));
+        return playBatchVo;
+    }
+
     /**
      * @param body
      * @param type 0是单个,1是批量

+ 7 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/event/RedisExpiredAndAddListener.java

@@ -2,9 +2,11 @@ package com.zd.laboratory.event;
 
 import cn.hutool.core.util.StrUtil;
 import com.zd.laboratory.event.handle.EventHandler;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.connection.Message;
-import org.springframework.data.redis.connection.MessageListener;
+import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
 import org.springframework.data.redis.listener.PatternTopic;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -30,7 +32,8 @@ import java.util.stream.Collectors;
  * @Description:
  */
 @Component
-public class RedisExpiredAndAddListener implements MessageListener {
+@Slf4j
+public class RedisExpiredAndAddListener extends KeyExpirationEventMessageListener {
 
     //监听的主题  现在只监听0号数据库
     private  final PatternTopic topic = new PatternTopic("__keyevent@0__:expired");
@@ -39,8 +42,9 @@ public class RedisExpiredAndAddListener implements MessageListener {
 
     private Map<String,EventHandler> map ;
 
-    public RedisExpiredAndAddListener(List<EventHandler> eventHandlers)
+    public RedisExpiredAndAddListener(List<EventHandler> eventHandlers, RedisMessageListenerContainer listenerContainer)
     {
+        super(listenerContainer);
         map = eventHandlers.stream().collect(Collectors.toMap(a -> a.handleKey(), Function.identity()));
     }
 

+ 0 - 48
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/event/RedisKeyExpirationListener.java

@@ -1,48 +0,0 @@
-package com.zd.laboratory.event;
-
-import cn.hutool.core.util.StrUtil;
-import com.zd.common.core.utils.SpringUtils;
-import com.zd.laboratory.mqtt.entiy.EquipmentStatus;
-import com.zd.model.constant.CacheDevice;
-import com.zd.model.enums.HardwareOperate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.data.redis.connection.Message;
-import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
-import org.springframework.data.redis.listener.RedisMessageListenerContainer;
-
-/**
- * 该方式会导致监听所有的库 所以没有使用
- * @Author: zhoupan
- * @Date: 2021/10/20/10:17
- */
-@Deprecated
-public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
-
-    private final static Logger logger = LoggerFactory.getLogger(RedisKeyExpirationListener.class);
-
-    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
-        super(listenerContainer);
-    }
-
-    @Override
-    public void onMessage(Message message, byte[] pattern) {
-        // 用户做自己的业务处理即可,注意message.toString()可以获取失效的key
-        String expiredKey = message.toString();
-        //继电器状态
-        if(expiredKey.startsWith(CacheDevice.RELAY_KEY.getRedisKey())){
-            //TODO 抛出事件
-            //得到 继电器编号
-
-            String s = StrUtil.subAfter(expiredKey, CacheDevice.RELAY_KEY.getRedisKey(), false);
-            logger.info("继电器离线:编号{}",s);
-            //创建离线对象
-            EquipmentStatus equipmentStatus = new EquipmentStatus();
-            equipmentStatus.setNum(s);
-            equipmentStatus.setHardwareOperate(HardwareOperate.OFFLINE);
-            //抛出继电器上下线切换事件
-            RelayHardwareStatusEvent relayHardwareStatusEvent = new RelayHardwareStatusEvent(equipmentStatus);
-            SpringUtils.getApplicationContext().publishEvent(relayHardwareStatusEvent);
-        }
-    }
-}

+ 1 - 1
zd-modules/zd-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -344,7 +344,7 @@
 	</select>
 
     <select id="checkCardSimpleUnique" parameterType="com.zd.model.entity.SysUser" resultType="int">
-		select count(1) from sys_user where card_num_simple = #{cardNumSimple} and del_flag=0 limit 1
+		select count(1) from sys_user where card_num_simple = #{cardNumSimple} and del_flag=0 and user_id != #{userId} limit 1
 	</select>
 
     <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">