feat: 最近动态
This commit is contained in:
@@ -2,22 +2,25 @@ package com.schisandra.share.application.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.gson.Gson;
|
||||
import com.schisandra.share.application.convert.SchisandraShareCircleDTOConverter;
|
||||
import com.schisandra.share.application.dto.SchisandraShareCircleDTO;
|
||||
import com.schisandra.share.common.entity.Result;
|
||||
import com.schisandra.share.common.redis.RedisUtil;
|
||||
import com.schisandra.share.domain.bo.SchisandraShareCircleBO;
|
||||
import com.schisandra.share.domain.service.SchisandraShareCircleDomainService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.client.producer.SendCallback;
|
||||
import org.apache.rocketmq.client.producer.SendResult;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 分享圈 controller
|
||||
@@ -29,7 +32,9 @@ import java.util.List;
|
||||
@RequestMapping("/share/circle/")
|
||||
@Slf4j
|
||||
public class SchisandraShareCircleController {
|
||||
|
||||
private final String SHARE_USER_RECENT = "share:user:recent:situation";
|
||||
@Resource
|
||||
RedisUtil redisUtil;
|
||||
@Resource
|
||||
private SchisandraShareCircleDomainService schisandraShareCircleDomainService;
|
||||
@Resource
|
||||
@@ -48,7 +53,16 @@ public class SchisandraShareCircleController {
|
||||
Preconditions.checkNotNull(schisandraShareCircleDTO.getIcon(), "图标不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareCircleDTO.getDescription(), "描述不能为空");
|
||||
SchisandraShareCircleBO SchisandraShareCircleBO = SchisandraShareCircleDTOConverter.INSTANCE.convertDTOToBO(schisandraShareCircleDTO);
|
||||
return Result.ok(schisandraShareCircleDomainService.add(SchisandraShareCircleBO));
|
||||
if (schisandraShareCircleDomainService.add(SchisandraShareCircleBO)) {
|
||||
String value = "您最近创建了一个圈子:" + schisandraShareCircleDTO.getName();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(SHARE_USER_RECENT, schisandraShareCircleDTO.getUserId(), formattedDate);
|
||||
redisUtil.setNx(key, value, 30L, TimeUnit.DAYS);
|
||||
return Result.ok();
|
||||
}
|
||||
return Result.fail();
|
||||
} catch (Exception e) {
|
||||
log.error("SchisandraShareCircleController.register.error:{}", e.getMessage(), e);
|
||||
return Result.fail("新增分享圈失败");
|
||||
@@ -59,14 +73,14 @@ public class SchisandraShareCircleController {
|
||||
/**
|
||||
* 分享圈列表返回
|
||||
*/
|
||||
@Cacheable(value = "sharelist",key = "'sharelist'")
|
||||
@Cacheable(value = "sharelist", key = "'sharelist'")
|
||||
@GetMapping("sharelist")
|
||||
public Result<List<SchisandraShareCircleDTO>> getShareList() {
|
||||
try {
|
||||
List<SchisandraShareCircleBO> result = schisandraShareCircleDomainService.queryAll();
|
||||
List<SchisandraShareCircleDTO> schisandraShareCircleDTOS = SchisandraShareCircleDTOConverter.INSTANCE.convertBOToDTOList(result);
|
||||
return Result.ok(schisandraShareCircleDTOS);
|
||||
}catch (Exception e) {
|
||||
} catch (Exception e) {
|
||||
log.error("SchisandraShareCircleController.getShareList.error:{}", e.getMessage(), e);
|
||||
return Result.fail("分享圈列表获取失败");
|
||||
}
|
||||
@@ -119,7 +133,17 @@ public class SchisandraShareCircleController {
|
||||
Preconditions.checkNotNull(schisandraShareCircleDTO.getViews(), "不能为空");
|
||||
|
||||
SchisandraShareCircleBO schisandraShareCircleBO = SchisandraShareCircleDTOConverter.INSTANCE.convertDTOToBO(schisandraShareCircleDTO);
|
||||
return Result.ok(schisandraShareCircleDomainService.delete(schisandraShareCircleBO));
|
||||
|
||||
if (schisandraShareCircleDomainService.delete(schisandraShareCircleBO)) {
|
||||
String value = "您最近删除了一个圈子:" + schisandraShareCircleDTO.getName();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(SHARE_USER_RECENT, schisandraShareCircleDTO.getUserId(), formattedDate);
|
||||
redisUtil.setNx(key, value, 30L, TimeUnit.DAYS);
|
||||
return Result.ok();
|
||||
}
|
||||
return Result.fail();
|
||||
} catch (Exception e) {
|
||||
log.error("SchisandraShareCircleController.delete.error:{}", e.getMessage(), e);
|
||||
return Result.fail("删除分享圈信息失败");
|
||||
|
@@ -8,6 +8,7 @@ import com.schisandra.share.application.convert.SchisandraUserLikesCommentDTOCon
|
||||
import com.schisandra.share.application.dto.SchisandraShareCommentReplyDTO;
|
||||
import com.schisandra.share.application.dto.SchisandraUserLikesCommentDTO;
|
||||
import com.schisandra.share.common.entity.Result;
|
||||
import com.schisandra.share.common.redis.RedisUtil;
|
||||
import com.schisandra.share.common.utils.CaffeineUtil;
|
||||
import com.schisandra.share.domain.bo.SchisandraShareCommentReplyBO;
|
||||
import com.schisandra.share.domain.bo.SchisandraUserLikesCommentBO;
|
||||
@@ -19,8 +20,11 @@ import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
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;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 评论回复表 controller
|
||||
@@ -32,20 +36,16 @@ import java.util.List;
|
||||
@RequestMapping("/share/comment/reply/")
|
||||
@Slf4j
|
||||
public class SchisandraShareCommentReplyController {
|
||||
|
||||
/**
|
||||
* 点赞
|
||||
*
|
||||
* @param Id
|
||||
* @return
|
||||
*/
|
||||
|
||||
private final String SHARE_USER_RECENT = "share:user:recent:situation";
|
||||
@Resource
|
||||
RocketMQTemplate rocketMQTemplate;
|
||||
@Resource
|
||||
CaffeineUtil caffeineUtil;
|
||||
@Resource
|
||||
private SchisandraShareCommentReplyDomainService schisandraShareCommentReplyDomainService;
|
||||
|
||||
@Resource
|
||||
RedisUtil redisUtil;
|
||||
/**
|
||||
* @description: 点赞
|
||||
* @param: [schisandraUserLikesCommentDTO]
|
||||
@@ -218,6 +218,12 @@ public class SchisandraShareCommentReplyController {
|
||||
}
|
||||
}
|
||||
);
|
||||
String value = "您最近发表评论:" + schisandraShareCommentReplyDTO.getContent();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(SHARE_USER_RECENT,schisandraShareCommentReplyDTO.getUserId(), formattedDate);
|
||||
redisUtil.setNx(key, value, 30L, TimeUnit.DAYS);
|
||||
return Result.ok();
|
||||
}
|
||||
return Result.fail();
|
||||
|
@@ -4,17 +4,16 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.gson.Gson;
|
||||
import com.schisandra.share.application.convert.SchisandraShareDetailDTOConverter;
|
||||
import com.schisandra.share.application.convert.SchisandraUserLikesCommentDTOConverter;
|
||||
import com.schisandra.share.application.convert.SchisandraUserLikesDetailDTOConverter;
|
||||
import com.schisandra.share.application.dto.SchisandraShareDetailDTO;
|
||||
import com.schisandra.share.application.dto.SchisandraUserLikesCommentDTO;
|
||||
import com.schisandra.share.application.dto.SchisandraUserLikesDetailDTO;
|
||||
import com.schisandra.share.common.entity.Result;
|
||||
import com.schisandra.share.common.redis.RedisUtil;
|
||||
import com.schisandra.share.common.utils.CaffeineUtil;
|
||||
import com.schisandra.share.domain.bo.SchisandraShareDetailBO;
|
||||
import com.schisandra.share.domain.bo.SchisandraUserLikesCommentBO;
|
||||
import com.schisandra.share.domain.bo.SchisandraUserLikesDetailBO;
|
||||
import com.schisandra.share.domain.service.SchisandraShareDetailDomainService;
|
||||
import feign.form.FormData;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.client.producer.SendCallback;
|
||||
import org.apache.rocketmq.client.producer.SendResult;
|
||||
@@ -23,8 +22,11 @@ import org.springframework.cache.annotation.Cacheable;
|
||||
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;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 分享详情表 controller
|
||||
@@ -37,13 +39,15 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class SchisandraShareDetailController {
|
||||
|
||||
private final String SHARE_USER_RECENT = "share:user:recent:situation";
|
||||
@Resource
|
||||
CaffeineUtil caffeineUtil;
|
||||
@Resource
|
||||
RedisUtil redisUtil;
|
||||
@Resource
|
||||
private SchisandraShareDetailDomainService schisandraShareDetailDomainService;
|
||||
@Resource
|
||||
private RocketMQTemplate rocketMQTemplate;
|
||||
@Resource
|
||||
CaffeineUtil caffeineUtil;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@@ -56,7 +60,7 @@ public class SchisandraShareDetailController {
|
||||
@GetMapping("addlike")
|
||||
public void addLike(@RequestParam SchisandraUserLikesDetailDTO schisandraUserLikesDetailDTO) {
|
||||
Preconditions.checkNotNull(schisandraUserLikesDetailDTO);
|
||||
SchisandraUserLikesDetailBO schisandraUserLikesDetailBO= SchisandraUserLikesDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraUserLikesDetailDTO);
|
||||
SchisandraUserLikesDetailBO schisandraUserLikesDetailBO = SchisandraUserLikesDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraUserLikesDetailDTO);
|
||||
schisandraUserLikesDetailBO.setLike(true);
|
||||
rocketMQTemplate.asyncSend("DetailLikes-topic", schisandraUserLikesDetailBO, new SendCallback() {
|
||||
@Override
|
||||
@@ -73,15 +77,16 @@ public class SchisandraShareDetailController {
|
||||
}
|
||||
|
||||
@GetMapping("dellike")
|
||||
public void delLike( @RequestParam SchisandraUserLikesDetailDTO schisandraUserLikesDetailDTO) {
|
||||
public void delLike(@RequestParam SchisandraUserLikesDetailDTO schisandraUserLikesDetailDTO) {
|
||||
Preconditions.checkNotNull(schisandraUserLikesDetailDTO);
|
||||
SchisandraUserLikesDetailBO schisandraUserLikesDetailBO= SchisandraUserLikesDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraUserLikesDetailDTO);
|
||||
SchisandraUserLikesDetailBO schisandraUserLikesDetailBO = SchisandraUserLikesDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraUserLikesDetailDTO);
|
||||
schisandraUserLikesDetailBO.setLike(false);
|
||||
rocketMQTemplate.asyncSend("DetailLikes-topic", schisandraUserLikesDetailBO, new SendCallback() {
|
||||
@Override
|
||||
public void onSuccess(SendResult sendResult) {
|
||||
System.out.println(sendResult);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(Throwable e) {
|
||||
e.printStackTrace();
|
||||
@@ -105,6 +110,7 @@ public class SchisandraShareDetailController {
|
||||
return Result.fail("获取评论数量失败!!!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的分享
|
||||
*/
|
||||
@@ -112,7 +118,7 @@ public class SchisandraShareDetailController {
|
||||
public Result mydetail(@RequestParam("userId") String userId) {
|
||||
List<SchisandraShareDetailBO> result = (List<SchisandraShareDetailBO>) caffeineUtil
|
||||
.caffeineBuild().getIfPresent("mydetail" + userId);
|
||||
if(result == null) {
|
||||
if (result == null) {
|
||||
result = schisandraShareDetailDomainService.mydetail(userId);
|
||||
caffeineUtil.caffeineBuild().put("list" + userId, result);
|
||||
return Result.ok(SchisandraShareDetailDTOConverter.INSTANCE.convertBOToDTOList(result));
|
||||
@@ -126,37 +132,44 @@ public class SchisandraShareDetailController {
|
||||
* @param schisandraShareDetailDTO
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("add_detail")
|
||||
public Result addDetail(@RequestBody SchisandraShareDetailDTO schisandraShareDetailDTO) {
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getTitle(),"标题不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getIcon(),"图标不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getDescription(),"摘要不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getCircleId(),"摘要不能为空");
|
||||
caffeineUtil.caffeineBuild().invalidate("list" + schisandraShareDetailDTO.getCircleId());
|
||||
caffeineUtil.caffeineBuild().invalidate("mydetail" + schisandraShareDetailDTO.getUserId());
|
||||
SchisandraShareDetailBO schisandraShareDetailBO = SchisandraShareDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraShareDetailDTO);
|
||||
if (schisandraShareDetailDomainService.addDetail(schisandraShareDetailBO)){
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("Id", schisandraShareDetailDTO.getCircleId());
|
||||
map.put("isCount", true);
|
||||
Gson gson = new Gson();
|
||||
String message = gson.toJson(map);
|
||||
rocketMQTemplate.asyncSend("CircleCounts-topic", message, new SendCallback() {
|
||||
@Override
|
||||
public void onSuccess(SendResult sendResult) {
|
||||
System.out.println(sendResult);
|
||||
}
|
||||
@Override
|
||||
public void onException(Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
);
|
||||
return Result.ok();
|
||||
}
|
||||
return Result.fail();
|
||||
@PostMapping("add_detail")
|
||||
public Result addDetail(@RequestBody SchisandraShareDetailDTO schisandraShareDetailDTO) {
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getTitle(), "标题不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getIcon(), "图标不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getDescription(), "摘要不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getCircleId(), "摘要不能为空");
|
||||
caffeineUtil.caffeineBuild().invalidate("list" + schisandraShareDetailDTO.getCircleId());
|
||||
caffeineUtil.caffeineBuild().invalidate("mydetail" + schisandraShareDetailDTO.getUserId());
|
||||
SchisandraShareDetailBO schisandraShareDetailBO = SchisandraShareDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraShareDetailDTO);
|
||||
if (schisandraShareDetailDomainService.addDetail(schisandraShareDetailBO)) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("Id", schisandraShareDetailDTO.getCircleId());
|
||||
map.put("isCount", true);
|
||||
Gson gson = new Gson();
|
||||
String message = gson.toJson(map);
|
||||
rocketMQTemplate.asyncSend("CircleCounts-topic", message, new SendCallback() {
|
||||
@Override
|
||||
public void onSuccess(SendResult sendResult) {
|
||||
System.out.println(sendResult);
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void onException(Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
);
|
||||
String value="您最近创建了一个分享:"+schisandraShareDetailDTO.getTitle();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(SHARE_USER_RECENT, schisandraShareDetailDTO.getUserId(),formattedDate);
|
||||
redisUtil.setNx(key, value, 30L, TimeUnit.DAYS);
|
||||
return Result.ok();
|
||||
}
|
||||
return Result.fail();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -177,6 +190,7 @@ public class SchisandraShareDetailController {
|
||||
public void onSuccess(SendResult sendResult) {
|
||||
System.out.println(sendResult);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(Throwable e) {
|
||||
e.printStackTrace();
|
||||
@@ -201,7 +215,7 @@ public class SchisandraShareDetailController {
|
||||
public Result<List<SchisandraShareDetailDTO>> selectCircleList(@RequestParam("circleId") String circleId) {
|
||||
List<SchisandraShareDetailBO> result = (List<SchisandraShareDetailBO>) caffeineUtil
|
||||
.caffeineBuild().getIfPresent("list" + circleId);
|
||||
if(result == null){
|
||||
if (result == null) {
|
||||
result = schisandraShareDetailDomainService.list(circleId);
|
||||
caffeineUtil.caffeineBuild().put("list" + circleId, result);
|
||||
return Result.ok(SchisandraShareDetailDTOConverter.INSTANCE.convertBOToDTOList(result));
|
||||
@@ -216,6 +230,7 @@ public class SchisandraShareDetailController {
|
||||
public void onSuccess(SendResult sendResult) {
|
||||
System.out.println(sendResult);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(Throwable e) {
|
||||
e.printStackTrace();
|
||||
@@ -242,7 +257,7 @@ public class SchisandraShareDetailController {
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getDescription(), "描述不能为空");
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getContent(), "内容不能为空");
|
||||
SchisandraShareDetailBO SchisandraShareDetailBO = SchisandraShareDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraShareDetailDTO);
|
||||
if(schisandraShareDetailDomainService.add(SchisandraShareDetailBO)){
|
||||
if (schisandraShareDetailDomainService.add(SchisandraShareDetailBO)) {
|
||||
caffeineUtil.caffeineBuild().invalidate("list" + schisandraShareDetailDTO.getCircleId());
|
||||
caffeineUtil.caffeineBuild().invalidate("mydetail" + schisandraShareDetailDTO.getUserId());
|
||||
}
|
||||
@@ -301,7 +316,7 @@ public class SchisandraShareDetailController {
|
||||
}
|
||||
Preconditions.checkNotNull(schisandraShareDetailDTO.getId(), "详情id不能为空");
|
||||
SchisandraShareDetailBO schisandraShareDetailBO = SchisandraShareDetailDTOConverter.INSTANCE.convertDTOToBO(schisandraShareDetailDTO);
|
||||
if (schisandraShareDetailDomainService.delete(schisandraShareDetailBO)){
|
||||
if (schisandraShareDetailDomainService.delete(schisandraShareDetailBO)) {
|
||||
caffeineUtil.caffeineBuild().invalidate("list" + schisandraShareDetailDTO.getCircleId());
|
||||
caffeineUtil.caffeineBuild().invalidate("mydetail" + schisandraShareDetailDTO.getUserId());
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
@@ -314,12 +329,19 @@ public class SchisandraShareDetailController {
|
||||
public void onSuccess(SendResult sendResult) {
|
||||
System.out.println(sendResult);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
);
|
||||
String value="您最近删除了一个分享:"+schisandraShareDetailDTO.getTitle();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(SHARE_USER_RECENT, schisandraShareDetailDTO.getUserId(),formattedDate);
|
||||
redisUtil.setNx(key, value, 30L, TimeUnit.DAYS);
|
||||
return Result.ok();
|
||||
}
|
||||
return Result.fail();
|
||||
|
@@ -0,0 +1,46 @@
|
||||
package com.schisandra.share.common.redis;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
/**
|
||||
* Redis的config处理
|
||||
*
|
||||
* @author: schisandra
|
||||
*/
|
||||
@Configuration
|
||||
public class RedisConfig {
|
||||
|
||||
@Bean
|
||||
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
||||
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
|
||||
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
||||
redisTemplate.setKeySerializer(redisSerializer);
|
||||
redisTemplate.setHashKeySerializer(redisSerializer);
|
||||
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer());
|
||||
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer());
|
||||
return redisTemplate;
|
||||
}
|
||||
|
||||
private Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() {
|
||||
Jackson2JsonRedisSerializer<Object> jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
||||
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
|
||||
jsonRedisSerializer.setObjectMapper(objectMapper);
|
||||
return jsonRedisSerializer;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,150 @@
|
||||
package com.schisandra.share.common.redis;
|
||||
|
||||
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;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* RedisUtil工具类
|
||||
*
|
||||
* @author: schisandra
|
||||
* @date: 2024/2/19
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class RedisUtil {
|
||||
|
||||
@Resource
|
||||
private RedisTemplate redisTemplate;
|
||||
|
||||
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;
|
||||
}
|
||||
public List<HashMap<Object,Object>> getDataFromDir(String directory) {
|
||||
|
||||
Set<String>keys=redisTemplate.keys(directory);
|
||||
List<HashMap<Object,Object>> keysList=new ArrayList<>();
|
||||
keys.forEach(key->{
|
||||
HashMap<Object,Object> map=new HashMap<>();
|
||||
HashMap<Object,Object> value= (HashMap<Object, Object>) redisTemplate.opsForValue().get(key);
|
||||
map.put(key,value);
|
||||
keysList.add(map);
|
||||
});
|
||||
return keysList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 构建缓存key
|
||||
*/
|
||||
public String buildKey(String... strObjs) {
|
||||
return Stream.of(strObjs).collect(Collectors.joining(CACHE_KEY_SEPARATOR));
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否存在key
|
||||
*/
|
||||
public boolean exist(String key) {
|
||||
return redisTemplate.hasKey(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除key
|
||||
*/
|
||||
public boolean del(String key) {
|
||||
return redisTemplate.delete(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* set(不带过期)
|
||||
*/
|
||||
public void set(String key, String value) {
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
}
|
||||
|
||||
public void setJson(String key, Object value) {
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
}
|
||||
|
||||
public HashMap<String, String> getJson(String key) {
|
||||
return (HashMap<String, String>) redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* set(带过期)
|
||||
*/
|
||||
public boolean setNx(String key, String value, Long time, TimeUnit timeUnit) {
|
||||
return redisTemplate.opsForValue().setIfAbsent(key, value, time, timeUnit);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取string类型缓存
|
||||
*/
|
||||
public String get(String key) {
|
||||
return (String) redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
public Boolean zAdd(String key, String value, Long score) {
|
||||
return redisTemplate.opsForZSet().add(key, value, Double.valueOf(String.valueOf(score)));
|
||||
}
|
||||
|
||||
public Long countZset(String key) {
|
||||
return redisTemplate.opsForZSet().size(key);
|
||||
}
|
||||
|
||||
public Set<String> rangeZset(String key, long start, long end) {
|
||||
return redisTemplate.opsForZSet().range(key, start, end);
|
||||
}
|
||||
|
||||
public Long removeZset(String key, Object value) {
|
||||
return redisTemplate.opsForZSet().remove(key, value);
|
||||
}
|
||||
|
||||
public void removeZsetList(String key, Set<String> value) {
|
||||
value.stream().forEach((val) -> redisTemplate.opsForZSet().remove(key, val));
|
||||
}
|
||||
|
||||
public Double score(String key, Object value) {
|
||||
return redisTemplate.opsForZSet().score(key, value);
|
||||
}
|
||||
|
||||
public Set<String> rangeByScore(String key, long start, long end) {
|
||||
return redisTemplate.opsForZSet().rangeByScore(key, Double.valueOf(String.valueOf(start)), Double.valueOf(String.valueOf(end)));
|
||||
}
|
||||
|
||||
public Object addScore(String key, Object obj, double score) {
|
||||
return redisTemplate.opsForZSet().incrementScore(key, obj, score);
|
||||
}
|
||||
|
||||
public Object rank(String key, Object obj) {
|
||||
return redisTemplate.opsForZSet().rank(key, obj);
|
||||
}
|
||||
|
||||
|
||||
public void setNx(String key, HashMap<Object, Object> map, Long time, TimeUnit timeUnit) {
|
||||
redisTemplate.opsForValue().set(key, map, time, timeUnit);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user