服务指令文件同步

This commit is contained in:
1378012178@qq.com 2025-07-16 10:53:39 +08:00
parent 917a089c37
commit 6ba043facf
4 changed files with 159 additions and 13 deletions

View File

@ -1,32 +1,42 @@
package com.nu.mq.directive.listener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.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 org.apache.commons.lang.StringUtils;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@Slf4j
@Component
public class DirectiveMQListener {
// @Value("${jeecg.path.upload}")
// private String upLoadPath;
// @Value("${jeecg.path.directivepath}")
// private String directiveUpLoadPath;
//
// @Autowired
@Value("${jeecg.path.upload}")
private String upLoadPath;
// @Autowired
// private IMediaManageApi mediaManageApi;
// @Autowired
// private ISysConfigService sysConfigService;
// @Autowired
// private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
@Autowired
private ISysConfigService sysConfigService;
@Autowired
private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
@Autowired
private IConfigServiceDirectiveService directiveService;
// @Autowired
@ -48,7 +58,7 @@ public class DirectiveMQListener {
),
errorHandler = "directiveMQErrorHandler"
)
public void handleMessage(DirectiveAsyncMQDto dto) {
public void handleAuditResult(DirectiveAsyncMQDto dto) {
//将字典项更新为已授权
directiveService.auditPass(dto);
//更新服务指令状态
@ -58,6 +68,128 @@ public class DirectiveMQListener {
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 未到运营开始时间时 全量变更
// * else 增量

View File

@ -39,4 +39,18 @@ public class DynamicQueueNameProvider {
public String getAuditResultKeyName() {
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();
}
}

View File

@ -254,7 +254,7 @@ jeecg:
app: http://localhost:8051
path:
#文件上传根目录 设置
upload: /opt/ope/upFiles
upload: /opt/ope/upFiles101
#webapp文件路径
webapp: /opt/biz101/webapp
shiro:

View File

@ -254,7 +254,7 @@ jeecg:
app: http://localhost:8051
path:
#文件上传根目录 设置
upload: /opt/ope/upFiles
upload: /opt/ope/upFiles102
#webapp文件路径
webapp: /opt/biz102/webapp
shiro: