Pārlūkot izejas kodu

add redis

master
xhxu pirms 3 gadiem
vecāks
revīzija
1315e98f12
4 mainītis faili ar 224 papildinājumiem un 4 dzēšanām
  1. +3
    -0
      mallinkService/src/main/java/com/iformall/utils/Constant.java
  2. +165
    -0
      mallinkService/src/main/java/com/iformall/utils/RedisCacheUtils.java
  3. +28
    -0
      mlToutiaoOpen/src/main/java/com/iformall/config/RedisConfig.java
  4. +28
    -4
      mlToutiaoOpen/src/main/java/com/iformall/controller/TtMerchantPoiController.java

+ 3
- 0
mallinkService/src/main/java/com/iformall/utils/Constant.java Parādīt failu

@@ -32,4 +32,7 @@ public class Constant {

public static final String importMemPrev = "importmem:";
public static final String adminPage = "https://admin.malls.iformall.com";

/// REDIS key Prev
public static final String tt_cuser_customer_service_url_key = "cuser:serviceurl:";
}

+ 165
- 0
mallinkService/src/main/java/com/iformall/utils/RedisCacheUtils.java Parādīt failu

@@ -0,0 +1,165 @@
package com.iformall.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

public class RedisCacheUtils {

private static <T> T parseJson(String json,Class<T> clazz) {
return JSON.parseObject(json,clazz);
}
private static <T> List<T> parseListJson(String json,Class<T> clazz) {
return JSON.parseObject(json,new TypeReference<List<T>>(clazz) {});
}
private static <T> Set<T> parseSetJson(String json,Class<T> clazz) {
return JSON.parseObject(json,new TypeReference<Set<T>>(clazz) {});
}
public static void cache(RedisTemplate<String, Object> template,String key, Object value,long seconds) {
ValueOperations<String, Object> operations = template.opsForValue();
if (seconds > 0) {
operations.set(key, value, seconds,TimeUnit.SECONDS);
}else {
operations.set(key, value);
}
}
public static <T> T getCacheObject(RedisTemplate<String, Object> template,String key,Class<T> clazz) {
if (template.hasKey(key)) {
ValueOperations<String, Object> operations = template.opsForValue();
Object o = operations.get(key);
if (o instanceof String) {
return parseJson((String)o, clazz);
}else {
return parseJson(JSON.toJSONString(o), clazz);
}
}
return null;
}
public static <T> List<T> getCacheListObject(RedisTemplate<String, Object> template,String key,Class<T> clazz) {
if (template.hasKey(key)) {
ValueOperations<String, Object> operations = template.opsForValue();
Object o = operations.get(key);
if (o instanceof String) {
return parseListJson((String)o, clazz);
}else {
return parseListJson(JSON.toJSONString(o), clazz);
}
}
return null;
}
public static <T> Set<T> getCacheSetObject(RedisTemplate<String, Object> template,String key,Class<T> clazz) {
if (template.hasKey(key)) {
ValueOperations<String, Object> operations = template.opsForValue();
Object o = operations.get(key);
if (o instanceof String) {
return parseSetJson((String)o, clazz);
}else {
return parseSetJson(JSON.toJSONString(o), clazz);
}
}
return null;
}
public static Map getCacheMap(RedisTemplate<String, Object> template,String key) {
return getCacheObject(template,key,Map.class);
}
public static String getCacheString(RedisTemplate<String, Object> template,String key) {
if (template.hasKey(key)) {
ValueOperations<String, Object> operations = template.opsForValue();
Object o = operations.get(key);
if( o instanceof String) {
return (String) o;
}
return JSON.toJSONString(o);
}
return null;
}
public static Long getCacheLong(RedisTemplate<String, Object> template,String key) {
if (template.hasKey(key)) {
ValueOperations<String, Object> operations = template.opsForValue();
Object o = operations.get(key);
if (o instanceof String) {
Long.parseLong((String)o);
}
return Long.parseLong(o.toString());
}
return null;
}
public static Integer getCacheInteger(RedisTemplate<String, Object> template,String key) {
if (template.hasKey(key)) {
ValueOperations<String, Object> operations = template.opsForValue();
Object o = operations.get(key);
if (o instanceof String) {
return new Integer((String)o);
}
return new Integer(o.toString());
}
return null;
}
public static <T> T getFieldObject(Object o,String property,Class<T> clazz) {
String json = JSON.toJSONString(o);
JSONObject jsonObject = JSON.parseObject(json);
Object p = jsonObject.get(property);
if (null != p ) {
if (p instanceof String) {
return parseJson((String)p, clazz);
}
return parseJson(JSON.toJSONString(p), clazz);
}
return null;
}
public static <T> List<T> getFieldListObject(Object o,String property,Class<T> clazz) {
String json = JSON.toJSONString(o);
JSONObject jsonObject = JSON.parseObject(json);
Object p = jsonObject.get(property);
if (null != p ) {
if (p instanceof String) {
return parseListJson((String)p, clazz);
}
return parseListJson(JSON.toJSONString(p), clazz);
}
return null;
}
public static <T> Set<T> getFieldSetObject(Object o,String property,Class<T> clazz) {
String json = JSON.toJSONString(o);
JSONObject jsonObject = JSON.parseObject(json);
Object p = jsonObject.get(property);
if (null != p ) {
if (p instanceof String) {
return parseSetJson((String)p, clazz);
}
return parseSetJson(JSON.toJSONString(p), clazz);
}
return null;
}
public static Map getFieldMapObject(Object o,String property) {
return getFieldObject(o,property,Map.class);
}
public static void removeCache(RedisTemplate<String, Object> template,String key) {
if (template.hasKey(key)) {
template.delete(key);
}
}
}

+ 28
- 0
mlToutiaoOpen/src/main/java/com/iformall/config/RedisConfig.java Parādīt failu

@@ -1,5 +1,9 @@
package com.iformall.config;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.CacheManager;
@@ -10,6 +14,9 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
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.StringRedisSerializer;

import java.time.Duration;
import java.util.HashMap;
@@ -69,4 +76,25 @@ public class RedisConfig extends CachingConfigurerSupport {
return cacheManager;
}

@Bean("objectCommonRedisTemplate")
public RedisTemplate<String, Object> getObjectValueOperations(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
Jackson2JsonRedisSerializer<Object> j = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
j.setObjectMapper(om);

// value值的序列化
template.setValueSerializer(j);
template.setHashValueSerializer(j);

// key的序列化
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.afterPropertiesSet();
return template;
}

}

+ 28
- 4
mlToutiaoOpen/src/main/java/com/iformall/controller/TtMerchantPoiController.java Parādīt failu

@@ -1,6 +1,7 @@
package com.iformall.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
@@ -14,6 +15,8 @@ import com.iformall.service.TtMerchantPoiService;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.toutiao.FmTtOpenService;
import com.iformall.service.toutiao.api.TtOpenMaService;
import com.iformall.utils.Constant;
import com.iformall.utils.RedisCacheUtils;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -21,6 +24,8 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@@ -43,6 +48,10 @@ public class TtMerchantPoiController extends BaseController {
@Autowired
protected FmTtOpenService openService;

@Autowired
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> redisTemplate;

@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@@ -323,16 +332,31 @@ public class TtMerchantPoiController extends BaseController {
if(!type.equals("1128") && !type.equals("2329")){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
}
WxAppinfo appinfo = appinfoService.getByAppId(appid);
String key = Constant.tt_cuser_customer_service_url_key + "type:"
+ appid + ":" + openid;
String cacheString = RedisCacheUtils.getCacheString(redisTemplate, key);

if(appinfo == null){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"找不到小程序信息");
if(StringUtils.isNotBlank(cacheString)){
return new ResultData(cacheString);
}
// WxAppinfo appinfo = appinfoService.getByAppId(appid);
//
// if(appinfo == null){
// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"找不到小程序信息");
// }

try{
TtOpenMaService openMaService = openService.getTtOpenComponentService().getTtMaServiceByAppid(appid);
String res = openMaService.queryCustomerServiceUrl(openid,type);
return new ResultData(res);
JSONObject jsonObject = JSONObject.parseObject(res);
Integer err_no = jsonObject.getInteger("err_no");
if(err_no.intValue() == 0){
RedisCacheUtils.cache(redisTemplate,key,res,24*3600);
return new ResultData(res);
}else{
String err_tips = jsonObject.getString("err_tips");
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),err_tips);
}
}catch(Exception e){
logger.error("获取客服链接 error"+ e.getMessage());
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"获取客服链接失败");


Notiek ielāde…
Atcelt
Saglabāt