Merge branch 'refs/heads/feeen-1.15.2' into feeen-1.16.0

# Conflicts:
#	ruoyi-system/src/main/java/com/ruoyi/system/handler/Usdt2TrxTransferHandler.java
pull/520/head
dorion 2024-06-25 23:48:01 +08:00
commit 951bfa9ef6
4 changed files with 71 additions and 81 deletions

View File

@ -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);
for (TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo : trxExchangeMonitorAccountInfoList) { if (between > period) {
undelegateEnergyHandler.unDelegateResource(trxExchangeMonitorAccountInfo);
String apiKey = DictUtils.getRandomDictValue("sys_tron_api_key");
for (TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo : trxExchangeMonitorAccountInfoList) {
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;
} }
//赠送每天的能量 /*
tenantInfoService.doDelegateEnergy(tenantInfo,"system"); TrxExchangeInfo trxExchangeInfo = buildTrxExchangeInfo(tenantInfo, eneryBusiTypeByDay);
}else{
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");
}
} 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;
}
} }

View File

@ -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();

View File

@ -202,10 +202,9 @@ 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 {

View File

@ -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());