服务指令文件同步
This commit is contained in:
parent
917a089c37
commit
6ba043facf
|
@ -1,32 +1,42 @@
|
||||||
package com.nu.mq.directive.listener;
|
package com.nu.mq.directive.listener;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.nu.dto.DirectiveAsyncMQDto;
|
import com.nu.dto.DirectiveAsyncMQDto;
|
||||||
|
import com.nu.modules.mediaasyncerrorlog.entity.MediaAsyncErrorLog;
|
||||||
|
import com.nu.modules.mediaasyncerrorlog.service.IMediaAsyncErrorLogService;
|
||||||
import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
|
import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
|
||||||
import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService;
|
import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService;
|
||||||
|
import com.nu.modules.sysconfig.entity.SysConfig;
|
||||||
|
import com.nu.modules.sysconfig.service.ISysConfigService;
|
||||||
|
import com.nu.utils.FileDownloader;
|
||||||
|
import com.nu.utils.SafetyUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.springframework.amqp.core.ExchangeTypes;
|
import org.springframework.amqp.core.ExchangeTypes;
|
||||||
import org.springframework.amqp.rabbit.annotation.Exchange;
|
import org.springframework.amqp.rabbit.annotation.Exchange;
|
||||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||||
import org.springframework.amqp.rabbit.annotation.QueueBinding;
|
import org.springframework.amqp.rabbit.annotation.QueueBinding;
|
||||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class DirectiveMQListener {
|
public class DirectiveMQListener {
|
||||||
|
|
||||||
// @Value("${jeecg.path.upload}")
|
@Value("${jeecg.path.upload}")
|
||||||
// private String upLoadPath;
|
private String upLoadPath;
|
||||||
// @Value("${jeecg.path.directivepath}")
|
// @Autowired
|
||||||
// private String directiveUpLoadPath;
|
|
||||||
//
|
|
||||||
// @Autowired
|
|
||||||
// private IMediaManageApi mediaManageApi;
|
// private IMediaManageApi mediaManageApi;
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private ISysConfigService sysConfigService;
|
private ISysConfigService sysConfigService;
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
|
private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IConfigServiceDirectiveService directiveService;
|
private IConfigServiceDirectiveService directiveService;
|
||||||
// @Autowired
|
// @Autowired
|
||||||
|
@ -48,7 +58,7 @@ public class DirectiveMQListener {
|
||||||
),
|
),
|
||||||
errorHandler = "directiveMQErrorHandler"
|
errorHandler = "directiveMQErrorHandler"
|
||||||
)
|
)
|
||||||
public void handleMessage(DirectiveAsyncMQDto dto) {
|
public void handleAuditResult(DirectiveAsyncMQDto dto) {
|
||||||
//将字典项更新为已授权
|
//将字典项更新为已授权
|
||||||
directiveService.auditPass(dto);
|
directiveService.auditPass(dto);
|
||||||
//更新服务指令状态
|
//更新服务指令状态
|
||||||
|
@ -58,6 +68,128 @@ public class DirectiveMQListener {
|
||||||
directiveService.updateById(configServiceDirective);
|
directiveService.updateById(configServiceDirective);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RabbitListener(
|
||||||
|
bindings = @QueueBinding(
|
||||||
|
value = @Queue(name = "#{directiveAsyncDQNP.getCreateMediaQueueName()}"),
|
||||||
|
exchange = @Exchange(name = "hldy.directive", type = ExchangeTypes.DIRECT),
|
||||||
|
key = "#{directiveAsyncDQNP.getCreateMediaKeyName()}"
|
||||||
|
),
|
||||||
|
errorHandler = "directiveMQErrorHandler"
|
||||||
|
)
|
||||||
|
public void handleCreateMedia(DirectiveAsyncMQDto dto) {
|
||||||
|
//更新服务指令媒体资源字段
|
||||||
|
ConfigServiceDirective configServiceDirective = new ConfigServiceDirective();
|
||||||
|
configServiceDirective.setId(dto.getId());
|
||||||
|
configServiceDirective.setPreviewFile(dto.getPreviewFile());//服务指令图片
|
||||||
|
configServiceDirective.setServiceContent(dto.getServiceContent());//服务指令说明
|
||||||
|
configServiceDirective.setImmediateFile(dto.getImmediateFile());//即时指令图标
|
||||||
|
configServiceDirective.setMp3File(dto.getMp3File());//指令音频文件
|
||||||
|
configServiceDirective.setMp4File(dto.getMp4File());//指令视频文件
|
||||||
|
directiveService.updateById(configServiceDirective);
|
||||||
|
|
||||||
|
//拉取媒体资源至本地目录
|
||||||
|
{
|
||||||
|
LambdaQueryWrapper<SysConfig> qw = new LambdaQueryWrapper<>();
|
||||||
|
qw.eq(SysConfig::getDelFlag, "0");
|
||||||
|
qw.eq(SysConfig::getConfigKey, "ope_open_url");
|
||||||
|
SysConfig urlObj = sysConfigService.getOne(qw);
|
||||||
|
//试验田协议+域名(/ip+端口)
|
||||||
|
String baseUrl = urlObj.getConfigValue();
|
||||||
|
if (baseUrl.endsWith("/")) {
|
||||||
|
baseUrl = baseUrl.substring(0, baseUrl.length() - 1); // 移除末尾斜杠
|
||||||
|
}
|
||||||
|
|
||||||
|
//处理服务指令图片
|
||||||
|
String previewFile = dto.getPreviewFile();
|
||||||
|
if (StringUtils.isNotBlank(previewFile)) {
|
||||||
|
String url = baseUrl + "/sys/common/open/static/" + URLEncoder.encode(previewFile, StandardCharsets.UTF_8).replace("%2F", "/") + "?name=" + SafetyUtil.getSecureKey();
|
||||||
|
if (upLoadPath.endsWith("/") || upLoadPath.endsWith("\\")) {
|
||||||
|
upLoadPath = upLoadPath.substring(0, upLoadPath.length() - 1);
|
||||||
|
}
|
||||||
|
String filePath = previewFile.substring(0, previewFile.lastIndexOf("/"));
|
||||||
|
String fileName = previewFile.substring(previewFile.lastIndexOf("/") + 1);
|
||||||
|
if (filePath.startsWith("/") || filePath.startsWith("\\")) {
|
||||||
|
filePath = filePath.substring(1);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
FileDownloader.downloadFile(url, upLoadPath + File.separator + filePath, fileName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
MediaAsyncErrorLog mediaAsyncErrorLog = new MediaAsyncErrorLog();
|
||||||
|
mediaAsyncErrorLog.setMediaid(previewFile);
|
||||||
|
mediaAsyncErrorLogService.save(mediaAsyncErrorLog);
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//处理即时指令图标
|
||||||
|
String immediateFile = dto.getImmediateFile();
|
||||||
|
if (StringUtils.isNotBlank(immediateFile)) {
|
||||||
|
String url = baseUrl + "/sys/common/open/static/" + URLEncoder.encode(immediateFile, StandardCharsets.UTF_8).replace("%2F", "/") + "?name=" + SafetyUtil.getSecureKey();
|
||||||
|
if (upLoadPath.endsWith("/") || upLoadPath.endsWith("\\")) {
|
||||||
|
upLoadPath = upLoadPath.substring(0, upLoadPath.length() - 1);
|
||||||
|
}
|
||||||
|
String filePath = immediateFile.substring(0, immediateFile.lastIndexOf("/"));
|
||||||
|
String fileName = immediateFile.substring(immediateFile.lastIndexOf("/") + 1);
|
||||||
|
if (filePath.startsWith("/") || filePath.startsWith("\\")) {
|
||||||
|
filePath = filePath.substring(1);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
FileDownloader.downloadFile(url, upLoadPath + File.separator + filePath, fileName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
MediaAsyncErrorLog mediaAsyncErrorLog = new MediaAsyncErrorLog();
|
||||||
|
mediaAsyncErrorLog.setMediaid(immediateFile);
|
||||||
|
mediaAsyncErrorLogService.save(mediaAsyncErrorLog);
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//处理指令音频文件
|
||||||
|
String mp3File = dto.getMp3File();
|
||||||
|
if (StringUtils.isNotBlank(mp3File)) {
|
||||||
|
String url = baseUrl + "/sys/common/open/static/" + URLEncoder.encode(mp3File, StandardCharsets.UTF_8).replace("%2F", "/") + "?name=" + SafetyUtil.getSecureKey();
|
||||||
|
if (upLoadPath.endsWith("/") || upLoadPath.endsWith("\\")) {
|
||||||
|
upLoadPath = upLoadPath.substring(0, upLoadPath.length() - 1);
|
||||||
|
}
|
||||||
|
String filePath = mp3File.substring(0, mp3File.lastIndexOf("/"));
|
||||||
|
String fileName = mp3File.substring(mp3File.lastIndexOf("/") + 1);
|
||||||
|
if (filePath.startsWith("/") || filePath.startsWith("\\")) {
|
||||||
|
filePath = filePath.substring(1);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
FileDownloader.downloadFile(url, upLoadPath + File.separator + filePath, fileName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
MediaAsyncErrorLog mediaAsyncErrorLog = new MediaAsyncErrorLog();
|
||||||
|
mediaAsyncErrorLog.setMediaid(mp3File);
|
||||||
|
mediaAsyncErrorLogService.save(mediaAsyncErrorLog);
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//处理指令视频文件
|
||||||
|
String mp4File = dto.getMp4File();
|
||||||
|
if (StringUtils.isNotBlank(mp4File)) {
|
||||||
|
String url = baseUrl + "/sys/common/open/static/" + URLEncoder.encode(mp4File, StandardCharsets.UTF_8).replace("%2F", "/") + "?name=" + SafetyUtil.getSecureKey();
|
||||||
|
if (upLoadPath.endsWith("/") || upLoadPath.endsWith("\\")) {
|
||||||
|
upLoadPath = upLoadPath.substring(0, upLoadPath.length() - 1);
|
||||||
|
}
|
||||||
|
String filePath = mp4File.substring(0, mp4File.lastIndexOf("/"));
|
||||||
|
String fileName = mp4File.substring(mp4File.lastIndexOf("/") + 1);
|
||||||
|
if (filePath.startsWith("/") || filePath.startsWith("\\")) {
|
||||||
|
filePath = filePath.substring(1);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
FileDownloader.downloadFile(url, upLoadPath + File.separator + filePath, fileName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
MediaAsyncErrorLog mediaAsyncErrorLog = new MediaAsyncErrorLog();
|
||||||
|
mediaAsyncErrorLog.setMediaid(mp4File);
|
||||||
|
mediaAsyncErrorLogService.save(mediaAsyncErrorLog);
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * if 未到运营开始时间时 全量变更
|
// * if 未到运营开始时间时 全量变更
|
||||||
// * else 增量
|
// * else 增量
|
||||||
|
|
|
@ -39,4 +39,18 @@ public class DynamicQueueNameProvider {
|
||||||
public String getAuditResultKeyName() {
|
public String getAuditResultKeyName() {
|
||||||
return getAuditResultQueueName();
|
return getAuditResultQueueName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCreateMediaQueueName() {
|
||||||
|
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
|
||||||
|
String orgCode = deptInfo.getString("code");
|
||||||
|
if (StringUtils.isNotBlank(orgCode)) {
|
||||||
|
return orgCode + ".directive.createmedia";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreateMediaKeyName() {
|
||||||
|
return getCreateMediaQueueName();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -254,7 +254,7 @@ jeecg:
|
||||||
app: http://localhost:8051
|
app: http://localhost:8051
|
||||||
path:
|
path:
|
||||||
#文件上传根目录 设置
|
#文件上传根目录 设置
|
||||||
upload: /opt/ope/upFiles
|
upload: /opt/ope/upFiles101
|
||||||
#webapp文件路径
|
#webapp文件路径
|
||||||
webapp: /opt/biz101/webapp
|
webapp: /opt/biz101/webapp
|
||||||
shiro:
|
shiro:
|
||||||
|
|
|
@ -254,7 +254,7 @@ jeecg:
|
||||||
app: http://localhost:8051
|
app: http://localhost:8051
|
||||||
path:
|
path:
|
||||||
#文件上传根目录 设置
|
#文件上传根目录 设置
|
||||||
upload: /opt/ope/upFiles
|
upload: /opt/ope/upFiles102
|
||||||
#webapp文件路径
|
#webapp文件路径
|
||||||
webapp: /opt/biz102/webapp
|
webapp: /opt/biz102/webapp
|
||||||
shiro:
|
shiro:
|
||||||
|
|
Loading…
Reference in New Issue