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;
|
|
/**
|
* <p>
|
* 文件管理表 服务实现类
|
* </p>
|
*
|
* @author sunjiawei
|
* @since 2025-05-21
|
*/
|
@Service
|
public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFileManage> implements SysFileService {
|
@Autowired
|
private SysFileMapper sysFileMapper;
|
@Autowired
|
private ServerConfig serverConfig;
|
|
//查询所有数据列表
|
@Override
|
public List<SysFileManage> 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<SysFileManage> sysFileManages);
|
|
//条件查询
|
@Override
|
public List<SysFileManage> queryData(SysFileManageVO vo){
|
LambdaQueryWrapper<SysFileManage> 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<String> deleteBatch(List<String> ids){
|
List<String> failedToDelete = new ArrayList<>();
|
LambdaQueryWrapper<SysFileManage> 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;
|
}
|
|
}
|