package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.framework.config.ServerConfig;
import com.ruoyi.manage.domain.vo.SysFileManageVO;
import com.ruoyi.manage.mapper.SysFileMapper;
import com.ruoyi.manage.domain.SysFileManage;
import com.ruoyi.manage.service.SysFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
/**
*
* 文件管理表 服务实现类
*
*
* @author sunjiawei
* @since 2025-05-21
*/
@Service
public class SysFileServiceImpl extends ServiceImpl implements SysFileService {
@Autowired
private SysFileMapper sysFileMapper;
@Autowired
private ServerConfig serverConfig;
//查询所有数据列表
@Override
public List listAll(){
return sysFileMapper.selectList(null);
}
//单文件上传
@Override
public Integer saveFile(MultipartFile file,SysFileManage sysFileManage) throws Exception{
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
sysFileManage.setFilePath(fileName);
sysFileManage.setSize(FileUploadUtils.getFileSize(file));
return sysFileMapper.insert(sysFileManage);
}
//单独数据插入\
@Override
public Integer saveData(SysFileManage sysFileManage) throws Exception{
return sysFileMapper.insert(sysFileManage);
}
//批量插入
// Integer saveBatch(List sysFileManages);
//条件查询
@Override
public List queryData(SysFileManageVO vo){
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
String name = vo.getName();
String type = vo.getType();
if(name!=null && !name.trim().isEmpty()){
lambdaQueryWrapper.like(SysFileManage::getName,name);
}
if(type!=null){
lambdaQueryWrapper.like(SysFileManage::getType,type);
}
return sysFileMapper.selectList(lambdaQueryWrapper);
}
//批量删除
@Override
public List deleteBatch(List ids){
List failedToDelete = new ArrayList<>();
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
for (String id : ids){
SysFileManage sysFileManage = sysFileMapper.selectById(id);
String name = sysFileManage.getName();
String filePath = sysFileManage.getFilePath();
String realFilePath = filePath.replaceFirst("/profile",RuoYiConfig.getProfile());
String realFileName = name + realFilePath.substring(realFilePath.indexOf("_") + 1);
if(judgmentOS()){
realFilePath = realFilePath.replace("/","\\");
}
boolean success = FileUploadUtils.deleteFile(realFilePath);
if(!success){
failedToDelete.add(realFileName);
}else {
lambdaQueryWrapper.eq(SysFileManage::getFilePath,filePath);
sysFileMapper.delete(lambdaQueryWrapper);
}
}
return failedToDelete;
}
//查询总数
@Override
public Long queryCount(){
return sysFileMapper.selectCount(null);
}
//判断当前系统是否是windows
public boolean judgmentOS(){
boolean flag = false;
String osName = System.getProperty("os.name").toLowerCase();
if(osName.contains("win")){
flag = true;
}
return flag;
}
}