package com.sandu.ximon.admin.service; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.sandu.common.execption.BusinessException; import com.sandu.common.file.FileUploadDto; import com.sandu.common.file.impl.AliOssFileServiceImpl; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.param.EditFileParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.bo.PlatformFileListBo; import com.sandu.ximon.dao.domain.PlatformFile; import com.sandu.ximon.dao.domain.PlatformFileUser; import com.sandu.ximon.dao.enums.AdministratorEnums; import com.sandu.ximon.dao.mapper.PlatformFileMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.util.List; /** * @author LiuHaoNan * @date 2022/9/14 */ @Slf4j @Service @AllArgsConstructor public class PlatformFileService extends BaseServiceImpl { private final AliOssFileServiceImpl aliOssFileService; private final PlatformFileUserService platformFileUserService; /** * 文件上传 * * @param file * @return */ public boolean addProgramFile(MultipartFile file) { PermissionToCheck(); FileUploadDto fileUploadDto = aliOssFileService.uploadFile(file); PlatformFile platformFile = new PlatformFile(); platformFile.setFileName(fileUploadDto.getFileName()); platformFile.setFileSize(fileUploadDto.getFileSize()); platformFile.setFileUrl(fileUploadDto.getFileUrl()); log.error("超管进行文件上传[ 文件名:" + fileUploadDto.getFileName() + ", 文件大小: " + fileUploadDto.getFileSize() + ", url: " + fileUploadDto.getFileUrl() + "]"); return save(platformFile); } /** * 修改文件名称 * @param param * @return */ public boolean updateFileName(EditFileParam param) { PermissionToCheck(); if (param.getFileId() == null || param.getFileName().isEmpty()) { throw new BusinessException("编辑时参数不能为空!"); } PlatformFile byId = getById(param.getFileId()); if (byId == null) { throw new BusinessException("未找到文件!"); } byId.setFileName(param.getFileName()); return updateById(byId); } /** * 删除文件 * @param param * @return */ public boolean deleteFile(EditFileParam param) { PermissionToCheck(); if (param.getFileIds() == null || param.getFileIds().size() == 0) { throw new BusinessException("删除时参数不能为空!"); } List platformFiles = listByIds(param.getFileIds()); if (platformFiles == null && platformFiles.size() == 0) { throw new BusinessException("未找到文件!"); } return removeByIds(platformFiles); } /** * 平台文件资源列表 * @param vo * @param keyword * @return */ public Object fileList(BaseConditionVO vo, String keyword) { List platformFileListBos; if (AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getUserDetails().getAdministratorType())) { PageHelper.startPage(vo.getPageNo(), vo.getPageSize()); platformFileListBos = baseMapper.fileLiet(keyword, null); } else { PageHelper.startPage(vo.getPageNo(), vo.getPageSize()); platformFileListBos = baseMapper.fileLiet(keyword, SecurityUtils.getUserId()); } return platformFileListBos; } /** * 下载文件 * @param fileId * @return */ public String downFile(Long fileId) { if(!AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getUserDetails().getAdministratorType())){ PlatformFileUser one = platformFileUserService.getOne(Wrappers.lambdaQuery(PlatformFileUser.class) .eq(PlatformFileUser::getUserId, SecurityUtils.getUserId()).eq(PlatformFileUser::getFileId, fileId)); if (one == null) { throw new BusinessException("抱歉,你无权下载 !"); } } PlatformFile byId = getById(fileId); return byId.getFileUrl(); } // public boolean setPermission(){} /** * 权限校验 */ private void PermissionToCheck() { if (!AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getUserDetails().getAdministratorType())) { //超管 throw new BusinessException("非超管不能操作"); } } }