删除 EmoneyRequestConfig 和 ProxyConfig 设置,改为数据库(SQLite)配置。默认配置的设置和删除逻辑由

SQLite 触发器配置。
This commit is contained in:
2025-11-15 14:57:02 +08:00
parent 6ccfe67aff
commit edcbfd4ffd
77 changed files with 1240 additions and 1620 deletions

View File

@@ -0,0 +1,81 @@
package quant.rich.emoney.component;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import quant.rich.emoney.client.EmoneyClient;
import quant.rich.emoney.entity.sqlite.ProxySetting;
import quant.rich.emoney.entity.sqlite.RequestInfo;
import quant.rich.emoney.service.sqlite.ProxySettingService;
import quant.rich.emoney.service.sqlite.RequestInfoService;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;
@Aspect
@Component
public class RequireAuthAndProxyAspect {
@Autowired
RequestInfoService requestInfoService;
@Autowired
ProxySettingService proxySettingService;
@Around("@annotation(quant.rich.emoney.component.RequireAuthAndProxyAspect.RequireAuthAndProxy)")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
ProxySetting defualtProxySetting = proxySettingService.getDefaultProxySetting();
if (defualtProxySetting == null) {
throw new RuntimeException("需要配置默认代理设置");
}
RequestInfo defaultRequestInfo = requestInfoService.getDefaultRequestInfo();
if (defaultRequestInfo == null) {
throw new RuntimeException("需要配置默认请求信息");
}
MethodSignature signature = (MethodSignature) pjp.getSignature();
Method method = signature.getMethod();
RequireAuthAndProxy annotation = method.getAnnotation(RequireAuthAndProxy.class);
if (StringUtils.isBlank(defaultRequestInfo.getAuthorization())) {
if (!annotation.autoLogin()) {
throw new RuntimeException("需要手动为请求信息鉴权");
}
if (!EmoneyClient.loginWithManaged()) {
throw new RuntimeException("鉴权登录失败");
}
}
return pjp.proceed();
}
/**
* 在方法上添加此注解,则进入该方法前先校验 defaultRequestInfo 已鉴权、代理已配置,否则不允许进入方法
* <p>需要开启 AOP在任意配置类上增加注解<i><code>@EnableAspectJAutoProxy</code></i>
* @see RequireAuthAndProxyAspect
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public static @interface RequireAuthAndProxy {
/**
* 当存在默认请求配置但未鉴权时,是否自动鉴权
* @return
*/
boolean autoLogin() default false;
}
}