package com.dji.sample.speak.service.serviceImpl; 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.model.enums.FormatEnum; import com.dji.sample.speak.model.enums.PsdkModelEnum; 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 java.io.File; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Service public class SpeakVoiceServiceImpl implements SpeakVoiceService { @Autowired private IMessageSenderService messageSenderService; @Autowired private MinioPojo pojo; @Override public int takeVoice( String sn , Integer psdk_index, String name, File file) { SpeakVoiceStartDto dto = new SpeakVoiceStartDto(); SpeakVoiceFileDto fileDto = new SpeakVoiceFileDto(); String url = upMinio(file, name); fileDto.setUrl(url); fileDto.setMd5(MD5Util.getMD5Checksum(file)); fileDto.setFormat(FormatEnum.PCM); fileDto.setName(name); dto.setPsdk_index(psdk_index); dto.setFile(fileDto); return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_AUDIO_PLAY_START.getMethod(), dto).getResult(); } @Override public int restartVoice(String sn, Integer psdk_index) { return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_REPLAY.getMethod(), psdk_index).getResult(); } @Override public int stopVoice(String sn, Integer psdk_index) { return messageSenderService.publishServicesTopic(sn,VoiceEnums.SPEAKER_PLAY_STOP.getMethod(), psdk_index).getResult(); } @Override 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, String sn) { return messageSenderService.publishServicesTopic(sn,VoiceEnums.SPEAKER_PLAY_VOLUME_SET.getMethod(), dto).getResult(); } 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; } public static String getNowTimeName() { LocalDateTime currentTime = LocalDateTime.now(); // 格式化时间,生成当前时间 return currentTime.format(DateTimeFormatter.ofPattern("MMddHHmm")); } }