From cb3cc9d9f54530ed54e170785efdfbc565f19a97 Mon Sep 17 00:00:00 2001 From: zlg <482370576@qq.com> Date: Mon, 15 Jul 2024 14:09:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=91=E6=9C=9F=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SchisandraAuthUserDomainServiceImpl.java | 2 +- .../SchisandraOssMinioController.java | 121 ++++++++---- .../SchisandraUserOssController.java | 134 +++++++++++-- .../dto/SchisandraFileHeatmapDTO.java | 2 +- .../oss/core/minio/MinioOssClient.java | 14 +- .../oss/core/minio/MinioOssConfiguration.java | 74 +++++-- .../pom.xml | 11 +- .../oss/job/config/XxlJobConfig.java | 78 ++++++++ .../job/OssHeatMapRedisToMysqlHandler.java | 35 ++++ .../domain/bo/SchisandraFileHeatmapBO.java | 10 +- .../SchisandraFileHeatmapBOConverter.java | 4 + .../oss/domain/redis/RedisUtil.java | 22 ++- .../SchisandraFileHeatmapDomainService.java | 85 ++++++++ .../SchisandraOssMinioDomainService.java | 1 + ...chisandraFileHeatmapDomainServiceImpl.java | 183 ++++++++++++++++++ .../SchisandraOssMinioDomainServiceImpl.java | 7 + .../basic/entity/SchisandraFileHeatmap.java | 13 +- .../service/SchisandraFileHeatmapService.java | 16 ++ .../service/SchisandraOssMinioService.java | 2 +- .../SchisandraFileHeatmapServiceImpl.java | 69 ++++++- .../impl/SchisandraOssMinioServiceImpl.java | 6 + .../mapper/SchisandraFileHeatmapDao.xml | 5 +- .../pom.xml | 5 + .../com/schisandra/oss/OssApplication.java | 2 + .../src/main/resources/application.yml | 13 ++ .../wechat/job/GenerateAccessTokenJob.java | 1 + 26 files changed, 818 insertions(+), 97 deletions(-) create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/config/XxlJobConfig.java create mode 100644 schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/job/OssHeatMapRedisToMysqlHandler.java diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java index f0dd915..af08eae 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java @@ -167,7 +167,7 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo /** - * @param Long + * @param * @return * @description 查询用户信息 * @author msz diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssMinioController.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssMinioController.java index db4a3e3..34774f2 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssMinioController.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssMinioController.java @@ -3,22 +3,22 @@ package com.schisandra.oss.application.controller; import cn.hutool.core.util.ZipUtil; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; -import com.aliyun.oss.internal.OSSConstants; import com.google.common.base.Preconditions; import com.schisandra.oss.application.convert.SchisandraOssMinioDTOConverter; -import com.schisandra.oss.application.convert.SchisandraOssQiniuDTOConverter; import com.schisandra.oss.application.dto.SchisandraOssMinioDTO; import com.schisandra.oss.application.oss.constant.OssConstant; import com.schisandra.oss.application.oss.core.minio.MinioOssClient; import com.schisandra.oss.application.oss.core.minio.MinioOssConfiguration; import com.schisandra.oss.common.entity.Result; -import com.schisandra.oss.domain.bo.SchisandraOssAliBO; import com.schisandra.oss.domain.bo.SchisandraOssMinioBO; -import com.schisandra.oss.domain.bo.SchisandraOssQiniuBO; import com.schisandra.oss.domain.redis.RedisUtil; import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService; import io.minio.errors.*; import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.Caching; +import org.springframework.util.StreamUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -34,6 +34,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.concurrent.TimeUnit; /** * controller @@ -80,39 +81,46 @@ public class SchisandraOssMinioController { * @date: 2024/5/15 13:34 */ @PostMapping("init") - public Result initMinio(@RequestParam String userId,@RequestParam String Id) { + public Result initMinio(@RequestParam String userId, @RequestParam String Id) { if (log.isInfoEnabled()) { log.info("SchisandraOssMinioController.init.userId:{}", userId); } Preconditions.checkNotNull(userId, "用户id不能为空!"); + List list= schisandraOssMinioDomainService.getAllMinioInfoByUserId(Long.valueOf(userId)); + if (list.size() != 0) { + return Result.fail(list); + } + SchisandraOssMinioBO bo = new SchisandraOssMinioBO(); bo.setId(Long.valueOf(Id)); bo.setUserId(Long.valueOf(userId)); bo.setStatus(String.valueOf(true)); - if(schisandraOssMinioDomainService.update(bo)){ + if (schisandraOssMinioDomainService.update(bo)) { return minioOssConfiguration.minioOssClient(userId); - }else{ - return Result.fail("初始化失败"); + } else { + return Result.fail(); } } @PostMapping("shutdown") - public Result shutdownMinio(@RequestParam String userId,@RequestParam String Id){ + public Result shutdownMinio(@RequestParam String userId, @RequestParam String Id) { if (log.isInfoEnabled()) { - log.info("SchisandraOssMinioController.shutdown.userId:{}", JSON.toJSONString(userId)); + log.info("SchisandraOssMinioController.shutdown.userId:{}", userId); } SchisandraOssMinioBO bo = new SchisandraOssMinioBO(); bo.setId(Long.valueOf(Id)); bo.setUserId(Long.valueOf(userId)); bo.setStatus(String.valueOf(false)); - if(schisandraOssMinioDomainService.update(bo)){ - SpringUtil.unregisterBean(OssConstant.OssType.MINIO + userId); - return Result.ok("关闭成功"); - }else{ - return Result.fail("关闭失败"); + if (schisandraOssMinioDomainService.update(bo)) { + SpringUtil.unregisterBean(OssConstant.OssType.MINIO+userId); + return Result.ok(); + } else { + return Result.fail(); } + } + /** * @description: 获取文件目录信息 * @param: [target, userId, dirName] @@ -120,10 +128,11 @@ public class SchisandraOssMinioController { * @author zlg * @date: 2024/6/26 13:55 */ + @Cacheable(value = "MinioListDir", key = "#userId+#bucket+#dirName") @GetMapping("listDir") public Result listMinioInfo(@RequestParam String userId, @RequestParam String dirName, @RequestParam String bucket) throws Exception { Preconditions.checkNotNull(userId, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); return Result.ok(bean.listDir(bucket, dirName)); } @@ -140,9 +149,10 @@ public class SchisandraOssMinioController { Preconditions.checkNotNull(bucket, "不能为空"); Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(listObjectsArgs, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); HashMap list = bean.getTargetDir(listObjectsArgs); + ServletOutputStream output = response.getOutputStream(); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("下载.zip", "UTF-8")); response.setContentType("application/octet-stream"); @@ -151,6 +161,24 @@ public class SchisandraOssMinioController { InputStream[] inputStreams = new InputStream[list.size()]; path = list.keySet().toArray(path); inputStreams = list.values().toArray(inputStreams); + + //记录用户下载 + Date date = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String formattedDate = dateFormat.format(date); + list.keySet().forEach( name -> { + try { + byte[] bytes = StreamUtils.copyToByteArray(list.get(name)); + String key = redisUtil.buildKey(USER_OSS_PREFIX, "download", formattedDate, userId, name); + HashMap map = new HashMap<>(); + map.put("size", bytes.length); + map.put("time",formattedDate); + redisUtil.setNx(key, map, 30L, TimeUnit.DAYS); + } catch (IOException e) { + throw new RuntimeException(e); + } + + }); ZipUtil.zip(output, path, inputStreams); } @@ -161,12 +189,13 @@ public class SchisandraOssMinioController { * @author zlg * @date: 2024/6/26 14:34 */ + @CacheEvict(value = "MinioListDir", key = "#userId+#bucket+#dirName") @PostMapping("deleteFile") public Result deleteMinioFile(@RequestParam String bucket, @RequestParam String userId, @RequestParam String filePath) { Preconditions.checkNotNull(bucket, "不能为空"); Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(filePath, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); bean.delete(filePath); return Result.ok(); @@ -179,30 +208,31 @@ public class SchisandraOssMinioController { * @author zlg * @date: 2024/6/26 14:34 */ + @PostMapping("uploadFile") public Result uploadMinioFile(@RequestParam String userId, @RequestParam MultipartFile file, @RequestParam String fileName, @RequestParam String bucket) throws IOException { Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(fileName, "不能为空"); Preconditions.checkNotNull(bucket, "不能为空"); + // 获取文件输入流 + InputStream is = file.getInputStream(); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); + bean.getMinioOssConfig().setBucketName(bucket); //设置热力图 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = dateFormat.format(date); - String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate); - int count = 1; - if (redisUtil.exist(key)) { - count = Integer.parseInt(redisUtil.get(key)); - redisUtil.set(key, String.valueOf(count + 1)); + String key = redisUtil.buildKey(USER_OSS_PREFIX, "upload", formattedDate, userId, fileName); + HashMap map = new HashMap<>(); + map.put("descreption", "这是一个文件"); + map.put("size", String.valueOf(file.getSize())); + map.put("time",formattedDate); + if (bean.upLoad(is, fileName, true) != null) { + redisUtil.setNx(key, map, 30L, TimeUnit.DAYS); + return Result.ok(); } else { - redisUtil.set(key, String.valueOf(1)); + return Result.fail(); } - - // 获取文件输入流 - InputStream is = file.getInputStream(); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); - bean.getMinioOssConfig().setBucketName(bucket); - return Result.ok(bean.upLoad(is, fileName, true)); - } @@ -213,6 +243,7 @@ public class SchisandraOssMinioController { * @author zlg * @date: 2024/6/27 9:41 */ + @Caching(cacheable = @Cacheable(value = "MinioListDir", key = "#userId+#bucket+#newFileName"), evict = @CacheEvict(value = "MinioListDir", key = "#userId+#bucket+#oldFileName")) @PostMapping("renameFile") public Result renameMinioFile(@RequestParam String userId, @RequestParam String bucket, @RequestParam String oldFileName, @RequestParam String newFileName) throws IOException { @@ -220,7 +251,7 @@ public class SchisandraOssMinioController { Preconditions.checkNotNull(bucket, "不能为空"); Preconditions.checkNotNull(oldFileName, "不能为空"); Preconditions.checkNotNull(newFileName, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); try { bean.rename(oldFileName, newFileName); @@ -237,6 +268,7 @@ public class SchisandraOssMinioController { * @author zlg * @date: 2024/6/27 9:52 */ + @PostMapping("copyFile") public Result copyMinioFile(@RequestParam String userId, @RequestParam String bucket, @RequestParam String oldFilePath, @RequestParam String newFilePath) throws IOException { @@ -244,7 +276,7 @@ public class SchisandraOssMinioController { Preconditions.checkNotNull(bucket, "不能为空"); Preconditions.checkNotNull(oldFilePath, "不能为空"); Preconditions.checkNotNull(newFilePath, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); try { bean.copy(oldFilePath, newFilePath); @@ -266,10 +298,19 @@ public class SchisandraOssMinioController { Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(bucket, "不能为空"); Preconditions.checkNotNull(filePath, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); try { - return Result.ok(bean.getMinioPreviewUrl(filePath)); + Date date = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String formattedDate = dateFormat.format(date); + String key = redisUtil.buildKey(USER_OSS_PREFIX, "previewFile", formattedDate, userId, filePath); + HashMap map = new HashMap<>(); + String url=bean.getMinioPreviewUrl(filePath); + map.put("url", url); + map.put("time", formattedDate); + redisUtil.setNx(key, map, 30L, TimeUnit.DAYS); + return Result.ok(url); } catch (Exception e) { return Result.fail(e.getMessage()); } @@ -288,7 +329,7 @@ public class SchisandraOssMinioController { Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(bucket, "不能为空"); Preconditions.checkNotNull(filePath, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); try { return Result.ok(bean.shareMinioFile(filePath, time)); @@ -307,7 +348,7 @@ public class SchisandraOssMinioController { @PostMapping("seleteBucket") public Result seleteBucket(@RequestParam String userId) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { Preconditions.checkNotNull(userId, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); return Result.ok(bean.selectAllBucket()); } @@ -322,7 +363,7 @@ public class SchisandraOssMinioController { public Result createBucket(@RequestParam String userId, @RequestParam String bucket) { Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(bucket, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); return Result.ok(bean.createBucket(bucket)); } @@ -338,7 +379,7 @@ public class SchisandraOssMinioController { public Result deleteBucket(@RequestParam String userId, @RequestParam String bucket) { Preconditions.checkNotNull(userId, "不能为空"); Preconditions.checkNotNull(bucket, "不能为空"); - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); bean.getMinioOssConfig().setBucketName(bucket); return Result.ok(bean.deleteBucket(bucket)); } @@ -412,7 +453,7 @@ public class SchisandraOssMinioController { @PostMapping("getBaseInfo") public Result getBaseInfo(@RequestParam String fileName, @RequestParam String userId) { - MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO + userId); + MinioOssClient bean = SpringUtil.getBean(OssConstant.OssType.MINIO+userId); if (bean == null) { log.error("容器获取失败!"); return null; diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraUserOssController.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraUserOssController.java index 61be498..6dd09c9 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraUserOssController.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraUserOssController.java @@ -7,13 +7,13 @@ import com.schisandra.oss.application.dto.SchisandraUserOssDTO; import com.schisandra.oss.common.entity.Result; import com.schisandra.oss.domain.bo.SchisandraUserOssBO; import com.schisandra.oss.domain.redis.RedisUtil; +import com.schisandra.oss.domain.service.SchisandraFileHeatmapDomainService; import com.schisandra.oss.domain.service.SchisandraUserOssDomainService; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.util.HashMap; import java.util.List; /** @@ -27,12 +27,20 @@ import java.util.List; @Slf4j public class SchisandraUserOssController { - @Resource - private SchisandraUserOssDomainService schisandraUserOssDomainService; private final String USER_OSS_PREFIX = "oss:user:heat"; @Resource RedisUtil redisUtil; - + @Resource + private SchisandraUserOssDomainService schisandraUserOssDomainService; + /** + * @description: 查询用户文件热度 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/11 14:41 + */ + @Resource + private SchisandraFileHeatmapDomainService schisandraFileHeatmapDomainService; /** * 新增用户对象存储映射表 @@ -123,6 +131,7 @@ public class SchisandraUserOssController { } } + /** * @description: 查询用户对象存储映射表 * @param: [userId] @@ -131,26 +140,125 @@ public class SchisandraUserOssController { * @date: 2024/7/11 14:41 */ @GetMapping("selectUserOSSType") - public Result selectUserOSSType(Long userId){ + public Result selectUserOSSType(Long userId) { Preconditions.checkNotNull(userId, "不能为空"); - List SchisandraUserOssDTOList=SchisandraUserOssDTOConverter.INSTANCE.convertBOListToDTOList(schisandraUserOssDomainService.queryOSSByUserId(userId)); + List SchisandraUserOssDTOList = SchisandraUserOssDTOConverter.INSTANCE.convertBOListToDTOList(schisandraUserOssDomainService.queryOSSByUserId(userId)); if (SchisandraUserOssDTOList.isEmpty()) { return Result.fail("没有查询到用户对象存储映射表信息"); - }else { + } else { return Result.ok(SchisandraUserOssDTOList); } } + /** * @description: 查询用户文件热度 * @param: [userId] * @return: com.schisandra.oss.common.entity.Result * @author zlg - * @date: 2024/7/11 14:41 + * @date: 2024/7/13 11:09 */ @GetMapping("selectUserFileHeat") - public Result selectUserFileHeat(@RequestParam Long userId){ - Preconditions.checkNotNull(userId, "不能为空"); - String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId); - return Result.ok(redisUtil.getDataFromDirectory(key)); + public Result selectUserFileHeat(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + HashMap map = new HashMap<>(); + map.put("download", schisandraFileHeatmapDomainService.selectUserDownloadFileHeatMap(String.valueOf(userId))); + map.put("upload", schisandraFileHeatmapDomainService.selectUserUploadFileHeatMap(String.valueOf(userId))); + return Result.ok(map); } + + /** + * @description: 查询用户上传和下载流量 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/13 11:09 + */ + @GetMapping("selectFileFlow") + public Result selectFileFlow(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + return Result.ok(schisandraFileHeatmapDomainService.selectUserUploadAndDownloadflow(String.valueOf(userId))); + } + + /** + * @description: 查询用户上传和下载次数 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/13 11:09 + */ + @GetMapping("selectFileCount") + public Result selectFileCount(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + return Result.ok(schisandraFileHeatmapDomainService.selectUserUploadAndDownloadCount(String.valueOf(userId))); + } + + /** + * @description: 查询用户最近上传文件 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/13 11:10 + */ + @GetMapping("selectRecentUploadFile") + public Result selectRecentUploadFile(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + return Result.ok(schisandraFileHeatmapDomainService.selectRecentUploadFile(String.valueOf(userId))); + } + + /** + * @description: 查询用户最近下载文件 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/13 11:10 + */ + @GetMapping("selectRecentDownloadFile") + public Result selectRecentDownloadFile(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + return Result.ok(schisandraFileHeatmapDomainService.selectRecentDownloadFile(String.valueOf(userId))); + } + + /** + * @description: 查询用户上传文件每月 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/15 11:05 + */ + @GetMapping("selectUploadFileDiagramPerMonth") + public Result selectFileDiagramPerMonth(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + return Result.ok(schisandraFileHeatmapDomainService.selectFileDiagramPerMonth(String.valueOf(userId),0) + .get("month")); + } + /** + * @description: 查询用户下载文件每月 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/15 11:26 + */ + @GetMapping("selectDownloadFileDiagramPerMonth") + public Result selectDownloadFileDiagramPerMonth(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + return Result.ok(schisandraFileHeatmapDomainService.selectFileDiagramPerMonth(String.valueOf(userId),1) + .get("month")); + } + /** + * @description: 查询用户最近预览文件 + * @param: [userId] + * @return: com.schisandra.oss.common.entity.Result + * @author zlg + * @date: 2024/7/15 11:19 + */ + @GetMapping("selectPreviewFile") + public Result selectShareFileDiagramPerMonth(@RequestParam Long userId) { + Preconditions.checkNotNull(userId, "userId不能为空"); + return Result.ok(schisandraFileHeatmapDomainService.selectRecentPreviewFile(String.valueOf(userId))); + } + @GetMapping("TEST") + public Result TEST() { + return Result.ok(schisandraFileHeatmapDomainService.downloadHeatMapRedisToMysql()); + } + } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/dto/SchisandraFileHeatmapDTO.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/dto/SchisandraFileHeatmapDTO.java index 4a49997..c5b08a6 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/dto/SchisandraFileHeatmapDTO.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/dto/SchisandraFileHeatmapDTO.java @@ -27,7 +27,7 @@ public class SchisandraFileHeatmapDTO implements Serializable { /** * */ - private Date date; + private String date; /** * diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java index 1e6abf9..f002b09 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java @@ -70,6 +70,7 @@ public class MinioOssClient implements StandardOssClient { private MinioOssConfig minioOssConfig; + public MinioOssConfig getMinioOssConfig() { return minioOssConfig; } @@ -150,16 +151,20 @@ public class MinioOssClient implements StandardOssClient { return "success"; } - public HashMap selectAllBucket() throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + public List> selectAllBucket() throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { List list = minioClient.listBuckets(); - HashMap names = new HashMap<>(); + List> list1=new ArrayList<>(); list.forEach(bucket -> { - names.put(bucket.name(), getMinioBucketSize(bucket.name())); + HashMap names = new HashMap<>(); + names.put("name", bucket.name()); + names.put("size",getMinioBucketSize(bucket.name())); + list1.add(names); }); - return names; + return list1; } public HashMap getTargetDir(List listObjectsArgs) throws Exception { + HashMap list = new HashMap<>(); List wrappers=new ArrayList<>(); listObjectsArgs.forEach(args -> { @@ -175,7 +180,6 @@ public class MinioOssClient implements StandardOssClient { } return null; }).param(r.get().objectName()).id(r.get().versionId()).callback((boolean success, String param,WorkResult re)->{ - System.out.println("success:"+success+" param:"); }).build(); wrappers.add(wrapper1); } catch (Exception e) { diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java index d26059e..0c2be58 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssConfiguration.java @@ -2,12 +2,16 @@ package com.schisandra.oss.application.oss.core.minio; import cn.hutool.core.util.ObjectUtil; import cn.hutool.extra.spring.SpringUtil; +import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter; import com.schisandra.oss.application.convert.SchisandraOssMinioDTOConverter; +import com.schisandra.oss.application.dto.SchisandraOssAliDTO; import com.schisandra.oss.application.dto.SchisandraOssMinioDTO; import com.schisandra.oss.application.oss.constant.OssConstant; +import com.schisandra.oss.application.oss.core.StandardOssClient; import com.schisandra.oss.application.oss.core.minio.model.MinioOssClientConfig; import com.schisandra.oss.application.oss.core.minio.model.MinioOssConfig; import com.schisandra.oss.common.entity.Result; +import com.schisandra.oss.domain.bo.SchisandraOssAliBO; import com.schisandra.oss.domain.bo.SchisandraOssMinioBO; import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService; import io.minio.MinioClient; @@ -16,6 +20,8 @@ import okhttp3.OkHttpClient; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; @@ -28,33 +34,67 @@ import java.util.concurrent.TimeUnit; @Slf4j public class MinioOssConfiguration { + @Resource + MinioOssConfiguration minioOssConfiguration; + @Resource private SchisandraOssMinioDomainService schisandraOssMinioDomainService; + public List selectAll(){ + List schisandraOssMinioBO_list = schisandraOssMinioDomainService.selectAll(); + List schisandraOssAliDTO_list = new ArrayList<>(); + for (SchisandraOssMinioBO schisandraOssMinioBO : schisandraOssMinioBO_list ){ + SchisandraOssMinioDTO schisandraOssMinioDTO = SchisandraOssMinioDTOConverter.INSTANCE.convertBOToDTO(schisandraOssMinioBO); + schisandraOssAliDTO_list.add(schisandraOssMinioDTO); + } + return schisandraOssAliDTO_list; + } public Result minioOssClient(String userId) { + try { + SchisandraOssMinioDTO minio = minioOssConfiguration.getSchisandraOssMinioDTO(userId); + if (minio == null) return null; + MinioOssConfig minioOssConfig = new MinioOssConfig(); + minioOssConfig.setBasePath(minio.getBasePath()); + minioOssConfig.setBucketName(minio.getBucketName()); + minioOssConfig.setAccessKey(minio.getAccessKey()); + minioOssConfig.setSecretKey(minio.getSecretKey()); + minioOssConfig.setEndpoint(minio.getEndpoint()); + minioOssConfig.init(); + if (Boolean.parseBoolean(minio.getOpenAdvancedSetup())) { + MinioOssClientConfig minioOssClientConfig = new MinioOssClientConfig(); + minioOssClientConfig.setWriteTimeout(minio.getWriteTimeout()); + minioOssClientConfig.setConnectTimeout(minio.getConnectTimeout()); + minioOssClientConfig.setReadTimeout(minio.getReadTimeout()); + minioOssClientConfig.setFollowSslRedirects(Boolean.parseBoolean(minio.getFollowSslRedirects())); + minioOssClientConfig.setRetryOnConnectionFailure(Boolean.parseBoolean(minio.getRetryOnConnectionFailure())); + minioOssClientConfig.setPingInterval(minio.getPingInterval()); + minioOssClientConfig.setFollowRedirects(Boolean.parseBoolean(minio.getFollowRedirects())); + minioOssClientConfig.setCallTimeout(minio.getCallTimeout()); + minioOssConfig.setClientConfig(minioOssClientConfig); + } + SpringUtil.registerBean(OssConstant.OssType.MINIO+userId,minioOssClient(minioOssConfig)); +// this.minioOssClient1= minioOssClient(minioOssConfig); + return Result.ok(); + } catch (Exception e) { + log.error("MinioOssConfiguration.minioOssClient:{}", e.getMessage(), e); + return Result.fail(); + } + } + + + public SchisandraOssMinioDTO getSchisandraOssMinioDTO(String userId) { CompletableFuture futurePrice = CompletableFuture.supplyAsync(() -> { - SchisandraOssMinioBO schisandraOssMinioBO = schisandraOssMinioDomainService.getMinioConfig(Long.valueOf(userId)); - SchisandraOssMinioDTO schisandraOssMinioDTO = SchisandraOssMinioDTOConverter.INSTANCE.convertBOToDTO(schisandraOssMinioBO); - return schisandraOssMinioDTO; + SchisandraOssMinioBO minioBO = schisandraOssMinioDomainService.getMinioConfig(Long.valueOf(userId)); + SchisandraOssMinioDTO minioDTO = SchisandraOssMinioDTOConverter.INSTANCE.convertBOToDTO(minioBO); + return minioDTO; }); SchisandraOssMinioDTO minio = futurePrice.join(); if (ObjectUtil.isEmpty(minio)) { - log.error("minio oss配置信息获取失败"); - return Result.fail(); - } - MinioOssConfig minioOssConfig = new MinioOssConfig(); - minioOssConfig.setEndpoint(minio.getEndpoint()); - minioOssConfig.setAccessKey(minio.getAccessKey()); - minioOssConfig.setSecretKey(minio.getSecretKey()); - minioOssConfig.setBasePath(minio.getBasePath()); - try { - SpringUtil.registerBean(OssConstant.OssType.MINIO + userId, minioOssClient(minioOssConfig)); - return Result.ok(); - } catch (Exception e) { - e.printStackTrace(); - return Result.fail(); + log.error("minio配置信息获取失败"); + return null; } + return minio; } public MinioOssClient minioOssClient(MinioOssConfig minioOssConfig) { diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/pom.xml b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/pom.xml index aa17f3be..0c28df3 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/pom.xml +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/pom.xml @@ -20,6 +20,15 @@ - + + com.xuxueli + xxl-job-core + 2.4.0 + + + com.schisandra + schisandra-cloud-storage-oss-domain + 1.0-SNAPSHOT + diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/config/XxlJobConfig.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/config/XxlJobConfig.java new file mode 100644 index 0000000..532d097 --- /dev/null +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/config/XxlJobConfig.java @@ -0,0 +1,78 @@ +package com.schisandra.oss.job.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * xxl-job config + * + * @author xuxueli 2017-04-28 + */ +@Configuration +public class XxlJobConfig { + private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); + + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + + @Value("${xxl.job.executor.address}") + private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + logger.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); + xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } + + /** + * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP; + * + * 1、引入依赖: + * + * org.springframework.cloud + * spring-cloud-commons + * ${version} + * + * + * 2、配置文件,或者容器启动变量 + * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.' + * + * 3、获取IP + * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); + */ + + +} \ No newline at end of file diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/job/OssHeatMapRedisToMysqlHandler.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/job/OssHeatMapRedisToMysqlHandler.java new file mode 100644 index 0000000..0eb19d0 --- /dev/null +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-job/src/main/java/com/schisandra/oss/job/job/OssHeatMapRedisToMysqlHandler.java @@ -0,0 +1,35 @@ +package com.schisandra.oss.job.job; + +import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO; +import com.schisandra.oss.domain.service.SchisandraFileHeatmapDomainService; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +@Component +@Slf4j +public class OssHeatMapRedisToMysqlHandler { + @Resource + SchisandraFileHeatmapDomainService schisandraFileHeatmapDomainService; + + @XxlJob("ossHeatMapRedisToMysqlHandler") + public void ossHeatMapRedisToMysqlHandler() throws Exception { + XxlJobHelper.log("ossHeatMapRedisToMysqlHandler.starter"); + if (schisandraFileHeatmapDomainService.uploadHeatMapRedisToMysql()==1 ){ + XxlJobHelper.log("ossHeatMapRedisToMysqlHandler.upload.success"); + log.info("1"); + }else { + XxlJobHelper.log("ossHeatMapRedisToMysqlHandler.fail"); + } + if (schisandraFileHeatmapDomainService.downloadHeatMapRedisToMysql()==1){ + XxlJobHelper.log("ossHeatMapRedisToMysqlHandler.success"); + }else { + XxlJobHelper.log("ossHeatMapRedisToMysqlHandler.download.fail"); + } + + } +} diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/bo/SchisandraFileHeatmapBO.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/bo/SchisandraFileHeatmapBO.java index 9d40a34..64329d1 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/bo/SchisandraFileHeatmapBO.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/bo/SchisandraFileHeatmapBO.java @@ -23,15 +23,15 @@ public class SchisandraFileHeatmapBO implements Serializable { */ private Long userId; - /** - * - */ - private Date date; - /** * */ private Long count; + private Long size; + private Date updateTime; + private Integer type; + + } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/convert/SchisandraFileHeatmapBOConverter.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/convert/SchisandraFileHeatmapBOConverter.java index f67cb41..8293cd4 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/convert/SchisandraFileHeatmapBOConverter.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/convert/SchisandraFileHeatmapBOConverter.java @@ -5,6 +5,8 @@ import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; +import java.util.List; + /** * 文件上传热力图表 bo转换器 * @@ -19,4 +21,6 @@ public interface SchisandraFileHeatmapBOConverter { SchisandraFileHeatmap convertBOToEntity(SchisandraFileHeatmapBO schisandraFileHeatmapBO); SchisandraFileHeatmapBO convertEntityToBO(SchisandraFileHeatmap schisandraFileHeatmap); + List convertBOListToEntityList(List schisandraFileHeatmapBOList); + } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/redis/RedisUtil.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/redis/RedisUtil.java index 1028900..a3bb83d 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/redis/RedisUtil.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/redis/RedisUtil.java @@ -1,15 +1,12 @@ package com.schisandra.oss.domain.redis; -import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Set; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -42,6 +39,18 @@ public class RedisUtil { }); return keysList; } + public List> getDataFromDir(String directory) { + + Setkeys=redisTemplate.keys(directory); + List> keysList=new ArrayList<>(); + keys.forEach(key->{ + HashMap map=new HashMap<>(); + HashMap value= (HashMap) redisTemplate.opsForValue().get(key); + map.put(key,value); + keysList.add(map); + }); + return keysList; + } @@ -133,4 +142,7 @@ public class RedisUtil { } + public void setNx(String key, HashMap map, Long time, TimeUnit timeUnit) { + redisTemplate.opsForValue().set(key, map, time, timeUnit); + } } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraFileHeatmapDomainService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraFileHeatmapDomainService.java index 4c8580a..cddb4c1 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraFileHeatmapDomainService.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraFileHeatmapDomainService.java @@ -2,6 +2,9 @@ package com.schisandra.oss.domain.service; import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO; +import java.util.HashMap; +import java.util.List; + /** * 文件上传热力图表 领域service * @@ -25,4 +28,86 @@ public interface SchisandraFileHeatmapDomainService { */ Boolean delete(SchisandraFileHeatmapBO schisandraFileHeatmapBO); + /** + * @description: 查询用户上传文件热力图 + * @param: [userId] + * @return: java.util.List> + * @author zlg + * @date: 2024/7/13 10:31 + */ + List> selectUserUploadFileHeatMap(String userId); + + /** + * @description: 查询用户下载文件热力图 + * @param: [userId] + * @return: java.util.List> + * @author zlg + * @date: 2024/7/13 10:32 + */ + List> selectUserDownloadFileHeatMap(String userId); + + /** + * @description: 查询用户上传和下载流量 + * @param: [userId] + * @return: java.util.HashMap + * @author zlg + * @date: 2024/7/13 10:32 + */ + HashMap selectUserUploadAndDownloadflow(String userId); + + /** + * @description: 将redis中的文件上传热力图数据同步到mysql中 + * @param: [] + * @return: int + * @author zlg + * @date: 2024/7/13 10:32 + */ + int uploadHeatMapRedisToMysql(); + + /** + * @description: 将redis中的文件下载热力图数据同步到mysql中 + * @param: [] + * @return: int + * @author zlg + * @date: 2024/7/13 10:32 + */ + int downloadHeatMapRedisToMysql(); + + /** + * @description: 查询用户最近上传的文件 + * @param: [userId] + * @return: java.util.List> + * @author zlg + * @date: 2024/7/13 10:32 + */ + List> selectRecentUploadFile(String userId); + + /** + * @description: 查询用户最近下载的文件 + * @param: [userId] + * @return: java.util.List> + * @author zlg + * @date: 2024/7/13 10:32 + */ + List> selectRecentDownloadFile(String userId); + + /** + * @description: 查询用户上传和下载次数 + * @param: [userId] + * @return: java.util.HashMap + * @author zlg + * @date: 2024/7/13 10:33 + */ + HashMap selectUserUploadAndDownloadCount(String userId); + + /** + * @description: 插入文件上传热力图数据 + * @param: [schisandraFileHeatmapBOList] + * @return: int + * @author zlg + * @date: 2024/7/13 10:33 + */ + int insertFileHeatmapBatch(List schisandraFileHeatmapBOList); + HashMap selectFileDiagramPerMonth(String userId,int type); + List> selectRecentPreviewFile(String userId); } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssMinioDomainService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssMinioDomainService.java index c726cc5..f0cca08 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssMinioDomainService.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/SchisandraOssMinioDomainService.java @@ -31,6 +31,7 @@ public interface SchisandraOssMinioDomainService { SchisandraOssMinioBO getMinioConfig(Long userId); + List getAllMinioInfoByUserId(Long userId); List getAllMinioInfo(); List selectAll(); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraFileHeatmapDomainServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraFileHeatmapDomainServiceImpl.java index 6380cd4..32bb73b 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraFileHeatmapDomainServiceImpl.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraFileHeatmapDomainServiceImpl.java @@ -1,6 +1,9 @@ package com.schisandra.oss.domain.service.impl; +import cn.hutool.core.io.unit.DataSizeUtil; +import com.schisandra.oss.domain.convert.SchisandraFileHeatmapBOConverter; import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO; +import com.schisandra.oss.domain.redis.RedisUtil; import com.schisandra.oss.domain.convert.SchisandraFileHeatmapBOConverter; import com.schisandra.oss.domain.service.SchisandraFileHeatmapDomainService; import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap; @@ -9,6 +12,12 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Collectors; + +import static jdk.nashorn.internal.runtime.GlobalFunctions.encodeURIComponent; /** * 文件上传热力图表 领域service实现了 @@ -22,6 +31,9 @@ public class SchisandraFileHeatmapDomainServiceImpl implements SchisandraFileHea @Resource private SchisandraFileHeatmapService schisandraFileHeatmapService; + @Resource + RedisUtil redisUtil; + private final String USER_OSS_PREFIX = "oss:user:heat"; @Override public Boolean add(SchisandraFileHeatmapBO schisandraFileHeatmapBO) { @@ -42,4 +54,175 @@ public class SchisandraFileHeatmapDomainServiceImpl implements SchisandraFileHea return schisandraFileHeatmapService.update(schisandraFileHeatmap) > 0; } + @Override + public List> selectUserUploadFileHeatMap(String userId) { + String dire=redisUtil.buildKey(USER_OSS_PREFIX,"upload","*",userId,"*"); + List> list=redisUtil.getDataFromDir(dire); + Map>> list1=list.stream().collect(Collectors + .groupingBy(obj->String.valueOf(obj.keySet().toArray()[0]).split(":")[4])); + List> mapList =new ArrayList<>(); + list1.keySet().forEach(obj->{ + HashMap map=new HashMap<>(); + map.put(obj,Long.valueOf(list1.get(obj).size())); + mapList.add(map); + }); + return mapList; + } + + @Override + public List> selectUserDownloadFileHeatMap(String userId) { + String dire=redisUtil.buildKey(USER_OSS_PREFIX,"download","*",userId,"*"); + List> list=redisUtil.getDataFromDir(dire); + Map>> list1=list.stream().collect(Collectors + .groupingBy(obj->String.valueOf(obj.keySet().toArray()[0]).split(":")[4])); + List> mapList =new ArrayList<>(); + list1.keySet().forEach(obj->{ + HashMap map=new HashMap<>(); + map.put(obj,Long.valueOf(list1.get(obj).size())); + mapList.add(map); + }); + return mapList; + } + + @Override + public HashMap selectUserUploadAndDownloadflow(String userId) { + Long uploadflow=schisandraFileHeatmapService.selectUserUploadAndDownloadflow(userId,0); + Long downloadflow=schisandraFileHeatmapService.selectUserUploadAndDownloadflow(userId,1); + HashMap map=new HashMap<>(); + map.put("uploadflow", DataSizeUtil.format(uploadflow)); + map.put("downloadflow",DataSizeUtil.format(downloadflow)); + return map; + } + + + @Override + public int uploadHeatMapRedisToMysql() { + Date date =new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String formattedDate = dateFormat.format(date); + String dire=redisUtil.buildKey(USER_OSS_PREFIX,"upload",formattedDate,"*"); + List> list=redisUtil.getDataFromDir(dire); + if (list.isEmpty()){ + return 1; + } + Map>> list1=list.stream().collect(Collectors + .groupingBy(obj->String.valueOf(obj.keySet().toArray()[0]).split(":")[5])); + List schisandraFileHeatmapBOList = new ArrayList<>(); + list1.keySet().forEach(obj->{ + SchisandraFileHeatmapBO schisandraFileHeatmapBO1 = new SchisandraFileHeatmapBO(); + schisandraFileHeatmapBO1.setUserId(Long.valueOf(String.valueOf(obj))); + schisandraFileHeatmapBO1.setCount(Long.valueOf(list1.get(obj).size())); + schisandraFileHeatmapBO1.setType(0); + schisandraFileHeatmapBO1.setSize(0L); + list1.get(obj).forEach(obj1->{ + String key= String.valueOf(obj1.keySet().toArray()[0]); + HashMaptemp= (HashMap) obj1.get(key); + schisandraFileHeatmapBO1.setSize(Long.valueOf(temp.get("size").toString()) + + schisandraFileHeatmapBO1.getSize()); + }); + schisandraFileHeatmapBOList.add(schisandraFileHeatmapBO1); + }); + return insertFileHeatmapBatch(schisandraFileHeatmapBOList); + } + + @Override + public int downloadHeatMapRedisToMysql() { + Date date =new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String formattedDate = dateFormat.format(date); + String dire=redisUtil.buildKey(USER_OSS_PREFIX,"download",formattedDate,"*"); + List> list=redisUtil.getDataFromDir(dire); + if (list.isEmpty()){ + return 1; + } + Map>> list1=list.stream().collect(Collectors + .groupingBy(obj->String.valueOf(obj.keySet().toArray()[0]).split(":")[5])); + List schisandraFileHeatmapBOList = new ArrayList<>(); + list1.keySet().forEach(obj->{ + SchisandraFileHeatmapBO schisandraFileHeatmapBO1 = new SchisandraFileHeatmapBO(); + schisandraFileHeatmapBO1.setUserId(Long.valueOf(String.valueOf(obj))); + schisandraFileHeatmapBO1.setCount(Long.valueOf(list1.get(obj).size())); + schisandraFileHeatmapBO1.setType(1); + schisandraFileHeatmapBO1.setSize(0L); + list1.get(obj).forEach(obj1->{ + String key= String.valueOf(obj1.keySet().toArray()[0]); + HashMaptemp= (HashMap) obj1.get(key); + schisandraFileHeatmapBO1.setSize(Long.valueOf(temp.get("size").toString()) + + schisandraFileHeatmapBO1.getSize()); + }); + schisandraFileHeatmapBOList.add(schisandraFileHeatmapBO1); + }); + return insertFileHeatmapBatch(schisandraFileHeatmapBOList); + } + + @Override + public List> selectRecentUploadFile(String userId) { + String recent=redisUtil.buildKey(USER_OSS_PREFIX,"upload","*",userId,"*"); + List> list=redisUtil.getDataFromDir(recent); + List> list1 = new ArrayList<>(); + list.forEach(obj->{ + HashMap recentFile = new HashMap<>(); + String key= String.valueOf(obj.keySet().toArray()[0]); + String fileName=key.split(":")[6]; + HashMaptemp= (HashMap) obj.get(key); + recentFile.put(fileName,temp); + list1.add(recentFile); + }); + return list1; + } + + @Override + public List> selectRecentDownloadFile(String userId) { + String recent=redisUtil.buildKey(USER_OSS_PREFIX,"download","*",userId,"*"); + List> list=redisUtil.getDataFromDir(recent); + List> list1 = new ArrayList<>(); + list.forEach(obj->{ + HashMap recentFile = new HashMap<>(); + String key= String.valueOf(obj.keySet().toArray()[0]); + String fileName=key.split(":")[6]; + HashMaptemp= (HashMap) obj.get(key); + recentFile.put(fileName,temp); + list1.add(recentFile); + }); + return list1; + } + + @Override + public HashMap selectUserUploadAndDownloadCount(String userId) { + HashMap map = new HashMap<>(); + map.put("upload", schisandraFileHeatmapService.selectUserUploadAndDownloadCount(userId,0)); + map.put("download", schisandraFileHeatmapService.selectUserUploadAndDownloadCount(userId,1)); + return map; + } + + + + @Override + public int insertFileHeatmapBatch(List schisandraFileHeatmapBOList) { + List schisandraFileHeatmapList=SchisandraFileHeatmapBOConverter + .INSTANCE.convertBOListToEntityList(schisandraFileHeatmapBOList); + return schisandraFileHeatmapService.insertFileHeatmapBatch(schisandraFileHeatmapList); + } + + @Override + public HashMap selectFileDiagramPerMonth(String userId,int type) { + return schisandraFileHeatmapService.selectFileDiagramPerMonth(userId, type); + } + @Override + public List> selectRecentPreviewFile(String userId) { + String recent=redisUtil.buildKey(USER_OSS_PREFIX,"previewFile","*",userId,"*"); + List> list=redisUtil.getDataFromDir(recent); + List> list1 = new ArrayList<>(); + list.forEach(obj->{ + HashMap recentFile = new HashMap<>(); + String key= String.valueOf(obj.keySet().toArray()[0]); + String fileName=key.split(":")[6]; + HashMaptemp= (HashMap) obj.get(key); + recentFile.put(fileName,temp); + list1.add(recentFile); + }); + return list1; + } + + } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssMinioDomainServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssMinioDomainServiceImpl.java index 627dc34..6d522ab 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssMinioDomainServiceImpl.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-domain/src/main/java/com/schisandra/oss/domain/service/impl/SchisandraOssMinioDomainServiceImpl.java @@ -79,6 +79,13 @@ public class SchisandraOssMinioDomainServiceImpl implements SchisandraOssMinioDo return schisandraOssMinioBO; } + @Override + public List getAllMinioInfoByUserId(Long userId) { + List schisandraOssMinios = schisandraOssMinioService.getAllMinioInfoByUserId(userId); + List schisandraOssMinioBO = SchisandraOssMinioBOConverter.INSTANCE.convertEntityToBOList(schisandraOssMinios); + return schisandraOssMinioBO; + } + @Override public List getAllMinioInfo() { List allMinioInfo = schisandraOssMinioService.getAllMinioInfo(); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/entity/SchisandraFileHeatmap.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/entity/SchisandraFileHeatmap.java index 33b16f7..656113c 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/entity/SchisandraFileHeatmap.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/entity/SchisandraFileHeatmap.java @@ -31,11 +31,6 @@ public class SchisandraFileHeatmap implements Serializable { @Column("user_id") private Long userId; - /** - * - */ - @Column("date") - private Date date; /** * @@ -43,5 +38,13 @@ public class SchisandraFileHeatmap implements Serializable { @Column("count") private Long count; + @Column("type") + private Integer type; + + @Column(value = "update_time",onUpdateValue = "now()",onInsertValue ="now()" ) + private Date updateTime; + + @Column("size") + private Long size; } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraFileHeatmapService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraFileHeatmapService.java index 5644b8d..1f83099 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraFileHeatmapService.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraFileHeatmapService.java @@ -2,6 +2,9 @@ package com.schisandra.oss.infra.basic.service; import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap; +import java.util.HashMap; +import java.util.List; + /** * 文件上传热力图表 表服务接口 * @@ -42,5 +45,18 @@ public interface SchisandraFileHeatmapService { */ boolean deleteById(Long id); + /** + * @description: 将redis中的热力图数据保存到mysql中 + * @param: [schisandraFileHeatmaps] + * @return: boolean + * @author zlg + * @date: 2024/7/11 16:05 + */ + int insertFileHeatmapBatch(List schisandraFileHeatmaps); + + Long selectUserUploadAndDownloadflow (String userId,int type); + + Long selectUserUploadAndDownloadCount(String userId ,int type); + HashMapselectFileDiagramPerMonth(String userId,int type); } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssMinioService.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssMinioService.java index c839a8a..067249d 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssMinioService.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/SchisandraOssMinioService.java @@ -46,7 +46,7 @@ public interface SchisandraOssMinioService { */ boolean deleteById(Long id); - + List getAllMinioInfoByUserId(Long userId); SchisandraOssMinio getMinioConfig(Long userId); List getAllMinioInfo(); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraFileHeatmapServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraFileHeatmapServiceImpl.java index 923692e..857cb55 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraFileHeatmapServiceImpl.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraFileHeatmapServiceImpl.java @@ -1,11 +1,21 @@ package com.schisandra.oss.infra.basic.service.impl; -import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.core.row.Db; import com.schisandra.oss.infra.basic.dao.SchisandraFileHeatmapDao; +import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap; +import com.schisandra.oss.infra.basic.entity.table.SchisandraFileHeatmapTableDef; import com.schisandra.oss.infra.basic.service.SchisandraFileHeatmapService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import static com.mybatisflex.core.query.QueryMethods.*; +import static io.lettuce.core.protocol.CommandKeyword.DB; /** * 文件上传热力图表 表服务实现类 @@ -49,7 +59,7 @@ public class SchisandraFileHeatmapServiceImpl implements SchisandraFileHeatmapSe */ @Override public int update(SchisandraFileHeatmap schisandraFileHeatmap) { - return this.schisandraFileHeatmapDao.update(schisandraFileHeatmap,true); + return this.schisandraFileHeatmapDao.update(schisandraFileHeatmap, true); } /** @@ -63,5 +73,60 @@ public class SchisandraFileHeatmapServiceImpl implements SchisandraFileHeatmapSe return this.schisandraFileHeatmapDao.deleteById(id) > 0; } + /** + * @description: 将redis中的数据同步到mysql中 + * @param: [schisandraFileHeatmaps] + * @return: boolean + * @author zlg + * @date: 2024/7/11 16:06 + */ + @Override + public int insertFileHeatmapBatch(List schisandraFileHeatmaps) { + return schisandraFileHeatmapDao.insertBatch(schisandraFileHeatmaps); + } + + @Override + public Long selectUserUploadAndDownloadflow(String userId, int type) { + QueryWrapper queryFlow = new QueryWrapper().select(sum(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.SIZE)) + .from(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP) + .where(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.USER_ID.eq(userId)) + .and(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.TYPE.eq(type)); + Long count = schisandraFileHeatmapDao.selectOneByQueryAs(queryFlow, Long.class); + if (count == null) { + return 0L; + } else { + return count; + } + } + + @Override + public Long selectUserUploadAndDownloadCount(String userId, int type) { + QueryWrapper queryFlow = new QueryWrapper().select(sum(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.COUNT)) + .from(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP) + .where(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.USER_ID.eq(userId)) + .and(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.TYPE.eq(type)); + Long count = schisandraFileHeatmapDao.selectOneByQueryAs(queryFlow, Long.class); + if (count == null) { + return 0L; + } else { + return count; + } + } + + @Override + public HashMap selectFileDiagramPerMonth(String userId, int type) { + QueryWrapper queryFlow = new QueryWrapper().select(sum(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.COUNT).as("count"), + dateFormat(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.UPDATE_TIME,"%Y-%m").as("date")) + .from(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP) + .groupBy(dateFormat(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.UPDATE_TIME, "%Y-%m")) + .where(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.USER_ID.eq(userId)) + .and(SchisandraFileHeatmapTableDef.SCHISANDRA_FILE_HEATMAP.TYPE.eq(type)); + + HashMap map = new HashMap<>(); + map.put("month", schisandraFileHeatmapDao.selectRowsByQuery(queryFlow)); + return map; + } + + } diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssMinioServiceImpl.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssMinioServiceImpl.java index b721ba8..b1ce840 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssMinioServiceImpl.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/java/com/schisandra/oss/infra/basic/service/impl/SchisandraOssMinioServiceImpl.java @@ -73,6 +73,12 @@ public class SchisandraOssMinioServiceImpl implements SchisandraOssMinioService return this.schisandraOssMinioDao.deleteById(id) > 0; } + @Override + public List getAllMinioInfoByUserId(Long userId) { + return schisandraOssMinioDao.selectListByCondition(SchisandraOssMinioTableDef.SCHISANDRA_OSS_MINIO.USER_ID.eq(userId) + .and(SchisandraOssMinioTableDef.SCHISANDRA_OSS_MINIO.STATUS.eq("true"))); + } + @Override public SchisandraOssMinio getMinioConfig(Long userId) { diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/resources/mapper/SchisandraFileHeatmapDao.xml b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/resources/mapper/SchisandraFileHeatmapDao.xml index 32e99d0..f914ca6 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/resources/mapper/SchisandraFileHeatmapDao.xml +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-infra/src/main/resources/mapper/SchisandraFileHeatmapDao.xml @@ -5,8 +5,11 @@ - + + + + diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/pom.xml b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/pom.xml index 8658a1a..4676f53 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/pom.xml +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/pom.xml @@ -58,6 +58,11 @@ schisandra-cloud-storage-oss-infra 1.0-SNAPSHOT + + com.schisandra + schisandra-cloud-storage-oss-application-job + 1.0-SNAPSHOT + diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/java/com/schisandra/oss/OssApplication.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/java/com/schisandra/oss/OssApplication.java index 84fa962..42cad30 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/java/com/schisandra/oss/OssApplication.java +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/java/com/schisandra/oss/OssApplication.java @@ -3,6 +3,7 @@ package com.schisandra.oss; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.ComponentScan; /** @@ -14,6 +15,7 @@ import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan("com.schisandra") @MapperScan("com.schisandra.**.dao") +@EnableCaching public class OssApplication { public static void main(String[] args) { SpringApplication.run(OssApplication.class); diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/resources/application.yml b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/resources/application.yml index ea84ab8..2b6a77e 100644 --- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/resources/application.yml +++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-starter/src/main/resources/application.yml @@ -63,3 +63,16 @@ mybatis-flex: mapper-locations: - "classpath*:/mapper/**/*.xml" +# xxl-job配置 +xxl: + job: + admin: + addresses: http://127.0.0.1:8080/xxl-job-admin + accessToken: default_token + executor: + appname: schisandra-cloud-storage-oss + address: + ip: 127.0.0.1 + port: 9999 + logpath: /data/applogs/xxl-job/jobhandler + logretentiondays: 30 \ No newline at end of file diff --git a/schisandra-cloud-storage-wechat/src/main/java/com/schisandra/wechat/job/GenerateAccessTokenJob.java b/schisandra-cloud-storage-wechat/src/main/java/com/schisandra/wechat/job/GenerateAccessTokenJob.java index 27f3f31..d065093 100644 --- a/schisandra-cloud-storage-wechat/src/main/java/com/schisandra/wechat/job/GenerateAccessTokenJob.java +++ b/schisandra-cloud-storage-wechat/src/main/java/com/schisandra/wechat/job/GenerateAccessTokenJob.java @@ -35,4 +35,5 @@ public class GenerateAccessTokenJob { XxlJobHelper.log("generateAccessTokenJobHandler.error"); } } + //ossHeatMapRedisToMysqlHandler }