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.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, SpeakVoiceStartParam param) { SpeakVoiceStartDto dto=new SpeakVoiceStartDto(); SpeakVoiceFileDto fileDto=new SpeakVoiceFileDto(); String url=upMinio(param.getFile(),param.getName()); 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(); } @Override public int restartVoice() { return 0; } @Override public int stopVoice() { return 0; } @Override public int setVoiceMode(PsdkModelDto dto) { return 0; } @Override public int setVoiceVolume(SpeakVolumeDto dto) { return 0; } 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")); } }