🐛 修复切换存储器 ID 时,为级联修改或清理缓存、过滤器、短链的问题

This commit is contained in:
zhaojun1998
2021-03-05 22:59:08 +08:00
parent 4d42529c4d
commit 7409df85d7
3 changed files with 41 additions and 0 deletions

View File

@@ -2,6 +2,8 @@ package im.zhaojun.zfile.repository;
import im.zhaojun.zfile.model.entity.FilterConfig;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -26,4 +28,17 @@ public interface FilterConfigRepository extends JpaRepository<FilterConfig, Inte
*/
void deleteByDriveId(Integer driveId);
/**
* 更新驱动器 ID 对应的参数设置为新的驱动器 ID
*
* @param updateId
* 驱动器原 ID
*
* @param newId
* 驱动器新 ID
*/
@Modifying
@Query(value="update FILTER_CONFIG set driveId = :newId where driveId = :updateId")
void updateDriveId(Integer updateId, Integer newId);
}

View File

@@ -5,6 +5,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@@ -57,4 +58,18 @@ public interface ShortLinkConfigRepository extends JpaRepository<ShortLinkConfig
* 短链 URL
*/
ShortLinkConfig findByUrl(String url);
/**
* 更新驱动器 ID
*
* @param updateSubPath
* 原路径部分名称
*
* @param newSubPath
* 修改后路径部分名称
*/
@Modifying
@Query(value="update SHORT_LINK set url = replace(url, :updateSubPath, :newSubPath)")
void updateUrlDriveId(String updateSubPath, String newSubPath);
}

View File

@@ -1,5 +1,6 @@
package im.zhaojun.zfile.service;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import im.zhaojun.zfile.cache.ZFileCache;
import im.zhaojun.zfile.context.DriveContext;
@@ -13,6 +14,8 @@ import im.zhaojun.zfile.model.entity.DriveConfig;
import im.zhaojun.zfile.model.entity.StorageConfig;
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
import im.zhaojun.zfile.repository.DriverConfigRepository;
import im.zhaojun.zfile.repository.FilterConfigRepository;
import im.zhaojun.zfile.repository.ShortLinkConfigRepository;
import im.zhaojun.zfile.repository.StorageConfigRepository;
import im.zhaojun.zfile.service.base.AbstractBaseFileService;
import lombok.extern.slf4j.Slf4j;
@@ -42,6 +45,12 @@ public class DriveConfigService {
@Resource
private StorageConfigRepository storageConfigRepository;
@Resource
private FilterConfigRepository filterConfigRepository;
@Resource
private ShortLinkConfigRepository shortLinkConfigRepository;
@Resource
private DriveContext driveContext;
@@ -248,6 +257,8 @@ public class DriveConfigService {
public void updateId(Integer updateId, Integer newId) {
driverConfigRepository.updateId(updateId, newId);
storageConfigRepository.updateDriveId(updateId, newId);
filterConfigRepository.updateDriveId(updateId, newId);
shortLinkConfigRepository.updateUrlDriveId("/directlink/" + updateId, "/directlink/" + newId);
driveContext.updateDriveId(updateId, newId);
}