需要根据,业务数据,将存在第三方平台的数据,下载至本地,或转存阿里云OSS中。
@ApiOperation(value = "下载录音", notes = "")
@GetMapping("/download")
public CommonResult<?> download(String callId) {
final List<DpxdataTelCall> list = telCallService.lambdaQuery()
.isNotNull(DpxdataTelCall::getCallId)
.isNull(DpxdataTelCall::getCallFile)
.eq(StringUtils.isNotBlank(callId), DpxdataTelCall::getCallId, callId)
.list();
URL url = null;
HttpURLConnection conn = null;
InputStream inputStream = null;
BufferedReader br = null;
String urlStr = "";
StringBuffer sb = null;
List<DpxdataTelCall> updateList = new ArrayList<>();
for (DpxdataTelCall item : list) {
try {
urlStr = "http://m.icsoc.net/v2/wintelapi/record/playrecord?vcc_code=" + "code" + "&call_id=" + item.getCallId();
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
// 设置超时间为10秒
conn.setConnectTimeout(10 * 1000);
//获取输入流
inputStream = conn.getInputStream();
sb = new StringBuffer();
br = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = br.readLine()) != null) {
line = new String(line.getBytes(), "utf-8");
sb.append(line);
}
if (sb.toString().indexOf("code") == -1) {
urlStr = "http://m.icsoc.net/v2/wintelapi/record/playrecord?vcc_code=" + "code" + "&call_id=" + item.getCallId();
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
// 设置超时间为10秒
conn.setConnectTimeout(10 * 1000);
//获取输入流
inputStream = conn.getInputStream();
final String telFile = OssBootUtil.upload(inputStream, "upload/tel/" + item.getCallId() + "_" + System.currentTimeMillis() + ".mp3");
item.setCallFile(telFile);
updateList.add(item);
log.info("下载录音文件 -> {} ,{}", item.getPersonId(), item.getCallId());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (CollectionUtil.isNotEmpty(updateList)) {
telCallService.updateBatchById(updateList);
}
return CommonResult.success("下载录音文件数量" + updateList.size());
}