Browse Source

标签redis fetch接口

dev_shibei_match
wangchao 5 years ago
parent
commit
8cfdf0b667
  1. 15
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueCategoryTagResultDTO.java
  2. 6
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/GovIssueRedisKeys.java
  3. 48
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java
  4. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java

15
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueCategoryTagResultDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Objects;
/**
* @Description 获取议题的分类标签列表-接口返参
@ -22,4 +23,18 @@ public class IssueCategoryTagResultDTO implements Serializable {
*/
private String name;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
IssueCategoryTagResultDTO that = (IssueCategoryTagResultDTO) o;
return Objects.equals(id, that.id) &&
Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}

6
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/GovIssueRedisKeys.java

@ -1,5 +1,9 @@
package com.epmet.constant;
import com.epmet.utils.ModuleConstants;
import java.util.Optional;
/**
* @Description gov-issue-server模块redis key
* @Author yinzuomei
@ -28,7 +32,7 @@ public class GovIssueRedisKeys {
* @return
*/
public static String getGovernmentTagKey(String customerId,String categoryId){
return rootPrefix.concat("govern:customer:category:").concat(customerId).concat(":").concat(categoryId);
return rootPrefix.concat("govern:customer:category:").concat(customerId).concat(":").concat(Optional.ofNullable(categoryId).orElse(ModuleConstants.ASTERISK));
}
}

48
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java

@ -22,11 +22,22 @@ import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.constant.GovIssueRedisKeys;
import com.epmet.dto.result.IssueCategoryTagResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 议题项目标签字典表
@ -39,7 +50,8 @@ import java.util.List;
public class IssueProjectTagDictRedis {
@Autowired
private RedisUtils redisUtils;
@Autowired
private RedisTemplate redisTemplate;
public void delete(Object[] ids) {
}
@ -65,10 +77,40 @@ public class IssueProjectTagDictRedis {
*/
public List<IssueCategoryTagResultDTO> getTagsOrderByRank(String customerId,List<String> category){
if(StringUtils.isBlank(customerId)) {
log.error("customerId can not be null when obtain govern tags cache");
log.error("customerId can not be null when obtain govern tags.");
return null;
}
Set<String> keys;
if(CollectionUtils.isEmpty(category))
keys = redisUtils.keys(GovIssueRedisKeys.getGovernmentTagKey(customerId,null));
else keys = category.stream().map(key -> {return GovIssueRedisKeys.getGovernmentTagKey(customerId,key);}).collect(Collectors.toSet());
List<Set<ZSetOperations.TypedTuple<Object>>> heatTuple = redisTemplate.executePipelined(new RedisCallback<Set<ZSetOperations.TypedTuple<Object>>>() {
@Nullable
@Override
public Set<ZSetOperations.TypedTuple<Object>> doInRedis(RedisConnection connection) throws DataAccessException {
connection.openPipeline();
keys.forEach(key -> {
connection.zSetCommands().zRangeByScoreWithScores(redisTemplate.getKeySerializer().serialize(key), NumConstant.ZERO_L, (long) (NumConstant.ONE_NEG));
});
return null;
}
},redisTemplate.getValueSerializer());
//热度Map 分数为key
Map<Double,List<IssueCategoryTagResultDTO>> heatMap = new HashMap<>();
if(CollectionUtils.isEmpty(heatTuple)){
}
log.warn("fetch customer govern tag cache blankly , customerId:{} , now begin compensation...",customerId);
//TODO 补偿机制
log.warn("compensation completed !!");
return null;
}
public List<IssueCategoryTagResultDTO> compensate(String customerId,List<String> category){
return null;
}

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java

@ -154,4 +154,6 @@ public interface ModuleConstants {
String ISSUE_ACTION_SHIFT = "转议题";
String ISSUE_ACTION_REJECT = "驳回";
String ASTERISK = "*";
}

Loading…
Cancel
Save