feat: 热力图和咖啡因缓存

This commit is contained in:
zlg
2024-07-11 14:56:31 +08:00
parent c3eb827497
commit 4cc8fec868
31 changed files with 1173 additions and 14 deletions

View File

@@ -31,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -371,6 +372,23 @@ public class SchisandraAuthUserController {
}
return Result.ok(JSONObject.parseObject(result));
}
/**
* @description: 获取用户信息
* @param: [userId]
* @return: com.schisandra.auth.common.entity.Result<com.schisandra.auth.application.dto.SchisandraAuthUserDTO>
* @author zlg
* @date: 2024/7/11 9:39
*/
@GetMapping("getUserInfo")
public Result<SchisandraAuthUserDTO> getUserInfo(@RequestParam("userId") Long userId) {
SchisandraAuthUserDTO schisandraAuthUserDTO = SchisandraAuthUserDTOConverter.INSTANCE.convertBOToDTO(schisandraAuthUserDomainService.queryById(userId));
if ( schisandraAuthUserDTO== null) {
return Result.fail("该用户不存在");
}else {
return Result.ok(schisandraAuthUserDTO);
}
}
}

View File

@@ -5,6 +5,9 @@ import com.schisandra.auth.common.entity.Result;
import com.schisandra.auth.domain.bo.SchisandraAuthUserBO;
import com.schisandra.auth.infra.basic.entity.SchisandraAuthUser;
import me.zhyd.oauth.model.AuthUser;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import java.util.HashMap;
@@ -61,6 +64,7 @@ public interface SchisandraAuthUserDomainService {
* @author schisandra
* @date 2024/3/21 23:14
*/
@CachePut(value = "userInfo", key = "#schisandraAuthUserBO.id")
Object update(SchisandraAuthUserBO schisandraAuthUserBO);
/**
@@ -70,6 +74,7 @@ public interface SchisandraAuthUserDomainService {
* @author: landaiqing
* @date: 2024/5/26 17:27
*/
Result insertAuthUserByOauth(AuthUser data, String type);
/**
@@ -79,7 +84,8 @@ public interface SchisandraAuthUserDomainService {
* @author: landaiqing
* @date: 2024/5/26 17:27
*/
SchisandraAuthUserBO queryById(SchisandraAuthUserBO schisandraAuthUserBO);
@Cacheable(value = "userInfo", key = "#userId")
SchisandraAuthUserBO queryById(Long userId);
/**
* @param schisandraAuthUserBO
@@ -95,6 +101,7 @@ public interface SchisandraAuthUserDomainService {
* @description 删除用户(物理)
* @author msz
*/
@CacheEvict(value = "userInfo",key = "id")
Object deleteById(Long id);
SchisandraAuthUser queryByPhone(String phone);

View File

@@ -167,15 +167,15 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
/**
* @param schisandraAuthUserBO
* @param Long
* @return
* @description 查询用户信息
* @author msz
* @date 2024/4/3 22:10
*/
@Override
public SchisandraAuthUserBO queryById(SchisandraAuthUserBO schisandraAuthUserBO) {
SchisandraAuthUser schisandraAuthUser = schisandraAuthUserService.queryById(schisandraAuthUserBO.getId());
public SchisandraAuthUserBO queryById(Long userId) {
SchisandraAuthUser schisandraAuthUser = schisandraAuthUserService.queryById(userId);
SchisandraAuthUserBO schisandraAuthUserBO1 = SchisandraAuthUserBOConverter.INSTANCE.convertEntityToBO(schisandraAuthUser);
return schisandraAuthUserBO1;
}

View File

@@ -3,6 +3,7 @@ package com.schisandra.auth;
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.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -18,6 +19,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@MapperScan("com.schisandra.**.dao")
@EnableFeignClients(basePackages = "com.schisandra")
@EnableTransactionManagement
@EnableCaching
public class AuthApplication {
public static void main(String[] args) {
SpringApplication.run(AuthApplication.class);

View File

@@ -27,6 +27,11 @@ spring:
enabled: true
config:
enabled: true
#caffeine缓存
cache:
type: caffeine
caffeine:
spec: maximumSize=10000,expireAfterAccess=60s
# redis配置
redis:
# Redis数据库索引默认为0
@@ -108,3 +113,4 @@ rocketmq:
producer:
group: schisandra-cloud-storage-auth-group
send-message-timeout: 6000

View File

@@ -5,6 +5,7 @@ import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON;
import com.amazonaws.util.IOUtils;
import com.google.common.base.Preconditions;
import com.google.gson.Gson;
import com.schisandra.oss.application.convert.SchisandraOssMinioDTOConverter;
import com.schisandra.oss.application.dto.SchisandraOssMinioDTO;
import com.schisandra.oss.application.oss.core.minio.MinioOssClient;
@@ -15,6 +16,7 @@ import com.schisandra.oss.domain.bo.SchisandraOssMinioBO;
import com.schisandra.oss.domain.redis.RedisUtil;
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService;
import io.minio.errors.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -27,8 +29,8 @@ import java.io.InputStream;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -48,7 +50,7 @@ public class SchisandraOssMinioController {
private SchisandraOssMinioDomainService schisandraOssMinioDomainService;
@Resource
MinioOssConfiguration minioOssConfiguration;
private final String USER_OSS_PREFIX = "oss:user:heat";
@Resource
RedisUtil redisUtil;
@@ -141,15 +143,30 @@ public class SchisandraOssMinioController {
* @date: 2024/6/26 14:34
*/
@PostMapping("uploadMinioFile")
public Result<OssInfo> uploadMinioFile(@RequestParam String userId, @RequestParam MultipartFile file, @RequestParam String fileName, @RequestParam String bucket) throws IOException {
public Result<Object> 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(userId);
bean.getMinioOssConfig().setBucketName(bucket);
return Result.ok(bean.upLoad(is, fileName, true));
//设置热力图
Date date =new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = dateFormat.format(date);
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,"2024-07-12");
int count=1;
if (redisUtil.exist(key)){
count= Integer.parseInt(redisUtil.get(key));
redisUtil.set(key, String.valueOf(count+1));
}else {
redisUtil.set(key, String.valueOf(1));
}
return Result.ok();
//
// // 获取文件输入流
// InputStream is = file.getInputStream();
// MinioOssClient bean = SpringUtil.getBean(userId);
// bean.getMinioOssConfig().setBucketName(bucket);
// return Result.ok(bean.upLoad(is, fileName, true));
}

View File

@@ -15,6 +15,7 @@ import com.schisandra.oss.application.oss.core.tencent.TencentOssClient;
import com.schisandra.oss.application.oss.core.tencent.TencentOssConfiguration;
import com.schisandra.oss.common.entity.Result;
import com.schisandra.oss.domain.bo.SchisandraOssTencentBO;
import com.schisandra.oss.domain.redis.RedisUtil;
import com.schisandra.oss.domain.service.SchisandraOssTencentDomainService;
import io.minio.errors.*;
import lombok.extern.slf4j.Slf4j;
@@ -26,6 +27,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
@@ -43,7 +46,9 @@ public class SchisandraOssTencentController {
private SchisandraOssTencentDomainService schisandraOssTencentDomainService;
@Resource
TencentOssConfiguration tencentOssConfiguration;
private final String USER_OSS_PREFIX = "oss:user:heat";
@Resource
RedisUtil redisUtil;
@PostMapping("init")
public void initTencent(@RequestParam String userId) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
@@ -154,6 +159,18 @@ public class SchisandraOssTencentController {
TencentOssClient bean = SpringUtil.getBean(userId);
InputStream is = file.getInputStream();
bean.getTencentOssConfig().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));
}else {
redisUtil.set(key, String.valueOf(1));
}
return Result.ok(bean.upLoadParts(is,target,file.getOriginalFilename()));
}
/**

View File

@@ -0,0 +1,156 @@
package com.schisandra.oss.application.controller;
import com.alibaba.fastjson.JSON;
import com.google.common.base.Preconditions;
import com.schisandra.oss.application.convert.SchisandraUserOssDTOConverter;
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.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.List;
/**
* 用户对象存储映射表 controller
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@RestController
@RequestMapping("/oss/user/")
@Slf4j
public class SchisandraUserOssController {
@Resource
private SchisandraUserOssDomainService schisandraUserOssDomainService;
private final String USER_OSS_PREFIX = "oss:user:heat";
@Resource
RedisUtil redisUtil;
/**
* 新增用户对象存储映射表
*/
@RequestMapping("add")
public Result<Boolean> add(@RequestBody SchisandraUserOssDTO schisandraUserOssDTO) {
try {
if (log.isInfoEnabled()) {
log.info("SchisandraUserOssController.add.dto:{}", JSON.toJSONString(schisandraUserOssDTO));
}
Preconditions.checkNotNull(schisandraUserOssDTO.getId(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUserId(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getOssType(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getIcon(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getName(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getBucketCount(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getCreatedBy(), "创建人不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getCreatedTime(), "创建时间不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUpdateBy(), "更新人不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUpdateTime(), "更新时间不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getIsDeleted(), "不能为空");
SchisandraUserOssBO SchisandraUserOssBO = SchisandraUserOssDTOConverter.INSTANCE.convertDTOToBO(schisandraUserOssDTO);
return Result.ok(schisandraUserOssDomainService.add(SchisandraUserOssBO));
} catch (Exception e) {
log.error("SchisandraUserOssController.register.error:{}", e.getMessage(), e);
return Result.fail("新增用户对象存储映射表失败");
}
}
/**
* 修改用户对象存储映射表
*/
@RequestMapping("update")
public Result<Boolean> update(@RequestBody SchisandraUserOssDTO schisandraUserOssDTO) {
try {
if (log.isInfoEnabled()) {
log.info("SchisandraUserOssController.update.dto:{}", JSON.toJSONString(schisandraUserOssDTO));
}
Preconditions.checkNotNull(schisandraUserOssDTO.getId(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUserId(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getOssType(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getIcon(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getName(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getBucketCount(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getCreatedBy(), "创建人不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getCreatedTime(), "创建时间不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUpdateBy(), "更新人不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUpdateTime(), "更新时间不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getIsDeleted(), "不能为空");
SchisandraUserOssBO schisandraUserOssBO = SchisandraUserOssDTOConverter.INSTANCE.convertDTOToBO(schisandraUserOssDTO);
return Result.ok(schisandraUserOssDomainService.update(schisandraUserOssBO));
} catch (Exception e) {
log.error("SchisandraUserOssController.update.error:{}", e.getMessage(), e);
return Result.fail("更新用户对象存储映射表信息失败");
}
}
/**
* 删除用户对象存储映射表
*/
@RequestMapping("delete")
public Result<Boolean> delete(@RequestBody SchisandraUserOssDTO schisandraUserOssDTO) {
try {
if (log.isInfoEnabled()) {
log.info("SchisandraUserOssController.delete.dto:{}", JSON.toJSONString(schisandraUserOssDTO));
}
Preconditions.checkNotNull(schisandraUserOssDTO.getId(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUserId(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getOssType(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getIcon(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getName(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getBucketCount(), "不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getCreatedBy(), "创建人不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getCreatedTime(), "创建时间不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUpdateBy(), "更新人不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getUpdateTime(), "更新时间不能为空");
Preconditions.checkNotNull(schisandraUserOssDTO.getIsDeleted(), "不能为空");
SchisandraUserOssBO schisandraUserOssBO = SchisandraUserOssDTOConverter.INSTANCE.convertDTOToBO(schisandraUserOssDTO);
return Result.ok(schisandraUserOssDomainService.delete(schisandraUserOssBO));
} catch (Exception e) {
log.error("SchisandraUserOssController.delete.error:{}", e.getMessage(), e);
return Result.fail("删除用户对象存储映射表信息失败");
}
}
/**
* @description: 查询用户对象存储映射表
* @param: [userId]
* @return: com.schisandra.oss.common.entity.Result<java.lang.Object>
* @author zlg
* @date: 2024/7/11 14:41
*/
@GetMapping("selectUserOSSType")
public Result<Object> selectUserOSSType(Long userId){
Preconditions.checkNotNull(userId, "不能为空");
List<SchisandraUserOssDTO> SchisandraUserOssDTOList=SchisandraUserOssDTOConverter.INSTANCE.convertBOListToDTOList(schisandraUserOssDomainService.queryOSSByUserId(userId));
if (SchisandraUserOssDTOList.isEmpty()) {
return Result.fail("没有查询到用户对象存储映射表信息");
}else {
return Result.ok(SchisandraUserOssDTOList);
}
}
/**
* @description: 查询用户文件热度
* @param: [userId]
* @return: com.schisandra.oss.common.entity.Result<java.lang.Object>
* @author zlg
* @date: 2024/7/11 14:41
*/
@GetMapping("selectUserFileHeat")
public Result<Object> selectUserFileHeat(@RequestParam Long userId){
Preconditions.checkNotNull(userId, "不能为空");
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId);
return Result.ok(redisUtil.getDataFromDirectory(key));
}
}

View File

@@ -0,0 +1,22 @@
package com.schisandra.oss.application.convert;
import com.schisandra.oss.application.dto.SchisandraFileHeatmapDTO;
import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
/**
* 文件上传热力图表 dto转换器
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Mapper
public interface SchisandraFileHeatmapDTOConverter {
SchisandraFileHeatmapDTOConverter INSTANCE = Mappers.getMapper(SchisandraFileHeatmapDTOConverter.class);
SchisandraFileHeatmapBO convertDTOToBO(SchisandraFileHeatmapDTO schisandraFileHeatmapDTO);
SchisandraFileHeatmapDTO convertBOToDTO(SchisandraFileHeatmapBO schisandraFileHeatmapBO);
}

View File

@@ -0,0 +1,26 @@
package com.schisandra.oss.application.convert;
import com.schisandra.oss.application.dto.SchisandraUserOssDTO;
import com.schisandra.oss.domain.bo.SchisandraUserOssBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 用户对象存储映射表 dto转换器
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Mapper
public interface SchisandraUserOssDTOConverter {
SchisandraUserOssDTOConverter INSTANCE = Mappers.getMapper(SchisandraUserOssDTOConverter.class);
SchisandraUserOssBO convertDTOToBO(SchisandraUserOssDTO schisandraUserOssDTO);
SchisandraUserOssDTO convertBOToDTO(SchisandraUserOssBO schisandraUserOssBO);
List<SchisandraUserOssDTO> convertBOListToDTOList(List<SchisandraUserOssBO> schisandraUserOssBOList);
}

View File

@@ -0,0 +1,38 @@
package com.schisandra.oss.application.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 文件上传热力图表 dto
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Data
public class SchisandraFileHeatmapDTO implements Serializable {
/**
*
*/
private Long id;
/**
*
*/
private Long userId;
/**
*
*/
private Date date;
/**
*
*/
private Long count;
}

View File

@@ -0,0 +1,73 @@
package com.schisandra.oss.application.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 用户对象存储映射表 dto
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Data
public class SchisandraUserOssDTO implements Serializable {
/**
*
*/
private Long id;
/**
*
*/
private Long userId;
/**
*
*/
private String ossType;
/**
*
*/
private String icon;
/**
*
*/
private String name;
/**
*
*/
private Integer bucketCount;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
*
*/
private Integer isDeleted;
}

View File

@@ -0,0 +1,37 @@
package com.schisandra.oss.domain.bo;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 文件上传热力图表 bo
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Data
public class SchisandraFileHeatmapBO implements Serializable {
/**
*
*/
private Long id;
/**
*
*/
private Long userId;
/**
*
*/
private Date date;
/**
*
*/
private Long count;
}

View File

@@ -0,0 +1,72 @@
package com.schisandra.oss.domain.bo;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 用户对象存储映射表 bo
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Data
public class SchisandraUserOssBO implements Serializable {
/**
*
*/
private Long id;
/**
*
*/
private Long userId;
/**
*
*/
private String ossType;
/**
*
*/
private String icon;
/**
*
*/
private String name;
/**
*
*/
private Integer bucketCount;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
*
*/
private Integer isDeleted;
}

View File

@@ -0,0 +1,22 @@
package com.schisandra.oss.domain.convert;
import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO;
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
/**
* 文件上传热力图表 bo转换器
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Mapper
public interface SchisandraFileHeatmapBOConverter {
SchisandraFileHeatmapBOConverter INSTANCE = Mappers.getMapper(SchisandraFileHeatmapBOConverter.class);
SchisandraFileHeatmap convertBOToEntity(SchisandraFileHeatmapBO schisandraFileHeatmapBO);
SchisandraFileHeatmapBO convertEntityToBO(SchisandraFileHeatmap schisandraFileHeatmap);
}

View File

@@ -0,0 +1,26 @@
package com.schisandra.oss.domain.convert;
import com.schisandra.oss.domain.bo.SchisandraUserOssBO;
import com.schisandra.oss.infra.basic.entity.SchisandraUserOss;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 用户对象存储映射表 bo转换器
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Mapper
public interface SchisandraUserOssBOConverter {
SchisandraUserOssBOConverter INSTANCE = Mappers.getMapper(SchisandraUserOssBOConverter.class);
SchisandraUserOss convertBOToEntity(SchisandraUserOssBO schisandraUserOssBO);
SchisandraUserOssBO convertEntityToBO(SchisandraUserOss schisandraUserOss);
List<SchisandraUserOssBO> convertEntityListToBOList(List<SchisandraUserOss> schisandraUserOssList);
}

View File

@@ -1,11 +1,14 @@
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.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -26,6 +29,22 @@ public class RedisUtil {
private static final String CACHE_KEY_SEPARATOR = ":";
public List<Object> getDataFromDirectory(String directory) {
Set<String>keys=redisTemplate.keys(directory+":*");
List<Object> keysList=new ArrayList<>();
keys.forEach(key->{
HashMap<String,String> map=new HashMap<>();
String value= (String) redisTemplate.opsForValue().get(key);
String keyName=key.substring(key.lastIndexOf(":")+1);
map.put(keyName,value);
keysList.add(map);
});
return keysList;
}
/**
* 构建缓存key
*/

View File

@@ -0,0 +1,28 @@
package com.schisandra.oss.domain.service;
import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO;
/**
* 文件上传热力图表 领域service
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
public interface SchisandraFileHeatmapDomainService {
/**
* 添加 文件上传热力图表 信息
*/
Boolean add(SchisandraFileHeatmapBO schisandraFileHeatmapBO);
/**
* 更新 文件上传热力图表 信息
*/
Boolean update(SchisandraFileHeatmapBO schisandraFileHeatmapBO);
/**
* 删除 文件上传热力图表 信息
*/
Boolean delete(SchisandraFileHeatmapBO schisandraFileHeatmapBO);
}

View File

@@ -0,0 +1,31 @@
package com.schisandra.oss.domain.service;
import com.schisandra.oss.domain.bo.SchisandraUserOssBO;
import java.util.List;
/**
* 用户对象存储映射表 领域service
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
public interface SchisandraUserOssDomainService {
/**
* 添加 用户对象存储映射表 信息
*/
Boolean add(SchisandraUserOssBO schisandraUserOssBO);
/**
* 更新 用户对象存储映射表 信息
*/
Boolean update(SchisandraUserOssBO schisandraUserOssBO);
/**
* 删除 用户对象存储映射表 信息
*/
Boolean delete(SchisandraUserOssBO schisandraUserOssBO);
List<SchisandraUserOssBO> queryOSSByUserId(Long userId);
}

View File

@@ -0,0 +1,46 @@
package com.schisandra.oss.domain.service.impl;
import com.schisandra.oss.common.enums.IsDeletedFlagEnum;
import com.schisandra.oss.domain.convert.SchisandraFileHeatmapBOConverter;
import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO;
import com.schisandra.oss.domain.service.SchisandraFileHeatmapDomainService;
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
import com.schisandra.oss.infra.basic.service.SchisandraFileHeatmapService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 文件上传热力图表 领域service实现了
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Service
@Slf4j
public class SchisandraFileHeatmapDomainServiceImpl implements SchisandraFileHeatmapDomainService {
@Resource
private SchisandraFileHeatmapService schisandraFileHeatmapService;
@Override
public Boolean add(SchisandraFileHeatmapBO schisandraFileHeatmapBO) {
SchisandraFileHeatmap schisandraFileHeatmap = SchisandraFileHeatmapBOConverter.INSTANCE.convertBOToEntity(schisandraFileHeatmapBO);
return schisandraFileHeatmapService.insert(schisandraFileHeatmap) > 0;
}
@Override
public Boolean update(SchisandraFileHeatmapBO schisandraFileHeatmapBO) {
SchisandraFileHeatmap schisandraFileHeatmap = SchisandraFileHeatmapBOConverter.INSTANCE.convertBOToEntity(schisandraFileHeatmapBO);
return schisandraFileHeatmapService.update(schisandraFileHeatmap) > 0;
}
@Override
public Boolean delete(SchisandraFileHeatmapBO schisandraFileHeatmapBO) {
SchisandraFileHeatmap schisandraFileHeatmap = new SchisandraFileHeatmap();
schisandraFileHeatmap.setId(schisandraFileHeatmapBO.getId());
return schisandraFileHeatmapService.update(schisandraFileHeatmap) > 0;
}
}

View File

@@ -0,0 +1,57 @@
package com.schisandra.oss.domain.service.impl;
import com.schisandra.oss.common.enums.IsDeletedFlagEnum;
import com.schisandra.oss.domain.convert.SchisandraUserOssBOConverter;
import com.schisandra.oss.domain.bo.SchisandraUserOssBO;
import com.schisandra.oss.domain.service.SchisandraUserOssDomainService;
import com.schisandra.oss.infra.basic.entity.SchisandraUserOss;
import com.schisandra.oss.infra.basic.service.SchisandraUserOssService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
* 用户对象存储映射表 领域service实现了
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Service
@Slf4j
public class SchisandraUserOssDomainServiceImpl implements SchisandraUserOssDomainService {
@Resource
private SchisandraUserOssService schisandraUserOssService;
@Override
public Boolean add(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = SchisandraUserOssBOConverter.INSTANCE.convertBOToEntity(schisandraUserOssBO);
schisandraUserOss.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode());
return schisandraUserOssService.insert(schisandraUserOss) > 0;
}
@Override
public Boolean update(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = SchisandraUserOssBOConverter.INSTANCE.convertBOToEntity(schisandraUserOssBO);
return schisandraUserOssService.update(schisandraUserOss) > 0;
}
@Override
public Boolean delete(SchisandraUserOssBO schisandraUserOssBO) {
SchisandraUserOss schisandraUserOss = new SchisandraUserOss();
schisandraUserOss.setId(schisandraUserOssBO.getId());
schisandraUserOss.setIsDeleted(IsDeletedFlagEnum.DELETED.getCode());
return schisandraUserOssService.update(schisandraUserOss) > 0;
}
@Override
public List<SchisandraUserOssBO> queryOSSByUserId(Long userId) {
List<SchisandraUserOssBO> SchisandraUserOssBOList= SchisandraUserOssBOConverter
.INSTANCE.convertEntityListToBOList(schisandraUserOssService.queryOSSByUserId(userId));
return SchisandraUserOssBOList;
}
}

View File

@@ -0,0 +1,17 @@
package com.schisandra.oss.infra.basic.dao;
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
import com.mybatisflex.core.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 文件上传热力图表 表数据库访问层
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Repository
public interface SchisandraFileHeatmapDao extends BaseMapper<SchisandraFileHeatmap> {
}

View File

@@ -0,0 +1,17 @@
package com.schisandra.oss.infra.basic.dao;
import com.schisandra.oss.infra.basic.entity.SchisandraUserOss;
import com.mybatisflex.core.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 用户对象存储映射表 表数据库访问层
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Repository
public interface SchisandraUserOssDao extends BaseMapper<SchisandraUserOss> {
}

View File

@@ -0,0 +1,47 @@
package com.schisandra.oss.infra.basic.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 文件上传热力图表 实体类
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Data
@Table("schisandra_file_heatmap")
public class SchisandraFileHeatmap implements Serializable {
/**
*
*/
@Id(value = "id", keyType = KeyType.Auto)
private Long id;
/**
*
*/
@Column("user_id")
private Long userId;
/**
*
*/
@Column("date")
private Date date;
/**
*
*/
@Column("count")
private Long count;
}

View File

@@ -0,0 +1,89 @@
package com.schisandra.oss.infra.basic.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 用户对象存储映射表 实体类
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Data
@Table("schisandra_user_oss")
public class SchisandraUserOss implements Serializable {
/**
*
*/
@Id(value = "id", keyType = KeyType.Auto)
private Long id;
/**
*
*/
@Column("user_id")
private Long userId;
/**
*
*/
@Column("oss_type")
private String ossType;
/**
*
*/
@Column("icon")
private String icon;
/**
*
*/
@Column("name")
private String name;
/**
*
*/
@Column("bucket_count")
private Integer bucketCount;
/**
* 创建人
*/
@Column("created_by")
private String createdBy;
/**
* 创建时间
*/
@Column("created_time")
private Date createdTime;
/**
* 更新人
*/
@Column("update_by")
private String updateBy;
/**
* 更新时间
*/
@Column("update_time")
private Date updateTime;
/**
*
*/
@Column("is_deleted")
private Integer isDeleted;
}

View File

@@ -0,0 +1,46 @@
package com.schisandra.oss.infra.basic.service;
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
/**
* 文件上传热力图表 表服务接口
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
public interface SchisandraFileHeatmapService {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
SchisandraFileHeatmap queryById(Long id);
/**
* 新增数据
*
* @param schisandraFileHeatmap 实例对象
* @return 实例对象
*/
int insert(SchisandraFileHeatmap schisandraFileHeatmap);
/**
* 修改数据
*
* @param schisandraFileHeatmap 实例对象
* @return 实例对象
*/
int update(SchisandraFileHeatmap schisandraFileHeatmap);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
}

View File

@@ -0,0 +1,50 @@
package com.schisandra.oss.infra.basic.service;
import com.schisandra.oss.infra.basic.entity.SchisandraUserOss;
import java.util.List;
/**
* 用户对象存储映射表 表服务接口
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
public interface SchisandraUserOssService {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
SchisandraUserOss queryById(Long id);
/**
* 新增数据
*
* @param schisandraUserOss 实例对象
* @return 实例对象
*/
int insert(SchisandraUserOss schisandraUserOss);
/**
* 修改数据
*
* @param schisandraUserOss 实例对象
* @return 实例对象
*/
int update(SchisandraUserOss schisandraUserOss);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
List<SchisandraUserOss> queryOSSByUserId(Long userId);
}

View File

@@ -0,0 +1,67 @@
package com.schisandra.oss.infra.basic.service.impl;
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
import com.schisandra.oss.infra.basic.dao.SchisandraFileHeatmapDao;
import com.schisandra.oss.infra.basic.service.SchisandraFileHeatmapService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 文件上传热力图表 表服务实现类
*
* @author landaiqing
* @since 2024-07-11 10:43:27
*/
@Service("SchisandraFileHeatmapService")
public class SchisandraFileHeatmapServiceImpl implements SchisandraFileHeatmapService {
@Resource
private SchisandraFileHeatmapDao schisandraFileHeatmapDao;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
@Override
public SchisandraFileHeatmap queryById(Long id) {
return this.schisandraFileHeatmapDao.selectOneById(id);
}
/**
* 新增数据
*
* @param schisandraFileHeatmap 实例对象
* @return 实例对象
*/
@Override
public int insert(SchisandraFileHeatmap schisandraFileHeatmap) {
return this.schisandraFileHeatmapDao.insertSelective(schisandraFileHeatmap);
}
/**
* 修改数据
*
* @param schisandraFileHeatmap 实例对象
* @return 实例对象
*/
@Override
public int update(SchisandraFileHeatmap schisandraFileHeatmap) {
return this.schisandraFileHeatmapDao.update(schisandraFileHeatmap,true);
}
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
@Override
public boolean deleteById(Long id) {
return this.schisandraFileHeatmapDao.deleteById(id) > 0;
}
}

View File

@@ -0,0 +1,75 @@
package com.schisandra.oss.infra.basic.service.impl;
import com.mybatisflex.core.query.QueryWrapper;
import com.schisandra.oss.infra.basic.entity.SchisandraUserOss;
import com.schisandra.oss.infra.basic.dao.SchisandraUserOssDao;
import com.schisandra.oss.infra.basic.entity.table.SchisandraUserOssTableDef;
import com.schisandra.oss.infra.basic.service.SchisandraUserOssService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 用户对象存储映射表 表服务实现类
*
* @author landaiqing
* @since 2024-07-10 16:14:33
*/
@Service("SchisandraUserOssService")
public class SchisandraUserOssServiceImpl implements SchisandraUserOssService {
@Resource
private SchisandraUserOssDao schisandraUserOssDao;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
@Override
public SchisandraUserOss queryById(Long id) {
return this.schisandraUserOssDao.selectOneById(id);
}
/**
* 新增数据
*
* @param schisandraUserOss 实例对象
* @return 实例对象
*/
@Override
public int insert(SchisandraUserOss schisandraUserOss) {
return this.schisandraUserOssDao.insertSelective(schisandraUserOss);
}
/**
* 修改数据
*
* @param schisandraUserOss 实例对象
* @return 实例对象
*/
@Override
public int update(SchisandraUserOss schisandraUserOss) {
return this.schisandraUserOssDao.update(schisandraUserOss,true);
}
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
@Override
public boolean deleteById(Long id) {
return this.schisandraUserOssDao.deleteById(id) > 0;
}
@Override
public List<SchisandraUserOss> queryOSSByUserId(Long userId) {
return this.schisandraUserOssDao.selectListByCondition(SchisandraUserOssTableDef.SCHISANDRA_USER_OSS.USER_ID.eq(userId));
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.schisandra.oss.infra.basic.dao.SchisandraFileHeatmapDao">
<resultMap id="BaseResultMap" type="com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="user_id" jdbcType="BIGINT" property="userId"/>
<result column="date" jdbcType="DATE" property="date"/>
<result column="count" jdbcType="BIGINT" property="count"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.schisandra.oss.infra.basic.dao.SchisandraUserOssDao">
<resultMap id="BaseResultMap" type="com.schisandra.oss.infra.basic.entity.SchisandraUserOss">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="user_id" jdbcType="BIGINT" property="userId"/>
<result column="oss_type" jdbcType="VARCHAR" property="ossType"/>
<result column="icon" jdbcType="VARCHAR" property="icon"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="bucket_count" jdbcType="INTEGER" property="bucketCount"/>
<result column="created_by" jdbcType="VARCHAR" property="createdBy"/>
<result column="created_time" jdbcType="TIMESTAMP" property="createdTime"/>
<result column="update_by" jdbcType="VARCHAR" property="updateBy"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="is_deleted" jdbcType="INTEGER" property="isDeleted"/>
</resultMap>
</mapper>