diff --git a/README.md b/README.md index 8769f6a5..3fc9c2fb 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,14 @@ Build Status Coverage Status Downloads + Downloads

## 系统说明 - 基于 Spring Cloud 2021 、Spring Boot 2.7、 OAuth2 的 RBAC **权限管理系统** -- 基于数据驱动视图的理念封装 element-ui,即使没有 vue 的使用经验也能快速上手 +- 基于数据驱动视图的理念封装 element-plus,即使没有 vue 的使用经验也能快速上手 - 提供对常见容器化支持 Docker、Kubernetes、Rancher2 支持 - 提供 lambda 、stream api 、webflux 的生产实践 @@ -39,11 +40,11 @@ | ---------------------- |------------| | Spring Boot | 2.7.3 | | Spring Cloud | 2021.0.4 | -| Spring Cloud Alibaba | 2021.0.1.0 | +| Spring Cloud Alibaba | 2021.0.4.0 | | Spring Authorization Server | 0.3.1 | | Mybatis Plus | 3.5.2 | -| hutool | 5.8.6 | -| Avue | 2.6.18 | +| hutool | 5.8.7 | +| Avue | 3.1.3 | ### 模块说明 diff --git a/pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/GlobalBizExceptionHandler.java b/pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/GlobalBizExceptionHandler.java index d81bf5df..89bad620 100644 --- a/pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/GlobalBizExceptionHandler.java +++ b/pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/GlobalBizExceptionHandler.java @@ -104,7 +104,7 @@ public class GlobalBizExceptionHandler { public R handleBodyValidException(MethodArgumentNotValidException exception) { List fieldErrors = exception.getBindingResult().getFieldErrors(); log.warn("参数绑定异常,ex = {}", fieldErrors.get(0).getDefaultMessage()); - return R.failed(fieldErrors.get(0).getDefaultMessage()); + return R.failed(String.format("%s %s", fieldErrors.get(0).getField(), fieldErrors.get(0).getDefaultMessage())); } /** diff --git a/pig-common/pig-common-seata/src/main/java/com/pig4cloud/pig/common/seata/config/SeataAutoConfiguration.java b/pig-common/pig-common-seata/src/main/java/com/pig4cloud/pig/common/seata/config/SeataAutoConfiguration.java index 1efe7cf3..94fe0122 100644 --- a/pig-common/pig-common-seata/src/main/java/com/pig4cloud/pig/common/seata/config/SeataAutoConfiguration.java +++ b/pig-common/pig-common-seata/src/main/java/com/pig4cloud/pig/common/seata/config/SeataAutoConfiguration.java @@ -12,7 +12,7 @@ import org.springframework.context.annotation.PropertySource; * @date 2022/3/29 */ @PropertySource(value = "classpath:seata-config.yml", factory = YamlPropertySourceFactory.class) -@EnableAutoDataSourceProxy +@EnableAutoDataSourceProxy(useJdkProxy = true) @Configuration(proxyBeanMethods = false) public class SeataAutoConfiguration { diff --git a/pig-common/pig-common-seata/src/main/java/io/seata/spring/util/SpringProxyUtils.java b/pig-common/pig-common-seata/src/main/java/io/seata/spring/util/SpringProxyUtils.java deleted file mode 100644 index 36650572..00000000 --- a/pig-common/pig-common-seata/src/main/java/io/seata/spring/util/SpringProxyUtils.java +++ /dev/null @@ -1,177 +0,0 @@ -/** - * @author lengleng - * @date 2022/3/29 - */ -package io.seata.spring.util; - -import io.seata.common.util.CollectionUtils; -import io.seata.rm.tcc.remoting.parser.DubboUtil; -import org.springframework.aop.TargetSource; -import org.springframework.aop.framework.Advised; -import org.springframework.aop.framework.AdvisedSupport; -import org.springframework.aop.support.AopUtils; - -import java.lang.reflect.Field; -import java.lang.reflect.Proxy; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -/** - * Proxy tools base on spring 主要解决 v1.4.2 兼容性问题 https://github.com/seata/seata/issues/3709 - * - * @author zhangsen - */ -public class SpringProxyUtils { - - private SpringProxyUtils() { - } - - /** - * Find target class class. - * @param proxy the proxy - * @return the class - * @throws Exception the exception - */ - public static Class findTargetClass(Object proxy) throws Exception { - if (proxy == null) { - return null; - } - if (AopUtils.isAopProxy(proxy) && proxy instanceof Advised) { - // #issue 3709 - final TargetSource targetSource = ((Advised) proxy).getTargetSource(); - if (!targetSource.isStatic()) { - return targetSource.getTargetClass(); - } - return findTargetClass(targetSource.getTarget()); - } - return proxy.getClass(); - } - - public static Class[] findInterfaces(Object proxy) throws Exception { - if (AopUtils.isJdkDynamicProxy(proxy)) { - AdvisedSupport advised = getAdvisedSupport(proxy); - return getInterfacesByAdvised(advised); - } - else { - return new Class[] {}; - } - } - - private static Class[] getInterfacesByAdvised(AdvisedSupport advised) { - Class[] interfaces = advised.getProxiedInterfaces(); - if (interfaces.length > 0) { - return interfaces; - } - else { - throw new IllegalStateException("Find the jdk dynamic proxy class that does not implement the interface"); - } - } - - /** - * Gets advised support. - * @param proxy the proxy - * @return the advised support - * @throws Exception the exception - */ - public static AdvisedSupport getAdvisedSupport(Object proxy) throws Exception { - Field h; - if (AopUtils.isJdkDynamicProxy(proxy)) { - h = proxy.getClass().getSuperclass().getDeclaredField("h"); - } - else { - h = proxy.getClass().getDeclaredField("CGLIB$CALLBACK_0"); - } - h.setAccessible(true); - Object dynamicAdvisedInterceptor = h.get(proxy); - Field advised = dynamicAdvisedInterceptor.getClass().getDeclaredField("advised"); - advised.setAccessible(true); - return (AdvisedSupport) advised.get(dynamicAdvisedInterceptor); - } - - /** - * Is proxy boolean. - * @param bean the bean - * @return the boolean - */ - public static boolean isProxy(Object bean) { - if (bean == null) { - return false; - } - // check dubbo proxy ? - return DubboUtil.isDubboProxyName(bean.getClass().getName()) - || (Proxy.class.isAssignableFrom(bean.getClass()) || AopUtils.isAopProxy(bean)); - } - - /** - * Get the target class , get the interface of its agent if it is a Proxy - * @param proxy the proxy - * @return target interface - * @throws Exception the exception - */ - public static Class getTargetInterface(Object proxy) throws Exception { - if (proxy == null) { - throw new java.lang.IllegalArgumentException("proxy can not be null"); - } - - // jdk proxy - if (Proxy.class.isAssignableFrom(proxy.getClass())) { - Proxy p = (Proxy) proxy; - return p.getClass().getInterfaces()[0]; - } - - return getTargetClass(proxy); - } - - /** - * Get the class type of the proxy target object, if hadn't a target object, return - * the interface of the proxy - * @param proxy the proxy - * @return target interface - * @throws Exception the exception - */ - protected static Class getTargetClass(Object proxy) throws Exception { - if (proxy == null) { - throw new java.lang.IllegalArgumentException("proxy can not be null"); - } - // not proxy - if (!AopUtils.isAopProxy(proxy)) { - return proxy.getClass(); - } - AdvisedSupport advisedSupport = getAdvisedSupport(proxy); - Object target = advisedSupport.getTargetSource().getTarget(); - /* - * the Proxy of sofa:reference has no target - */ - if (target == null) { - if (CollectionUtils.isNotEmpty(advisedSupport.getProxiedInterfaces())) { - return advisedSupport.getProxiedInterfaces()[0]; - } - else { - return proxy.getClass(); - } - } - else { - return getTargetClass(target); - } - } - - /** - * get the all interfaces of bean, if the bean is null, then return empty array - * @param bean the bean - * @return target interface - */ - public static Class[] getAllInterfaces(Object bean) { - Set> interfaces = new HashSet<>(); - if (bean != null) { - Class clazz = bean.getClass(); - while (!Object.class.getName().equalsIgnoreCase(clazz.getName())) { - Class[] clazzInterfaces = clazz.getInterfaces(); - interfaces.addAll(Arrays.asList(clazzInterfaces)); - clazz = clazz.getSuperclass(); - } - } - return interfaces.toArray(new Class[0]); - } - -} diff --git a/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRemoteRegisteredClientRepository.java b/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRemoteRegisteredClientRepository.java index a79b4d73..d99a9817 100644 --- a/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRemoteRegisteredClientRepository.java +++ b/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRemoteRegisteredClientRepository.java @@ -88,7 +88,7 @@ public class PigRemoteRegisteredClientRepository implements RegisteredClientRepo SysOauthClientDetails clientDetails = RetOps .of(clientDetailsService.getClientDetailsById(clientId, SecurityConstants.FROM_IN)).getData() - .orElseThrow(() -> new OAuthClientException("clientId 不合法")); + .orElseThrow(() -> new OAuthClientException("客户端查询异常,请检查数据库链接")); RegisteredClient.Builder builder = RegisteredClient.withId(clientDetails.getClientId()) .clientId(clientDetails.getClientId()) diff --git a/pom.xml b/pom.xml index 01461aed..580a28ba 100755 --- a/pom.xml +++ b/pom.xml @@ -29,13 +29,13 @@ 2.7.3 2021.0.4 - 2021.0.1.0 + 2021.0.4.0 UTF-8 1.8 1.8 - 2.7.4 + 2.7.5 0.3.1 - 5.8.6 + 5.8.7 3.5.1 2.2.2 2.3