mirror of https://gitee.com/y_project/RuoYi.git
Merge branch 'refs/heads/feeen-1.15.2' into feeen-1.16.0
# Conflicts: # ruoyi-system/src/main/java/com/ruoyi/system/handler/Usdt2TrxTransferHandler.javapull/520/head
commit
951bfa9ef6
|
@ -1,6 +1,7 @@
|
||||||
package com.ruoyi.system.handler;
|
package com.ruoyi.system.handler;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.ruoyi.common.core.domain.entity.ErrorLog;
|
import com.ruoyi.common.core.domain.entity.ErrorLog;
|
||||||
import com.ruoyi.common.core.domain.entity.TenantInfo;
|
import com.ruoyi.common.core.domain.entity.TenantInfo;
|
||||||
|
@ -8,6 +9,7 @@ import com.ruoyi.common.core.domain.entity.TrxExchangeInfo;
|
||||||
import com.ruoyi.common.utils.DictUtils;
|
import com.ruoyi.common.utils.DictUtils;
|
||||||
import com.ruoyi.common.utils.ForwardCounter;
|
import com.ruoyi.common.utils.ForwardCounter;
|
||||||
import com.ruoyi.common.utils.LogUtils;
|
import com.ruoyi.common.utils.LogUtils;
|
||||||
|
import com.ruoyi.common.utils.encrpt.Dt;
|
||||||
import com.ruoyi.system.domain.TrxExchangeMonitorAccountInfo;
|
import com.ruoyi.system.domain.TrxExchangeMonitorAccountInfo;
|
||||||
import com.ruoyi.system.mapper.TenantInfoMapper;
|
import com.ruoyi.system.mapper.TenantInfoMapper;
|
||||||
import com.ruoyi.system.mapper.TrxExchangeInfoMapper;
|
import com.ruoyi.system.mapper.TrxExchangeInfoMapper;
|
||||||
|
@ -16,6 +18,7 @@ import com.ruoyi.system.service.ITenantInfoService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.tron.trident.core.ApiWrapper;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -48,26 +51,56 @@ public class EnergyTenantTransferHandler {
|
||||||
|
|
||||||
String eneryBusiTypeByDay = DictUtils.getDictValue("sys_energy_busi_type", "天数套餐");
|
String eneryBusiTypeByDay = DictUtils.getDictValue("sys_energy_busi_type", "天数套餐");
|
||||||
|
|
||||||
if (tenantInfo.getEnergyBusiType().equals(eneryBusiTypeByDay)){
|
if (tenantInfo.getEnergyBusiType().equals(eneryBusiTypeByDay)) {
|
||||||
String delegateStatus = DictUtils.getDictValue("sys_delegate_status", "已委托");
|
|
||||||
//查看有没有没回收的能量,有的话先回收
|
|
||||||
|
|
||||||
TrxExchangeInfo trxExchangeInfo = TrxExchangeInfo.builder()
|
Long period = tenantInfo.getPeriod();
|
||||||
.fromAddress(tenantInfo.getReceiverAddress())
|
long between = DateUtil.between(tenantInfo.getFcd(), new Date(), DateUnit.DAY);
|
||||||
.delegateStatus(delegateStatus)
|
|
||||||
.energyBusiType(eneryBusiTypeByDay)
|
TrxExchangeInfo trxExchangeInfo = buildTrxExchangeInfo(tenantInfo, eneryBusiTypeByDay);
|
||||||
.fcd(DateUtil.offsetDay(new Date(), -2))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
List<TrxExchangeMonitorAccountInfo> trxExchangeMonitorAccountInfoList = trxExchangeInfoMapper.selectTrxExchangeMonitorAccountInfo(trxExchangeInfo);
|
List<TrxExchangeMonitorAccountInfo> trxExchangeMonitorAccountInfoList = trxExchangeInfoMapper.selectTrxExchangeMonitorAccountInfo(trxExchangeInfo);
|
||||||
|
|
||||||
|
if (between > period) {
|
||||||
|
|
||||||
|
String apiKey = DictUtils.getRandomDictValue("sys_tron_api_key");
|
||||||
|
|
||||||
for (TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo : trxExchangeMonitorAccountInfoList) {
|
for (TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo : trxExchangeMonitorAccountInfoList) {
|
||||||
undelegateEnergyHandler.unDelegateResource(trxExchangeMonitorAccountInfo);
|
String encryptPrivateKey = trxExchangeMonitorAccountInfo.getEncryptPrivateKey();
|
||||||
|
String encryptKey = trxExchangeMonitorAccountInfo.getEncryptKey();
|
||||||
|
String decryptPrivateKey = Dt.decrypt(encryptPrivateKey, encryptKey);
|
||||||
|
ApiWrapper apiWrapper = ApiWrapper.ofMainnet(decryptPrivateKey, apiKey);
|
||||||
|
undelegateEnergyHandler.doUndelegateEnergy(trxExchangeMonitorAccountInfo,apiWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//满期不继续处理
|
||||||
|
tenantInfo.setDelegatedDays(between);
|
||||||
|
String delegateStatus = DictUtils.getDictValue("sys_delegate_status", "已满期");
|
||||||
|
tenantInfo.setStatus(delegateStatus);
|
||||||
|
tenantInfo.setLcu("system");
|
||||||
|
tenantInfoMapper.updateTenantInfo(tenantInfo);
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
TrxExchangeInfo trxExchangeInfo = buildTrxExchangeInfo(tenantInfo, eneryBusiTypeByDay);
|
||||||
|
|
||||||
|
List<TrxExchangeMonitorAccountInfo> trxExchangeMonitorAccountInfoList = trxExchangeInfoMapper.selectTrxExchangeMonitorAccountInfo(trxExchangeInfo);
|
||||||
|
for (TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo : trxExchangeMonitorAccountInfoList) {
|
||||||
|
undelegateEnergyHandler.unDelegateResource(trxExchangeMonitorAccountInfo);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(trxExchangeMonitorAccountInfoList)) {
|
||||||
|
tenantInfo.setTotalCountUsed(0L);
|
||||||
|
tenantInfo.setDelegatedDays(tenantInfo.getDelegatedDays() + 1);
|
||||||
|
tenantInfo.setLcu("system");
|
||||||
|
tenantInfoMapper.updateTenantInfo(tenantInfo);
|
||||||
|
} else {
|
||||||
//赠送每天的能量
|
//赠送每天的能量
|
||||||
tenantInfoService.doDelegateEnergy(tenantInfo,"system");
|
tenantInfoService.doDelegateEnergy(tenantInfo, "system");
|
||||||
}else{
|
}
|
||||||
|
} else {
|
||||||
String delegateStatus = DictUtils.getDictValue("sys_delegate_status", "已回收");
|
String delegateStatus = DictUtils.getDictValue("sys_delegate_status", "已回收");
|
||||||
//查看有没有没回收的能量,有的话先回收
|
//查看有没有没回收的能量,有的话先回收
|
||||||
TrxExchangeInfo trxExchangeInfo = TrxExchangeInfo.builder()
|
TrxExchangeInfo trxExchangeInfo = TrxExchangeInfo.builder()
|
||||||
|
@ -78,9 +111,9 @@ public class EnergyTenantTransferHandler {
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
List<TrxExchangeMonitorAccountInfo> trxExchangeMonitorAccountInfoList = trxExchangeInfoMapper.selectTrxExchangeMonitorAccountInfo(trxExchangeInfo);
|
List<TrxExchangeMonitorAccountInfo> trxExchangeMonitorAccountInfoList = trxExchangeInfoMapper.selectTrxExchangeMonitorAccountInfo(trxExchangeInfo);
|
||||||
if (CollectionUtil.isEmpty(trxExchangeMonitorAccountInfoList)){
|
if (CollectionUtil.isEmpty(trxExchangeMonitorAccountInfoList)) {
|
||||||
//一笔都没有使用,每天自动扣除一笔
|
//一笔都没有使用,每天自动扣除一笔
|
||||||
tenantInfo.setTotalCountUsed(tenantInfo.getTotalCountUsed()+1);
|
tenantInfo.setTotalCountUsed(tenantInfo.getTotalCountUsed() + 1);
|
||||||
tenantInfo.setLcu("system");
|
tenantInfo.setLcu("system");
|
||||||
tenantInfoMapper.updateTenantInfo(tenantInfo);
|
tenantInfoMapper.updateTenantInfo(tenantInfo);
|
||||||
}
|
}
|
||||||
|
@ -103,5 +136,18 @@ public class EnergyTenantTransferHandler {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static TrxExchangeInfo buildTrxExchangeInfo(TenantInfo tenantInfo, String eneryBusiTypeByDay) {
|
||||||
|
String delegateStatus = DictUtils.getDictValue("sys_delegate_status", "已委托");
|
||||||
|
//查看有没有没回收的能量,有的话先回收
|
||||||
|
|
||||||
|
TrxExchangeInfo trxExchangeInfo = TrxExchangeInfo.builder()
|
||||||
|
.fromAddress(tenantInfo.getReceiverAddress())
|
||||||
|
.delegateStatus(delegateStatus)
|
||||||
|
.energyBusiType(eneryBusiTypeByDay)
|
||||||
|
.fcd(DateUtil.offsetDay(new Date(), -2))
|
||||||
|
.build();
|
||||||
|
return trxExchangeInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class UndelegateEnergyHandler {
|
||||||
String fromAddress = trxExchangeMonitorAccountInfo.getFromAddress();
|
String fromAddress = trxExchangeMonitorAccountInfo.getFromAddress();
|
||||||
|
|
||||||
|
|
||||||
if (betweenHours < lockPeriod) {
|
if (betweenHours < lockPeriod || betweenHours == 999L) {
|
||||||
String sysEnergyUndelegateWhitelistString = configService.selectConfigByKey("sys.energy.undelegate.whitelist");
|
String sysEnergyUndelegateWhitelistString = configService.selectConfigByKey("sys.energy.undelegate.whitelist");
|
||||||
if (StringUtils.isNotEmpty(sysEnergyUndelegateWhitelistString) && sysEnergyUndelegateWhitelistString.contains(trxExchangeMonitorAccountInfo.getFromAddress())){
|
if (StringUtils.isNotEmpty(sysEnergyUndelegateWhitelistString) && sysEnergyUndelegateWhitelistString.contains(trxExchangeMonitorAccountInfo.getFromAddress())){
|
||||||
String sysEnergyUndelegatePeriod = configService.selectConfigByKey("sys.energy.undelegate.period");
|
String sysEnergyUndelegatePeriod = configService.selectConfigByKey("sys.energy.undelegate.period");
|
||||||
|
@ -162,7 +162,6 @@ public class UndelegateEnergyHandler {
|
||||||
String accountAddress = trxExchangeMonitorAccountInfo.getAccountAddress();
|
String accountAddress = trxExchangeMonitorAccountInfo.getAccountAddress();
|
||||||
RLock lock = redissonClient.getLock("lock_undelegate_" + trxExchangeMonitorAccountInfo.getDelegateTxId());
|
RLock lock = redissonClient.getLock("lock_undelegate_" + trxExchangeMonitorAccountInfo.getDelegateTxId());
|
||||||
try {
|
try {
|
||||||
// String decryptPrivateKey = accountAddressInfoService.getDecryptPrivateKey(accountAddress);
|
|
||||||
String encryptPrivateKey = trxExchangeMonitorAccountInfo.getEncryptPrivateKey();
|
String encryptPrivateKey = trxExchangeMonitorAccountInfo.getEncryptPrivateKey();
|
||||||
String encryptKey = trxExchangeMonitorAccountInfo.getEncryptKey();
|
String encryptKey = trxExchangeMonitorAccountInfo.getEncryptKey();
|
||||||
|
|
||||||
|
@ -181,8 +180,6 @@ public class UndelegateEnergyHandler {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// String tronApiKey = DictUtils.getDictValue("sys_tron_api_key", "synp@outlook");
|
|
||||||
String apiKey = DictUtils.getRandomDictValue("sys_tron_api_key");
|
String apiKey = DictUtils.getRandomDictValue("sys_tron_api_key");
|
||||||
ApiWrapper apiWrapper = ApiWrapper.ofMainnet(decryptPrivateKey, apiKey);
|
ApiWrapper apiWrapper = ApiWrapper.ofMainnet(decryptPrivateKey, apiKey);
|
||||||
|
|
||||||
|
@ -207,13 +204,6 @@ public class UndelegateEnergyHandler {
|
||||||
if (tenantInfoList.size() > 0) {
|
if (tenantInfoList.size() > 0) {
|
||||||
|
|
||||||
tenantInfo = tenantInfoList.get(0);
|
tenantInfo = tenantInfoList.get(0);
|
||||||
|
|
||||||
/* if (UserConstants.NO.equals(tenantInfo.getIsPaid())) {
|
|
||||||
return;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Long totalCountUsed = tenantInfo.getTotalCountUsed();
|
Long totalCountUsed = tenantInfo.getTotalCountUsed();
|
||||||
long newTotalCountUsed = totalCountUsed + countUsed;
|
long newTotalCountUsed = totalCountUsed + countUsed;
|
||||||
tenantInfo.setTotalCountUsed(newTotalCountUsed);
|
tenantInfo.setTotalCountUsed(newTotalCountUsed);
|
||||||
|
@ -226,7 +216,7 @@ public class UndelegateEnergyHandler {
|
||||||
accountAddress,
|
accountAddress,
|
||||||
2,
|
2,
|
||||||
tenantInfo.getReceiverAddress(),
|
tenantInfo.getReceiverAddress(),
|
||||||
24,
|
999,
|
||||||
null,
|
null,
|
||||||
tenantInfo.getPrice(),
|
tenantInfo.getPrice(),
|
||||||
tenantInfo.getEnergyBusiType(),
|
tenantInfo.getEnergyBusiType(),
|
||||||
|
@ -259,51 +249,6 @@ public class UndelegateEnergyHandler {
|
||||||
tenantInfoMapper.updateTenantInfo(tenantInfo);
|
tenantInfoMapper.updateTenantInfo(tenantInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询是否是按天支付的租户,是的话需要回收完再次赠送
|
|
||||||
//
|
|
||||||
// Integer totalCountUsed = trxExchangeMonitorAccountInfo.getTotalCountUsed();
|
|
||||||
//
|
|
||||||
// if (totalCountUsed == null) {
|
|
||||||
// //不是天数或者套餐不需要再继续处理
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// if (UserConstants.NO.equals(trxExchangeMonitorAccountInfo.getIsPaid())) {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//// if (delegatedDays == period) {
|
|
||||||
//// //委托天数已用完不再处理,更改状态为已满期
|
|
||||||
//// String expire = DictUtils.getDictValue("sys_tenant_status", "已满期");
|
|
||||||
//// tenantInfo.setStatus(expire);
|
|
||||||
//// tenantInfoMapper.updateTenantInfo(tenantInfo);
|
|
||||||
//// }
|
|
||||||
// Integer maxTransferCount = trxExchangeMonitorAccountInfo.getMaxTransferCount();
|
|
||||||
// TenantInfo tenantInfo = new TenantInfo();
|
|
||||||
// tenantInfo.setIdTenantInfo(trxExchangeMonitorAccountInfo.getIdTenantInfo());
|
|
||||||
// tenantInfo.setTotalCountUsed(trxExchangeMonitorAccountInfo.getTotalCountUsed().longValue());
|
|
||||||
// if (totalCountUsed < maxTransferCount) {
|
|
||||||
// //回收完再次赠送
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
// Long period = trxExchangeMonitorAccountInfo.getPeriod();
|
|
||||||
// Long delegatedDays = trxExchangeMonitorAccountInfo.getDelegatedDays();
|
|
||||||
// String sysEnergyBusiType = DictUtils.getDictValue("sys_energy_busi_type", "天数套餐");
|
|
||||||
// String trxExchangeInfoBusiType = trxExchangeMonitorAccountInfo.getEnergyBusiType();
|
|
||||||
// if (trxExchangeInfoBusiType.equals(sysEnergyBusiType) ) {
|
|
||||||
// if ( delegatedDays == period){
|
|
||||||
// //委托天数已用完不再处理,更改状态为已满期
|
|
||||||
// String expire = DictUtils.getDictValue("sys_tenant_status", "已满期");
|
|
||||||
// tenantInfo.setStatus(expire);
|
|
||||||
// }
|
|
||||||
// }else{
|
|
||||||
// //笔数套餐超过次数直接设置为耗尽
|
|
||||||
// String expire = DictUtils.getDictValue("sys_tenant_status", "已满期");
|
|
||||||
// tenantInfo.setStatus(expire);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// tenantInfoMapper.updateTenantInfo(tenantInfo);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("回收能量业务处理异常{}", trxExchangeMonitorAccountInfo.getIdTrxExchangeInfo(), e);
|
log.error("回收能量业务处理异常{}", trxExchangeMonitorAccountInfo.getIdTrxExchangeInfo(), e);
|
||||||
|
@ -335,7 +280,7 @@ public class UndelegateEnergyHandler {
|
||||||
* @param
|
* @param
|
||||||
* @throws IllegalException
|
* @throws IllegalException
|
||||||
*/
|
*/
|
||||||
private void doUndelegateEnergy(TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo, ApiWrapper apiWrapper) throws IllegalException {
|
public void doUndelegateEnergy(TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo, ApiWrapper apiWrapper) throws IllegalException {
|
||||||
String accountAddress = trxExchangeMonitorAccountInfo.getAccountAddress();
|
String accountAddress = trxExchangeMonitorAccountInfo.getAccountAddress();
|
||||||
String fromAddress = trxExchangeMonitorAccountInfo.getFromAddress();
|
String fromAddress = trxExchangeMonitorAccountInfo.getFromAddress();
|
||||||
|
|
||||||
|
|
|
@ -202,11 +202,10 @@ public class Usdt2TrxTransferHandler {
|
||||||
|
|
||||||
usdtExchangeInfoMapper.insertUsdtExchangeInfo(usdtExchangeInfo);
|
usdtExchangeInfoMapper.insertUsdtExchangeInfo(usdtExchangeInfo);
|
||||||
|
|
||||||
if (oneUsdtToTrxPair == null){
|
if (oneUsdtToTrxPair != null){
|
||||||
return;
|
|
||||||
}
|
|
||||||
doSendTgNotice(oneUsdtToTrxPair.getFirst(), from, trxValue, transferValue, txId);
|
doSendTgNotice(oneUsdtToTrxPair.getFirst(), from, trxValue, transferValue, txId);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void doSendTgNotice(BigDecimal oneUsdtToTrx, String from, BigDecimal trxValue, BigDecimal transferValue, String txId) throws TelegramApiException {
|
private void doSendTgNotice(BigDecimal oneUsdtToTrx, String from, BigDecimal trxValue, BigDecimal transferValue, String txId) throws TelegramApiException {
|
||||||
String sysUsdtTranferNotice = configService.selectConfigByKey("sys.usdt.tranfer.notice");
|
String sysUsdtTranferNotice = configService.selectConfigByKey("sys.usdt.tranfer.notice");
|
||||||
|
|
|
@ -176,9 +176,9 @@ public class TenantInfoServiceImpl implements ITenantInfoService {
|
||||||
for (String id : idArray) {
|
for (String id : idArray) {
|
||||||
TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoByIdTenantInfo(Long.valueOf(id));
|
TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoByIdTenantInfo(Long.valueOf(id));
|
||||||
|
|
||||||
Long totalCountUsed = tenantInfo.getTotalCountUsed();
|
// Long totalCountUsed = tenantInfo.getTotalCountUsed();
|
||||||
|
//
|
||||||
Preconditions.checkState(totalCountUsed == 0, "该接收能量地址已在任务中,请勿重复发起");
|
// Preconditions.checkState(totalCountUsed == 0, "该接收能量地址已在任务中,请勿重复发起");
|
||||||
|
|
||||||
String status = DictUtils.getDictValue("sys_tenant_status", "生效中");
|
String status = DictUtils.getDictValue("sys_tenant_status", "生效中");
|
||||||
Preconditions.checkState(status.equals(tenantInfo.getStatus()), "该租户不是生效中状态,不能发起委托任务");
|
Preconditions.checkState(status.equals(tenantInfo.getStatus()), "该租户不是生效中状态,不能发起委托任务");
|
||||||
|
@ -239,7 +239,7 @@ public class TenantInfoServiceImpl implements ITenantInfoService {
|
||||||
trxExchange.setMonitorAddress(monitorAddress);
|
trxExchange.setMonitorAddress(monitorAddress);
|
||||||
|
|
||||||
// long between = DateUtil.between(DateUtil.date(), DateUtil.endOfDay(DateUtil.date()), DateUnit.HOUR);
|
// long between = DateUtil.between(DateUtil.date(), DateUtil.endOfDay(DateUtil.date()), DateUnit.HOUR);
|
||||||
trxExchange.setLockNum(24L);
|
trxExchange.setLockNum(999L);
|
||||||
|
|
||||||
trxExchange.setEnergyBusiType(tenantInfo.getEnergyBusiType());
|
trxExchange.setEnergyBusiType(tenantInfo.getEnergyBusiType());
|
||||||
trxExchange.setResourceCode(Common.ResourceCode.ENERGY.name());
|
trxExchange.setResourceCode(Common.ResourceCode.ENERGY.name());
|
||||||
|
|
Loading…
Reference in New Issue