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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue