提交git

This commit is contained in:
2025-08-25 18:51:02 +08:00
commit 9dd33ed2b9
2171 changed files with 172166 additions and 0 deletions

35
uling-plugins/pom.xml Normal file
View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cc.uling</groupId>
<artifactId>uling</artifactId>
<version>1.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>uling-plugins</artifactId>
<dependencies>
<dependency>
<groupId>cc.uling</groupId>
<artifactId>uling-yc-service</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.google.maps</groupId>
<artifactId>google-maps-services</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View File

@ -0,0 +1,80 @@
package cc.uling.plugins.exchange;
import cc.uling.common.constant.CacheKeys;
import cc.uling.common.utils.StringUtil;
import cc.uling.plugins.exchange.config.Config;
import cn.hutool.json.JSONUtil;
import com.jfinal.aop.Aop;
import com.web.consts.SysConfigKey;
import com.web.gen.service.SysConfigService;
import io.jboot.aop.annotation.Bean;
import io.jboot.utils.CacheUtil;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
@Bean
public abstract class ExchangeRageService implements CurrencyExchangePluginsService {
protected final SysConfigService sysConfigService;
public ExchangeRageService() {
this.sysConfigService = Aop.get(SysConfigService.class);
}
private static Map<String, ExchangeRageService> serviceMap = new HashMap<>();
@Override
public BigDecimal getByCache(String currency, String toCurrency) {
if (currency == null) {
return null;
}
String search = "USDT".equalsIgnoreCase(toCurrency) ? "USD" : toCurrency;
if (currency.equalsIgnoreCase(search)) {
return BigDecimal.ONE;
}
BigDecimal rate = CacheUtil.get(CacheKeys.ExchangeRate, currency + "_" + search);
if (rate != null) {
return rate;
}
//获取配置
String configValue = sysConfigService.getValueByKey(SysConfigKey.EXCHANGE_RATE_CONFIG);
if (StringUtil.isBlank(configValue)) {
return null;
}
Config config = JSONUtil.toBean(configValue, Config.class);
if (config == null) {
return null;
}
ExchangeRageService service = serviceMap.get(config.getType());
if (service == null) {
rate = doService(config, configValue, currency, search);
} else {
rate = service.getRate(configValue, currency, search);
}
if (rate != null) {
CacheUtil.put(CacheKeys.ExchangeRate, currency + "_" + search, rate, config.getExpire().intValue());
}
return rate;
}
@Override
public Map<String, BigDecimal> getRates(String currency) {
return new HashMap<>();
}
private BigDecimal doService(Config config, String configValue, String currency, String toCurrency) {
ExchangeRateEnum type = ExchangeRateEnum.valueOf(config.getType());
if (type == null) {
return null;
}
ExchangeRageService service = Aop.get(type.getService());
if (service == null) {
return null;
}
return service.getRate(configValue, currency, toCurrency);
}
}

View File

@ -0,0 +1,58 @@
package cc.uling.plugins.exchange;
import cc.uling.common.utils.HttpUtil;
import cc.uling.common.utils.StringUtil;
import cc.uling.plugins.exchange.config.ApiConfig;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import io.jboot.aop.annotation.Bean;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
@Bean
public class ExchangeRateApiServiceImpl extends ExchangeRageService implements CurrencyExchangePluginsService {
private static final String URL = "https://v6.exchangerate-api.com/v6/{0}/latest/{1}";
public BigDecimal getByCache(String currency, String toCurrency) {
return super.getByCache(currency, toCurrency);
}
@Override
public BigDecimal getRate(String config, String currency, String toCurrency) {
ApiConfig apiConfig = getConfig(config);
String url = MessageFormat.format(URL, apiConfig.getApiKey(), currency);
String result = HttpUtil.doGet(url, new HashMap<>());
if (StringUtil.isBlank(result)) {
return null;
}
if (!JSONUtil.isTypeJSON(result)) {
return null;
}
JSONObject json = JSONUtil.parseObj(result);
if (!json.containsKey("result") || !"success".equalsIgnoreCase(json.getStr("result")) || !json.containsKey("conversion_rates")) {
return null;
}
JSONObject rates = json.getJSONObject("conversion_rates");
if (!rates.containsKey(toCurrency)) {
return null;
}
return rates.getBigDecimal(toCurrency);
}
@Override
public Map<String, BigDecimal> getRates(String currency) {
return new HashMap<>();
}
public ApiConfig getConfig(String config) {
return JSONUtil.toBean(config, ApiConfig.class);
}
}

View File

@ -0,0 +1,17 @@
package cc.uling.plugins.exchange;
public enum ExchangeRateEnum {
EXCHANGE_RATE_API(ExchangeRateApiServiceImpl.class),
;
private Class<ExchangeRageService> service;
ExchangeRateEnum(Class service) {
this.service = service;
}
public Class<ExchangeRageService> getService() {
return service;
}
}

View File

@ -0,0 +1,16 @@
package cc.uling.plugins.maps;
import cc.uling.plugins.maps.config.BaseConfig;
import java.util.Arrays;
import java.util.Objects;
import java.util.stream.Collectors;
public abstract class BaseMapApiServiceImpl<T extends BaseConfig> implements MapsApiService<T> {
public String contact(String... places) {
return Arrays.stream(places).filter(Objects::nonNull).collect(Collectors.joining(", "));
}
}

View File

@ -0,0 +1,82 @@
package cc.uling.plugins.maps;
import cc.uling.common.utils.HttpUtil;
import cc.uling.plugins.maps.config.GoogleConfig;
import cn.hutool.json.JSONUtil;
import com.google.maps.GeoApiContext;
import com.google.maps.GeocodingApi;
import com.google.maps.model.AddressComponent;
import com.google.maps.model.AddressComponentType;
import com.google.maps.model.GeocodingResult;
import io.jboot.aop.annotation.Bean;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Bean
public class GoogleMapsApiServiceImpl extends BaseMapApiServiceImpl<GoogleConfig> {
@Override
public String getPostalCode(GoogleConfig config, String address) {
Map<String, String> data = searchPlaceDetails(config, address);
if (data == null) {
return null;
}
log.info(" data {} ", JSONUtil.toJsonStr(data));
return data.get(AddressComponentType.POSTAL_CODE.toString());
}
@Override
public GoogleConfig getConfig(String config) {
return JSONUtil.toBean(config, GoogleConfig.class);
}
@Override
public Map<String, String> searchPlaceDetails(GoogleConfig config, String address) {
log.info(" apikey {}", config.getConfig());
GeoApiContext context = new GeoApiContext.Builder().apiKey(config.getConfig()).build();
Map<String, String> data = new HashMap<>();
GeocodingResult[] results = null;
log.info(" 谷歌API获取邮政编码 {} ", address);
try {
results = GeocodingApi.geocode(context, address).await();
} catch (Exception e) {
e.printStackTrace();
}
// 发送地理编码请求
log.info(" results {} ", JSONUtil.toJsonStr(results));
if (results == null || results.length == 0) {
return null;
}
// 解析地址组件查找邮政编码
for (AddressComponent component : results[0].addressComponents) {
for (AddressComponentType type : component.types) {
data.put(type.toString(), component.longName);
}
}
return data;
}
private static final String API_KEY = "AIzaSyDuhvBCcejeZSI5v-OxKbJ2fYZmt1dqmOw";
private static final String BASE_URL = "https://maps.googleapis.com/maps/api/geocode/json";
public static String getPostalCode(String address) throws Exception {
String encodedAddress = java.net.URLEncoder.encode(address, "UTF-8");
String url = BASE_URL + "?address=" + encodedAddress + "&key=" + API_KEY;
String result = HttpUtil.doGet(url, new HashMap<>());
log.info("result {}", result);
return null;
}
public static void main(String[] args) {
try {
String postalCode = getPostalCode("Agoura Hills, California, US");
System.out.println("邮政编码: " + postalCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,57 @@
package cc.uling.plugins.maps;
import cc.uling.common.utils.StringUtil;
import cc.uling.plugins.maps.config.BaseConfig;
import cc.uling.plugins.maps.config.MapApiConfig;
import cn.hutool.json.JSONUtil;
import com.jfinal.aop.Aop;
import com.jfinal.aop.Inject;
import com.web.consts.SysConfigKey;
import com.web.gen.service.SysConfigService;
import io.jboot.aop.annotation.Bean;
import java.util.HashMap;
import java.util.Map;
@Bean
public class MapApiServiceImpl<T extends BaseConfig> implements MapsApiPlugins {
@Inject
private SysConfigService sysConfigService;
private final Map<String, MapsApiService<T>> serviceMap = new HashMap<>();
@Override
public String getPostalCode(String... places) {
String config = sysConfigService.getValueByKey(SysConfigKey.MAPS_API_CONFIG);
if (StringUtil.isBlank(config) || !JSONUtil.isTypeJSON(config)) {
return null;
}
MapApiConfig mapApiConfig = JSONUtil.toBean(config, MapApiConfig.class);
MapsApiService<T> apiService = serviceMap.get(mapApiConfig.getType());
if (apiService == null) {
apiService = getService(mapApiConfig.getType());
serviceMap.put(mapApiConfig.getType(), apiService);
}
if (apiService == null) {
return null;
}
T baseConfig = apiService.getConfig(config);
String address = apiService.contact(places);
return apiService.getPostalCode(baseConfig, address);
}
public MapsApiService getService(String type) {
MapsApiService apiService = serviceMap.get(type);
if (apiService == null) {
MapsApiEnum apiEnum = MapsApiEnum.valueOf(type);
if (apiEnum != null) {
apiService = Aop.get(apiEnum.getService());
serviceMap.put(type, apiService);
}
}
return apiService;
}
}

View File

@ -0,0 +1,18 @@
package cc.uling.plugins.maps;
public enum MapsApiEnum {
GOOGLE_MAPS_API(GoogleMapsApiServiceImpl.class),
;
private Class<GoogleMapsApiServiceImpl> service;
MapsApiEnum(Class service) {
this.service = service;
}
public Class<GoogleMapsApiServiceImpl> getService() {
return service;
}
}

View File

@ -0,0 +1,45 @@
package cc.uling.plugins.maps;
import cc.uling.plugins.maps.config.BaseConfig;
import java.util.Map;
/**
* 地图API
*/
public interface MapsApiService<T extends BaseConfig> {
/**
* 拼接地址
*
* @param places
* @return
*/
String contact(String... places);
/**
* 获取邮政编码
*
* @param address
* @return
*/
String getPostalCode(T config, String address);
/**
* @param config
* @return
*/
T getConfig(String config);
/**
* 查询地点详情
*
* @param address 地址(国家、州/省份、城市、地区、详细地址)
* @return
*/
Map<String, String> searchPlaceDetails(T config, String address);
}

View File

@ -0,0 +1,21 @@
package cc.uling.plugins.maps.config;
import cn.hutool.json.JSONUtil;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BaseConfig<T> {
private String url;
private T config;
@Override
public String toString() {
return JSONUtil.toJsonStr(this);
}
}

View File

@ -0,0 +1,21 @@
package cc.uling.plugins.maps.config;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
@Getter
@Setter
@Slf4j
public class GoogleConfig extends BaseConfig<String> {
private String config;
public static void main(String[] args) {
GoogleConfig googleConfig = new GoogleConfig();
googleConfig.setUrl("https://maps.googleapis.com");
googleConfig.setConfig("AIzaSyDuhvBCcejeZSI5v-OxKbJ2fYZmt1dqmOw");
log.info(" GoogleConfig {} ", googleConfig.toString());
}
}

View File

@ -0,0 +1,15 @@
package cc.uling.plugins.maps.config;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
public class MapApiConfig implements Serializable {
private String type;
private String config;
}

View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="uling-yc-service" />
<orderEntry type="module" module-name="uling-system" />
<orderEntry type="module" module-name="uling-framework" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-jwt:5.8.27" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-json:5.8.27" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.8.27" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-crypto:5.8.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-text:1.10.0" level="project" />
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.15" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP-java7:2.4.13" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5" level="project" />
<orderEntry type="library" name="Maven: cloud.tianai.captcha:tianai-captcha:1.5.1" level="project" />
<orderEntry type="module" module-name="uling-common" />
<orderEntry type="library" name="Maven: com.github.oshi:oshi-core:6.5.0" level="project" />
<orderEntry type="library" name="Maven: net.java.dev.jna:jna:5.14.0" level="project" />
<orderEntry type="library" name="Maven: net.java.dev.jna:jna-platform:5.14.0" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.3.0" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.3.0" level="project" />
<orderEntry type="library" name="Maven: com.beust:jcommander:1.48" level="project" />
<orderEntry type="library" name="Maven: com.github.jai-imageio:jai-imageio-core:1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson:3.12.3" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.45.Final" level="project" />
<orderEntry type="library" name="Maven: javax.cache:cache-api:1.0.0" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" name="Maven: io.reactivex.rxjava2:rxjava:2.2.17" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.7" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:5.0.13" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:5.0.13" level="project" />
<orderEntry type="library" name="Maven: com.sun.mail:javax.mail:1.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.3.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:fluent-hc:4.5.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.0.1" level="project" />
<orderEntry type="library" name="Maven: junit:junit:3.8.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel:4.0.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel-core:4.0.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel-support:3.3.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.11.0" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.9.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:5.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.1.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.07" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="module" module-name="uling-components" />
<orderEntry type="library" name="Maven: com.rabbitmq:amqp-client:5.11.0" level="project" />
<orderEntry type="module" module-name="uling-api-demo" />
<orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.21" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.21" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.21" level="project" />
<orderEntry type="library" name="Maven: com.google.maps:google-maps-services:2.2.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:4.10.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio-jvm:3.0.0" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.31" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.5.31" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.6.20" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.10.1" level="project" />
<orderEntry type="library" name="Maven: io.opencensus:opencensus-api:0.31.0" level="project" />
<orderEntry type="library" name="Maven: io.grpc:grpc-context:1.27.2" level="project" />
<orderEntry type="library" name="Maven: io.jboot:jboot:3.15.7" level="project" />
<orderEntry type="library" name="Maven: com.jfinal:jfinal:5.0.1" level="project" />
<orderEntry type="library" name="Maven: com.jfinal:cos:2022.2" level="project" />
<orderEntry type="library" name="Maven: com.jfinal:jfinal-undertow:3.1" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.2.18.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.8.7.Final" level="project" />
<orderEntry type="library" name="Maven: org.wildfly.common:wildfly-common:1.5.4.Final" level="project" />
<orderEntry type="library" name="Maven: org.wildfly.client:wildfly-client-config:1.0.1.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.8.7.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.threads:jboss-threads:3.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.2.18.Final" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
<orderEntry type="library" name="Maven: cglib:cglib:3.3.0" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:7.1" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.2.18.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.websocket:jboss-websocket-api_1.1_spec:2.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.30" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.49" level="project" />
<orderEntry type="library" name="Maven: de.ruedigermoeller:fst:2.57" level="project" />
<orderEntry type="library" name="Maven: org.objenesis:objenesis:2.5.1" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.29.0-GA" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.83" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:31.1-jre" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.12.0" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: it.sauronsoftware.cron4j:cron4j:2.2.5" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.14.3" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.9.3" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.21.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
<orderEntry type="library" name="Maven: org.glassfish:javax.el:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-core:4.2.9" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-servlets:4.2.9" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-json:4.2.9" level="project" />
<orderEntry type="library" name="Maven: com.helger:profiler:1.1.1" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-healthchecks:4.2.9" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-jvm:4.2.9" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.0.21" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.3" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:3.2.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.16" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.23.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.23.1" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.6" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.8.29" level="project" />
<orderEntry type="library" name="Maven: pro.fessional:kaptcha:2.3.3" level="project" />
<orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235-1" level="project" />
<orderEntry type="library" name="Maven: eu.bitwalker:UserAgentUtils:1.19" level="project" />
</component>
</module>