24282 1 жил өмнө
parent
commit
f7b15ef2d6

+ 7 - 0
hx-file/src/main/java/com/fjhx/file/service/FileInfoService.java

@@ -80,6 +80,13 @@ public interface FileInfoService extends BaseService<FileInfo> {
      */
     void removeFile(List<Long> businessIdList);
 
+    /**
+     * 判断文件是否已经绑定业务 是将文件复制一份并保存
+     *
+     * @param fileList     文件列表
+     * @param businessId   业务id
+     * @param businessType 业务文件类型
+     */
     void copyFileAndSave(List<ObsFile> fileList, Long businessId, Integer businessType);
 
     /**

+ 26 - 72
hx-file/src/main/java/com/fjhx/file/service/impl/FileInfoServiceImpl.java

@@ -10,7 +10,6 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.file.entity.FileInfo;
 import com.fjhx.file.entity.FileInfoSelectDto;
@@ -29,11 +28,10 @@ import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -135,38 +133,27 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
     @DS(BaseSourceConstant.BASE)
     @Override
     public Map<Long, List<FileInfoVo>> getList(FileInfoSelectDto dto) {
-
         if (ObjectUtil.isEmpty(dto.getBusinessIdList())) {
-            return new HashMap<>();
+            return Collections.emptyMap();
         }
-
         IWrapper<Object> wrapper = IWrapper.getWrapper();
         wrapper.in("fi", FileInfo::getBusinessId, dto.getBusinessIdList());
         wrapper.eq("fi", FileInfo::getBusinessType, dto.getFileType());
         List<FileInfoVo> list = this.baseMapper.getList(wrapper);
-
-        if (list.size() == 0) {
-            return new HashMap<>();
+        if (list.isEmpty()) {
+            return Collections.emptyMap();
         }
-
         return list.stream()
                 .peek(fileInfoVo -> fileInfoVo.setFileUrl(url + fileInfoVo.getFileUrl()))
                 .collect(Collectors.groupingBy(FileInfoVo::getBusinessId));
     }
 
-    /**
-     * @param obsFileList  文件列表
-     * @param businessId   业务id
-     * @param businessType 业务文件类型
-     */
     @DS(BaseSourceConstant.BASE)
     @Override
     public void saveFile(List<ObsFile> obsFileList, Long businessId, Integer businessType) {
-        // 切换到从库
-        if (obsFileList == null || obsFileList.size() == 0) {
+        if (ObjectUtil.isEmpty(obsFileList)) {
             return;
         }
-
         List<FileInfo> fileInfoList = BeanUtil.copyToList(obsFileList, FileInfo.class);
         for (FileInfo fileInfo : fileInfoList) {
             fileInfo.setFileUrl(null);
@@ -176,17 +163,10 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
         this.updateBatchById(fileInfoList);
     }
 
-    /**
-     * 保存文件--直接插入
-     *
-     * @param obsFileList  文件列表
-     * @param businessId   业务id
-     * @param businessType 业务文件类型
-     */
     @DS(BaseSourceConstant.BASE)
     @Override
     public void saveAllFile(List<ObsFile> obsFileList, Long businessId, Integer businessType) {
-        if (obsFileList == null || obsFileList.size() == 0) {
+        if (ObjectUtil.isEmpty(obsFileList)) {
             return;
         }
         List<FileInfo> fileInfoList = BeanUtil.copyToList(obsFileList, FileInfo.class);
@@ -198,36 +178,25 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
         this.saveBatch(fileInfoList);
     }
 
-    /**
-     * 编辑文件
-     *
-     * @param obsFileList  文件列表
-     * @param businessId   业务id
-     * @param businessType 业务文件类型
-     */
     @DS(BaseSourceConstant.BASE)
     @Override
     public void editFile(List<ObsFile> obsFileList, Long businessId, Integer businessType) {
-        if (obsFileList == null || obsFileList.size() == 0) {
+        if (obsFileList == null || obsFileList.isEmpty()) {
             this.remove(q -> q.eq(FileInfo::getBusinessId, businessId).eq(FileInfo::getBusinessType, businessType));
             return;
         }
 
         // 删除不包含在此列表的业务id文件
         List<Long> obsFileId = obsFileList.stream().map(ObsFile::getId).collect(Collectors.toList());
-        this.remove(q -> q.notIn(ObjectUtil.isNotEmpty(obsFileId), BaseIdPo::getId, obsFileId)
-                .eq(FileInfo::getBusinessId, businessId).eq(FileInfo::getBusinessType, businessType));
+        this.remove(q -> q
+                .notIn(ObjectUtil.isNotEmpty(obsFileId), BaseIdPo::getId, obsFileId)
+                .eq(FileInfo::getBusinessId, businessId)
+                .eq(FileInfo::getBusinessType, businessType));
 
         // 更新在此列表的文件
         saveFile(obsFileList, businessId, businessType);
     }
 
-    /**
-     * 删除文件
-     *
-     * @param businessId   业务id
-     * @param businessType 业务文件类型
-     */
     @DS(BaseSourceConstant.BASE)
     @Override
     public void removeFile(Long businessId, Integer businessType) {
@@ -236,58 +205,36 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
                 .eq(FileInfo::getBusinessType, businessType));
     }
 
-    /**
-     * !!!必须加上Transactional 更改事务传播行为,否则数据源将被缓存,造成数据源切换失败
-     *
-     * @param businessId 业务id
-     */
     @DS(BaseSourceConstant.BASE)
     @Override
     public void removeFile(Long businessId) {
         this.remove(q -> q.eq(FileInfo::getBusinessId, businessId));
     }
 
+    @DS(BaseSourceConstant.BASE)
     @Override
     public void removeFile(List<Long> businessIdList) {
+        if (ObjectUtil.isEmpty(businessIdList)) {
+            return;
+        }
         this.remove(q -> q.in(FileInfo::getBusinessId, businessIdList));
     }
 
-    /**
-     * 交换业务ID
-     *
-     * @param oldBusinessId 旧业务id
-     * @param newBusinessId 新业务id
-     */
     @DS(BaseSourceConstant.BASE)
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void exchangeBusinessId(Long oldBusinessId, Long newBusinessId) {
-        List<FileInfo> oldFile = this.list(Wrappers.<FileInfo>query().lambda().select(FileInfo::getId).eq(FileInfo::getBusinessId, oldBusinessId));
-        List<FileInfo> newFile = this.list(Wrappers.<FileInfo>query().lambda().select(FileInfo::getId).eq(FileInfo::getBusinessId, newBusinessId));
+        List<FileInfo> oldFile = this.list(q -> q.select(FileInfo::getId).eq(FileInfo::getBusinessId, oldBusinessId));
+        List<FileInfo> newFile = this.list(q -> q.select(FileInfo::getId).eq(FileInfo::getBusinessId, newBusinessId));
         if (CollectionUtils.isNotEmpty(oldFile)) {
             List<Long> ids = oldFile.stream().map(FileInfo::getId).collect(Collectors.toList());
-            this.update(Wrappers.<FileInfo>update().lambda().set(FileInfo::getBusinessId, newBusinessId).in(FileInfo::getId, ids));
+            this.update(q -> q.set(FileInfo::getBusinessId, newBusinessId).in(FileInfo::getId, ids));
         }
         if (CollectionUtils.isNotEmpty(newFile)) {
             List<Long> ids = newFile.stream().map(FileInfo::getId).collect(Collectors.toList());
-            this.update(Wrappers.<FileInfo>update().lambda().set(FileInfo::getBusinessId, oldBusinessId).in(FileInfo::getId, ids));
+            this.update(q -> q.set(FileInfo::getBusinessId, oldBusinessId).in(FileInfo::getId, ids));
         }
     }
 
-    /**
-     * 获取oss链接客户端
-     */
-    private ObsClient getObsClient() {
-        return new ObsClient(ak, sk, endPoint);
-    }
-
-    /**
-     * 判断文件是否已经绑定业务 是将文件复制一份并保存
-     *
-     * @param fileList     文件列表
-     * @param businessId   业务id
-     * @param businessType 业务文件类型
-     */
     @DS(BaseSourceConstant.BASE)
     @Override
     public void copyFileAndSave(List<ObsFile> fileList, Long businessId, Integer businessType) {
@@ -314,4 +261,11 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
         saveFile(fileList, businessId, businessType);
     }
 
+    /**
+     * 获取oss链接客户端
+     */
+    private ObsClient getObsClient() {
+        return new ObsClient(ak, sk, endPoint);
+    }
+
 }

+ 9 - 0
hx-file/src/main/java/com/fjhx/file/utils/ObsFileUtil.java

@@ -145,6 +145,15 @@ public class ObsFileUtil {
         fileInfoService.removeFile(businessId);
     }
 
+    /**
+     * 删除文件
+     *
+     * @param businessIdList 业务id列表
+     */
+    public static void removeFile(List<Long> businessIdList) {
+        fileInfoService.removeFile(businessIdList);
+    }
+
     public static Map<Long, List<FileInfoVo>> getFileMap(List<Long> businessIdList) {
         FileInfoSelectDto dto = new FileInfoSelectDto();
         dto.setBusinessIdList(businessIdList);