From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 23 一月 2024 17:17:55 +0800 Subject: [PATCH] 抖音转链修改 --- fanli/src/main/java/com/yeshi/fanli/aspect/RedisCacheAspect.java | 274 +++++++++++++++++++++++++++--------------------------- 1 files changed, 135 insertions(+), 139 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/aspect/RedisCacheAspect.java b/fanli/src/main/java/com/yeshi/fanli/aspect/RedisCacheAspect.java index d19a139..3bf0f54 100644 --- a/fanli/src/main/java/com/yeshi/fanli/aspect/RedisCacheAspect.java +++ b/fanli/src/main/java/com/yeshi/fanli/aspect/RedisCacheAspect.java @@ -1,139 +1,135 @@ -package com.yeshi.fanli.aspect; - -import java.io.IOException; -import java.io.PrintWriter; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.Resource; - -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.Signature; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.reflect.MethodSignature; -import org.springframework.cache.Cache; -import org.springframework.cache.Cache.ValueWrapper; -import org.springframework.cache.ehcache.EhCacheCacheManager; - -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.annotation.RedisCache; - -//@Component -//@Aspect -//@Order(4) -public class RedisCacheAspect { - @Resource - private EhCacheCacheManager cacheManager; - - @Around("execution(public * com.yeshi.xcx.bainian.controller.api.client.*.*(..))") - public Object requestSerializable(ProceedingJoinPoint joinPoint) throws IOException { - Signature signature = joinPoint.getSignature(); - MethodSignature methodSignature = (MethodSignature) signature; - Method targetMethod = methodSignature.getMethod(); - String cacheKey = null; - try { - Method realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(), - targetMethod.getParameterTypes()); - - if (realMethod.isAnnotationPresent(RedisCache.class)) { - - RedisCache rs = realMethod.getAnnotation(RedisCache.class); - String[] strings = methodSignature.getParameterNames(); - Class<?>[] types = methodSignature.getParameterTypes(); - Map<String, ParamsTypeValue> map = new HashMap<>(); - Object[] args = joinPoint.getArgs(); - PrintWriter out = null; - for (int i = 0; i < strings.length; i++) { - map.put(strings[i], new ParamsTypeValue(types[i], args[i])); - if (args[i] instanceof PrintWriter) { - out = (PrintWriter) args[i]; - } - } - String key = rs.key(); - ParamsTypeValue tv = null; - if (key.indexOf(".") > -1) { - tv = map.get(key.split("\\.")[0]); - } else { - tv = map.get(key); - - } - Object value = tv.value; - Class<?> type = tv.type; - // 鏆傛椂鍙敮鎸�2灞傚祵濂� - if (key.indexOf(".") > -1) { - String child = key.split("\\.")[1]; - try { - Field f = type.getDeclaredField(child); - f.setAccessible(true); - Object obj = f.get(value); - if (obj != null) { - cacheKey = obj.toString(); - } - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - - } else { - if (value != null) { - cacheKey = value.toString(); - } - } - - if (!StringUtil.isNullOrEmpty(cacheKey)) { - cacheKey = joinPoint.getTarget().getClass().getName() + "." + targetMethod.getName() + "-" - + cacheKey; - Cache cache = cacheManager.getCache("rsCache"); - ValueWrapper element = cache.get(cacheKey); - if (element != null && element.get() != null) { - - return null; - } else { - cache.put(cacheKey, "1"); - } - } - } - - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } - - try { - return joinPoint.proceed(); - } catch (Throwable e) { - e.printStackTrace(); - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } finally { - if (!StringUtil.isNullOrEmpty(cacheKey)) { - Cache cache = cacheManager.getCache("rsCache"); - cache.put(cacheKey, null); - } - } - return null; - } - -} - -class ParamsTypeValue { - Class<?> type; - Object value; - - public ParamsTypeValue(Class<?> type, Object value) { - this.type = type; - this.value = value; - } - - public ParamsTypeValue() { - - } -} +package com.yeshi.fanli.aspect; + +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.Signature; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.cache.Cache; +import org.springframework.cache.Cache.ValueWrapper; +import org.springframework.cache.ehcache.EhCacheCacheManager; + +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.annotation.RedisCache; + +//@Component +//@Aspect +//@Order(4) +public class RedisCacheAspect { + @Resource + private EhCacheCacheManager cacheManager; + + @Around("execution(public * com.yeshi.xcx.bainian.controller.api.client.*.*(..))") + public Object requestSerializable(ProceedingJoinPoint joinPoint) throws IOException { + Signature signature = joinPoint.getSignature(); + MethodSignature methodSignature = (MethodSignature) signature; + Method targetMethod = methodSignature.getMethod(); + String cacheKey = null; + try { + Method realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(), + targetMethod.getParameterTypes()); + + if (realMethod.isAnnotationPresent(RedisCache.class)) { + + RedisCache rs = realMethod.getAnnotation(RedisCache.class); + String[] strings = methodSignature.getParameterNames(); + Class<?>[] types = methodSignature.getParameterTypes(); + Map<String, ParamsTypeValue> map = new HashMap<>(); + Object[] args = joinPoint.getArgs(); + PrintWriter out = null; + for (int i = 0; i < strings.length; i++) { + map.put(strings[i], new ParamsTypeValue(types[i], args[i])); + if (args[i] instanceof PrintWriter) { + out = (PrintWriter) args[i]; + } + } + String key = rs.key(); + ParamsTypeValue tv = null; + if (key.indexOf(".") > -1) { + tv = map.get(key.split("\\.")[0]); + } else { + tv = map.get(key); + + } + Object value = tv.value; + Class<?> type = tv.type; + // 鏆傛椂鍙敮鎸�2灞傚祵濂� + if (key.indexOf(".") > -1) { + String child = key.split("\\.")[1]; + try { + Field f = type.getDeclaredField(child); + f.setAccessible(true); + Object obj = f.get(value); + if (obj != null) { + cacheKey = obj.toString(); + } + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + + } else { + if (value != null) { + cacheKey = value.toString(); + } + } + + if (!StringUtil.isNullOrEmpty(cacheKey)) { + cacheKey = joinPoint.getTarget().getClass().getName() + "." + targetMethod.getName() + "-" + + cacheKey; + Cache cache = cacheManager.getCache("rsCache"); + ValueWrapper element = cache.get(cacheKey); + if (element != null && element.get() != null) { + + return null; + } else { + cache.put(cacheKey, "1"); + } + } + } + + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } + + try { + return joinPoint.proceed(); + } catch (Throwable e) { + LogHelper.errorDetailInfo(e); + + } finally { + if (!StringUtil.isNullOrEmpty(cacheKey)) { + Cache cache = cacheManager.getCache("rsCache"); + cache.put(cacheKey, null); + } + } + return null; + } + +} + +class ParamsTypeValue { + Class<?> type; + Object value; + + public ParamsTypeValue(Class<?> type, Object value) { + this.type = type; + this.value = value; + } + + public ParamsTypeValue() { + + } +} -- Gitblit v1.8.0