提交git
This commit is contained in:
41
uling-alert/pom.xml
Normal file
41
uling-alert/pom.xml
Normal file
@ -0,0 +1,41 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>uling</artifactId>
|
||||
<groupId>cc.uling</groupId>
|
||||
<version>1.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>uling-alert</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>cc.uling</groupId>
|
||||
<artifactId>uling-common</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cc.uling</groupId>
|
||||
<artifactId>uling-yc-service</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-xml</artifactId>
|
||||
<version>2.13.1</version> <!-- 使用最新版本 -->
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,13 @@
|
||||
package cc.uling.alert.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class AlertConfig implements Serializable {
|
||||
|
||||
private String url;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package cc.uling.alert.entity;
|
||||
|
||||
import cc.uling.common.enums.RenderType;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class AlertResult<T> implements Serializable {
|
||||
|
||||
private T result;
|
||||
|
||||
private RenderType type;
|
||||
|
||||
public AlertResult(RenderType type, T result) {
|
||||
this.type = type;
|
||||
this.result = result;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
package cc.uling.alert.entity.austreme;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class Austreme implements Serializable {
|
||||
|
||||
private String EthocaID;
|
||||
|
||||
private Date AlertTimestamp;
|
||||
|
||||
private String Age;
|
||||
|
||||
private String Issuer;
|
||||
|
||||
private String CardNumber;
|
||||
|
||||
private Date TransactionTimestamp;
|
||||
|
||||
private String MerchantDescriptor;
|
||||
|
||||
private String EthocaMerchantID;
|
||||
|
||||
private BigDecimal Amount;
|
||||
|
||||
private String Currency;
|
||||
|
||||
private String TransactionType;
|
||||
|
||||
private String TransactionId;
|
||||
|
||||
private String InitiatedBy;
|
||||
|
||||
private String Liability;
|
||||
|
||||
private String authCode;
|
||||
|
||||
private String MerchantName;
|
||||
|
||||
private String PartnerMerchantID;
|
||||
|
||||
private String ChargebackReasonCode;
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package cc.uling.alert.entity.austreme;
|
||||
|
||||
import cc.uling.alert.entity.AlertConfig;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class AustremeConfig extends AlertConfig implements Serializable {
|
||||
|
||||
|
||||
private String usernamer;
|
||||
|
||||
private String password;
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
|
||||
public static AustremeConfig test() {
|
||||
AustremeConfig austremeConfig = new AustremeConfig();
|
||||
austremeConfig.setUrl("https://dispute-test.austreme.com/v1/ethoca/merchant/alert_outcome");
|
||||
austremeConfig.setUsernamer("phxalerts_MmL23zpvmU");
|
||||
austremeConfig.setPassword("YfjV3S5k4dOsxHtZ6JDKWAyvB7uDkU");
|
||||
return austremeConfig;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package cc.uling.alert.entity.austreme;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import lombok.Data;
|
||||
import org.nustaq.serialization.annotations.Serialize;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author yousuf
|
||||
**/
|
||||
@Data
|
||||
@JacksonXmlRootElement(localName = "Alert")
|
||||
public class ConfirmedAlert implements Serializable {
|
||||
@Serialize
|
||||
private static final long serialVersionUID = 4767487231266894375L;
|
||||
@JacksonXmlProperty(localName = "EthocaID")
|
||||
private String ethocaId;
|
||||
@JacksonXmlProperty(localName = "Status")
|
||||
private String status;
|
||||
|
||||
public ConfirmedAlert(String ethocaId) {
|
||||
this.ethocaId = ethocaId;
|
||||
this.status = "received";
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package cc.uling.alert.entity.austreme;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import lombok.Data;
|
||||
import org.nustaq.serialization.annotations.Serialize;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author yousuf
|
||||
**/
|
||||
@Data
|
||||
@JacksonXmlRootElement(localName = "EthocaAlertConfirmation")
|
||||
public class EthocaAlertConfirmation implements Serializable {
|
||||
@Serialize
|
||||
private static final long serialVersionUID = 4415899947251139258L;
|
||||
@JacksonXmlProperty(localName = "Alert")
|
||||
private ConfirmedAlert alert;
|
||||
|
||||
public EthocaAlertConfirmation() {
|
||||
}
|
||||
|
||||
public EthocaAlertConfirmation(ConfirmedAlert alert) {
|
||||
this.alert = alert;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package cc.uling.alert.entity.austreme;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class UpdateAlertStatus implements Serializable {
|
||||
|
||||
private String alertId;
|
||||
|
||||
private String status;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
package cc.uling.alert.service;
|
||||
|
||||
|
||||
import cc.uling.alert.entity.AlertConfig;
|
||||
import cc.uling.alert.entity.AlertResult;
|
||||
import com.web.gen.model.RefuseWarningOrder;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Map;
|
||||
|
||||
public interface AlertNoticeService<T extends AlertConfig> {
|
||||
|
||||
|
||||
AlertResult notice(HttpServletRequest request, Map<String, String> params, String body);
|
||||
|
||||
|
||||
/**
|
||||
* 预警订单
|
||||
*
|
||||
* @param order
|
||||
*/
|
||||
void updateStatus(RefuseWarningOrder order);
|
||||
|
||||
|
||||
/**
|
||||
* 获取配置
|
||||
*
|
||||
* @param config
|
||||
* @return
|
||||
*/
|
||||
T getConfig(String config);
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package cc.uling.alert.service;
|
||||
|
||||
|
||||
import cc.uling.alert.entity.AlertConfig;
|
||||
import io.jboot.aop.annotation.Bean;
|
||||
|
||||
@Bean
|
||||
public abstract class AlertNoticeServiceImpl<T extends AlertConfig> implements AlertNoticeService<AlertConfig> {
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,199 @@
|
||||
package cc.uling.alert.service;
|
||||
|
||||
import cc.uling.alert.entity.AlertResult;
|
||||
import cc.uling.alert.entity.austreme.Austreme;
|
||||
import cc.uling.alert.entity.austreme.AustremeConfig;
|
||||
import cc.uling.common.enums.RenderType;
|
||||
import cc.uling.common.exception.BizException;
|
||||
import cc.uling.common.utils.BigDecimalUtil;
|
||||
import cc.uling.common.utils.HttpUtil;
|
||||
import cc.uling.common.utils.StringUtil;
|
||||
import cc.uling.domain.bo.warning.RefuseWarningBO;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.jfinal.aop.Inject;
|
||||
import com.web.gen.model.*;
|
||||
import com.web.gen.model.Currency;
|
||||
import com.web.gen.service.*;
|
||||
import io.jboot.aop.annotation.Bean;
|
||||
import io.jboot.aop.annotation.Transactional;
|
||||
import io.jboot.db.model.Columns;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Bean
|
||||
public class AustremeAlertNoticeServiceImpl extends AlertNoticeServiceImpl<AustremeConfig> {
|
||||
|
||||
private static final String TYPE = "Ethoca";
|
||||
|
||||
@Inject
|
||||
private CurrencyService currencyService;
|
||||
@Inject
|
||||
private PayOrderService payOrderService;
|
||||
|
||||
@Inject
|
||||
private RefuseWarningOrderService refuseWarningOrderService;
|
||||
@Inject
|
||||
private MchWarningChannelService mchWarningChannelService;
|
||||
@Inject
|
||||
private SettlementOrderService settlementOrderService;
|
||||
@Inject
|
||||
private RefuseWarningChannelService refuseWarningChannelService;
|
||||
|
||||
@Override
|
||||
public AlertResult<String> notice(HttpServletRequest request, Map<String, String> params, String body) {
|
||||
try {
|
||||
JSONObject json = JSONUtil.xmlToJson(body);
|
||||
log.info(" Austreme 预警通知 Params: {}", json);
|
||||
if (!json.containsKey("EthocaAlertNotification")) {
|
||||
return new AlertResult<>(RenderType.TEXT, success(""));
|
||||
}
|
||||
JSONObject notification = getJSONObject(json, "EthocaAlertNotification");
|
||||
JSONObject alerts = getJSONObject(notification, "CustomerDisputeAlerts", "ConfirmedFraudAlerts");
|
||||
JSONObject alert = getJSONObject(alerts, "Alert");
|
||||
Austreme austreme = JSONUtil.toBean(alert, Austreme.class);
|
||||
|
||||
pushUpdateResult(austreme);
|
||||
log.info(" Austreme 预警通知: {}", austreme);
|
||||
return new AlertResult<>(RenderType.TEXT, success(austreme.getEthocaID()));
|
||||
} catch (Exception e) {
|
||||
return new AlertResult<>(RenderType.TEXT, failure(e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
API密钥:
|
||||
Usernamer: phxalerts_MmL23zpvmU
|
||||
Password: YfjV3S5k4dOsxHtZ6JDKWAyvB7uDkU
|
||||
|
||||
推送密钥:
|
||||
Push Username:phxalerts_SBfScMMibf
|
||||
Push Password:4F8pH6KAjcDr4LiVthJU2GZizzHZF2
|
||||
*/
|
||||
|
||||
@Override
|
||||
public void updateStatus(RefuseWarningOrder order) {
|
||||
RefuseWarningChannel channel = refuseWarningChannelService.findById(order.getChannelId());
|
||||
if (channel == null) {
|
||||
throw new BizException("alert.configuration.error");
|
||||
}
|
||||
AustremeConfig config = getConfig(channel.getConfig());
|
||||
|
||||
JSONObject object = new JSONObject();
|
||||
JSONObject ethocaAlertsUpdate = new JSONObject();
|
||||
ethocaAlertsUpdate.set("Username", config.getUsernamer());
|
||||
ethocaAlertsUpdate.set("Password", config.getPassword());
|
||||
|
||||
|
||||
List<JSONObject> list = new ArrayList<>();
|
||||
|
||||
JSONObject ethocaUpdateEvent = new JSONObject();
|
||||
ethocaUpdateEvent.set("EthocaID", order.getOutWarningId());
|
||||
ethocaUpdateEvent.set("Outcome", order.getStatus());
|
||||
ethocaUpdateEvent.set("Refunded", order.getRefundResult());
|
||||
ethocaUpdateEvent.set("FirstPartyFraud", order.getRefundResult());
|
||||
ethocaUpdateEvent.set("AmountStopped", order.getRefundResult());
|
||||
ethocaUpdateEvent.set("ActionTimestamp", order.getRefundResult());
|
||||
|
||||
list.add(ethocaUpdateEvent);
|
||||
|
||||
ethocaAlertsUpdate.set("EthocaUpdateEvent", list);
|
||||
object.set("EthocaAlertsUpdate", ethocaAlertsUpdate);
|
||||
|
||||
String xml = JSONUtil.toXmlStr(object);
|
||||
|
||||
String url = config.getUrl() + "/v1/ethoca/merchant/alert_outcome";
|
||||
|
||||
String response = HttpUtil.postXml(url, xml);
|
||||
if (StringUtil.isNotBlank(response)) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public AustremeConfig getConfig(String config) {
|
||||
return JSON.parseObject(config, AustremeConfig.class);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void pushUpdateResult(Austreme austreme) {
|
||||
RefuseWarningOrder order = refuseWarningOrderService.findFirstByColumns(Columns.create("out_warning_id", austreme.getEthocaID()));
|
||||
if (order != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PayOrder payOrder = payOrderService.findFirstByColumns(Columns.create("pay_order_id", austreme.getTransactionType()));
|
||||
Date startTime = DateUtil.offsetMinute(austreme.getTransactionTimestamp(), -3);
|
||||
Date endTime = DateUtil.offsetMinute(austreme.getTransactionTimestamp(), 3);
|
||||
|
||||
String cardNumber = getCardNumber(austreme.getCardNumber());
|
||||
Currency currency = currencyService.findByCode(austreme.getCurrency());
|
||||
Long amount = BigDecimalUtil.toLongCent(austreme.getAmount(), currency.getPoint());
|
||||
log.info(" 卡号 {} 金额 {}", cardNumber, amount);
|
||||
if (payOrder == null) {
|
||||
payOrder = payOrderService.findFirstByColumns(Columns.create("bank_card_encryption", cardNumber).eq("amount", amount).between("success_time", startTime.toString(), endTime.toString()));
|
||||
}
|
||||
if (payOrder == null) {
|
||||
return;
|
||||
}
|
||||
MchWarningChannel channel = mchWarningChannelService.getMchWarningChannel(payOrder.getMchNo(), null, TYPE);
|
||||
|
||||
RefuseWarningBO bo = new RefuseWarningBO();
|
||||
bo.setWarningId(austreme.getEthocaID());
|
||||
bo.setMethod(austreme.getChargebackReasonCode());
|
||||
bo.setTransactionId(payOrder.getPayOrderId());
|
||||
bo.setCardNumber(cardNumber);
|
||||
bo.setAlertTime(austreme.getAlertTimestamp());
|
||||
RefuseWarningOrder warningOrder = refuseWarningOrderService.addWarningOrders(payOrder, channel, bo);
|
||||
warningOrder.save();
|
||||
|
||||
SettlementOrder settlementOrder = settlementOrderService.refuseWarning(payOrder, currency.getCurrency(), channel.getFee());
|
||||
settlementOrder.save();
|
||||
}
|
||||
|
||||
|
||||
private String success(String alertId) {
|
||||
JSONObject object = new JSONObject();
|
||||
JSONObject ethocaAlertConfirmation = new JSONObject();
|
||||
JSONObject confirmedAlert = new JSONObject();
|
||||
confirmedAlert.put("ethocaId", alertId);
|
||||
confirmedAlert.put("status", "received");
|
||||
ethocaAlertConfirmation.put("Alert", confirmedAlert);
|
||||
object.put("EthocaAlertConfirmation", ethocaAlertConfirmation);
|
||||
return object.toString();
|
||||
}
|
||||
|
||||
private String failure(String message) {
|
||||
JSONObject object = new JSONObject();
|
||||
JSONObject ethocaAlertConfirmation = new JSONObject();
|
||||
JSONObject confirmedAlert = new JSONObject();
|
||||
confirmedAlert.put("ethocaId", "");
|
||||
confirmedAlert.put("status", message);
|
||||
ethocaAlertConfirmation.put("Alert", confirmedAlert);
|
||||
object.put("EthocaAlertConfirmation", ethocaAlertConfirmation);
|
||||
return object.toString();
|
||||
}
|
||||
|
||||
private JSONObject getJSONObject(JSONObject jsonObject, String... keys) {
|
||||
for (String key : keys) {
|
||||
if (jsonObject.containsKey(key)) {
|
||||
return jsonObject.getJSONObject(key);
|
||||
}
|
||||
}
|
||||
throw new BizException("missing.important.parameters").add(keys);
|
||||
}
|
||||
|
||||
private static String getCardNumber(String card) {
|
||||
return card.substring(0, 6) + "******" + card.substring(card.length() - 4, card.length());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
154
uling-alert/uling-alert.iml
Normal file
154
uling-alert/uling-alert.iml
Normal file
@ -0,0 +1,154 @@
|
||||
<?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-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: org.yaml:snakeyaml:1.25" 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.jhlabs:filters:2.0.235" 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: com.alibaba:fastjson:2.0.52" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.52" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.52" 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: commons-io:commons-io:2.14.0" 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-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-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.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:4.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.woodstox:woodstox-core:6.2.7" 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.dataformat:jackson-dataformat-yaml:2.13.3" 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.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: 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: eu.bitwalker:UserAgentUtils:1.19" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
Reference in New Issue
Block a user