实现tg会员批量充值代码,界面监听地址增加别名和备注

pull/520/head
dorion 2024-05-15 21:48:44 +08:00
parent b5737a75c4
commit e9cfc770c5
26 changed files with 371 additions and 159 deletions

View File

@ -147,7 +147,7 @@
</plugin> --> </plugin> -->
</plugins> </plugins>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>
<resources> <!-- <resources>
<resource> <resource>
<directory>src/main/resources</directory> <directory>src/main/resources</directory>
<excludes> <excludes>
@ -155,7 +155,7 @@
<exclude>*.xml</exclude> <exclude>*.xml</exclude>
</excludes> </excludes>
</resource> </resource>
</resources> </resources>-->
</build> </build>

View File

@ -8,6 +8,7 @@ import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
@ -19,6 +20,7 @@ import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@MapperScan("com.ruoyi.system.mapper") @MapperScan("com.ruoyi.system.mapper")
@Slf4j @Slf4j
@EnableAsync
public class RuoYiApplication implements CommandLineRunner public class RuoYiApplication implements CommandLineRunner
{ {
@Autowired(required = false) @Autowired(required = false)

View File

@ -34,7 +34,7 @@ server:
# 日志配置 # 日志配置
logging: logging:
level: level:
com.ruoyi: info com.ruoyi: debug
org.springframework: warn org.springframework: warn
# 用户配置 # 用户配置

View File

@ -1,103 +1,111 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head> <head>
<th:block th:include="include :: header('trx兑能量记录列表')" /> <th:block th:include="include :: header('trx兑能量记录列表')"/>
</head> </head>
<body class="gray-bg"> <body class="gray-bg">
<div class="container-div"> <div class="container-div">
<div class="row"> <div class="row">
<div class="col-sm-12 search-collapse"> <div class="col-sm-12 search-collapse">
<form id="formId"> <form id="formId">
<div class="select-list"> <div class="select-list">
<ul> <ul>
<li> <li>
<label>交易账户:</label> <label>交易账户:</label>
<input type="text" name="fromAddress"/> <input type="text" name="fromAddress"/>
</li> </li>
<li> <li>
<label>转入账户:</label> <label>转入账户:</label>
<input type="text" name="toAddress"/> <input type="text" name="toAddress"/>
</li> </li>
<!-- <li> <!-- <li>
<label>实际出账账户:</label> <label>实际出账账户:</label>
<input type="text" name="accountAddress"/> <input type="text" name="accountAddress"/>
</li>--> </li>-->
<li> <li>
<label>TRX订单</label> <label>TRX订单</label>
<input type="text" name="trxTxId"/> <input type="text" name="trxTxId"/>
</li> </li>
<!-- <li> <!-- <li>
<label>能量交易订单:</label> <label>能量交易订单:</label>
<input type="text" name="delegateTxId"/> <input type="text" name="delegateTxId"/>
</li>--> </li>-->
<li> <li>
<label>资源委托状态:</label> <label>资源委托状态:</label>
<select class="form-control" name="delegateStatus" th:with="type=${@dict.getType('sys_delegate_status')}"> <select class="form-control" name="delegateStatus"
<option value="">全部</option> th:with="type=${@dict.getType('sys_delegate_status')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" ></option> <option value="">全部</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}"
</li> th:value="${dict.dictValue}"></option>
<!-- <br/> <br/> <br/>--> </select>
<!-- </li>
<li> <!-- <br/> <br/> <br/>-->
<label>回收资源交易:</label> <!--
<input type="text" name="unDelegateTxId"/> <li>
</li>--> <label>回收资源交易:</label>
<li> <input type="text" name="unDelegateTxId"/>
<label>创建时间:</label> </li>-->
<input type="text" class="time-input" placeholder="请选择创建时间" name="fcd"/> <li class="select-time">
</li> <label>创建时间:</label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginFcd]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endFcd]"/>
</li>
<li> <li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a> class="fa fa-search"></i>&nbsp;搜索</a>
</li> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
</ul> class="fa fa-refresh"></i>&nbsp;重置</a>
</div> </li>
</form> </ul>
</div> </div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group"> <div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="trx2Energy:exchange:add"> <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="trx2Energy:exchange:add">
<i class="fa fa-plus"></i> 手动委托资源 <i class="fa fa-plus"></i> 手动委托资源
</a> </a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="trx2Energy:exchange:edit"> <a class="btn btn-primary single disabled" onclick="$.operate.edit()"
<i class="fa fa-edit"></i> 修改 shiro:hasPermission="trx2Energy:exchange:edit">
</a> <i class="fa fa-edit"></i> 修改
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="trx2Energy:exchange:remove"> </a>
<i class="fa fa-remove"></i> 删除 <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()"
</a> shiro:hasPermission="trx2Energy:exchange:remove">
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="trx2Energy:exchange:export"> <i class="fa fa-remove"></i> 删除
<i class="fa fa-download"></i> 导出 </a>
</a> <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="trx2Energy:exchange:export">
</div> <i class="fa fa-download"></i> 导出
<div class="col-sm-12 select-table table-striped"> </a>
<table id="bootstrap-table"></table> </div>
</div> <div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div> </div>
</div> </div>
<th:block th:include="include :: footer" /> </div>
<script th:inline="javascript"> <th:block th:include="include :: footer"/>
var editFlag = [[${@permission.hasPermi('trx2Energy:exchange:edit')}]]; <script th:inline="javascript">
var removeFlag = [[${@permission.hasPermi('trx2Energy:exchange:remove')}]]; var editFlag = [[${@permission.hasPermi('trx2Energy:exchange:edit')}]];
var prefix = ctx + "trx2Energy/exchange"; var removeFlag = [[${@permission.hasPermi('trx2Energy:exchange:remove')}]];
var datas = [[${@dict.getType('sys_delegate_status')}]]; var prefix = ctx + "trx2Energy/exchange";
var tranferCountDatas = [[${@dict.getType('sys_transfer_number')}]]; var datas = [[${@dict.getType('sys_delegate_status')}]];
var sysEnergyBusiTypeDatas = [[${@dict.getType('sys_energy_busi_type')}]]; var tranferCountDatas = [[${@dict.getType('sys_transfer_number')}]];
var lockPeriodDatas = [[${@dict.getType('sys_lock_period')}]]; var sysEnergyBusiTypeDatas = [[${@dict.getType('sys_energy_busi_type')}]];
$(function() { var lockPeriodDatas = [[${@dict.getType('sys_lock_period')}]];
var options = { $(function () {
url: prefix + "/list", var options = {
createUrl: prefix + "/add", url: prefix + "/list",
updateUrl: prefix + "/edit/{id}", createUrl: prefix + "/add",
removeUrl: prefix + "/remove", updateUrl: prefix + "/edit/{id}",
exportUrl: prefix + "/export", removeUrl: prefix + "/remove",
modalName: "trx兑能量记录", exportUrl: prefix + "/export",
columns: [{ modalName: "trx兑能量记录",
checkbox: true columns: [{
}, checkbox: true
},
{ {
field: 'idTrxExchangeInfo', field: 'idTrxExchangeInfo',
title: 'trx进账表', title: 'trx进账表',
@ -105,19 +113,29 @@
}, },
{ {
field: 'fromAddress', field: 'fromAddress',
title: '交易账户', title: '付款账户',
formatter:function(value, row, index) { formatter: function (value, row, index) {
return "<a href='https://www.oklink.com/zh-hans/trx/address/"+value+"' target='_blank'>" + value + "</a>"; return "<a href='https://www.oklink.com/zh-hans/trx/address/" + value + "' target='_blank'>" + value + "</a>";
} }
}, },
{ {
field: 'toAddress', field: 'toAddress',
title: '转入账户' title: '收款账户',
visible: false
}, {
field: 'monitorAddressName',
title: '收款账户别名',
formatter: function (value, row, index) {
if (value == null) {
return value;
}
return "<a href='https://www.oklink.com/zh-hans/trx/address/" + row['toAddress'] + "' target='_blank'>" + value + "</a>";
}
}, },
/* { /* {
field: 'accountAddress', field: 'accountAddress',
title: '实际出账账户' title: '实际出账账户'
},*/ },*/
{ {
field: 'price', field: 'price',
title: '单价' title: '单价'
@ -127,20 +145,20 @@
title: 'TRX订单', title: 'TRX订单',
visible: false visible: false
}, },
{ {
field: 'tranferCount', field: 'tranferCount',
title: '笔数', title: '笔数',
formatter: function(value, row, index) { formatter: function (value, row, index) {
return $.table.selectDictLabel(tranferCountDatas, value); return $.table.selectDictLabel(tranferCountDatas, value);
} }
}, },
{ {
field: 'energyBusiType', field: 'energyBusiType',
title: '业务类型', title: '业务类型',
formatter: function(value, row, index) { formatter: function (value, row, index) {
return $.table.selectDictLabel(sysEnergyBusiTypeDatas, value); return $.table.selectDictLabel(sysEnergyBusiTypeDatas, value);
} }
}, },
{ {
field: 'trxAmount', field: 'trxAmount',
title: '转入TRX' title: '转入TRX'
@ -157,14 +175,14 @@
{ {
field: 'lockPeriod', field: 'lockPeriod',
title: '锁定周期', title: '锁定周期',
formatter: function(value, row, index) { formatter: function (value, row, index) {
return $.table.selectDictLabel(lockPeriodDatas, value); return $.table.selectDictLabel(lockPeriodDatas, value);
} }
}, },
{ {
field: 'delegateStatus', field: 'delegateStatus',
title: '资源状态', title: '资源状态',
formatter: function(value, item, index) { formatter: function (value, item, index) {
return $.table.selectDictLabel(datas, item.delegateStatus); return $.table.selectDictLabel(datas, item.delegateStatus);
} }
}, },
@ -177,10 +195,10 @@
field: 'fcd', field: 'fcd',
title: '创建时间' title: '创建时间'
}, },
/* { /* {
field: 'fcu', field: 'fcu',
title: '创建用户' title: '创建用户'
},*/ },*/
{ {
field: 'lcd', field: 'lcd',
title: '更新时间', title: '更新时间',
@ -193,16 +211,16 @@
{ {
title: '操作', title: '操作',
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function (value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.idTrxExchangeInfo + '\')"><i class="fa fa-edit"></i>编辑</a> '); actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.idTrxExchangeInfo + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.idTrxExchangeInfo + '\')"><i class="fa fa-remove"></i>删除</a>'); actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.idTrxExchangeInfo + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join(''); return actions.join('');
} }
}] }]
}; };
$.table.init(options); $.table.init(options);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@ -15,10 +15,16 @@
</select> </select>
</div> </div>
</div>--> </div>-->
<div class="form-group">
<label class="col-sm-3 control-label">地址别名:</label>
<div class="col-sm-8">
<input name="monitorAddressName" class="form-control" type="text" required>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">监听地址:</label> <label class="col-sm-3 control-label">监听地址:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="monitorAddress" class="form-control" type="text"> <input name="monitorAddress" class="form-control" type="text" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -33,7 +39,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">TRX兑换单价/TRX</label> <label class="col-sm-3 control-label">TRX兑换单价/TRX</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="trxPrice" class="form-control" type="text"> <input name="trxPrice" class="form-control" type="text" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -60,6 +66,12 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<div class="col-sm-8">
<input name="comment" class="form-control" type="text">
</div>
</div>
</form> </form>
</div> </div>
<th:block th:include="include :: footer"/> <th:block th:include="include :: footer"/>

View File

@ -8,14 +8,13 @@
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> <div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-monitor-edit" th:object="${monitorAddressInfo}"> <form class="form-horizontal m" id="form-monitor-edit" th:object="${monitorAddressInfo}">
<input name="idMonitorAddress" th:field="*{idMonitorAddress}" type="hidden"> <input name="idMonitorAddress" th:field="*{idMonitorAddress}" type="hidden">
<!-- <div class="form-group">
<label class="col-sm-3 control-label">业务类型:</label> <div class="form-group">
<label class="col-sm-3 control-label">地址别名:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="busiType" class="form-control m-b" th:with="type=${@dict.getType('sys_busi_type')}"> <input name="monitorAddressName" th:field="*{monitorAddressName}" class="form-control" type="text">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{busiType}"></option>
</select>
</div> </div>
</div>--> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">监听地址:</label> <label class="col-sm-3 control-label">监听地址:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -71,6 +70,12 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<div class="col-sm-8">
<input name="comment" th:field="*{comment}" class="form-control" type="text">
</div>
</div>
</form> </form>
</div> </div>

View File

@ -36,9 +36,11 @@
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select> </select>
</li> </li>
<li> <li class="select-time">
<label>创建时间:</label> <label>创建时间:</label>
<input type="text" class="time-input" placeholder="请选择创建时间" name="fcd"/> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginFcd]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endFcd]"/>
</li> </li>
<li> <li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
@ -93,6 +95,10 @@
title: '主键', title: '主键',
visible: false visible: false
}, },
{
field: 'monitorAddressName',
title: '地址别名'
},
{ {
field: 'monitorAddress', field: 'monitorAddress',
title: '监听地址' title: '监听地址'
@ -148,7 +154,10 @@
formatter: function(value, item, index) { formatter: function(value, item, index) {
return $.table.selectDictLabel(datas, item.isValid); return $.table.selectDictLabel(datas, item.isValid);
} }
}, }, {
field: 'comment',
title: '备注'
},
{ {
field: 'fcd', field: 'fcd',
title: '创建时间', title: '创建时间',

View File

@ -8,7 +8,7 @@
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> <div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-usdt-add"> <form class="form-horizontal m" id="form-usdt-add">
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">转入地址:</label> <label class="col-sm-3 control-label">付款地址:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="fromAddress" class="form-control" type="text"> <input name="fromAddress" class="form-control" type="text">
</div> </div>

View File

@ -23,9 +23,11 @@
<input type="text" name="usdtTxId"/> <input type="text" name="usdtTxId"/>
</li> </li>
<li> <li class="select-time">
<label>创建时间:</label> <label>创建时间:</label>
<input type="text" class="time-input" placeholder="请选择创建时间" name="fcd"/> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginFcd]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endFcd]"/>
</li> </li>
<li> <li>
@ -80,15 +82,25 @@
}, },
{ {
field: 'fromAddress', field: 'fromAddress',
title: '交易地址', title: '付款账户',
formatter:function(value, row, index) { formatter:function(value, row, index) {
return "<a href='https://www.oklink.com/zh-hans/trx/address/"+value+"' target='_blank'>" + value + "</a>"; return "<a href='https://www.oklink.com/zh-hans/trx/address/"+value+"' target='_blank'>" + value + "</a>";
} }
}, },
{ {
field: 'toAddress', field: 'toAddress',
title: '转入地址' title: '收款账户',
}, visible: false
}, {
field: 'monitorAddressName',
title: '收款账户别名',
formatter: function (value, row, index) {
if (value == null) {
return value;
}
return "<a href='https://www.oklink.com/zh-hans/trx/address/" + row['toAddress'] + "' target='_blank'>" + value + "</a>";
}
},
{ {
field: 'usdtTxId', field: 'usdtTxId',
title: '交易订单' title: '交易订单'

View File

@ -15,6 +15,12 @@
</select> </select>
</div> </div>
</div>--> </div>-->
<div class="form-group">
<label class="col-sm-3 control-label">地址别名:</label>
<div class="col-sm-8">
<input name="monitorAddressName" class="form-control" type="text" required>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">监听地址:</label> <label class="col-sm-3 control-label">监听地址:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -40,6 +46,12 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<div class="col-sm-8">
<input name="comment" class="form-control" type="text">
</div>
</div>
</form> </form>
</div> </div>
<th:block th:include="include :: footer"/> <th:block th:include="include :: footer"/>

View File

@ -16,6 +16,12 @@
</select> </select>
</div> </div>
</div>--> </div>-->
<div class="form-group">
<label class="col-sm-3 control-label">地址别名:</label>
<div class="col-sm-8">
<input name="monitorAddressName" th:field="*{monitorAddressName}" class="form-control" type="text">
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">监听地址:</label> <label class="col-sm-3 control-label">监听地址:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -51,6 +57,13 @@
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<div class="col-sm-8">
<input name="comment" th:field="*{comment}" class="form-control" type="text">
</div>
</div>
</form> </form>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />

View File

@ -36,9 +36,11 @@
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select> </select>
</li> </li>
<li> <li class="select-time">
<label>创建时间:</label> <label>创建时间:</label>
<input type="text" class="time-input" placeholder="请选择创建时间" name="fcd"/> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginFcd]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endFcd]"/>
</li> </li>
<li> <li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
@ -93,6 +95,10 @@
title: '主键', title: '主键',
visible: false visible: false
}, },
{
field: 'monitorAddressName',
title: '地址别名'
},
{ {
field: 'monitorAddress', field: 'monitorAddress',
title: '监听地址' title: '监听地址'
@ -121,7 +127,10 @@
formatter: function(value, item, index) { formatter: function(value, item, index) {
return $.table.selectDictLabel(datas, item.isValid); return $.table.selectDictLabel(datas, item.isValid);
} }
}, },{
field: 'comment',
title: '备注'
},
{ {
field: 'fcd', field: 'fcd',
title: '创建时间', title: '创建时间',

View File

@ -28,6 +28,10 @@ public class MonitorAddressInfo extends BaseEntity
@Excel(name = "业务类型") @Excel(name = "业务类型")
private String busiType; private String busiType;
/** 地址别名 */
@Excel(name = "地址别名")
private String monitorAddressName;
/** 监听地址 */ /** 监听地址 */
@Excel(name = "监听地址") @Excel(name = "监听地址")
private String monitorAddress; private String monitorAddress;
@ -60,6 +64,9 @@ public class MonitorAddressInfo extends BaseEntity
/** 绑定时长 */ /** 绑定时长 */
@Excel(name = "绑定时长") @Excel(name = "绑定时长")
private String bindPeriod; private String bindPeriod;
/** 备注 */
@Excel(name = "备注")
private String comment;
/** 创建时间 */ /** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

View File

@ -34,6 +34,9 @@ public class TrxExchangeInfo extends BaseEntity
@Sensitive(desensitizedType = DesensitizedType.WALLET_ADDRESS) @Sensitive(desensitizedType = DesensitizedType.WALLET_ADDRESS)
private String toAddress; private String toAddress;
@Excel(name = "监听账户别名")
private String monitorAddressName;
/** 实际出账账户 */ /** 实际出账账户 */
@Excel(name = "实际出账账户") @Excel(name = "实际出账账户")
@Sensitive(desensitizedType = DesensitizedType.WALLET_ADDRESS) @Sensitive(desensitizedType = DesensitizedType.WALLET_ADDRESS)

View File

@ -32,7 +32,8 @@ public class UsdtExchangeInfo extends BaseEntity
@Excel(name = "转入地址") @Excel(name = "转入地址")
private String toAddress; private String toAddress;
@Excel(name = "收款账号别名")
private String monitorAddressName;
/** 出账地址 */ /** 出账地址 */
@Excel(name = "出账地址") @Excel(name = "出账地址")
private String accountAddress; private String accountAddress;

View File

@ -209,7 +209,8 @@ public class FragmentApiImpl implements IFragmentApi {
String formBody = "{\"" + address + "\":\"" + amount + "\"}"; String formBody = "{\"" + address + "\":\"" + amount + "\"}";
StringEntity requestEntity = new StringEntity(formBody, ContentType.APPLICATION_FORM_URLENCODED); StringEntity requestEntity = new StringEntity(formBody, ContentType.APPLICATION_FORM_URLENCODED);
httpPost.setEntity(requestEntity); httpPost.setEntity(requestEntity);
// httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 50000); // 设置连接超时时间为5秒
// httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 50000); // 设置读取超时时间为5秒
// 发送请求并获取响应 // 发送请求并获取响应
HttpResponse response = httpClient.execute(httpPost); HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() != 200) { if (response.getStatusLine().getStatusCode() != 200) {

View File

@ -4,12 +4,11 @@ import lombok.SneakyThrows;
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.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
@Component //@Component
@Slf4j @Slf4j
public class TgLongPollingBot extends TelegramLongPollingBot { public class TgLongPollingBot extends TelegramLongPollingBot {

View File

@ -14,6 +14,7 @@ import com.ruoyi.system.mapper.TgPremiumOrderInfoMapper;
import com.ruoyi.system.service.IErrorLogService; import com.ruoyi.system.service.IErrorLogService;
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.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.IOException; import java.io.IOException;
@ -34,10 +35,11 @@ public class TgPremiumTransferHandler {
@Autowired @Autowired
private TgPremiumOrderInfoMapper tgPremiumOrderInfoMapper; private TgPremiumOrderInfoMapper tgPremiumOrderInfoMapper;
@Async
public void doRechargeAndUpdate(TgPremiumOrderInfo tgPremiumOrderInfo) { public void doRechargeAndUpdate(TgPremiumOrderInfo tgPremiumOrderInfo) {
doRecharge(tgPremiumOrderInfo); doRecharge(tgPremiumOrderInfo);
tgPremiumOrderInfo.setLcu("syste"); tgPremiumOrderInfo.setLcu("system");
tgPremiumOrderInfoMapper.updateTgPremiumOrderInfo(tgPremiumOrderInfo); tgPremiumOrderInfoMapper.updateTgPremiumOrderInfo(tgPremiumOrderInfo);
} }
@ -124,7 +126,10 @@ public class TgPremiumTransferHandler {
} while (count < 5); } while (count < 5);
} }
tgPremiumOrderInfo.setTgPaymentStatus("E"); if (count >= 5) {
tgPremiumOrderInfo.setTgPaymentStatus("E");
}
} }

View File

@ -66,4 +66,6 @@ public interface TrxExchangeInfoMapper
List<TrxExchangeMonitorAccountInfo> selectTrxExchangeMonitorAccountInfo(TrxExchangeInfo trxExchangeInfo); List<TrxExchangeMonitorAccountInfo> selectTrxExchangeMonitorAccountInfo(TrxExchangeInfo trxExchangeInfo);
List<TransactionLogVO> selectTransactionLogVO(); List<TransactionLogVO> selectTransactionLogVO();
List<TrxExchangeInfo> selectTrxExchangeInfoAndMonitorNameList(TrxExchangeInfo trxExchangeInfo);
} }

View File

@ -60,4 +60,6 @@ public interface UsdtExchangeInfoMapper
* @return * @return
*/ */
public int deleteUsdtExchangeInfoByIdUsdtExchangeInfos(String[] idUsdtExchangeInfos); public int deleteUsdtExchangeInfoByIdUsdtExchangeInfos(String[] idUsdtExchangeInfos);
List<UsdtExchangeInfo> selectUsdtExchangeInfoAndMonitorNameList(UsdtExchangeInfo usdtExchangeInfo);
} }

View File

@ -14,7 +14,6 @@ import com.ruoyi.system.service.ISysConfigService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.text.StrSubstitutor; import org.apache.commons.lang3.text.StrSubstitutor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.ParseMode;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
@ -75,7 +74,6 @@ public class ErrorLogServiceImpl implements IErrorLogService {
* @return * @return
*/ */
@Override @Override
@Async
public int insertErrorLog(ErrorLog errorLog){ public int insertErrorLog(ErrorLog errorLog){
String sysErrorLogTemplate = configService.selectConfigByKey("sys.error.log.template"); String sysErrorLogTemplate = configService.selectConfigByKey("sys.error.log.template");
String sysErrorLogChatId = configService.selectConfigByKey("sys.error.log.chatid"); String sysErrorLogChatId = configService.selectConfigByKey("sys.error.log.chatid");

View File

@ -68,7 +68,8 @@ public class TrxExchangeInfoServiceImpl implements ITrxExchangeInfoService {
*/ */
@Override @Override
public List<TrxExchangeInfo> selectTrxExchangeInfoList(TrxExchangeInfo trxExchangeInfo) { public List<TrxExchangeInfo> selectTrxExchangeInfoList(TrxExchangeInfo trxExchangeInfo) {
return trxExchangeInfoMapper.selectTrxExchangeInfoList(trxExchangeInfo); // return trxExchangeInfoMapper.selectTrxExchangeInfoList(trxExchangeInfo);
return trxExchangeInfoMapper.selectTrxExchangeInfoAndMonitorNameList(trxExchangeInfo);
} }
/** /**

View File

@ -58,7 +58,8 @@ public class UsdtExchangeInfoServiceImpl implements IUsdtExchangeInfoService {
*/ */
@Override @Override
public List<UsdtExchangeInfo> selectUsdtExchangeInfoList(UsdtExchangeInfo usdtExchangeInfo) { public List<UsdtExchangeInfo> selectUsdtExchangeInfoList(UsdtExchangeInfo usdtExchangeInfo) {
return usdtExchangeInfoMapper.selectUsdtExchangeInfoList(usdtExchangeInfo); // return usdtExchangeInfoMapper.selectUsdtExchangeInfoList(usdtExchangeInfo);
return usdtExchangeInfoMapper.selectUsdtExchangeInfoAndMonitorNameList(usdtExchangeInfo);
} }
/** /**

View File

@ -4,9 +4,11 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.MonitorAddressInfoMapper"> <mapper namespace="com.ruoyi.system.mapper.MonitorAddressInfoMapper">
<resultMap type="MonitorAddressInfo" id="MonitorAddressInfoResult"> <resultMap type="MonitorAddressInfo" id="MonitorAddressInfoResult">
<result property="idMonitorAddress" column="id_monitor_address" /> <result property="idMonitorAddress" column="id_monitor_address" />
<result property="busiType" column="busi_type" /> <result property="busiType" column="busi_type" />
<result property="monitorAddressName" column="monitor_address_name" />
<result property="monitorAddress" column="monitor_address" /> <result property="monitorAddress" column="monitor_address" />
<result property="accountAddress" column="account_address" /> <result property="accountAddress" column="account_address" />
<result property="trxPrice" column="trx_price" /> <result property="trxPrice" column="trx_price" />
@ -15,6 +17,7 @@
<result property="apiKey" column="api_key" /> <result property="apiKey" column="api_key" />
<result property="bindPeriod" column="bind_period" /> <result property="bindPeriod" column="bind_period" />
<result property="isValid" column="is_valid" /> <result property="isValid" column="is_valid" />
<result property="comment" column="comment" />
<result property="fcd" column="fcd" /> <result property="fcd" column="fcd" />
<result property="fcu" column="fcu" /> <result property="fcu" column="fcu" />
<result property="lcd" column="lcd" /> <result property="lcd" column="lcd" />
@ -22,13 +25,14 @@
</resultMap> </resultMap>
<sql id="selectMonitorAddressInfoVo"> <sql id="selectMonitorAddressInfoVo">
select id_monitor_address, busi_type, monitor_address, account_address, trx_price, usdt_price, monitor_type, api_key, bind_period, is_valid, fcd, fcu, lcd, lcu from monitor_address_info select id_monitor_address, busi_type, monitor_address_name, monitor_address, account_address, trx_price, usdt_price, monitor_type, api_key, bind_period, is_valid, comment, fcd, fcu, lcd, lcu from monitor_address_info
</sql> </sql>
<select id="selectMonitorAddressInfoList" parameterType="MonitorAddressInfo" resultMap="MonitorAddressInfoResult"> <select id="selectMonitorAddressInfoList" parameterType="MonitorAddressInfo" resultMap="MonitorAddressInfoResult">
<include refid="selectMonitorAddressInfoVo"/> <include refid="selectMonitorAddressInfoVo"/>
<where> <where>
<if test="busiType != null and busiType != ''"> and busi_type = #{busiType}</if> <if test="busiType != null and busiType != ''"> and busi_type = #{busiType}</if>
<if test="monitorAddressName != null and monitorAddressName != ''"> and monitor_address_name like concat('%', #{monitorAddressName}, '%')</if>
<if test="monitorAddress != null and monitorAddress != ''"> and monitor_address = #{monitorAddress}</if> <if test="monitorAddress != null and monitorAddress != ''"> and monitor_address = #{monitorAddress}</if>
<if test="accountAddress != null and accountAddress != ''"> and account_address = #{accountAddress}</if> <if test="accountAddress != null and accountAddress != ''"> and account_address = #{accountAddress}</if>
<if test="trxPrice != null "> and trx_price = #{trxPrice}</if> <if test="trxPrice != null "> and trx_price = #{trxPrice}</if>
@ -37,7 +41,8 @@
<if test="apiKey != null and apiKey != ''"> and api_key = #{apiKey}</if> <if test="apiKey != null and apiKey != ''"> and api_key = #{apiKey}</if>
<if test="bindPeriod != null and bindPeriod != ''"> and bind_period = #{bindPeriod}</if> <if test="bindPeriod != null and bindPeriod != ''"> and bind_period = #{bindPeriod}</if>
<if test="isValid != null and isValid != ''"> and is_valid = #{isValid}</if> <if test="isValid != null and isValid != ''"> and is_valid = #{isValid}</if>
<if test="fcd != null "> and fcd = #{fcd}</if> <if test="comment != null and comment != ''"> and comment = #{comment}</if>
<if test="params.beginFcd != null and params.beginFcd != '' and params.endFcd != null and params.endFcd != ''"> and fcd between #{params.beginFcd} and #{params.endFcd}</if>
<if test="fcu != null and fcu != ''"> and fcu = #{fcu}</if> <if test="fcu != null and fcu != ''"> and fcu = #{fcu}</if>
<if test="lcd != null "> and lcd = #{lcd}</if> <if test="lcd != null "> and lcd = #{lcd}</if>
<if test="lcu != null and lcu != ''"> and lcu = #{lcu}</if> <if test="lcu != null and lcu != ''"> and lcu = #{lcu}</if>
@ -53,6 +58,7 @@
insert into monitor_address_info insert into monitor_address_info
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="busiType != null">busi_type,</if> <if test="busiType != null">busi_type,</if>
<if test="monitorAddressName != null">monitor_address_name,</if>
<if test="monitorAddress != null">monitor_address,</if> <if test="monitorAddress != null">monitor_address,</if>
<if test="accountAddress != null">account_address,</if> <if test="accountAddress != null">account_address,</if>
<if test="trxPrice != null">trx_price,</if> <if test="trxPrice != null">trx_price,</if>
@ -61,6 +67,7 @@
<if test="apiKey != null">api_key,</if> <if test="apiKey != null">api_key,</if>
<if test="bindPeriod != null">bind_period,</if> <if test="bindPeriod != null">bind_period,</if>
<if test="isValid != null">is_valid,</if> <if test="isValid != null">is_valid,</if>
<if test="comment != null">comment,</if>
<if test="fcd != null">fcd,</if> <if test="fcd != null">fcd,</if>
<if test="fcu != null">fcu,</if> <if test="fcu != null">fcu,</if>
<if test="lcd != null">lcd,</if> <if test="lcd != null">lcd,</if>
@ -68,6 +75,7 @@
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="busiType != null">#{busiType},</if> <if test="busiType != null">#{busiType},</if>
<if test="monitorAddressName != null">#{monitorAddressName},</if>
<if test="monitorAddress != null">#{monitorAddress},</if> <if test="monitorAddress != null">#{monitorAddress},</if>
<if test="accountAddress != null">#{accountAddress},</if> <if test="accountAddress != null">#{accountAddress},</if>
<if test="trxPrice != null">#{trxPrice},</if> <if test="trxPrice != null">#{trxPrice},</if>
@ -76,6 +84,7 @@
<if test="apiKey != null">#{apiKey},</if> <if test="apiKey != null">#{apiKey},</if>
<if test="bindPeriod != null">#{bindPeriod},</if> <if test="bindPeriod != null">#{bindPeriod},</if>
<if test="isValid != null">#{isValid},</if> <if test="isValid != null">#{isValid},</if>
<if test="comment != null">#{comment},</if>
<if test="fcd != null">#{fcd},</if> <if test="fcd != null">#{fcd},</if>
<if test="fcu != null">#{fcu},</if> <if test="fcu != null">#{fcu},</if>
<if test="lcd != null">#{lcd},</if> <if test="lcd != null">#{lcd},</if>
@ -87,6 +96,7 @@
update monitor_address_info update monitor_address_info
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="busiType != null">busi_type = #{busiType},</if> <if test="busiType != null">busi_type = #{busiType},</if>
<if test="monitorAddressName != null">monitor_address_name = #{monitorAddressName},</if>
<if test="monitorAddress != null">monitor_address = #{monitorAddress},</if> <if test="monitorAddress != null">monitor_address = #{monitorAddress},</if>
<if test="accountAddress != null">account_address = #{accountAddress},</if> <if test="accountAddress != null">account_address = #{accountAddress},</if>
<if test="trxPrice != null">trx_price = #{trxPrice},</if> <if test="trxPrice != null">trx_price = #{trxPrice},</if>
@ -95,6 +105,7 @@
<if test="apiKey != null">api_key = #{apiKey},</if> <if test="apiKey != null">api_key = #{apiKey},</if>
<if test="bindPeriod != null">bind_period = #{bindPeriod},</if> <if test="bindPeriod != null">bind_period = #{bindPeriod},</if>
<if test="isValid != null">is_valid = #{isValid},</if> <if test="isValid != null">is_valid = #{isValid},</if>
<if test="comment != null">comment = #{comment},</if>
<if test="fcd != null">fcd = #{fcd},</if> <if test="fcd != null">fcd = #{fcd},</if>
<if test="fcu != null">fcu = #{fcu},</if> <if test="fcu != null">fcu = #{fcu},</if>
<if test="lcd != null">lcd = #{lcd},</if> <if test="lcd != null">lcd = #{lcd},</if>
@ -114,6 +125,7 @@
</foreach> </foreach>
</delete> </delete>
<select id="selectMonitorAddressAccount" resultType="com.ruoyi.system.domain.MonitorAddressAccount" parameterType="MonitorAddressInfo"> <select id="selectMonitorAddressAccount" resultType="com.ruoyi.system.domain.MonitorAddressAccount" parameterType="MonitorAddressInfo">
select m.monitor_address, select m.monitor_address,
m.account_address, m.account_address,

View File

@ -47,6 +47,7 @@
<if test="delegateStatus != null and delegateStatus != ''"> and delegate_status = #{delegateStatus}</if> <if test="delegateStatus != null and delegateStatus != ''"> and delegate_status = #{delegateStatus}</if>
<if test="unDelegateTxId != null and unDelegateTxId != ''"> and un_delegate_tx_id = #{unDelegateTxId}</if> <if test="unDelegateTxId != null and unDelegateTxId != ''"> and un_delegate_tx_id = #{unDelegateTxId}</if>
<if test="fcd != null "> and fcd &gt;= #{fcd}</if> <if test="fcd != null "> and fcd &gt;= #{fcd}</if>
<if test="params.beginFcd != null and params.beginFcd != '' and params.endFcd != null and params.endFcd != ''"> and fcd between #{params.beginFcd} and #{params.endFcd}</if>
<if test="fcu != null and fcu != ''"> and fcu = #{fcu}</if> <if test="fcu != null and fcu != ''"> and fcu = #{fcu}</if>
<if test="lcd != null "> and lcd &lt;= #{lcd}</if> <if test="lcd != null "> and lcd &lt;= #{lcd}</if>
<if test="lcu != null and lcu != ''"> and lcu = #{lcu}</if> <if test="lcu != null and lcu != ''"> and lcu = #{lcu}</if>
@ -187,4 +188,53 @@
<select id="selectTransactionLogVO" resultType="com.ruoyi.system.domain.vo.TransactionLogVO"> <select id="selectTransactionLogVO" resultType="com.ruoyi.system.domain.vo.TransactionLogVO">
select distinct t.from_address fromAddress,t.tranfer_count count from trx_exchange_info t select distinct t.from_address fromAddress,t.tranfer_count count from trx_exchange_info t
</select> </select>
<select id="selectTrxExchangeInfoAndMonitorNameList" parameterType="TrxExchangeInfo" resultType="TrxExchangeInfo" >
SELECT
t.id_trx_exchange_info,
t.from_address,
t.to_address,
m.monitor_address_name,
t.account_address,
t.price,
t.trx_tx_id,
t.tranfer_count,
t.energy_busi_type,
t.trx_amount,
t.delegate_amount_trx,
t.delegate_tx_id,
t.lock_period,
t.delegate_status,
t.un_delegate_tx_id,
t.fcd,
t.fcu,
t.lcd,
t.lcu
FROM
trx_exchange_info t
LEFT JOIN monitor_address_info m
ON t.to_address = m.monitor_address
<where> 1=1
<if test="fromAddress != null and fromAddress != ''"> and t.from_address = #{fromAddress}</if>
<if test="toAddress != null and toAddress != ''"> and t.to_address = #{toAddress}</if>
<if test="accountAddress != null and accountAddress != ''"> and t.account_address = #{accountAddress}</if>
<if test="price != null "> and t.price = #{price}</if>
<if test="trxTxId != null and trxTxId != ''"> and t.trx_tx_id = #{trxTxId}</if>
<if test="tranferCount != null "> and t.tranfer_count = #{tranferCount}</if>
<if test="energyBusiType != null and energyBusiType != ''"> and t.energy_busi_type = #{energyBusiType}</if>
<if test="trxAmount != null "> and t.trx_amount = #{trxAmount}</if>
<if test="delegateAmountTrx != null "> and t.delegate_amount_trx = #{delegateAmountTrx}</if>
<if test="delegateTxId != null and delegateTxId != ''"> and t.delegate_tx_id = #{delegateTxId}</if>
<if test="lockPeriod != null "> and t.lock_period = #{lockPeriod}</if>
<if test="delegateStatus != null and delegateStatus != ''"> and t.delegate_status = #{delegateStatus}</if>
<if test="unDelegateTxId != null and unDelegateTxId != ''"> and t.un_delegate_tx_id = #{unDelegateTxId}</if>
<if test="fcd != null "> and t.fcd &gt;= #{fcd}</if>
<if test="params.beginFcd != null and params.beginFcd != '' and params.endFcd != null and params.endFcd != ''"> and t.fcd between #{params.beginFcd} and #{params.endFcd}</if>
<if test="fcu != null and fcu != ''"> and t.fcu = #{fcu}</if>
<if test="lcd != null "> and lcd &lt;= #{lcd}</if>
<if test="lcu != null and lcu != ''"> and t.lcu = #{lcu}</if>
order by fcd desc
</where>
</select>
</mapper> </mapper>

View File

@ -114,4 +114,42 @@
</foreach> </foreach>
</delete> </delete>
<select id="selectUsdtExchangeInfoAndMonitorNameList" parameterType="UsdtExchangeInfo" resultType="UsdtExchangeInfo">
SELECT
u.id_usdt_exchange_info idUsdtExchangeInfo,
u.from_address fromAddress,
u.to_address toAddress,
m.monitor_address_name monitorAddressName,
u.account_address accountAddress,
u.usdt_tx_id usdtTxId,
u.usdt_amount usdtAmount,
u.trx_amount trxAmount,
u.exchange_rate exchangeRate,
u.trx_tx_id trxTxId,
u.orginal_exchange_rate orginalExchangeRate,
u.fcd,
u.fcu,
u.lcd,
u.lcu
FROM
usdt_exchange_info u left join monitor_address_info m
on u.to_address=m.monitor_address
<where>
<if test="fromAddress != null and fromAddress != ''"> and u.from_address = #{fromAddress}</if>
<if test="toAddress != null and toAddress != ''"> and u.to_address = #{toAddress}</if>
<if test="accountAddress != null and accountAddress != ''"> and u.account_address = #{accountAddress}</if>
<if test="usdtTxId != null and usdtTxId != ''"> and u.usdt_tx_id = #{usdtTxId}</if>
<if test="usdtAmount != null "> and u.usdt_amount = #{usdtAmount}</if>
<if test="trxAmount != null "> and u.trx_amount = #{trxAmount}</if>
<if test="exchangeRate != null "> and u.exchange_rate = #{exchangeRate}</if>
<if test="trxTxId != null and trxTxId != ''"> and u.trx_tx_id = #{trxTxId}</if>
<if test="orginalExchangeRate != null "> and u.orginal_exchange_rate = #{orginalExchangeRate}</if>
<if test="params.beginFcd != null and params.beginFcd != '' and params.endFcd != null and params.endFcd != ''"> and u.fcd between #{params.beginFcd} and #{params.endFcd}</if>
<if test="fcu != null and fcu != ''"> and u.fcu = #{fcu}</if>
<if test="lcd != null "> and u.lcd = #{lcd}</if>
<if test="lcu != null and lcu != ''"> and u.lcu = #{lcu}</if>
</where>
</select>
</mapper> </mapper>