From 758bd515e1455ced3c1d6c0ed04e2c22fce6be55 Mon Sep 17 00:00:00 2001 From: niudehua <657563945@qq.com> Date: Mon, 28 Jun 2021 22:13:18 +0800 Subject: [PATCH] sping->spring --- yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java | 2 +- yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java | 2 +- yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringAopUtils.java | 46 ---------------------------------------------- yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringExpressionUtils.java | 82 ---------------------------------------------------------------------------------- yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringAopUtils.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringExpressionUtils.java | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsCodeMapping.java | 40 +++++++++++++++++++++++++++------------- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java | 2 +- 8 files changed, 158 insertions(+), 144 deletions(-) delete mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringAopUtils.java delete mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringExpressionUtils.java create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringAopUtils.java create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringExpressionUtils.java diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java index 81dcfd7..9479c56 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java @@ -12,7 +12,7 @@ import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysMenuM import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum; import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysMenuProducer; import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysMenuServiceImpl; -import cn.iocoder.yudao.framework.common.util.sping.SpringAopUtils; +import cn.iocoder.yudao.framework.common.util.spring.SpringAopUtils; import cn.iocoder.yudao.framework.test.core.util.RandomUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import com.google.common.collect.Multimap; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java index 3943268..3b39e97 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java @@ -13,7 +13,7 @@ import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleM import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum; import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysRoleProducer; import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysRoleServiceImpl; -import cn.iocoder.yudao.framework.common.util.sping.SpringAopUtils; +import cn.iocoder.yudao.framework.common.util.spring.SpringAopUtils; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringAopUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringAopUtils.java deleted file mode 100644 index efd73c9..0000000 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringAopUtils.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.yudao.framework.common.util.sping; - -import cn.hutool.core.bean.BeanUtil; -import org.springframework.aop.framework.AdvisedSupport; -import org.springframework.aop.framework.AopProxy; -import org.springframework.aop.support.AopUtils; - -/** - * Spring AOP 工具类 - * - * 参考波克尔 http://www.bubuko.com/infodetail-3471885.html 实现 - */ -public class SpringAopUtils { - - /** - * 获取代理的目标对象 - * - * @param proxy 代理对象 - * @return 目标对象 - */ - public static Object getTarget(Object proxy) throws Exception { - // 不是代理对象 - if (!AopUtils.isAopProxy(proxy)) { - return proxy; - } - // Jdk 代理 - if (AopUtils.isJdkDynamicProxy(proxy)) { - return getJdkDynamicProxyTargetObject(proxy); - } - // Cglib 代理 - return getCglibProxyTargetObject(proxy); - } - - private static Object getCglibProxyTargetObject(Object proxy) throws Exception { - Object dynamicAdvisedInterceptor = BeanUtil.getFieldValue(proxy, "CGLIB$CALLBACK_0"); - AdvisedSupport advisedSupport = (AdvisedSupport) BeanUtil.getFieldValue(dynamicAdvisedInterceptor, "advised"); - return advisedSupport.getTargetSource().getTarget(); - } - - private static Object getJdkDynamicProxyTargetObject(Object proxy) throws Exception { - AopProxy aopProxy = (AopProxy) BeanUtil.getFieldValue(proxy, "h"); - AdvisedSupport advisedSupport = (AdvisedSupport) BeanUtil.getFieldValue(aopProxy, "advised"); - return advisedSupport.getTargetSource().getTarget(); - } - -} diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringExpressionUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringExpressionUtils.java deleted file mode 100644 index cab09cc..0000000 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/sping/SpringExpressionUtils.java +++ /dev/null @@ -1,82 +0,0 @@ -package cn.iocoder.yudao.framework.common.util.sping; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.ArrayUtil; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.reflect.MethodSignature; -import org.springframework.core.DefaultParameterNameDiscoverer; -import org.springframework.core.ParameterNameDiscoverer; -import org.springframework.expression.EvaluationContext; -import org.springframework.expression.ExpressionParser; -import org.springframework.expression.spel.standard.SpelExpressionParser; -import org.springframework.expression.spel.support.StandardEvaluationContext; - -import java.lang.reflect.Method; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * Spring EL 表达式的工具类 - * - * @author mashu - */ -public class SpringExpressionUtils { - - private static final ExpressionParser EXPRESSION_PARSER = new SpelExpressionParser(); - private static final ParameterNameDiscoverer PARAMETER_NAME_DISCOVERER = new DefaultParameterNameDiscoverer(); - - private SpringExpressionUtils() { - } - - /** - * 从切面中,单个解析 EL 表达式的结果 - * - * @param joinPoint 切面点 - * @param expressionString EL 表达式数组 - * @return 执行界面 - */ - public static Object parseExpression(ProceedingJoinPoint joinPoint, String expressionString) { - Map result = parseExpressions(joinPoint, Collections.singletonList(expressionString)); - return result.get(expressionString); - } - - /** - * 从切面中,批量解析 EL 表达式的结果 - * - * @param joinPoint 切面点 - * @param expressionStrings EL 表达式数组 - * @return 结果,key 为表达式,value 为对应值 - */ - public static Map parseExpressions(ProceedingJoinPoint joinPoint, List expressionStrings) { - // 如果为空,则不进行解析 - if (CollUtil.isEmpty(expressionStrings)) { - return MapUtil.newHashMap(); - } - - // 第一步,构建解析的上下文 EvaluationContext - // 通过 joinPoint 获取被注解方法 - MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); - Method method = methodSignature.getMethod(); - // 使用 spring 的 ParameterNameDiscoverer 获取方法形参名数组 - String[] paramNames = PARAMETER_NAME_DISCOVERER.getParameterNames(method); - // Spring 的表达式上下文对象 - EvaluationContext context = new StandardEvaluationContext(); - // 给上下文赋值 - if (ArrayUtil.isNotEmpty(paramNames)) { - Object[] args = joinPoint.getArgs(); - for (int i = 0; i < paramNames.length; i++) { - context.setVariable(paramNames[i], args[i]); - } - } - - // 第二步,逐个参数解析 - Map result = MapUtil.newHashMap(expressionStrings.size(), true); - expressionStrings.forEach(key -> { - Object value = EXPRESSION_PARSER.parseExpression(key).getValue(context); - result.put(key, value); - }); - return result; - } -} diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringAopUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringAopUtils.java new file mode 100644 index 0000000..b71342c --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringAopUtils.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.framework.common.util.spring; + +import cn.hutool.core.bean.BeanUtil; +import org.springframework.aop.framework.AdvisedSupport; +import org.springframework.aop.framework.AopProxy; +import org.springframework.aop.support.AopUtils; + +/** + * Spring AOP 工具类 + * + * 参考波克尔 http://www.bubuko.com/infodetail-3471885.html 实现 + */ +public class SpringAopUtils { + + /** + * 获取代理的目标对象 + * + * @param proxy 代理对象 + * @return 目标对象 + */ + public static Object getTarget(Object proxy) throws Exception { + // 不是代理对象 + if (!AopUtils.isAopProxy(proxy)) { + return proxy; + } + // Jdk 代理 + if (AopUtils.isJdkDynamicProxy(proxy)) { + return getJdkDynamicProxyTargetObject(proxy); + } + // Cglib 代理 + return getCglibProxyTargetObject(proxy); + } + + private static Object getCglibProxyTargetObject(Object proxy) throws Exception { + Object dynamicAdvisedInterceptor = BeanUtil.getFieldValue(proxy, "CGLIB$CALLBACK_0"); + AdvisedSupport advisedSupport = (AdvisedSupport) BeanUtil.getFieldValue(dynamicAdvisedInterceptor, "advised"); + return advisedSupport.getTargetSource().getTarget(); + } + + private static Object getJdkDynamicProxyTargetObject(Object proxy) throws Exception { + AopProxy aopProxy = (AopProxy) BeanUtil.getFieldValue(proxy, "h"); + AdvisedSupport advisedSupport = (AdvisedSupport) BeanUtil.getFieldValue(aopProxy, "advised"); + return advisedSupport.getTargetSource().getTarget(); + } + +} diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringExpressionUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringExpressionUtils.java new file mode 100644 index 0000000..659053d --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring/SpringExpressionUtils.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.framework.common.util.spring; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ArrayUtil; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.core.DefaultParameterNameDiscoverer; +import org.springframework.core.ParameterNameDiscoverer; +import org.springframework.expression.EvaluationContext; +import org.springframework.expression.ExpressionParser; +import org.springframework.expression.spel.standard.SpelExpressionParser; +import org.springframework.expression.spel.support.StandardEvaluationContext; + +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * Spring EL 表达式的工具类 + * + * @author mashu + */ +public class SpringExpressionUtils { + + private static final ExpressionParser EXPRESSION_PARSER = new SpelExpressionParser(); + private static final ParameterNameDiscoverer PARAMETER_NAME_DISCOVERER = new DefaultParameterNameDiscoverer(); + + private SpringExpressionUtils() { + } + + /** + * 从切面中,单个解析 EL 表达式的结果 + * + * @param joinPoint 切面点 + * @param expressionString EL 表达式数组 + * @return 执行界面 + */ + public static Object parseExpression(ProceedingJoinPoint joinPoint, String expressionString) { + Map result = parseExpressions(joinPoint, Collections.singletonList(expressionString)); + return result.get(expressionString); + } + + /** + * 从切面中,批量解析 EL 表达式的结果 + * + * @param joinPoint 切面点 + * @param expressionStrings EL 表达式数组 + * @return 结果,key 为表达式,value 为对应值 + */ + public static Map parseExpressions(ProceedingJoinPoint joinPoint, List expressionStrings) { + // 如果为空,则不进行解析 + if (CollUtil.isEmpty(expressionStrings)) { + return MapUtil.newHashMap(); + } + + // 第一步,构建解析的上下文 EvaluationContext + // 通过 joinPoint 获取被注解方法 + MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); + Method method = methodSignature.getMethod(); + // 使用 spring 的 ParameterNameDiscoverer 获取方法形参名数组 + String[] paramNames = PARAMETER_NAME_DISCOVERER.getParameterNames(method); + // Spring 的表达式上下文对象 + EvaluationContext context = new StandardEvaluationContext(); + // 给上下文赋值 + if (ArrayUtil.isNotEmpty(paramNames)) { + Object[] args = joinPoint.getArgs(); + for (int i = 0; i < paramNames.length; i++) { + context.setVariable(paramNames[i], args[i]); + } + } + + // 第二步,逐个参数解析 + Map result = MapUtil.newHashMap(expressionStrings.size(), true); + expressionStrings.forEach(key -> { + Object value = EXPRESSION_PARSER.parseExpression(key).getValue(context); + result.put(key, value); + }); + return result; + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsCodeMapping.java b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsCodeMapping.java index d6ecdce..f467ceb 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsCodeMapping.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsCodeMapping.java @@ -9,7 +9,7 @@ import static com.yunpian.sdk.constant.Code.*; /** * 云片的 SmsCodeMapping 实现类 - * + *

* 参见 https://www.yunpian.com/official/document/sms/zh_CN/returnvalue_common 文档 * * @author 芋道源码 @@ -20,24 +20,38 @@ public class YunpianSmsCodeMapping implements SmsCodeMapping { public ErrorCode apply(String apiCode) { int code = Integer.parseInt(apiCode); switch (code) { - case OK: return SUCCESS; - case ARGUMENT_MISSING: return SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR; - case BAD_ARGUMENT_FORMAT: return SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_PARAM_ERROR; + case OK: + return SUCCESS; + case ARGUMENT_MISSING: + return SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR; + case BAD_ARGUMENT_FORMAT: + return SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_PARAM_ERROR; case TPL_NOT_FOUND: - case TPL_NOT_VALID: return SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID; - case MONEY_NOT_ENOUGH: return SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH; - case BLACK_WORD: return SmsFrameworkErrorCodeConstants.SMS_SEND_CONTENT_INVALID; + case TPL_NOT_VALID: + return SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID; + case MONEY_NOT_ENOUGH: + return SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH; + case BLACK_WORD: + return SmsFrameworkErrorCodeConstants.SMS_SEND_CONTENT_INVALID; case DUP_IN_SHORT_TIME: case TOO_MANY_TIME_IN_5: case DAY_LIMIT_PER_MOBILE: - case HOUR_LIMIT_PER_MOBILE: return SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL; - case BLACK_PHONE_FILTER: return SmsFrameworkErrorCodeConstants.SMS_MOBILE_BLACK; + case HOUR_LIMIT_PER_MOBILE: + return SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL; + case BLACK_PHONE_FILTER: + return SmsFrameworkErrorCodeConstants.SMS_MOBILE_BLACK; case SIGN_NOT_MATCH: case BAD_SIGN_FORMAT: - case SIGN_NOT_VALID: return SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID; - case BAD_API_KEY: return SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID; - case API_NOT_ALLOWED: return SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY; - case IP_NOT_ALLOWED: return SmsFrameworkErrorCodeConstants.SMS_IP_DENY; + case SIGN_NOT_VALID: + return SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID; + case BAD_API_KEY: + return SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID; + case API_NOT_ALLOWED: + return SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY; + case IP_NOT_ALLOWED: + return SmsFrameworkErrorCodeConstants.SMS_IP_DENY; + default: + break; } return SmsFrameworkErrorCodeConstants.SMS_UNKNOWN; } diff --git a/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java b/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java index 28d94fd..7300352 100644 --- a/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java +++ b/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.tracer.core.aop; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.tracer.core.annotation.BizTrace; -import cn.iocoder.yudao.framework.common.util.sping.SpringExpressionUtils; +import cn.iocoder.yudao.framework.common.util.spring.SpringExpressionUtils; import cn.iocoder.yudao.framework.tracer.core.util.TracerFrameworkUtils; import io.opentracing.Span; import io.opentracing.Tracer; -- libgit2 0.21.4