From b2d73b4c8e85900973bb2d80e0883640eeadf804 Mon Sep 17 00:00:00 2001
From: aix <vip_xiaobin810@163.com>
Date: Tue, 30 Jul 2024 17:22:04 +0800
Subject: [PATCH] 参数验证

---
 src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java |  121 +++++++++++++++++++++++++++++++---------
 1 files changed, 94 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java b/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java
index bbe9ca6..1c3368e 100644
--- a/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java
+++ b/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java
@@ -1,23 +1,32 @@
 package com.dji.sample.speak.service.serviceImpl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dji.sample.common.model.Pagination;
+import com.dji.sample.common.model.PaginationData;
 import com.dji.sample.component.mqtt.service.IMessageSenderService;
 import com.dji.sample.media.model.MinioPojo;
 import com.dji.sample.media.service.impl.FileServiceImpl;
-import com.dji.sample.speak.model.dto.PsdkModelDto;
-import com.dji.sample.speak.model.dto.SpeakVoiceFileDto;
-import com.dji.sample.speak.model.dto.SpeakVoiceStartDto;
-import com.dji.sample.speak.model.dto.SpeakVolumeDto;
+import com.dji.sample.speak.dao.SpeakVoiceMapper;
+import com.dji.sample.speak.model.dto.*;
+import com.dji.sample.speak.model.entity.SpeakVoiceEntity;
+import com.dji.sample.speak.model.enums.FormatEnum;
 import com.dji.sample.speak.model.enums.VoiceEnums;
-import com.dji.sample.speak.model.param.SpeakVoiceStartParam;
 import com.dji.sample.speak.service.SpeakVoiceService;
 import com.dji.sample.speak.util.MD5Util;
-import lombok.extern.log4j.Log4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.UnsupportedAudioFileException;
 import java.io.File;
+import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 
@@ -26,51 +35,109 @@
     private IMessageSenderService messageSenderService;
     @Autowired
     private MinioPojo pojo;
+    @Autowired
+    private SpeakVoiceMapper voiceMapper;
+
     @Override
-    public int takeVoice(String sn, SpeakVoiceStartParam param) {
-        SpeakVoiceStartDto dto=new SpeakVoiceStartDto();
-        SpeakVoiceFileDto fileDto=new SpeakVoiceFileDto();
-        String url=upMinio(param.getFile(),param.getName());
+    public int takeVoice(String sn, Integer psdk_index, String name, File file,Integer volumn) throws UnsupportedAudioFileException, IOException {
+        SpeakVoiceEntity voiceEntity = new SpeakVoiceEntity();
+        SpeakVoiceStartDto dto = new SpeakVoiceStartDto();
+        SpeakVoiceFileDto fileDto = new SpeakVoiceFileDto();
+        SpeakVolumeDto volumeDto=new SpeakVolumeDto();
+        volumeDto.setPsdk_index(psdk_index);
+        volumeDto.setPlay_volume(volumn);
+        String url = upMinio(file, name);
         fileDto.setUrl(url);
-        fileDto.setMd5(MD5Util.getMD5Checksum(param.getFile()));
-        fileDto.setFormat(param.getFormat());
-        fileDto.setName(param.getName());
-        dto.setPsdkIndex(param.getPsdkIndex());
-        return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_AUDIO_PLAY_START.getMethod(),param).getResult();
+        String md5 = MD5Util.getMD5Checksum(file);
+        fileDto.setMd5(md5);
+        fileDto.setFormat(FormatEnum.PCM);
+        fileDto.setName(name);
+        dto.setPsdk_index(psdk_index);
+        dto.setFile(fileDto);
+        double time = getAudioDuration(file);
+        voiceEntity.setMd5(md5);
+        voiceEntity.setSecond(time);
+        voiceEntity.setUrl(url);
+        voiceEntity.setName(name);
+        voiceMapper.insert(voiceEntity);
+        messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_PLAY_VOLUME_SET.getMethod(), volumeDto);
+        return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_AUDIO_PLAY_START.getMethod(), dto).getResult();
     }
 
     @Override
-    public int restartVoice() {
-        return 0;
+    public int restartVoice(String sn, Integer psdk_index) {
+        SpeakRestartDto dto=new SpeakRestartDto();
+        dto.setPsdk_index(psdk_index);
+        return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_REPLAY.getMethod(), dto).getResult();
     }
 
     @Override
-    public int stopVoice() {
-        return 0;
+    public int stopVoice(String sn, Integer psdk_index) {
+        SpeakStopDto dto=new SpeakStopDto();
+        dto.setPsdk_index(psdk_index);
+        return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_PLAY_STOP.getMethod(), dto).getResult();
     }
 
     @Override
-    public int setVoiceMode(PsdkModelDto dto) {
-        return 0;
+    public int setVoiceMode(String sn, PsdkModelDto dto) {
+        return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_PLAY_MODE_SET.getMethod(), dto).getResult();
     }
 
     @Override
-    public int setVoiceVolume(SpeakVolumeDto dto) {
-        return 0;
+    public int setVoiceVolume(SpeakVolumeDto dto, String sn) {
+        return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_PLAY_VOLUME_SET.getMethod(), dto).getResult();
     }
 
-    public String upMinio(File file,String fileName){
+    @Override
+    public int awayRiver(String sn) {
+        SpeakVoiceStartDto dto = new SpeakVoiceStartDto();
+        SpeakVoiceFileDto fileDto = new SpeakVoiceFileDto();
+        fileDto.setUrl("https://dev.jxpskj.com:8026/cloud-bucket/00015672-5d68-4985-9340-b23919d7f77e/DJI_202403060918_008_00015672-5d68-4985-9340-b23919d7f77e/qq.wav");
+        fileDto.setMd5("d2b448dcba09071834d02f082dc5386f");
+        fileDto.setFormat(FormatEnum.PCM);
+        fileDto.setName("河道危险");
+        dto.setPsdk_index(2);
+        dto.setFile(fileDto);
+        return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_AUDIO_PLAY_START.getMethod(), dto).getResult();
+    }
+
+    @Override
+    public PaginationData<SpeakVoiceEntity> getVoices(Integer pages,Integer page_size) {
+        // Paging Query
+        Page<SpeakVoiceEntity> page = voiceMapper.selectPage(
+                new Page<>(pages,page_size),
+                new LambdaQueryWrapper<SpeakVoiceEntity>()
+        );
+        // Wrap the results of a paging query into a custom paging object.
+        List<SpeakVoiceEntity> records = page.getRecords()
+                .stream()
+                .collect(Collectors.toList());
+
+        return new PaginationData<>(records, new Pagination(page));
+    }
+
+    public String upMinio(File file, String fileName) {
         String endpoint = pojo.getEndpoint();
         String accessKey = pojo.getAccessKey();
         String secretKey = pojo.getSecretKey();
         String bucketName = pojo.getBucket();
-        String objectName="/"+fileName+getNowTimeName();
-        FileServiceImpl.uploadFile(endpoint,accessKey,secretKey,bucketName,objectName,file,"audio/mpeg");
-        return endpoint+"/"+bucketName+objectName;
+        String objectName = "/" + fileName + getNowTimeName();
+        FileServiceImpl.uploadFile(endpoint, accessKey, secretKey, bucketName, objectName, file, "audio/mpeg");
+        return endpoint + "/" + bucketName + objectName;
     }
+
     public static String getNowTimeName() {
         LocalDateTime currentTime = LocalDateTime.now();
         // 格式化时间,生成当前时间
         return currentTime.format(DateTimeFormatter.ofPattern("MMddHHmm"));
     }
+
+    public static double getAudioDuration(File file) throws UnsupportedAudioFileException, IOException {
+        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
+        AudioFormat format = audioInputStream.getFormat();
+        long audioFileLength = file.length();
+        int frameSize = format.getFrameSize();
+        float frameRate = format.getFrameRate();
+        return Math.round(audioFileLength / (frameSize * frameRate));
+    }
 }

--
Gitblit v1.9.3