From 4b3103e172fc4bb8e476643c11f2f3d3106dbacb Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sat, 13 Jun 2026 15:45:31 +0800
Subject: [PATCH] style(frontend): 注释掉多个页面中的冗余表单元素和功能模块
---
src/main/java/cc/mrbird/febs/mall/quartz/ChatTrc20ChargeOkLinkTask.java | 183 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 183 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ChatTrc20ChargeOkLinkTask.java b/src/main/java/cc/mrbird/febs/mall/quartz/ChatTrc20ChargeOkLinkTask.java
new file mode 100644
index 0000000..43f7ff9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ChatTrc20ChargeOkLinkTask.java
@@ -0,0 +1,183 @@
+package cc.mrbird.febs.mall.quartz;
+
+import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.controller.dependentStation.constant.OrderConstants;
+import cc.mrbird.febs.mall.controller.dependentStation.enums.SalesServiceEnums;
+import cc.mrbird.febs.mall.controller.dependentStation.utils.OkHttpUtil2;
+import cc.mrbird.febs.mall.controller.dependentStation.utils.Trc20TokenviewContentModel;
+import cc.mrbird.febs.mall.controller.dependentStation.utils.Trc20TokenviewModel;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+@Slf4j
+@Component
+@ConditionalOnProperty(prefix = "system", name = "job", havingValue = "true")
+public class ChatTrc20ChargeOkLinkTask {
+
+
+ @Resource
+ private RedisUtils redisUtils;
+ @Resource
+ private MallOrderInfoMapper mallOrderInfoMapper;
+ @Resource
+ private DataDictionaryCustomMapper dataDictionaryCustomMapper;
+ /**
+ * 五分钟 毫秒
+ */
+ private final static long TIME_INTERVAL = 300000*6;
+
+
+ private final static String TRON_API_KEY = "fq6S2XK5zfNccu6QfGCi";
+
+ private static Map<String, String> REQUEST_HEADER = new HashMap<>();
+ static {
+ REQUEST_HEADER.put("TRON-PRO-API-KEY", TRON_API_KEY);
+ }
+
+ @Scheduled(cron = "0 0/1 * * * ? ")
+ public void recharge() {
+ // 查询过去5分钟的记录
+
+ DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ SalesServiceEnums.TRC_ADDRESS.getType(),
+ SalesServiceEnums.TRC_ADDRESS.getCode()
+ );
+ String receiveAddress = dataDictionaryCustom.getValue();
+ if (receiveAddress == null) {
+ log.error("请先配置系统地址");
+ return;
+ }
+ //https://services.tokenview.io/vipapi/trx/token/TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
+ String url = "https://services.tokenview.io/vipapi/trx/address/tokentrans/"+receiveAddress+"/TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t/1/10";
+ // 定时任务的执行时间和转账时间区间间隔5分钟
+
+ // 每次将上次的时间存入redis,第一次使用默认的时间
+ long endTime = System.currentTimeMillis();
+ long startTime = endTime-TIME_INTERVAL;
+
+ System.out.println(new Date()+" 自动充值定时任务 "+startTime+" "+endTime);
+ // 当前的充值地址 TRC20USDT_ADDRESS
+ Map<String, String> param = new HashMap<>();
+ param.put("timestampStart", startTime + "");
+ param.put("timestampEnd", endTime + "");
+ param.put("toAddress", receiveAddress);
+ param.put("apikey", TRON_API_KEY);
+ long l = System.currentTimeMillis();
+ byte[] bytes = OkHttpUtil2.doGetSingle(url, REQUEST_HEADER, param, "application/json");
+
+ if (ObjectUtil.isEmpty( bytes )) {
+ log.error("查询链上数据返回为空,传参:{}",param);
+ return;
+ }
+
+ String s = new String(bytes, StandardCharsets.UTF_8);
+ log.info("查询到的充值记录:{}", s);
+ Trc20TokenviewModel trc20TransfersModel = JSONObject.parseObject(s, Trc20TokenviewModel.class);
+ List<Trc20TokenviewContentModel> tokenTransfers = trc20TransfersModel.getData();
+ if (CollUtil.isEmpty(tokenTransfers)) {
+ //logger.error("FyTrc20RechargeTask查询链上数据返回没有token转账,返回结果:{}",s);
+ return;
+ }
+ long l1 = System.currentTimeMillis();
+ log.info("查询trc耗时:{}", (l1 - l));
+ log.info("查询到的充值记录:{}", JSONObject.toJSONString(trc20TransfersModel));
+ log.info("时间区间,start:{},end:{}", startTime, endTime);
+ // 有记录
+ for (Trc20TokenviewContentModel tokenTransfer : tokenTransfers) {
+ log.info("链上时间:{}", tokenTransfer.getTime());
+ // 从数据库
+ String transactionId = tokenTransfer.getTxid();
+ List<MallOrderInfo> chatOrders = mallOrderInfoMapper.selectList(
+ Wrappers.lambdaQuery(MallOrderInfo.class)
+ .eq(MallOrderInfo::getTradeHash, transactionId)
+ );
+ if(CollUtil.isNotEmpty(chatOrders)){
+ log.info("扫描到HASH已使用:{}",transactionId);
+ continue;
+ }
+ // 金额
+ String quant = tokenTransfer.getValue();
+ BigDecimal amount = new BigDecimal(quant).divide(new BigDecimal("1000000")).setScale(2, RoundingMode.DOWN);
+ String amountKey = OrderConstants.TRC20_ORDER_KEY + amount;
+ String orderCode = redisUtils.getString(amountKey);
+ if (StrUtil.isBlank(orderCode)) {
+ log.info("Redis未扫描到充值金额:{}",transactionId);
+ continue;
+ }
+ MallOrderInfo chatOrder = mallOrderInfoMapper.selectOne(
+ Wrappers.lambdaQuery(MallOrderInfo.class)
+ .eq(MallOrderInfo::getOrderNo, orderCode)
+ );
+ if(chatOrder==null){
+ log.error("未找到订单:{}",orderCode);
+ continue;
+ }
+ if(OrderStatusEnum.WAIT_PAY.getValue() != chatOrder.getStatus()){
+ log.error("订单不是待充值状态: {},订单编号:{}",transactionId,orderCode);
+ continue;
+ }
+
+ mallOrderInfoMapper.update(
+ null,
+ Wrappers.lambdaUpdate(MallOrderInfo.class)
+ .set(MallOrderInfo::getStatus, OrderStatusEnum.WAIT_SHIPPING.getValue())
+ .set(MallOrderInfo::getTradeHash, transactionId)
+ .set(MallOrderInfo::getPayTime, new Date())
+ .set(MallOrderInfo::getPayResult, "1")
+ .eq(MallOrderInfo::getId, chatOrder.getId())
+ );
+ redisUtils.del(amountKey);
+ log.info("Redis扫描到充值记录:{},订单编号:{}",transactionId,orderCode);
+ }
+ }
+
+
+ public static void main(String[] args) {
+ String receiveAddress = "TExto1UjtFcXKw5QdJDRqtx7wTQ15D37GD";
+ String url = "https://services.tokenview.io/vipapi/trx/address/tokentrans/"+receiveAddress+"/TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t/1/10";
+ // 定时任务的执行时间和转账时间区间间隔5分钟
+
+ // 每次将上次的时间存入redis,第一次使用默认的时间
+ long endTime = System.currentTimeMillis();
+ long startTime = endTime-TIME_INTERVAL;
+
+ System.out.println(new Date()+" 自动充值定时任务fyTrc20RechargeTokenviewTask "+startTime+" "+endTime);
+ // 当前的充值地址 TRC20USDT_ADDRESS
+ Map<String, String> param = new HashMap<>();
+ param.put("timestampStart", startTime + "");
+ param.put("timestampEnd", endTime + "");
+ param.put("toAddress", receiveAddress);
+ param.put("apikey", TRON_API_KEY);
+ long l = System.currentTimeMillis();
+ byte[] bytes = OkHttpUtil2.doGetSingle(url, REQUEST_HEADER, param, "application/json");
+
+ if (bytes == null) {
+ log.error("FyTrc20RechargeTask查询链上数据返回为空,传参:{}",param);
+ return;
+ }
+
+ String s = new String(bytes, StandardCharsets.UTF_8);
+ System.out.println(s);
+ System.exit(0);
+ }
+}
--
Gitblit v1.9.1