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;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.common.core.domain.entity.ErrorLog;
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.ForwardCounter;
import com.ruoyi.common.utils.LogUtils;
import com.ruoyi.common.utils.encrpt.Dt;
import com.ruoyi.system.domain.TrxExchangeMonitorAccountInfo;
import com.ruoyi.system.mapper.TenantInfoMapper;
import com.ruoyi.system.mapper.TrxExchangeInfoMapper;
@ -16,6 +18,7 @@ import com.ruoyi.system.service.ITenantInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.trident.core.ApiWrapper;
import java.util.Date;
import java.util.List;
@ -48,26 +51,56 @@ public class EnergyTenantTransferHandler {
String eneryBusiTypeByDay = DictUtils.getDictValue("sys_energy_busi_type", "天数套餐");
if (tenantInfo.getEnergyBusiType().equals(eneryBusiTypeByDay)){
String delegateStatus = DictUtils.getDictValue("sys_delegate_status", "已委托");
//查看有没有没回收的能量,有的话先回收
if (tenantInfo.getEnergyBusiType().equals(eneryBusiTypeByDay)) {
TrxExchangeInfo trxExchangeInfo = TrxExchangeInfo.builder()
.fromAddress(tenantInfo.getReceiverAddress())
.delegateStatus(delegateStatus)
.energyBusiType(eneryBusiTypeByDay)
.fcd(DateUtil.offsetDay(new Date(), -2))
.build();
Long period = tenantInfo.getPeriod();
long between = DateUtil.between(tenantInfo.getFcd(), new Date(), DateUnit.DAY);
TrxExchangeInfo trxExchangeInfo = buildTrxExchangeInfo(tenantInfo, eneryBusiTypeByDay);
List<TrxExchangeMonitorAccountInfo> trxExchangeMonitorAccountInfoList = trxExchangeInfoMapper.selectTrxExchangeMonitorAccountInfo(trxExchangeInfo);
for (TrxExchangeMonitorAccountInfo trxExchangeMonitorAccountInfo : trxExchangeMonitorAccountInfoList) {
undelegateEnergyHandler.unDelegateResource(trxExchangeMonitorAccountInfo);
if (between > period) {
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");
}else{
/*
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");
}
} else {
String delegateStatus = DictUtils.getDictValue("sys_delegate_status", "已回收");
//查看有没有没回收的能量,有的话先回收
TrxExchangeInfo trxExchangeInfo = TrxExchangeInfo.builder()
@ -78,9 +111,9 @@ public class EnergyTenantTransferHandler {
.build();
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");
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();
if (betweenHours < lockPeriod) {
if (betweenHours < lockPeriod || betweenHours == 999L) {
String sysEnergyUndelegateWhitelistString = configService.selectConfigByKey("sys.energy.undelegate.whitelist");
if (StringUtils.isNotEmpty(sysEnergyUndelegateWhitelistString) && sysEnergyUndelegateWhitelistString.contains(trxExchangeMonitorAccountInfo.getFromAddress())){
String sysEnergyUndelegatePeriod = configService.selectConfigByKey("sys.energy.undelegate.period");
@ -162,7 +162,6 @@ public class UndelegateEnergyHandler {
String accountAddress = trxExchangeMonitorAccountInfo.getAccountAddress();
RLock lock = redissonClient.getLock("lock_undelegate_" + trxExchangeMonitorAccountInfo.getDelegateTxId());
try {
// String decryptPrivateKey = accountAddressInfoService.getDecryptPrivateKey(accountAddress);
String encryptPrivateKey = trxExchangeMonitorAccountInfo.getEncryptPrivateKey();
String encryptKey = trxExchangeMonitorAccountInfo.getEncryptKey();
@ -181,8 +180,6 @@ public class UndelegateEnergyHandler {
return;
}
// String tronApiKey = DictUtils.getDictValue("sys_tron_api_key", "synp@outlook");
String apiKey = DictUtils.getRandomDictValue("sys_tron_api_key");
ApiWrapper apiWrapper = ApiWrapper.ofMainnet(decryptPrivateKey, apiKey);
@ -207,13 +204,6 @@ public class UndelegateEnergyHandler {
if (tenantInfoList.size() > 0) {
tenantInfo = tenantInfoList.get(0);
/* if (UserConstants.NO.equals(tenantInfo.getIsPaid())) {
return;
}*/
Long totalCountUsed = tenantInfo.getTotalCountUsed();
long newTotalCountUsed = totalCountUsed + countUsed;
tenantInfo.setTotalCountUsed(newTotalCountUsed);
@ -226,7 +216,7 @@ public class UndelegateEnergyHandler {
accountAddress,
2,
tenantInfo.getReceiverAddress(),
24,
999,
null,
tenantInfo.getPrice(),
tenantInfo.getEnergyBusiType(),
@ -259,51 +249,6 @@ public class UndelegateEnergyHandler {
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) {
log.error("回收能量业务处理异常{}", trxExchangeMonitorAccountInfo.getIdTrxExchangeInfo(), e);
@ -335,7 +280,7 @@ public class UndelegateEnergyHandler {
* @param
* @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 fromAddress = trxExchangeMonitorAccountInfo.getFromAddress();

View File

@ -202,10 +202,9 @@ public class Usdt2TrxTransferHandler {
usdtExchangeInfoMapper.insertUsdtExchangeInfo(usdtExchangeInfo);
if (oneUsdtToTrxPair == null){
return;
if (oneUsdtToTrxPair != null){
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 {

View File

@ -176,9 +176,9 @@ public class TenantInfoServiceImpl implements ITenantInfoService {
for (String id : idArray) {
TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoByIdTenantInfo(Long.valueOf(id));
Long totalCountUsed = tenantInfo.getTotalCountUsed();
Preconditions.checkState(totalCountUsed == 0, "该接收能量地址已在任务中,请勿重复发起");
// Long totalCountUsed = tenantInfo.getTotalCountUsed();
//
// Preconditions.checkState(totalCountUsed == 0, "该接收能量地址已在任务中,请勿重复发起");
String status = DictUtils.getDictValue("sys_tenant_status", "生效中");
Preconditions.checkState(status.equals(tenantInfo.getStatus()), "该租户不是生效中状态,不能发起委托任务");
@ -239,7 +239,7 @@ public class TenantInfoServiceImpl implements ITenantInfoService {
trxExchange.setMonitorAddress(monitorAddress);
// long between = DateUtil.between(DateUtil.date(), DateUtil.endOfDay(DateUtil.date()), DateUnit.HOUR);
trxExchange.setLockNum(24L);
trxExchange.setLockNum(999L);
trxExchange.setEnergyBusiType(tenantInfo.getEnergyBusiType());
trxExchange.setResourceCode(Common.ResourceCode.ENERGY.name());