manage :添加 renameIfNecessary

dev_2.1.0
xueqingkun 1 year ago
parent 303dea8a8a
commit f59df1f1c8

@ -21,10 +21,9 @@ public class MaterialLibraryManageController {
@ApiOperation("上传素材")
@PostMapping("/uploadMaterial")
public String uploadMaterial(@ApiParam("文件") @RequestParam("file") MultipartFile multipartFile,
@ApiParam("素材名长度小于64") @RequestParam("materialName") String materialName,
@ApiParam("素材类型 0:图片 1:视频 2:音频") @RequestParam("materialType") String materialType) throws Exception {
MaterialLibrary materialLibrary) throws Exception {
return materialLibraryManageService.uploadMaterial(multipartFile, materialName, materialType);
return materialLibraryManageService.uploadMaterial(multipartFile,materialLibrary);
}

@ -10,11 +10,10 @@ public interface MaterialLibraryManageService {
/**
*
* @param multipartFile
* @param materialName
* @param materialType
* @param materialLibrary
* @return id
*/
String uploadMaterial(MultipartFile multipartFile, String materialName, String materialType) throws Exception;
String uploadMaterial(MultipartFile multipartFile, MaterialLibrary materialLibrary) throws Exception;
IPage<MaterialLibrary> queryMaterialPage(String materialType, String materialName, String directoryId,Integer pageNum, Integer pageSize);

@ -1,5 +1,6 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
@ -15,8 +16,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
@RequiredArgsConstructor
@ -27,30 +31,85 @@ public class MaterialLibraryManageServiceImpl implements MaterialLibraryManageSe
private final FileManageService fileManageService;
@Override
@Transactional(rollbackFor = Exception.class)
public String uploadMaterial(MultipartFile multipartFile, String materialName, String materialType) throws Exception {
public String uploadMaterial(MultipartFile multipartFile,MaterialLibrary materialLibrary) throws Exception {
// 校验素材名是否已经存在
Assert.notEmpty(materialName, "素材名不能为空");
Assert.notEmpty(materialType, "素材类型不能为空");
List<String> split = StrUtil.split(materialName, ".");
Integer count = materialLibraryService.lambdaQuery().likeRight(MaterialLibrary::getMaterialName, split.get(0)).count();
Assert.notEmpty(materialLibrary.getMaterialName(), "素材名不能为空");
Assert.notEmpty(materialLibrary.getMaterialType(), "素材类型不能为空");
materialLibrary.setMaterialName(renameIfNecessary(materialLibrary.getMaterialName()));
// 保存素材
FileResource fileResource = fileManageService.uploadFile(multipartFile, multipartFile.getContentType());
materialLibrary.setFileResourceId(fileResource.getId());
materialLibraryService.save(materialLibrary);
return materialLibrary.getId();
}
/**
*
* @param materialName
* @return
*/
private String renameIfNecessary(String materialName) {
int count = countMaterialName(materialName);
if (count > 0){
// 重新命名文件
String excludeSuffix = stringExcludeSuffix(materialName);
List<String> split = StrUtil.split(materialName, ".");
if (split.size() > 1){
materialName = split.get(0) + "(" + count + ")" + "." + split.get(split.size()-1);
materialName = excludeSuffix + "(" + count + ")" + "." + split.get(split.size()-1);
}else{
materialName = materialName + "(" + count + ")";
materialName = excludeSuffix + "(" + count + ")";
}
}
return materialName;
}
// 保存素材
FileResource fileResource = fileManageService.uploadFile(multipartFile, multipartFile.getContentType());
/**
*
* @param materialName
* @return
*/
private int countMaterialName(String materialName) {
String cleanedName = stringExcludeSuffix(materialName);
List<MaterialLibrary> materialLibraryList = materialLibraryService.lambdaQuery().likeRight(MaterialLibrary::getMaterialName,cleanedName).list();
int count = 0;
for (MaterialLibrary materialLibrary : materialLibraryList) {
String name = materialLibrary.getMaterialName();
String regex = "\\(\\d+\\)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(name);
String modifiedText;
int previousEnd = 0;
int lastEnd = 0;
while (matcher.find()) {
previousEnd = matcher.start();
lastEnd = matcher.end();
}
MaterialLibrary materialLibrary = new MaterialLibrary();
materialLibrary.setFileResourceId(fileResource.getId());
materialLibrary.setMaterialType(materialType);
materialLibrary.setMaterialName(materialName);
materialLibraryService.save(materialLibrary);
return materialLibrary.getId();
if (lastEnd > 0) {
modifiedText = name.substring(0, previousEnd) + name.substring(lastEnd);
} else {
modifiedText = name;
}
if (StrUtil.equals(modifiedText,materialName)){
count ++ ;
}
}
return count;
}
private static String stringExcludeSuffix(String materialName) {
List<String> split = StrUtil.split(materialName, ".");
ArrayList<String> tmpList = CollUtil.newArrayList(split);
if(split.size() > 1){
tmpList.remove(split.size()-1);
}
return String.join(".",tmpList);
}
@Override

@ -24,21 +24,19 @@ public class MaterialLibrary implements Serializable {
/**
* id vp_file_resource
*/
@ApiModelProperty("文件资源id")
private String fileResourceId;
/**
* ;vp_file_resourcefile_name
*/
@ApiModelProperty("素材名称 必填")
private String materialName;
/**
* 0: 1: 2:
*/
@ApiModelProperty("素材类型 0:图片 1:视频 2:音频 必填")
private String materialType;
/**
* id
*/
@ApiModelProperty("目录id")
private String directoryId;
/**

Loading…
Cancel
Save