mirror of
https://github.com/zfile-dev/zfile.git
synced 2025-04-19 05:34:52 +00:00
✨ 支持修改驱动器 ID
This commit is contained in:
@@ -128,4 +128,20 @@ public class DriveContext implements ApplicationContextAware {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新上下文环境中的驱动器 ID
|
||||
*
|
||||
* @param updateId
|
||||
* 驱动器原 ID
|
||||
*
|
||||
* @param newId
|
||||
* 驱动器新 ID
|
||||
*/
|
||||
public void updateDriveId(Integer updateId, Integer newId) {
|
||||
AbstractBaseFileService fileService = drivesServiceMap.remove(updateId);
|
||||
fileService.setDriveId(newId);
|
||||
drivesServiceMap.put(newId, fileService);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,6 +32,7 @@ public class DriveController {
|
||||
@Resource
|
||||
private FilterConfigService filterConfigService;
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有驱动器列表
|
||||
*
|
||||
@@ -47,14 +48,14 @@ public class DriveController {
|
||||
/**
|
||||
* 获取指定驱动器基本信息及其参数
|
||||
*
|
||||
* @param id
|
||||
* @param driveId
|
||||
* 驱动器 ID
|
||||
*
|
||||
* @return 驱动器基本信息
|
||||
*/
|
||||
@GetMapping("/drive/{id}")
|
||||
public ResultBean driveItem(@PathVariable Integer id) {
|
||||
DriveConfigDTO driveConfig = driveConfigService.findDriveConfigDTOById(id);
|
||||
@GetMapping("/drive/{driveId}")
|
||||
public ResultBean driveItem(@PathVariable Integer driveId) {
|
||||
DriveConfigDTO driveConfig = driveConfigService.findDriveConfigDTOById(driveId);
|
||||
return ResultBean.success(driveConfig);
|
||||
}
|
||||
|
||||
@@ -72,12 +73,12 @@ public class DriveController {
|
||||
/**
|
||||
* 删除驱动器设置
|
||||
*
|
||||
* @param id
|
||||
* @param driveId
|
||||
* 驱动器 ID
|
||||
*/
|
||||
@DeleteMapping("/drive/{id}")
|
||||
public ResultBean deleteDriveItem(@PathVariable Integer id) {
|
||||
driveConfigService.deleteById(id);
|
||||
@DeleteMapping("/drive/{driveId}")
|
||||
public ResultBean deleteDriveItem(@PathVariable Integer driveId) {
|
||||
driveConfigService.deleteById(driveId);
|
||||
return ResultBean.success();
|
||||
}
|
||||
|
||||
@@ -85,14 +86,14 @@ public class DriveController {
|
||||
/**
|
||||
* 启用驱动器
|
||||
*
|
||||
* @param id
|
||||
* @param driveId
|
||||
* 驱动器 ID
|
||||
*/
|
||||
@PostMapping("/drive/{id}/enable")
|
||||
public ResultBean enable(@PathVariable("id") Integer id) {
|
||||
DriveConfig driveConfig = driveConfigService.findById(id);
|
||||
@PostMapping("/drive/{driveId}/enable")
|
||||
public ResultBean enable(@PathVariable Integer driveId) {
|
||||
DriveConfig driveConfig = driveConfigService.findById(driveId);
|
||||
driveConfig.setEnable(true);
|
||||
driveConfigService.saveOrUpdate(driveConfig);
|
||||
driveConfigService.updateDriveConfig(driveConfig);
|
||||
return ResultBean.success();
|
||||
}
|
||||
|
||||
@@ -100,33 +101,73 @@ public class DriveController {
|
||||
/**
|
||||
* 停止驱动器
|
||||
*
|
||||
* @param id
|
||||
* @param driveId
|
||||
* 驱动器 ID
|
||||
*/
|
||||
@PostMapping("/drive/{id}/disable")
|
||||
public ResultBean disable(@PathVariable("id") Integer id) {
|
||||
DriveConfig driveConfig = driveConfigService.findById(id);
|
||||
@PostMapping("/drive/{driveId}/disable")
|
||||
public ResultBean disable(@PathVariable Integer driveId) {
|
||||
DriveConfig driveConfig = driveConfigService.findById(driveId);
|
||||
driveConfig.setEnable(false);
|
||||
driveConfigService.saveOrUpdate(driveConfig);
|
||||
driveConfigService.updateDriveConfig(driveConfig);
|
||||
return ResultBean.success();
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/drive/{id}/filters")
|
||||
public ResultBean getFilters(@PathVariable("id") Integer id) {
|
||||
return ResultBean.success(filterConfigService.findByDriveId(id));
|
||||
/**
|
||||
* 根据驱动器 ID 获取过滤文件列表
|
||||
*
|
||||
* @param driveId
|
||||
* 驱动器 ID
|
||||
*/
|
||||
@GetMapping("/drive/{driveId}/filters")
|
||||
public ResultBean getFilters(@PathVariable Integer driveId) {
|
||||
return ResultBean.success(filterConfigService.findByDriveId(driveId));
|
||||
}
|
||||
|
||||
@PostMapping("/drive/{id}/filters")
|
||||
public ResultBean saveFilters(@RequestBody List<FilterConfig> filter, @PathVariable("id") Integer driveId) {
|
||||
|
||||
/**
|
||||
* 停止驱动器
|
||||
*
|
||||
* @param driveId
|
||||
* 驱动器 ID
|
||||
*/
|
||||
@PostMapping("/drive/{driveId}/filters")
|
||||
public ResultBean saveFilters(@RequestBody List<FilterConfig> filter, @PathVariable Integer driveId) {
|
||||
filterConfigService.batchSave(filter, driveId);
|
||||
return ResultBean.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存拖拽排序信息
|
||||
*
|
||||
* @param driveConfigs
|
||||
* 拖拽排序信息
|
||||
*/
|
||||
@PostMapping("/drive/drag")
|
||||
public ResultBean saveDriveDrag(@RequestBody List<JSONObject> driveConfigs) {
|
||||
driveConfigService.saveDriveDrag(driveConfigs);
|
||||
return ResultBean.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新驱动器 ID
|
||||
*
|
||||
* @param updateId
|
||||
* 驱动器原 ID
|
||||
*
|
||||
* @param newId
|
||||
* 驱动器新 ID
|
||||
*/
|
||||
@PostMapping("/drive/updateId")
|
||||
public ResultBean updateDriveId(Integer updateId, Integer newId) {
|
||||
DriveConfig driveConfig = driveConfigService.findById(newId);
|
||||
if (driveConfig != null) {
|
||||
return ResultBean.error("已存在的 ID,请更换 ID 后重试。");
|
||||
}
|
||||
driveConfigService.updateId(updateId, newId);
|
||||
return ResultBean.success();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,7 +18,6 @@ import javax.persistence.Id;
|
||||
public class DriveConfig {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Integer id;
|
||||
|
||||
private Boolean enable;
|
||||
|
||||
@@ -26,8 +26,40 @@ public interface DriverConfigRepository extends JpaRepository<DriveConfig, Integ
|
||||
List<DriveConfig> findByType(StorageTypeEnum type);
|
||||
|
||||
|
||||
/**
|
||||
* 更新驱动器 ID 的排序值
|
||||
*
|
||||
* @param orderNum
|
||||
* 排序值
|
||||
*
|
||||
* @param id
|
||||
* 驱动器 ID
|
||||
*/
|
||||
@Modifying
|
||||
@Query(value="update DRIVER_CONFIG set orderNum = :orderNum where id = :id")
|
||||
void updateSetOrderNumById(Integer orderNum, Integer id);
|
||||
|
||||
|
||||
/**
|
||||
* 查询驱动器最大的 ID
|
||||
*
|
||||
* @return 驱动器最大 ID
|
||||
*/
|
||||
@Query(nativeQuery = true, value = "select max(id) max from DRIVER_CONFIG")
|
||||
Integer selectMaxId();
|
||||
|
||||
|
||||
/**
|
||||
* 更新驱动器 ID
|
||||
*
|
||||
* @param updateId
|
||||
* 驱动器原 ID
|
||||
*
|
||||
* @param newId
|
||||
* 驱动器新 ID
|
||||
*/
|
||||
@Modifying
|
||||
@Query(value="update DRIVER_CONFIG set id = :newId where id = :updateId")
|
||||
void updateId(Integer updateId, Integer newId);
|
||||
|
||||
}
|
||||
@@ -3,6 +3,8 @@ package im.zhaojun.zfile.repository;
|
||||
import im.zhaojun.zfile.model.entity.StorageConfig;
|
||||
import im.zhaojun.zfile.model.enums.StorageTypeEnum;
|
||||
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;
|
||||
@@ -68,4 +70,18 @@ public interface StorageConfigRepository extends JpaRepository<StorageConfig, In
|
||||
*/
|
||||
StorageConfig findByDriveIdAndKey(Integer driveId, String key);
|
||||
|
||||
|
||||
/**
|
||||
* 更新驱动器 ID 对应的参数设置为新的驱动器 ID
|
||||
*
|
||||
* @param updateId
|
||||
* 驱动器原 ID
|
||||
*
|
||||
* @param newId
|
||||
* 驱动器新 ID
|
||||
*/
|
||||
@Modifying
|
||||
@Query(value="update STORAGE_CONFIG set driveId = :newId where driveId = :updateId")
|
||||
void updateDriveId(Integer updateId, Integer newId);
|
||||
|
||||
}
|
||||
@@ -50,6 +50,7 @@ public class DriveConfigService {
|
||||
|
||||
public static final Class<StorageStrategyConfig> STORAGE_STRATEGY_CONFIG_CLASS = StorageStrategyConfig.class;
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有驱动器列表
|
||||
*
|
||||
@@ -74,6 +75,7 @@ public class DriveConfigService {
|
||||
return driverConfigRepository.findAll(example, sort);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定驱动器设置
|
||||
*
|
||||
@@ -127,6 +129,7 @@ public class DriveConfigService {
|
||||
return driveConfigDTO;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定驱动器的存储策略.
|
||||
*
|
||||
@@ -141,12 +144,11 @@ public class DriveConfigService {
|
||||
|
||||
|
||||
/**
|
||||
* 新增或设置驱动器设置
|
||||
* 更新驱动器设置
|
||||
* @param driveConfig 驱动器设置
|
||||
* @return 保存后的驱动器设置
|
||||
*/
|
||||
public DriveConfig saveOrUpdate(DriveConfig driveConfig) {
|
||||
return driverConfigRepository.save(driveConfig);
|
||||
public void updateDriveConfig(DriveConfig driveConfig) {
|
||||
driverConfigRepository.save(driveConfig);
|
||||
}
|
||||
|
||||
|
||||
@@ -165,6 +167,11 @@ public class DriveConfigService {
|
||||
DriveConfig driveConfig = new DriveConfig();
|
||||
StorageTypeEnum storageType = driveConfigDTO.getType();
|
||||
BeanUtils.copyProperties(driveConfigDTO, driveConfig);
|
||||
|
||||
if (driveConfig.getId() == null) {
|
||||
Integer nextId = selectNextId();
|
||||
driveConfig.setId(nextId);
|
||||
}
|
||||
driverConfigRepository.save(driveConfig);
|
||||
|
||||
// 保存存储策略设置.
|
||||
@@ -213,6 +220,38 @@ public class DriveConfigService {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询驱动器最大的 ID
|
||||
*
|
||||
* @return 驱动器最大 ID
|
||||
*/
|
||||
public Integer selectNextId() {
|
||||
Integer maxId = driverConfigRepository.selectMaxId();
|
||||
if (maxId == null) {
|
||||
maxId = 1;
|
||||
}
|
||||
|
||||
return maxId + 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新驱动器 ID
|
||||
*
|
||||
* @param updateId
|
||||
* 驱动器原 ID
|
||||
*
|
||||
* @param newId
|
||||
* 驱动器新 ID
|
||||
*/
|
||||
@Transactional
|
||||
public void updateId(Integer updateId, Integer newId) {
|
||||
driverConfigRepository.updateId(updateId, newId);
|
||||
storageConfigRepository.updateDriveId(updateId, newId);
|
||||
driveContext.updateDriveId(updateId, newId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除指定驱动器设置, 会级联删除其参数设置
|
||||
*
|
||||
@@ -269,24 +308,6 @@ public class DriveConfigService {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新指定驱动器的缓存启用状态
|
||||
*
|
||||
* @param driveId
|
||||
* 驱动器 ID
|
||||
*
|
||||
* @param autoRefreshCache
|
||||
* 是否启用缓存自动刷新
|
||||
*/
|
||||
public void updateAutoRefreshCacheStatus(Integer driveId, Boolean autoRefreshCache) {
|
||||
DriveConfig driveConfig = findById(driveId);
|
||||
if (driveConfig != null) {
|
||||
driveConfig.setAutoRefreshCache(autoRefreshCache);
|
||||
driverConfigRepository.save(driveConfig);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定驱动器的缓存信息
|
||||
* @param driveId
|
||||
|
||||
@@ -144,4 +144,11 @@ public abstract class AbstractBaseFileService implements BaseFileService {
|
||||
*/
|
||||
public abstract FileItemDTO getFileItem(String path);
|
||||
|
||||
public Integer getDriveId() {
|
||||
return driveId;
|
||||
}
|
||||
|
||||
public void setDriveId(Integer driveId) {
|
||||
this.driveId = driveId;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user