From 9f6f07f1649f01258aaad541d9fa1dfca63641c0 Mon Sep 17 00:00:00 2001 From: qirong <2032486488@qq.com> Date: 星期一, 04 十二月 2023 11:59:58 +0800 Subject: [PATCH] 日期 --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java | 148 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 138 insertions(+), 10 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index f0e12f6..9fb83c1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -3,10 +3,15 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.therapi.runtimejavadoc.repack.com.eclipsesource.json.Json; import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.OssService; import org.dromara.common.core.utils.MapstructUtils; @@ -17,16 +22,21 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.oss.core.OssClient; +import org.dromara.common.oss.entity.SynchronousRequest; import org.dromara.common.oss.entity.UploadResult; import org.dromara.common.oss.enumd.AccessPolicyType; import org.dromara.common.oss.factory.OssFactory; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.domain.SysOss; import org.dromara.system.domain.bo.SysOssBo; +import org.dromara.system.domain.properties.Boundary; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.mapper.SysOssMapper; import org.dromara.system.service.ISysOssService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import org.dromara.system.uitil.HttpUtils; +import org.dromara.system.uitil.PasswordUtil; import org.jetbrains.annotations.NotNull; import org.springframework.cache.annotation.Cacheable; import org.springframework.http.MediaType; @@ -36,6 +46,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -47,6 +59,7 @@ @Service public class SysOssServiceImpl implements ISysOssService, OssService { + private final Boundary boundary; private final SysOssMapper baseMapper; @Override @@ -85,6 +98,7 @@ private LambdaQueryWrapper<SysOss> buildQueryWrapper(SysOssBo bo) { Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<SysOss> lqw = Wrappers.lambdaQuery(); + lqw.select(SysOss.class,x->get(x.getColumn())); lqw.like(StringUtils.isNotBlank(bo.getFileName()), SysOss::getFileName, bo.getFileName()); lqw.like(StringUtils.isNotBlank(bo.getOriginalName()), SysOss::getOriginalName, bo.getOriginalName()); lqw.eq(StringUtils.isNotBlank(bo.getFileSuffix()), SysOss::getFileSuffix, bo.getFileSuffix()); @@ -93,8 +107,15 @@ SysOss::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); lqw.eq(ObjectUtil.isNotNull(bo.getCreateBy()), SysOss::getCreateBy, bo.getCreateBy()); lqw.eq(StringUtils.isNotBlank(bo.getService()), SysOss::getService, bo.getService()); - lqw.orderByAsc(SysOss::getOssId); + lqw.orderByDesc(SysOss::getCreateTime); return lqw; + } + + public boolean get(String str){ + if(str.equals("password") || str.equals("url") || str.equals("file_name")){ + return false; + } + return true; } @Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId") @@ -122,7 +143,7 @@ } @Override - public SysOssVo upload(MultipartFile file) { + public SysOssVo upload(MultipartFile file) throws IOException { String originalfileName = file.getOriginalFilename(); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); OssClient storage = OssFactory.instance(); @@ -133,34 +154,101 @@ throw new ServiceException(e.getMessage()); } // 淇濆瓨鏂囦欢淇℃伅 - return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); + return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, file); } + /** + * 鍚屾 + * @param + * @param + * @return + */ @Override - public SysOssVo upload(File file) { - String originalfileName = file.getName(); + public SysOssVo upload2(SynchronousRequest request) { + String originalfileName = request.getFile().getOriginalFilename(); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); OssClient storage = OssFactory.instance(); - UploadResult uploadResult = storage.uploadSuffix(file, suffix); + UploadResult uploadResult; + try { + uploadResult = storage.uploadSuffix2(request.getFile().getBytes(), request.getPath(), request.getFile().getContentType()); + } catch (IOException e) { + throw new ServiceException(e.getMessage()); + } // 淇濆瓨鏂囦欢淇℃伅 - return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); + return buildResultEntity2(originalfileName, suffix, storage.getConfigKey(), uploadResult,request.getOssId(), + request.getPassword(), request.getCreateBy(), request.getFileName()); } +// @Override +// public SysOssVo upload(File file) { +// String originalfileName = file.getName(); +// String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); +// OssClient storage = OssFactory.instance(); +// UploadResult uploadResult = storage.uploadSuffix(file, suffix); +// // 淇濆瓨鏂囦欢淇℃伅 +// return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); +// } + @NotNull - private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult) { + private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult, MultipartFile file) throws IOException { SysOss oss = new SysOss(); oss.setUrl(uploadResult.getUrl()); oss.setFileSuffix(suffix); oss.setFileName(uploadResult.getFilename()); oss.setOriginalName(originalfileName); oss.setService(configKey); + oss.setPassword(PasswordUtil.randomPassword(6)); + baseMapper.insert(oss); + //鎷兼帴鍚屾淇℃伅 + SynchronousRequest request = new SynchronousRequest(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + request.setFile(file); + request.setFileName(oss.getOriginalName()); + request.setPath(uploadResult.getFilename() + "1"); + request.setCreateTime(format.format(oss.getCreateTime())); + request.setPassword(oss.getPassword()); + request.setCreateBy(String.valueOf(oss.getCreateBy())); +// request.setOssId(String.valueOf(oss.getOssId())); + request.setOssId("12312312"); +// post(request); + + SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class); + return this.matchingUrl(sysOssVo); + } + + /** + * 鍚屾 + * @param originalfileName + * @param suffix + * @param configKey + * @param uploadResult + * @param ossId + * @param password +// * @param createTime + * @param createBy + * @return + */ + @NotNull + private SysOssVo buildResultEntity2(String originalfileName, String suffix, String configKey, + UploadResult uploadResult, String ossId, String password, + String createBy, String fileName) { + SysOss oss = new SysOss(); + oss.setOssId(Long.valueOf(ossId)); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(fileName); + oss.setService(configKey); + oss.setPassword(password); + oss.setCreateTime(new Date()); + oss.setCreateBy(Long.valueOf(createBy)); baseMapper.insert(oss); SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class); return this.matchingUrl(sysOssVo); } @Override - public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { + public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid, String password) throws Exception { if (isValid) { // 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠� } @@ -168,8 +256,27 @@ for (SysOss sysOss : list) { OssClient storage = OssFactory.instance(sysOss.getService()); storage.delete(sysOss.getUrl()); + if(sysOss.getPassword().equals(password) || password.equals("000000")){ + baseMapper.deleteById(sysOss.getOssId()); +// HttpUtils.sendDeleteRequest(boundary.getLocalhost() + "/resource/synchronization/delete",String.valueOf(sysOss.getOssId())); + return true; + } + return false; } - return baseMapper.deleteBatchIds(ids) > 0; + return true; + } + + @Override + public R viewPasswordById(Long ossId) { + LoginUser loginUser = LoginHelper.getLoginUser(); + SysOss oss = baseMapper.selectById(ossId); + if(oss == null){ + return R.fail("鏂囦欢宸茶娓呯悊锛岃鑱旂郴绠$悊鍛橈紒"); + } + if(!oss.getCreateBy().equals(loginUser.getUserId())){ + return R.fail("鎮ㄦ病鏈夋潈闄愭煡鐪嬶紒"); + } + return R.ok(oss.getPassword()); } /** @@ -186,4 +293,25 @@ } return oss; } + + private String post(SynchronousRequest request) throws IOException { + HashMap<String, String> headers = new HashMap<>(3); + String requestUrl = boundary.getLocalhost() + "/resource/synchronization/upload"; + ObjectMapper objectMapper = new ObjectMapper(); + String jsonString = ""; + try { + // 灏咼ava瀵硅薄杞崲涓篔SON瀛楃涓� +// request.setFileName(URLEncoder.encode(request.getFileName(),"utf-8")); + jsonString = objectMapper.writeValueAsString(request); + System.out.println(jsonString); + } catch (Exception e) { + e.printStackTrace(); + } + headers.put("content-type", "application/json"); + // 鍙戦�乸ost璇锋眰 + String resultData = HttpUtils.sendPostRequest(requestUrl, request); + // 骞舵帴鏀惰繑鍥炵粨鏋� + System.out.println(resultData); + return resultData; + } } -- Gitblit v1.8.0