资源文件上传

This commit is contained in:
cjw 2024-06-04 15:43:59 +08:00
parent 505f440af8
commit e095e4e5a2
3 changed files with 37 additions and 6 deletions

View File

@ -1,9 +1,11 @@
package org.dromara.file.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -12,6 +14,8 @@ import org.dromara.file.domain.bo.SysOssResourceBo;
import org.dromara.file.domain.vo.SysOssResourceVo;
import org.dromara.file.mapper.SysOssResourceMapper;
import org.dromara.file.service.ISysOssResourceService;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.stereotype.Service;
import java.util.Collection;
@ -30,6 +34,8 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
private final SysOssResourceMapper baseMapper;
private final ISysOssService ossService;
/**
* 查询请填写功能名称
*
@ -37,7 +43,7 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
* @return 请填写功能名称
*/
@Override
public SysOssResourceVo queryById(Long ossId){
public SysOssResourceVo queryById(Long ossId) {
return baseMapper.selectVoById(ossId);
}
@ -106,8 +112,15 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(SysOssResource entity){
//TODO 做一些数据校验,如唯一约束
private void validEntityBeforeSave(SysOssResource entity) {
SysOssVo ossVo = ossService.getById(entity.getOssId());
if (ObjectUtil.isNull(ossVo)) {
throw new ServiceException("资源文件不存在");
}
SysOssResource ossResource = baseMapper.selectById(entity.getCatalogId());
if (ObjectUtil.isNull(ossResource)) {
throw new ServiceException("资源目录不存在");
}
}
/**
@ -119,7 +132,7 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;

View File

@ -1,9 +1,11 @@
package org.dromara.file.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -12,6 +14,8 @@ import org.dromara.file.domain.bo.SysOssTextbookBo;
import org.dromara.file.domain.vo.SysOssTextbookVo;
import org.dromara.file.mapper.SysOssTextbookMapper;
import org.dromara.file.service.ISysOssTextbookService;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.stereotype.Service;
import java.util.Collection;
@ -30,6 +34,8 @@ public class SysOssTextbookServiceImpl implements ISysOssTextbookService {
private final SysOssTextbookMapper baseMapper;
private final ISysOssService ossService;
/**
* 查询请填写功能名称
*
@ -108,7 +114,14 @@ public class SysOssTextbookServiceImpl implements ISysOssTextbookService {
* 保存前的数据校验
*/
private void validEntityBeforeSave(SysOssTextbook entity){
//TODO 做一些数据校验,如唯一约束
SysOssVo ossVo = ossService.getById(entity.getOssId());
if (ObjectUtil.isNull(ossVo)) {
throw new ServiceException("教材文件不存在");
}
SysOssTextbook ossTextbook = baseMapper.selectById(entity.getCatalogId());
if (ObjectUtil.isNull(ossTextbook)) {
throw new ServiceException("教材目录不存在");
}
}
/**

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.domain.dto.OssDTO;
import org.dromara.common.core.exception.ServiceException;
@ -193,6 +194,11 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
OssClient storage = OssFactory.instance();
UploadResult uploadResult;
try {
String md5 = DigestUtils.md5Hex(file.getInputStream());
Long ossId = this.getIdByMd5(md5);
if(ObjectUtil.isNotNull(ossId)){
return SpringUtils.getAopProxy(this).getById(ossId);
}
uploadResult = storage.uploadSuffix(file.getBytes(), suffix);
} catch (IOException e) {
throw new ServiceException(e.getMessage());
@ -272,7 +278,6 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
* @param md5 文件在数据库中的唯一标识
* @return SysOssVo 对象包含文件信息
*/
@Cacheable(cacheNames = CacheNames.SYS_OSS_IDENTIFIER, key = "#md5")
@Override
public Long getIdByMd5(String md5) {
SysOss sysOss = baseMapper.selectOne(new LambdaQueryWrapper<SysOss>().eq(SysOss::getFileMd5, md5));