Commit 9d837915 authored by liqin's avatar liqin 💬

bug fixed

parent 28ec0d2b
...@@ -3,7 +3,7 @@ package cn.wisenergy.chnmuseum.party.common.mybatis; ...@@ -3,7 +3,7 @@ package cn.wisenergy.chnmuseum.party.common.mybatis;
public class MysqlGenerator { public class MysqlGenerator {
private static final String[] tableNames = new String[]{ private static final String[] tableNames = new String[]{
"video_content_tmp", "exhibition_board_tmp", "learning_content_tmp" "asset_tmp"
}; };
// private static final String projectPath = "D:\\develop\\Project\\chnmuseum-party"; // private static final String projectPath = "D:\\develop\\Project\\chnmuseum-party";
private static final String projectPath = "/opt/ss"; private static final String projectPath = "/opt/ss";
......
package cn.wisenergy.chnmuseum.party.common.vo; package cn.wisenergy.chnmuseum.party.common.vo;
import cn.wisenergy.chnmuseum.party.model.Asset; import cn.wisenergy.chnmuseum.party.model.Asset;
import cn.wisenergy.chnmuseum.party.model.AssetTmp;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -37,6 +38,9 @@ public class BatchUploadResVO { ...@@ -37,6 +38,9 @@ public class BatchUploadResVO {
@ApiModelProperty("成功上传的文件集合") @ApiModelProperty("成功上传的文件集合")
private Set<Asset> fileList; private Set<Asset> fileList;
@ApiModelProperty("成功上传的文件集合(修改时使用)")
private Set<AssetTmp> fileTmpList;
@Data @Data
public static class HandleResult { public static class HandleResult {
......
package cn.wisenergy.chnmuseum.party.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.wisenergy.chnmuseum.party.model.AssetTmp;
/**
* <pre>
* 文件资产临时 Mapper 接口
* </pre>
*
* @author Danny Lee
* @since 2021-04-18
*/
public interface AssetTmpMapper extends BaseMapper<AssetTmp> {
}
package cn.wisenergy.chnmuseum.party.model;
import cn.wisenergy.chnmuseum.party.common.validator.groups.Add;
import cn.wisenergy.chnmuseum.party.common.validator.groups.Update;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 文件资产临时
* </p>
*
* @author Danny Lee
* @since 2021-04-18
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("asset_tmp")
@ApiModel(value = "文件资产临时", description = "文件资产临时")
public class AssetTmp implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("文件资产ID")
@TableId(value = "id", type = IdType.ASSIGN_ID)
@NotNull(message = "文件资产ID不能为空", groups = {Add.class, Update.class})
private String id;
@ApiModelProperty("所属项ID")
@TableField("ref_item_id")
private String refItemId;
@ApiModelProperty("原始文件名")
@TableField("file_name")
private String fileName;
@ApiModelProperty("加密后文件名")
@TableField("file_name_crypto")
private String fileNameCrypto;
@ApiModelProperty("扩展名")
@TableField("file_ext_name")
private String fileExtName;
@ApiModelProperty("文件类型")
@TableField("file_type")
private String fileType;
@ApiModelProperty("文件分类")
@TableField("file_cat")
private String fileCat;
@ApiModelProperty("文件大小(B)")
@TableField("file_size")
private Long fileSize;
@ApiModelProperty("下载链接")
@TableField("file_url")
private String fileUrl;
@ApiModelProperty("加密链接")
@TableField("file_url_crypto")
private String fileUrlCrypto;
@ApiModelProperty("视频缩略图")
@TableField("thumbnail")
private String thumbnail;
@ApiModelProperty("语言")
@TableField("language")
private String language;
@ApiModelProperty("MD5")
@TableField("md5")
private String md5;
@TableField("crc32")
private Long crc32;
@TableField("video_content_name")
private String videoContentName;
@ApiModelProperty("创建日期")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private LocalDateTime createTime;
@ApiModelProperty("修改日期")
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
...@@ -158,10 +158,18 @@ public class ExhibitionBoard implements Serializable { ...@@ -158,10 +158,18 @@ public class ExhibitionBoard implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<Asset> audioList; private List<Asset> audioList;
@ApiModelProperty("展板视频(审核详情使用)")
@TableField(exist = false)
private List<AssetTmp> audioTmpList;
@ApiModelProperty("参考资料列表") @ApiModelProperty("参考资料列表")
@TableField(exist = false) @TableField(exist = false)
private List<Asset> datumList; private List<Asset> datumList;
@ApiModelProperty("参考资料列表(审核详情使用)")
@TableField(exist = false)
private List<AssetTmp> datumTmpList;
@ApiModelProperty("审核意见记录") @ApiModelProperty("审核意见记录")
@TableField(exist = false) @TableField(exist = false)
private List<Audit> auditHistoryList; private List<Audit> auditHistoryList;
......
...@@ -93,6 +93,10 @@ public class VideoContent implements Serializable { ...@@ -93,6 +93,10 @@ public class VideoContent implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<Asset> videoFileList; private List<Asset> videoFileList;
@ApiModelProperty("视频文件信息列表(审核详情使用)")
@TableField(exist = false)
private List<AssetTmp> videoFileTmpList;
@ApiModelProperty("审核意见记录") @ApiModelProperty("审核意见记录")
@TableField(exist = false) @TableField(exist = false)
private List<Audit> auditHistoryList; private List<Audit> auditHistoryList;
......
package cn.wisenergy.chnmuseum.party.service;
import cn.wisenergy.chnmuseum.party.model.AssetTmp;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 文件资产临时 服务接口
* </p>
*
* @author Danny Lee
* @since 2021-04-18
*/
public interface AssetTmpService extends IService<AssetTmp> {
}
package cn.wisenergy.chnmuseum.party.service.impl;
import cn.wisenergy.chnmuseum.party.mapper.AssetTmpMapper;
import cn.wisenergy.chnmuseum.party.model.AssetTmp;
import cn.wisenergy.chnmuseum.party.service.AssetTmpService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* <pre>
* 文件资产临时 服务实现类
* </pre>
*
* @author Danny Lee
* @since 2021-04-18
*/
@Slf4j
@Service
public class AssetTmpServiceImpl extends ServiceImpl<AssetTmpMapper, AssetTmp> implements AssetTmpService {
}
package cn.wisenergy.chnmuseum.party.service.impl; package cn.wisenergy.chnmuseum.party.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.wisenergy.chnmuseum.party.common.enums.*; import cn.wisenergy.chnmuseum.party.common.enums.*;
import cn.wisenergy.chnmuseum.party.common.mvc.InterfaceException; import cn.wisenergy.chnmuseum.party.common.mvc.InterfaceException;
import cn.wisenergy.chnmuseum.party.mapper.AuditMapper; import cn.wisenergy.chnmuseum.party.mapper.AuditMapper;
...@@ -21,8 +22,6 @@ import org.springframework.stereotype.Service; ...@@ -21,8 +22,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* <pre> * <pre>
...@@ -39,6 +38,9 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, Audit> implements ...@@ -39,6 +38,9 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, Audit> implements
@Resource @Resource
private AssetService assetService; private AssetService assetService;
@Resource
private AssetTmpService assetTmpService;
@Resource @Resource
private AuditMapper auditMapper; private AuditMapper auditMapper;
...@@ -276,22 +278,20 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, Audit> implements ...@@ -276,22 +278,20 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, Audit> implements
final VideoContent one = JSONObject.parseObject(data, VideoContent.class); final VideoContent one = JSONObject.parseObject(data, VideoContent.class);
final List<String> videoFileIdList = one.getVideoFileIdList(); final List<String> videoFileIdList = one.getVideoFileIdList();
if (videoFileIdList != null && !videoFileIdList.isEmpty()) { if (videoFileIdList != null && !videoFileIdList.isEmpty()) {
final LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId); this.assetService.remove(Wrappers.<Asset>lambdaUpdate().eq(Asset::getRefItemId, videoContentId));
final List<Asset> assetList = this.assetService.list(assetQueryWrapper); final List<AssetTmp> assetTmpList = this.assetTmpService.list(Wrappers.<AssetTmp>lambdaQuery().eq(AssetTmp::getRefItemId, videoContentId));
final Map<String, String> collect = assetList.stream().collect(Collectors.toMap(Asset::getId, Asset::getFileUrl)); for (AssetTmp assetTmp : assetTmpList) {
for (String videoFileId : videoFileIdList) { Asset asset = new Asset();
final Asset asset = this.assetService.getById(videoFileId); BeanUtil.copyProperties(assetTmp, asset);
asset.setThumbnail(videoContent.getThumbnail()); asset.setThumbnail(videoContent.getThumbnail());
asset.setFileType(FileTypeEnum.VIDEO.name()); asset.setFileType(FileTypeEnum.VIDEO.name());
asset.setFileCat(FileCatEnum.VIDEO_CONTENT.name()); asset.setFileCat(FileCatEnum.VIDEO_CONTENT.name());
asset.setRefItemId(videoContentId); asset.setRefItemId(videoContentId);
this.assetService.updateById(asset); this.assetService.save(asset);
if (StringUtils.isBlank(one.getName())) { if (StringUtils.isBlank(one.getName())) {
videoContent.setName(asset.getVideoContentName()); videoContent.setName(asset.getVideoContentName());
} }
collect.remove(videoFileId);
} }
collect.forEach((k, v) -> this.assetService.removeById(k));
} }
one.setAuditStatus(audit.getStatus()); one.setAuditStatus(audit.getStatus());
one.setPublished(true); //todo one.setPublished(true); //todo
...@@ -341,34 +341,36 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, Audit> implements ...@@ -341,34 +341,36 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, Audit> implements
final ExhibitionBoard one = JSONObject.parseObject(data, ExhibitionBoard.class); final ExhibitionBoard one = JSONObject.parseObject(data, ExhibitionBoard.class);
final List<String> audioIdList = one.getAudioIdList(); final List<String> audioIdList = one.getAudioIdList();
if (audioIdList != null && !audioIdList.isEmpty()) { if (audioIdList != null && !audioIdList.isEmpty()) {
final LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoardId); final LambdaUpdateWrapper<Asset> lambdaUpdateWrapper = Wrappers.<Asset>lambdaUpdate().eq(Asset::getRefItemId, exhibitionBoardId);
assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name()); lambdaUpdateWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
final List<Asset> assetList = this.assetService.list(assetQueryWrapper); this.assetService.remove(lambdaUpdateWrapper);
final Map<String, String> collect = assetList.stream().collect(Collectors.toMap(Asset::getId, Asset::getFileUrl)); final LambdaQueryWrapper<AssetTmp> assetTmpQueryWrapper = Wrappers.<AssetTmp>lambdaQuery().eq(AssetTmp::getRefItemId, exhibitionBoardId);
for (String audioId : audioIdList) { assetTmpQueryWrapper.eq(AssetTmp::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
final Asset asset = this.assetService.getById(audioId); final List<AssetTmp> assetTmpList = this.assetTmpService.list(assetTmpQueryWrapper);
for (AssetTmp assetTmp : assetTmpList) {
Asset asset = new Asset();
BeanUtil.copyProperties(assetTmp, asset);
asset.setFileType(FileTypeEnum.AUDIO.name()); asset.setFileType(FileTypeEnum.AUDIO.name());
asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_AUDIO.name()); asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
asset.setRefItemId(exhibitionBoardId); asset.setRefItemId(exhibitionBoardId);
this.assetService.updateById(asset); this.assetService.save(asset);
collect.remove(audioId);
} }
collect.forEach((k, v) -> this.assetService.removeById(k));
} }
final List<String> datumIdList = one.getDatumIdList(); final List<String> datumIdList = one.getDatumIdList();
if (datumIdList != null && !datumIdList.isEmpty()) { if (datumIdList != null && !datumIdList.isEmpty()) {
final LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoardId); final LambdaUpdateWrapper<Asset> lambdaUpdateWrapper = Wrappers.<Asset>lambdaUpdate().eq(Asset::getRefItemId, exhibitionBoardId);
assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name()); lambdaUpdateWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
final List<Asset> assetList = this.assetService.list(assetQueryWrapper); this.assetService.remove(lambdaUpdateWrapper);
final Map<String, String> collect = assetList.stream().collect(Collectors.toMap(Asset::getId, Asset::getFileUrl)); final LambdaQueryWrapper<AssetTmp> assetTmpQueryWrapper = Wrappers.<AssetTmp>lambdaQuery().eq(AssetTmp::getRefItemId, exhibitionBoardId);
for (String datumId : datumIdList) { assetTmpQueryWrapper.eq(AssetTmp::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
final Asset asset = this.assetService.getById(datumId); final List<AssetTmp> assetTmpList = this.assetTmpService.list(assetTmpQueryWrapper);
for (AssetTmp assetTmp : assetTmpList) {
Asset asset = new Asset();
BeanUtil.copyProperties(assetTmp, asset);
asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_DATUM.name()); asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_DATUM.name());
asset.setRefItemId(exhibitionBoardId); asset.setRefItemId(exhibitionBoardId);
this.assetService.updateById(asset); this.assetService.save(asset);
collect.remove(datumId);
} }
collect.forEach((k, v) -> this.assetService.removeById(k));
} }
one.setAuditStatus(audit.getStatus()); one.setAuditStatus(audit.getStatus());
one.setPublished(true); //todo one.setPublished(true); //todo
......
...@@ -58,6 +58,8 @@ public class ExhibitionBoardController extends BaseController { ...@@ -58,6 +58,8 @@ public class ExhibitionBoardController extends BaseController {
private AuditService auditService; private AuditService auditService;
@Resource @Resource
private AssetService assetService; private AssetService assetService;
@Resource
private AssetTmpService assetTmpService;
@PostMapping("/save") @PostMapping("/save")
@RequiresAuthentication //@RequiresPermissions("exhibition:board:save") @RequiresAuthentication //@RequiresPermissions("exhibition:board:save")
...@@ -333,7 +335,7 @@ public class ExhibitionBoardController extends BaseController { ...@@ -333,7 +335,7 @@ public class ExhibitionBoardController extends BaseController {
return getResult(exhibitionBoard); return getResult(exhibitionBoard);
} }
@ApiOperation(value = "获取展板详情(审核时使用)", notes = "获取展板详情(审核时使用)") @ApiOperation(value = "获取展板详情(审核详情使用)", notes = "获取展板详情(审核详情使用)")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path", required = true) @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path", required = true)
}) })
...@@ -355,18 +357,18 @@ public class ExhibitionBoardController extends BaseController { ...@@ -355,18 +357,18 @@ public class ExhibitionBoardController extends BaseController {
exhibitionBoard.setVideoContentCopyrightOwnerName(name); exhibitionBoard.setVideoContentCopyrightOwnerName(name);
} }
LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId()); LambdaQueryWrapper<AssetTmp> assetTmpQueryWrapper = Wrappers.<AssetTmp>lambdaQuery().eq(AssetTmp::getRefItemId, exhibitionBoard.getId());
assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name()); assetTmpQueryWrapper.eq(AssetTmp::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
final List<Asset> audioList = this.assetService.list(assetQueryWrapper); final List<AssetTmp> audioTmpList = this.assetTmpService.list(assetTmpQueryWrapper);
exhibitionBoard.setAudioList(audioList); exhibitionBoard.setAudioTmpList(audioTmpList);
exhibitionBoard.setAudioIdList(audioList.stream().map(Asset::getId).collect(Collectors.toList())); exhibitionBoard.setAudioIdList(audioTmpList.stream().map(AssetTmp::getId).collect(Collectors.toList()));
assetQueryWrapper.clear(); assetTmpQueryWrapper.clear();
assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId()); assetTmpQueryWrapper = Wrappers.<AssetTmp>lambdaQuery().eq(AssetTmp::getRefItemId, exhibitionBoard.getId());
assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name()); assetTmpQueryWrapper.eq(AssetTmp::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
final List<Asset> datumList = this.assetService.list(assetQueryWrapper); final List<AssetTmp> datumTmpList = this.assetTmpService.list(assetTmpQueryWrapper);
exhibitionBoard.setDatumList(datumList); exhibitionBoard.setDatumTmpList(datumTmpList);
exhibitionBoard.setDatumIdList(datumList.stream().map(Asset::getId).collect(Collectors.toList())); exhibitionBoard.setDatumIdList(datumTmpList.stream().map(AssetTmp::getId).collect(Collectors.toList()));
final LambdaQueryWrapper<Audit> auditQueryWrapper = Wrappers.<Audit>lambdaQuery().eq(Audit::getRefItemId, id); final LambdaQueryWrapper<Audit> auditQueryWrapper = Wrappers.<Audit>lambdaQuery().eq(Audit::getRefItemId, id);
auditQueryWrapper.select(Audit::getContent); auditQueryWrapper.select(Audit::getContent);
...@@ -386,10 +388,9 @@ public class ExhibitionBoardController extends BaseController { ...@@ -386,10 +388,9 @@ public class ExhibitionBoardController extends BaseController {
final VideoContent videoContent = this.videoContentService.getById(videoContentId); final VideoContent videoContent = this.videoContentService.getById(videoContentId);
exhibitionBoard.setVideoContentName(videoContent.getName()); exhibitionBoard.setVideoContentName(videoContent.getName());
assetQueryWrapper.clear(); final LambdaQueryWrapper<Asset> lambdaQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId);
assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId); lambdaQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name()); final List<Asset> videoList = this.assetService.list(lambdaQueryWrapper);
final List<Asset> videoList = this.assetService.list(assetQueryWrapper);
exhibitionBoard.setVideoList(videoList); exhibitionBoard.setVideoList(videoList);
} }
return getResult(exhibitionBoard); return getResult(exhibitionBoard);
......
...@@ -10,7 +10,9 @@ import cn.wisenergy.chnmuseum.party.common.video.VideoEncryptUtil; ...@@ -10,7 +10,9 @@ import cn.wisenergy.chnmuseum.party.common.video.VideoEncryptUtil;
import cn.wisenergy.chnmuseum.party.common.vo.BatchUploadResVO; import cn.wisenergy.chnmuseum.party.common.vo.BatchUploadResVO;
import cn.wisenergy.chnmuseum.party.common.vo.ImageUploadResult; import cn.wisenergy.chnmuseum.party.common.vo.ImageUploadResult;
import cn.wisenergy.chnmuseum.party.model.Asset; import cn.wisenergy.chnmuseum.party.model.Asset;
import cn.wisenergy.chnmuseum.party.model.AssetTmp;
import cn.wisenergy.chnmuseum.party.service.AssetService; import cn.wisenergy.chnmuseum.party.service.AssetService;
import cn.wisenergy.chnmuseum.party.service.AssetTmpService;
import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController; import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.tobato.fastdfs.domain.fdfs.FileInfo; import com.github.tobato.fastdfs.domain.fdfs.FileInfo;
...@@ -64,6 +66,8 @@ public class FileUploadController extends BaseController { ...@@ -64,6 +66,8 @@ public class FileUploadController extends BaseController {
@Resource @Resource
private AssetService assetService; private AssetService assetService;
@Resource
private AssetTmpService assetTmpService;
@ApiOperation(value = "根据文件ID刪除文件", notes = "根据文件ID刪除文件") @ApiOperation(value = "根据文件ID刪除文件", notes = "根据文件ID刪除文件")
@DeleteMapping(value = "/delete/{id}") @DeleteMapping(value = "/delete/{id}")
...@@ -91,7 +95,7 @@ public class FileUploadController extends BaseController { ...@@ -91,7 +95,7 @@ public class FileUploadController extends BaseController {
}) })
@PostMapping(value = "/datum/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/datum/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ApiOperation(value = "展板资料上传", notes = "展板资料上传") @ApiOperation(value = "展板资料上传", notes = "展板资料上传")
public Map<String, Object> uploadFile(@RequestPart(value = "file", required = false) MultipartFile[] files) throws IOException { public Map<String, Object> uploadDatum(@RequestPart(value = "file", required = false) MultipartFile[] files) throws IOException {
if (files == null || files.length == 0) { if (files == null || files.length == 0) {
return getFailResult("没有文件可供上传"); return getFailResult("没有文件可供上传");
} }
...@@ -229,6 +233,149 @@ public class FileUploadController extends BaseController { ...@@ -229,6 +233,149 @@ public class FileUploadController extends BaseController {
return getResult(batchUploadResVO); return getResult(batchUploadResVO);
} }
@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "资料", paramType = "form", dataType = "__file", collectionFormat = "array", allowMultiple = true)
})
@PostMapping(value = "/datum/edit/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ApiOperation(value = "展板资料上传(修改时使用)", notes = "展板资料上传(修改时使用)")
public Map<String, Object> uploadDatumByEdit(@RequestPart(value = "file", required = false) MultipartFile[] files) throws IOException {
if (files == null || files.length == 0) {
return getFailResult("没有文件可供上传");
}
int successCount = 0;
int failureCount = 0;
List<BatchUploadResVO.HandleResult> handleList = new ArrayList<>();
Set<AssetTmp> datumUrlList = new LinkedHashSet<>();
for (MultipartFile file : files) {
// 当前维度表下线结果
BatchUploadResVO.HandleResult handleResult = new BatchUploadResVO.HandleResult();
// 原始文件名
String originalFilename = file.getOriginalFilename();
if (StringUtils.isBlank(originalFilename)) {
handleResult.setFileName("");
handleResult.setFileUrl("");
handleResult.setHandleResult(HANDLE_STATUS_ENUM.FAILURE.getName());
handleResult.setDescription("文件名为空");
failureCount++;
handleList.add(handleResult);
continue;
}
if (file.getSize() == 0L) {
handleResult.setFileName("");
handleResult.setFileUrl("");
handleResult.setHandleResult(HANDLE_STATUS_ENUM.FAILURE.getName());
handleResult.setDescription("文件" + originalFilename + "大小为0");
failureCount++;
handleList.add(handleResult);
continue;
}
String extName = FilenameUtils.getExtension(originalFilename);
String finalExtName = extName;
boolean anyMatch = Arrays.stream(DATUM_TYPE).anyMatch(s -> Objects.equals(s, finalExtName.toUpperCase()));
if (anyMatch) {
if ("MPEG".equals(extName.toUpperCase()) || "MOV".equals(extName.toUpperCase())) {
extName = "mp4";
originalFilename = FilenameUtils.getBaseName(originalFilename) + "." + extName;
}
final AssetTmp asset = AssetTmp.builder()
.fileName(originalFilename)
.fileExtName(extName)
.fileCat(FileCatEnum.EXHIBITION_BOARD_DATUM.name())
.build();
String fileUrl = null;
final Set<MetaData> metaDataSet = new HashSet<>();
metaDataSet.add(new MetaData("fileName", originalFilename));
if (Arrays.stream(VIDEO_TYPE).anyMatch(s -> Objects.equals(s, finalExtName.toUpperCase()))) {
metaDataSet.add(new MetaData("fileType", FileTypeEnum.VIDEO.name()));
handleResult.setFileType(FileTypeEnum.VIDEO.name());
asset.setFileType(FileTypeEnum.VIDEO.name());
fileUrl = FastDFSUtils.uploadVideo(file.getInputStream(), file.getSize(), originalFilename, metaDataSet);
final Set<MetaData> fileMetaData = FastDFSUtils.getFileMetaData(fileUrl);
String md5 = fileMetaData.stream().filter(x -> "MD5".equals(x.getName())).map(MetaData::getValue).findFirst().get();
asset.setMd5(md5);
} else if (Arrays.stream(AUDIO_TYPE).anyMatch(s -> Objects.equals(s, finalExtName.toUpperCase()))) {
metaDataSet.add(new MetaData("fileType", FileTypeEnum.AUDIO.name()));
handleResult.setFileType(FileTypeEnum.AUDIO.name());
asset.setFileType(FileTypeEnum.AUDIO.name());
fileUrl = FastDFSUtils.uploadFile(file.getInputStream(), file.getSize(), originalFilename, metaDataSet);
} else if (Arrays.stream(IMAGE_TYPE).anyMatch(s -> Objects.equals(s, finalExtName.toUpperCase()))) {
metaDataSet.add(new MetaData("fileType", FileTypeEnum.IMAGE.name()));
handleResult.setFileType(FileTypeEnum.IMAGE.name());
asset.setFileType(FileTypeEnum.IMAGE.name());
fileUrl = FastDFSUtils.uploadFile(file.getInputStream(), file.getSize(), originalFilename, metaDataSet);
asset.setThumbnail(fileUrl);
} else if (Arrays.stream(DOC_TYPE).anyMatch(s -> Objects.equals(s, finalExtName.toUpperCase()))) {
metaDataSet.add(new MetaData("fileType", FileTypeEnum.DOCUMENT.name()));
handleResult.setFileType(FileTypeEnum.DOCUMENT.name());
asset.setFileType(FileTypeEnum.DOCUMENT.name());
fileUrl = FastDFSUtils.uploadFile(file.getInputStream(), file.getSize(), originalFilename, metaDataSet);
}
String language = null;
if (originalFilename.contains("汉语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.ZH.name()));
language = LanguageEnum.ZH.name();
} else if (originalFilename.contains("英语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.EN.name()));
language = LanguageEnum.EN.name();
} else if (originalFilename.contains("蒙语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.MN.name()));
language = LanguageEnum.MN.name();
} else if (originalFilename.contains("藏语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.BO.name()));
language = LanguageEnum.BO.name();
} else if (originalFilename.contains("维吾尔语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.UYG.name()));
language = LanguageEnum.UYG.name();
}
final FileInfo fileInfo = FastDFSUtils.getFileInfo(fileUrl);
final int crc32 = fileInfo.getCrc32();
final Asset one = this.assetService.getOne(Wrappers.<Asset>lambdaQuery().eq(Asset::getCrc32, (long) crc32).last(" limit 1"));
final LocalDateTime createTime = TimeUtils.getDateTimeOfTimestamp(fileInfo.getCreateTime() * 1000);
asset.setFileSize(fileInfo.getFileSize());
asset.setFileUrl(fileUrl);
asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_DATUM.name());
asset.setLanguage(language);
asset.setCrc32((long) crc32);
asset.setCreateTime(createTime);
asset.setUpdateTime(createTime);
if (one != null) {
FastDFSUtils.deleteFile(fileUrl);
asset.setFileUrl(one.getFileUrl());
}
this.assetTmpService.save(asset);
datumUrlList.add(asset);
handleResult.setFileUrl(fileUrl);
handleResult.setFileName(originalFilename);
handleResult.setHandleResult(HANDLE_STATUS_ENUM.SUCCESS.getName());
handleResult.setDescription("");
successCount++;
} else {
handleResult.setFileUrl("");
handleResult.setDescription("文件" + originalFilename + "格式不支持");
failureCount++;
}
// 设置处理的业务表信息
handleList.add(handleResult);
}
BatchUploadResVO batchUploadResVO = new BatchUploadResVO();
batchUploadResVO.setFailureCount(failureCount);
batchUploadResVO.setSuccessCount(successCount);
batchUploadResVO.setTotal(files.length);
batchUploadResVO.setHandleList(handleList);
batchUploadResVO.setFileTmpList(datumUrlList);
if (failureCount > 0) {
return getFailResult(batchUploadResVO);
}
return getResult(batchUploadResVO);
}
@PostMapping(value = "/image/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/image/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@RequiresAuthentication //@RequiresPermissions("file:image:upload") @RequiresAuthentication //@RequiresPermissions("file:image:upload")
@ApiOperation(value = "单图片上传(封面/缩略图)", notes = "单图片上传(封面/缩略图)") @ApiOperation(value = "单图片上传(封面/缩略图)", notes = "单图片上传(封面/缩略图)")
...@@ -286,7 +433,7 @@ public class FileUploadController extends BaseController { ...@@ -286,7 +433,7 @@ public class FileUploadController extends BaseController {
}) })
@PostMapping(value = "/audio/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/audio/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@RequiresAuthentication //@RequiresPermissions("audio:upload") @RequiresAuthentication //@RequiresPermissions("audio:upload")
@ApiOperation(value = "多音频上传", notes = "多音频上传") @ApiOperation(value = "展板多音频上传", notes = "展板多音频上传")
public Map<String, Object> uploadAudio(@RequestPart(value = "file", required = false) MultipartFile[] files) throws IOException { public Map<String, Object> uploadAudio(@RequestPart(value = "file", required = false) MultipartFile[] files) throws IOException {
if (files == null || files.length == 0) { if (files == null || files.length == 0) {
return getFailResult("没有文件可供上传"); return getFailResult("没有文件可供上传");
...@@ -403,6 +550,128 @@ public class FileUploadController extends BaseController { ...@@ -403,6 +550,128 @@ public class FileUploadController extends BaseController {
return getResult(batchUploadResVO); return getResult(batchUploadResVO);
} }
@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "音频文件", paramType = "form", dataType = "__file", collectionFormat = "array", allowMultiple = true)
})
@PostMapping(value = "/audio/edit/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@RequiresAuthentication //@RequiresPermissions("audio:upload")
@ApiOperation(value = "展板多音频上传(修改时使用)", notes = "展板多音频上传(修改时使用)")
public Map<String, Object> uploadAudioByEdit(@RequestPart(value = "file", required = false) MultipartFile[] files) throws IOException {
if (files == null || files.length == 0) {
return getFailResult("没有文件可供上传");
}
final boolean existChineseAudio = Arrays.stream(files).anyMatch(s -> Objects.requireNonNull(s.getOriginalFilename()).contains("汉语"));
if (!existChineseAudio) {
return getFailResult("必须包含汉语音频");
}
if (files.length > 5) {
return getFailResult("一种语言只能对应一个文件,只能上传包含5种语言的音频");
}
int successCount = 0;
int failureCount = 0;
List<BatchUploadResVO.HandleResult> handleList = new ArrayList<>();
Set<AssetTmp> fileList = new LinkedHashSet<>();
for (MultipartFile file : files) {
// 当前维度表下线结果
BatchUploadResVO.HandleResult handleResult = new BatchUploadResVO.HandleResult();
// 原始文件名
String originalFilename = file.getOriginalFilename();
if (StringUtils.isBlank(originalFilename)) {
handleResult.setFileName("");
handleResult.setFileType(FileTypeEnum.AUDIO.getName());
handleResult.setFileUrl("");
handleResult.setHandleResult(HANDLE_STATUS_ENUM.FAILURE.getName());
handleResult.setDescription("文件名为空");
failureCount++;
handleList.add(handleResult);
continue;
}
if (file.getSize() == 0L) {
handleResult.setFileName("");
handleResult.setFileUrl("");
handleResult.setHandleResult(HANDLE_STATUS_ENUM.FAILURE.getName());
handleResult.setDescription("文件" + originalFilename + "大小为0");
failureCount++;
handleList.add(handleResult);
continue;
}
String extName = FilenameUtils.getExtension(originalFilename);
boolean anyMatch = Arrays.stream(AUDIO_TYPE).anyMatch(s -> Objects.equals(s, extName.toUpperCase()));
if (anyMatch) {
String language = null;
final Set<MetaData> metaDataSet = new HashSet<>();
metaDataSet.add(new MetaData("fileName", originalFilename));
metaDataSet.add(new MetaData("fileType", FileTypeEnum.AUDIO.name()));
if (originalFilename.contains("汉语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.ZH.name()));
language = LanguageEnum.ZH.name();
} else if (originalFilename.contains("英语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.EN.name()));
language = LanguageEnum.EN.name();
} else if (originalFilename.contains("蒙语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.MN.name()));
language = LanguageEnum.MN.name();
} else if (originalFilename.contains("藏语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.BO.name()));
language = LanguageEnum.BO.name();
} else if (originalFilename.contains("维吾尔语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.UYG.name()));
language = LanguageEnum.UYG.name();
}
String fileUrl = FastDFSUtils.uploadFile(file.getInputStream(), file.getSize(), originalFilename, metaDataSet);
final FileInfo fileInfo = FastDFSUtils.getFileInfo(fileUrl);
final int crc32 = fileInfo.getCrc32();
final Asset one = this.assetService.getOne(Wrappers.<Asset>lambdaQuery().eq(Asset::getCrc32, (long) crc32).last(" limit 1"));
final LocalDateTime createTime = TimeUtils.getDateTimeOfTimestamp(fileInfo.getCreateTime() * 1000);
final long fileSize = fileInfo.getFileSize();
final AssetTmp asset = AssetTmp.builder()
.fileName(originalFilename)
.fileExtName(extName)
.fileType(FileTypeEnum.AUDIO.name())
.fileUrl(fileUrl)
.fileSize(fileSize)
.fileCat(FileCatEnum.EXHIBITION_BOARD_AUDIO.name())
.language(language)
.crc32((long) crc32)
.createTime(createTime)
.updateTime(createTime)
.build();
if (one != null) {
FastDFSUtils.deleteFile(fileUrl);
asset.setFileUrl(one.getFileUrl());
}
this.assetTmpService.save(asset);
fileList.add(asset);
handleResult.setFileUrl(fileUrl);
handleResult.setFileName(originalFilename);
handleResult.setFileType(FileTypeEnum.AUDIO.getName());
handleResult.setHandleResult(HANDLE_STATUS_ENUM.SUCCESS.getName());
handleResult.setDescription("");
successCount++;
} else {
handleResult.setFileUrl("");
handleResult.setFileType(FileTypeEnum.AUDIO.getName());
handleResult.setHandleResult(HANDLE_STATUS_ENUM.FAILURE.getName());
handleResult.setDescription("文件" + originalFilename + "格式不支持");
failureCount++;
}
// 设置处理的业务表信息
handleList.add(handleResult);
}
BatchUploadResVO batchUploadResVO = new BatchUploadResVO();
batchUploadResVO.setFailureCount(failureCount);
batchUploadResVO.setSuccessCount(successCount);
batchUploadResVO.setTotal(files.length);
batchUploadResVO.setHandleList(handleList);
batchUploadResVO.setFileTmpList(fileList);
return getResult(batchUploadResVO);
}
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "视频文件", paramType = "form", dataType = "__file", collectionFormat = "array", allowMultiple = true, required = true) @ApiImplicitParam(name = "file", value = "视频文件", paramType = "form", dataType = "__file", collectionFormat = "array", allowMultiple = true, required = true)
}) })
...@@ -590,6 +859,193 @@ public class FileUploadController extends BaseController { ...@@ -590,6 +859,193 @@ public class FileUploadController extends BaseController {
return getResult(batchUploadResVO); return getResult(batchUploadResVO);
} }
@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "视频文件", paramType = "form", dataType = "__file", collectionFormat = "array", allowMultiple = true, required = true)
})
@PostMapping(value = "/video/edit/upload", headers = "content-type=multipart/form-data", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@RequiresAuthentication //@RequiresPermissions("file:video:content:upload")
@ApiOperation(value = "展板视频上传(修改时使用)", notes = "展板视频上传(修改时使用)")
public Map<String, Object> uploadContentVideoByEdit(@RequestPart("file") MultipartFile[] files) throws Exception {
if (files == null || files.length == 0) {
return getFailResult("没有文件可供上传");
}
if (files.length == 1) {
String extName = FilenameUtils.getExtension(files[0].getOriginalFilename());
boolean anyMatch = Arrays.stream(VIDEO_TYPE).anyMatch(s -> Objects.equals(s, extName.toUpperCase()));
if (!anyMatch) {
return getFailResult("目前仅支持" + String.join("、", VIDEO_TYPE) + "格式");
}
}
final boolean matchChinese = Arrays.stream(files).anyMatch(s -> Objects.requireNonNull(s.getOriginalFilename()).contains("汉语"));
if (!matchChinese) {
return getFailResult("文件必须包含汉语视频");
}
String videoContentName = null;
String text;
LCSUtil strie = null;
final String[] fileBaseNameArray = Arrays.stream(files).map(x -> FilenameUtils.getBaseName(x.getOriginalFilename())).toArray(String[]::new);
switch (fileBaseNameArray.length) {
case 1:
videoContentName = fileBaseNameArray[0];
break;
case 2:
text = fileBaseNameArray[0] + SPLITTER_CHAR_2[0] + fileBaseNameArray[1] + SPLITTER_CHAR_2[1];
strie = new LCSUtil(text, SPLITTER_CHAR_2);
break;
case 3:
text = fileBaseNameArray[0] + SPLITTER_CHAR_3[0] + fileBaseNameArray[1] + SPLITTER_CHAR_3[1] + fileBaseNameArray[2] + SPLITTER_CHAR_3[2];
strie = new LCSUtil(text, SPLITTER_CHAR_3);
break;
case 4:
text = fileBaseNameArray[0] + SPLITTER_CHAR_4[0] + fileBaseNameArray[1] + SPLITTER_CHAR_4[1] + fileBaseNameArray[2] + SPLITTER_CHAR_4[2] + fileBaseNameArray[3] + SPLITTER_CHAR_4[3];
strie = new LCSUtil(text, SPLITTER_CHAR_4);
break;
case 5:
text = fileBaseNameArray[0] + SPLITTER_CHAR_5[0] + fileBaseNameArray[1] + SPLITTER_CHAR_5[1] + fileBaseNameArray[2] + SPLITTER_CHAR_5[2] + fileBaseNameArray[3] + SPLITTER_CHAR_5[3] + fileBaseNameArray[4] + SPLITTER_CHAR_5[4];
strie = new LCSUtil(text, SPLITTER_CHAR_5);
break;
default:
break;
}
if (strie != null) {
strie.buildSuffixTree();
videoContentName = strie.findLCS();
if (StringUtils.isBlank(videoContentName)) {
return getFailResult("请修改你的文件名并保持前缀一致后再上传");
} else {
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "{");
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "[");
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "【");
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "(");
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "(");
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "-");
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "_");
videoContentName = StringUtils.removeEnd(videoContentName.trim(), "之");
}
}
int successCount = 0;
int failureCount = 0;
List<BatchUploadResVO.HandleResult> handleList = new ArrayList<>();
Set<AssetTmp> fileList = new LinkedHashSet<>();
for (MultipartFile file : files) {
// 当前维度表下线结果
BatchUploadResVO.HandleResult handleResult = new BatchUploadResVO.HandleResult();
// 原始文件名
String originalFilename = file.getOriginalFilename();
if (StringUtils.isBlank(originalFilename)) {
handleResult.setFileName("");
handleResult.setFileType(FileTypeEnum.VIDEO.getName());
handleResult.setFileUrl("");
handleResult.setHandleResult(HANDLE_STATUS_ENUM.FAILURE.getName());
handleResult.setDescription("文件名为空");
failureCount++;
handleList.add(handleResult);
continue;
}
if (file.getSize() == 0L) {
handleResult.setFileName("");
handleResult.setFileUrl("");
handleResult.setHandleResult(HANDLE_STATUS_ENUM.FAILURE.getName());
handleResult.setDescription("文件" + originalFilename + "大小为0");
failureCount++;
handleList.add(handleResult);
continue;
}
final String baseName = FilenameUtils.getBaseName(originalFilename);
String extName = FilenameUtils.getExtension(originalFilename);
String finalExtName = extName;
boolean anyMatch = Arrays.stream(VIDEO_TYPE).anyMatch(s -> Objects.equals(s, finalExtName.toUpperCase()));
if (anyMatch) {
if ("MPEG".equals(extName.toUpperCase()) || "MOV".equals(extName.toUpperCase())) {
extName = "mp4";
originalFilename = baseName + "." + extName;
}
String language = null;
final Set<MetaData> metaDataSet = new HashSet<>();
metaDataSet.add(new MetaData("fileName", originalFilename));
metaDataSet.add(new MetaData("fileType", FileTypeEnum.VIDEO.name()));
if (originalFilename.contains("汉语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.ZH.name()));
language = LanguageEnum.ZH.name();
} else if (originalFilename.contains("英语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.EN.name()));
language = LanguageEnum.EN.name();
} else if (originalFilename.contains("蒙语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.MN.name()));
language = LanguageEnum.MN.name();
} else if (originalFilename.contains("藏语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.BO.name()));
language = LanguageEnum.BO.name();
} else if (originalFilename.contains("维吾尔语")) {
metaDataSet.add(new MetaData("language", LanguageEnum.UYG.name()));
language = LanguageEnum.UYG.name();
}
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
IOUtils.copy(file.getInputStream(), byteArrayOutputStream);
final String fileUrl = FastDFSUtils.uploadVideo(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()), file.getSize(), originalFilename, metaDataSet);
metaDataSet.add(new MetaData("fileName", baseName + ".chnmuseum"));
final String fileUrlCrypto = FastDFSUtils.uploadVideo(VideoEncryptUtil.encrypt(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()), VideoEncryptUtil.cipher), file.getSize(), baseName + ".chnmuseum", metaDataSet);
final Set<MetaData> fileMetaData = FastDFSUtils.getFileMetaData(fileUrlCrypto);
String md5 = fileMetaData.stream().filter(x -> "MD5".equals(x.getName())).map(MetaData::getValue).findFirst().get();
final FileInfo fileInfo = FastDFSUtils.getFileInfo(fileUrl);
final int crc32 = fileInfo.getCrc32();
final Asset one = this.assetService.getOne(Wrappers.<Asset>lambdaQuery().eq(Asset::getCrc32, (long) crc32).last(" limit 1"));
final LocalDateTime createTime = TimeUtils.getDateTimeOfTimestamp(fileInfo.getCreateTime() * 1000);
final long fileSize = fileInfo.getFileSize();
final AssetTmp asset = AssetTmp.builder()
.fileName(originalFilename)
.fileNameCrypto(baseName + ".chnmuseum")
.fileExtName(extName)
.fileType(FileTypeEnum.VIDEO.name())
.fileSize(fileSize)
.fileUrl(fileUrl)
.fileUrlCrypto(fileUrlCrypto)
.fileCat(FileCatEnum.VIDEO_CONTENT.name())
.language(language)
.md5(md5)
.crc32((long) crc32)
.videoContentName(videoContentName)
.createTime(createTime)
.updateTime(createTime)
.build();
if (one != null) {
FastDFSUtils.deleteFile(fileUrl);
FastDFSUtils.deleteFile(fileUrlCrypto);
asset.setFileUrl(one.getFileUrl());
asset.setFileUrlCrypto(one.getFileUrl());
}
this.assetTmpService.save(asset);
fileList.add(asset);
handleResult.setFileUrl(fileUrl);
handleResult.setFileName(originalFilename);
handleResult.setFileType(FileTypeEnum.VIDEO.getName());
handleResult.setHandleResult(HANDLE_STATUS_ENUM.SUCCESS.getName());
handleResult.setDescription("");
successCount++;
} else {
handleResult.setFileUrl("");
handleResult.setHandleResult("上传失败");
handleResult.setDescription("文件" + originalFilename + "格式不支持");
failureCount++;
}
// 设置处理的业务表信息
handleList.add(handleResult);
}
BatchUploadResVO batchUploadResVO = new BatchUploadResVO();
batchUploadResVO.setFailureCount(failureCount);
batchUploadResVO.setSuccessCount(successCount);
batchUploadResVO.setTotal(files.length);
batchUploadResVO.setHandleList(handleList);
batchUploadResVO.setFileTmpList(fileList);
return getResult(batchUploadResVO);
}
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "视频文件", paramType = "form", dataType = "__file", collectionFormat = "array", allowMultiple = true, required = true) @ApiImplicitParam(name = "file", value = "视频文件", paramType = "form", dataType = "__file", collectionFormat = "array", allowMultiple = true, required = true)
}) })
......
...@@ -361,7 +361,7 @@ public class LearningContentController extends BaseController { ...@@ -361,7 +361,7 @@ public class LearningContentController extends BaseController {
return getResult(learningContent); return getResult(learningContent);
} }
@ApiOperation(value = "获取学习内容详情(审核时使用)", notes = "获取学习内容详情(审核时使用)") @ApiOperation(value = "获取学习内容详情(审核详情使用)", notes = "获取学习内容详情(审核详情使用)")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path", required = true) @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path", required = true)
}) })
......
...@@ -45,16 +45,25 @@ public class VideoContentController extends BaseController { ...@@ -45,16 +45,25 @@ public class VideoContentController extends BaseController {
@Resource @Resource
private ExhibitionBoardService exhibitionBoardService; private ExhibitionBoardService exhibitionBoardService;
@Resource @Resource
private VideoContentService videoContentService; private VideoContentService videoContentService;
@Resource @Resource
private VideoContentTmpService videoContentTmpService; private VideoContentTmpService videoContentTmpService;
@Resource @Resource
private CopyrightOwnerService copyrightOwnerService; private CopyrightOwnerService copyrightOwnerService;
@Resource @Resource
private VideoContentCatService videoContentCatService; private VideoContentCatService videoContentCatService;
@Resource @Resource
private AssetService assetService; private AssetService assetService;
@Resource
private AssetTmpService assetTmpService;
@Resource @Resource
private AuditService auditService; private AuditService auditService;
...@@ -281,7 +290,7 @@ public class VideoContentController extends BaseController { ...@@ -281,7 +290,7 @@ public class VideoContentController extends BaseController {
return getResult(videoContent); return getResult(videoContent);
} }
@ApiOperation(value = "获取视频内容详情(审核时使用)", notes = "获取视频内容详情(审核时使用)") @ApiOperation(value = "获取视频内容详情(审核详情使用)", notes = "获取视频内容详情(审核详情使用)")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path", required = true) @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path", required = true)
}) })
...@@ -302,11 +311,11 @@ public class VideoContentController extends BaseController { ...@@ -302,11 +311,11 @@ public class VideoContentController extends BaseController {
videoContent.setVideoContentCopyrightOwnerName(copyrightOwner.getName()); videoContent.setVideoContentCopyrightOwnerName(copyrightOwner.getName());
} }
} }
final LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, id); final LambdaQueryWrapper<AssetTmp> assetQueryWrapper = Wrappers.<AssetTmp>lambdaQuery().eq(AssetTmp::getRefItemId, id);
assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name()); assetQueryWrapper.eq(AssetTmp::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
final List<Asset> videoFileList = this.assetService.list(assetQueryWrapper); final List<AssetTmp> videoFileList = this.assetTmpService.list(assetQueryWrapper);
videoContent.setVideoFileList(videoFileList); videoContent.setVideoFileTmpList(videoFileList);
videoContent.setVideoFileIdList(videoFileList.stream().map(Asset::getId).collect(Collectors.toList())); videoContent.setVideoFileIdList(videoFileList.stream().map(AssetTmp::getId).collect(Collectors.toList()));
final LambdaQueryWrapper<Audit> auditQueryWrapper = Wrappers.<Audit>lambdaQuery().eq(Audit::getRefItemId, id); final LambdaQueryWrapper<Audit> auditQueryWrapper = Wrappers.<Audit>lambdaQuery().eq(Audit::getRefItemId, id);
auditQueryWrapper.select(Audit::getContent); auditQueryWrapper.select(Audit::getContent);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.wisenergy.chnmuseum.party.mapper.AssetTmpMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.wisenergy.chnmuseum.party.model.AssetTmp">
<id column="id" property="id"/>
<result column="ref_item_id" property="refItemId"/>
<result column="file_name" property="fileName"/>
<result column="file_name_crypto" property="fileNameCrypto"/>
<result column="file_ext_name" property="fileExtName"/>
<result column="file_type" property="fileType"/>
<result column="file_cat" property="fileCat"/>
<result column="file_size" property="fileSize"/>
<result column="file_url" property="fileUrl"/>
<result column="file_url_crypto" property="fileUrlCrypto"/>
<result column="thumbnail" property="thumbnail"/>
<result column="language" property="language"/>
<result column="md5" property="md5"/>
<result column="crc32" property="crc32"/>
<result column="video_content_name" property="videoContentName"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, ref_item_id, file_name, file_name_crypto, file_ext_name, file_type, file_cat, file_size, file_url,
file_url_crypto, thumbnail, language, md5, crc32, video_content_name, create_time, update_time
</sql>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment