mirror of
https://gitee.com/log4j/pig.git
synced 2024-12-23 05:00:23 +08:00
Merge branch 'dev'
This commit is contained in:
commit
372ade15dc
@ -2,13 +2,14 @@
|
|||||||
<img src="https://img.shields.io/badge/Pig-3.5-success.svg" alt="Build Status">
|
<img src="https://img.shields.io/badge/Pig-3.5-success.svg" alt="Build Status">
|
||||||
<img src="https://img.shields.io/badge/Spring%20Cloud-2021-blue.svg" alt="Coverage Status">
|
<img src="https://img.shields.io/badge/Spring%20Cloud-2021-blue.svg" alt="Coverage Status">
|
||||||
<img src="https://img.shields.io/badge/Spring%20Boot-2.7-blue.svg" alt="Downloads">
|
<img src="https://img.shields.io/badge/Spring%20Boot-2.7-blue.svg" alt="Downloads">
|
||||||
|
<img src="https://img.shields.io/badge/Vue-3.2-blue.svg" alt="Downloads">
|
||||||
<img src="https://img.shields.io/github/license/pig-mesh/pig"/>
|
<img src="https://img.shields.io/github/license/pig-mesh/pig"/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## 系统说明
|
## 系统说明
|
||||||
|
|
||||||
- 基于 Spring Cloud 2021 、Spring Boot 2.7、 OAuth2 的 RBAC **权限管理系统**
|
- 基于 Spring Cloud 2021 、Spring Boot 2.7、 OAuth2 的 RBAC **权限管理系统**
|
||||||
- 基于数据驱动视图的理念封装 element-ui,即使没有 vue 的使用经验也能快速上手
|
- 基于数据驱动视图的理念封装 element-plus,即使没有 vue 的使用经验也能快速上手
|
||||||
- 提供对常见容器化支持 Docker、Kubernetes、Rancher2 支持
|
- 提供对常见容器化支持 Docker、Kubernetes、Rancher2 支持
|
||||||
- 提供 lambda 、stream api 、webflux 的生产实践
|
- 提供 lambda 、stream api 、webflux 的生产实践
|
||||||
|
|
||||||
@ -39,11 +40,11 @@
|
|||||||
| ---------------------- |------------|
|
| ---------------------- |------------|
|
||||||
| Spring Boot | 2.7.3 |
|
| Spring Boot | 2.7.3 |
|
||||||
| Spring Cloud | 2021.0.4 |
|
| 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 |
|
| Spring Authorization Server | 0.3.1 |
|
||||||
| Mybatis Plus | 3.5.2 |
|
| Mybatis Plus | 3.5.2 |
|
||||||
| hutool | 5.8.6 |
|
| hutool | 5.8.7 |
|
||||||
| Avue | 2.6.18 |
|
| Avue | 3.1.3 |
|
||||||
|
|
||||||
### 模块说明
|
### 模块说明
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ public class GlobalBizExceptionHandler {
|
|||||||
public R handleBodyValidException(MethodArgumentNotValidException exception) {
|
public R handleBodyValidException(MethodArgumentNotValidException exception) {
|
||||||
List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
|
List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
|
||||||
log.warn("参数绑定异常,ex = {}", fieldErrors.get(0).getDefaultMessage());
|
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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,7 +12,7 @@ import org.springframework.context.annotation.PropertySource;
|
|||||||
* @date 2022/3/29
|
* @date 2022/3/29
|
||||||
*/
|
*/
|
||||||
@PropertySource(value = "classpath:seata-config.yml", factory = YamlPropertySourceFactory.class)
|
@PropertySource(value = "classpath:seata-config.yml", factory = YamlPropertySourceFactory.class)
|
||||||
@EnableAutoDataSourceProxy
|
@EnableAutoDataSourceProxy(useJdkProxy = true)
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
public class SeataAutoConfiguration {
|
public class SeataAutoConfiguration {
|
||||||
|
|
||||||
|
@ -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<Class<?>> 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]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -88,7 +88,7 @@ public class PigRemoteRegisteredClientRepository implements RegisteredClientRepo
|
|||||||
|
|
||||||
SysOauthClientDetails clientDetails = RetOps
|
SysOauthClientDetails clientDetails = RetOps
|
||||||
.of(clientDetailsService.getClientDetailsById(clientId, SecurityConstants.FROM_IN)).getData()
|
.of(clientDetailsService.getClientDetailsById(clientId, SecurityConstants.FROM_IN)).getData()
|
||||||
.orElseThrow(() -> new OAuthClientException("clientId 不合法"));
|
.orElseThrow(() -> new OAuthClientException("客户端查询异常,请检查数据库链接"));
|
||||||
|
|
||||||
RegisteredClient.Builder builder = RegisteredClient.withId(clientDetails.getClientId())
|
RegisteredClient.Builder builder = RegisteredClient.withId(clientDetails.getClientId())
|
||||||
.clientId(clientDetails.getClientId())
|
.clientId(clientDetails.getClientId())
|
||||||
|
6
pom.xml
6
pom.xml
@ -29,13 +29,13 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<spring-boot.version>2.7.3</spring-boot.version>
|
<spring-boot.version>2.7.3</spring-boot.version>
|
||||||
<spring-cloud.version>2021.0.4</spring-cloud.version>
|
<spring-cloud.version>2021.0.4</spring-cloud.version>
|
||||||
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
|
<spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
<spring-boot-admin.version>2.7.4</spring-boot-admin.version>
|
<spring-boot-admin.version>2.7.5</spring-boot-admin.version>
|
||||||
<spring.authorization.version>0.3.1</spring.authorization.version>
|
<spring.authorization.version>0.3.1</spring.authorization.version>
|
||||||
<hutool.version>5.8.6</hutool.version>
|
<hutool.version>5.8.7</hutool.version>
|
||||||
<dynamic-ds.version>3.5.1</dynamic-ds.version>
|
<dynamic-ds.version>3.5.1</dynamic-ds.version>
|
||||||
<captcha.version>2.2.2</captcha.version>
|
<captcha.version>2.2.2</captcha.version>
|
||||||
<velocity.version>2.3</velocity.version>
|
<velocity.version>2.3</velocity.version>
|
||||||
|
Loading…
Reference in New Issue
Block a user