From d83c9be06ca59d5d45c884e46c5a8aefa6b65123 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 28 Mar 2023 10:37:25 +0800
Subject: [PATCH] 后台修改
---
src/main/java/cc/mrbird/febs/websocket/BscWebSocketClient.java | 81 ++++++++++++++++++++
src/main/java/cc/mrbird/febs/websocket/BscWebSocketService.java | 68 +++++++++++++++++
src/main/java/cc/mrbird/febs/websocket/Ball.java | 69 +++++++++++++++++
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 2
src/main/resources/templates/febs/views/modules/system/systemSetting.html | 2
5 files changed, 220 insertions(+), 2 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index e8ccefb..eab4070 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -404,7 +404,7 @@
agentCode
);
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(agentDic.getValue());
- String subsidyPercentStr = jsonObject.get("manageSubsidyPercent").toString();
+ String subsidyPercentStr = jsonObject.get("subsidyPercent").toString();
subsidyPercent = new BigDecimal(subsidyPercentStr)
.multiply(new BigDecimal(0.01))
.setScale(2,BigDecimal.ROUND_DOWN);
diff --git a/src/main/java/cc/mrbird/febs/websocket/Ball.java b/src/main/java/cc/mrbird/febs/websocket/Ball.java
new file mode 100644
index 0000000..2648d36
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/websocket/Ball.java
@@ -0,0 +1,69 @@
+package cc.mrbird.febs.websocket;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.Timer;
+
+public class Ball extends JPanel implements ActionListener {
+ private Timer timer;
+ private int x, y;
+ private int size;
+
+ public Ball() {
+ x = 0;
+ y = 0;
+ size = 20;
+ timer = new Timer(10, this);
+ timer.start();
+ }
+
+ // 重写paintComponent方法,绘制红色的球
+ @Override
+ public void paintComponent(Graphics g) {
+ super.paintComponent(g);
+ Graphics2D g2d = (Graphics2D) g;
+ // 开启抗锯齿
+ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ // 设置颜色为红色
+ g2d.setColor(Color.RED);
+ // 绘制圆形
+ g2d.fillOval(x, y, size, size);
+ }
+
+ // 重写actionPerformed方法,控制球的大小
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ // 如果球的大小小于100,则增加大小
+ if (size < 100) {
+ size++;
+ } else {
+ // 否则减小大小
+ size--;
+ }
+ // 重新绘制
+ repaint();
+ // 控制球的移动
+ x++;
+ if (x > getWidth()) {
+ x = 0;
+ }
+ }
+
+ public static void main(String[] args) {
+ // 创建窗口
+ JFrame frame = new JFrame("Ball");
+ // 添加球
+ frame.add(new Ball());
+ // 设置窗口大小
+ frame.setSize(300, 300);
+ // 显示窗口
+ frame.setVisible(true);
+ // 设置关闭窗口时的操作
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/websocket/BscWebSocketClient.java b/src/main/java/cc/mrbird/febs/websocket/BscWebSocketClient.java
new file mode 100644
index 0000000..55273df
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/websocket/BscWebSocketClient.java
@@ -0,0 +1,81 @@
+package cc.mrbird.febs.websocket;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.concurrent.TimeUnit;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.java_websocket.client.WebSocketClient;
+import org.java_websocket.handshake.ServerHandshake;
+
+public class BscWebSocketClient extends WebSocketClient {
+
+ public BscWebSocketClient(String url) throws URISyntaxException {
+ super(new URI(url));
+ }
+
+ @Override
+ public void onOpen(ServerHandshake handshakedata) {
+ System.out.println("Connected to BSC WebSocket node");
+
+ // 订阅ERC-20代币转账事件
+ subscribeToErc20Transfers("0x55d398326f99059ff775485246999027b3197955"); // USDT合约地址
+ }
+
+ @Override
+ public void onMessage(String message) {
+ System.out.println("Received message: " + message);
+
+ // 在这里处理收到的区块链事件
+ JSONObject jsonObject = new JSONObject(Boolean.parseBoolean(message));
+ String method = jsonObject.getString("method");
+ if (method.equals("eth_subscription")) {
+ JSONArray params = jsonObject.getJSONArray("params");
+ JSONObject result = params.getJSONObject(0).getJSONObject("result");
+ String from = result.getString("from");
+ String to = result.getString("to");
+ String value = result.getString("value");
+ System.out.println("Received USDT transfer from " + from + " to " + to + ", amount: " + value);
+ }
+ }
+
+ @Override
+ public void onClose(int code, String reason, boolean remote) {
+ System.out.println("Disconnected from BSC WebSocket node");
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ System.err.println("Error occurred: " + ex.getMessage());
+ }
+
+ // 订阅ERC-20代币转账事件
+ private void subscribeToErc20Transfers(String contractAddress) {
+ String message = "{\"id\":1,\"method\":\"eth_subscribe\",\"params\":[\"logs\",{" +
+ "\"address\":\"" + contractAddress + "\"," +
+ "\"topics\":[\"0x" + "a9059cbb" + "\",null,null]," +
+ "\"fromBlock\":\"latest\"" +
+ "}]}";
+ send(message);
+ System.out.println("Subscribed to ERC-20 transfer events for " + contractAddress);
+ }
+
+ public static void main(String[] args) throws URISyntaxException, InterruptedException {
+ String url = "wss://bsc-ws-node.nariox.org:443"; // 更换为您想要连接的节点地址
+ BscWebSocketClient client = new BscWebSocketClient(url);
+ client.connect();
+
+ // 等待连接成功
+ while (!client.isOpen()) {
+ System.out.println("Connecting to BSC WebSocket node...");
+ TimeUnit.SECONDS.sleep(1);
+ }
+
+ // 连接成功后,继续运行程序
+ System.out.println("Connected to BSC WebSocket node, waiting for events...");
+ TimeUnit.SECONDS.sleep(60); // 等待60秒,以便收到一些事件
+ client.close();
+ }
+
+}
diff --git a/src/main/java/cc/mrbird/febs/websocket/BscWebSocketService.java b/src/main/java/cc/mrbird/febs/websocket/BscWebSocketService.java
new file mode 100644
index 0000000..afbdfa9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/websocket/BscWebSocketService.java
@@ -0,0 +1,68 @@
+package cc.mrbird.febs.websocket;
+import com.alibaba.fastjson.JSONObject;
+import org.java_websocket.client.WebSocketClient;
+import org.java_websocket.handshake.ServerHandshake;
+import org.springframework.stereotype.Service;
+
+import java.net.URI;
+
+@Service
+public class BscWebSocketService {
+
+ private final String USDT_CONTRACT_ADDRESS = "0xdac17f958d2ee523a2206206994597c13d831ec7"; // USDT合约地址
+ private final String YOUR_ADDRESS = "0x1234567890"; // 您的地址
+
+ public void subscribeToUsdtTransfers() throws Exception {
+ URI uri = new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16"); // BSC主网节点WebSocket API地址
+ WebSocketClient client = new WebSocketClient(uri) {
+
+ @Override
+ public void onOpen(ServerHandshake handshake) {
+ JSONObject payload = new JSONObject();
+ payload.put("jsonrpc", "2.0");
+ payload.put("method", "eth_subscribe");
+ payload.put("params", new Object[]{"logs", getFilterParams()});
+ send(payload.toString());
+ }
+
+ @Override
+ public void onMessage(String message) {
+ JSONObject response = new JSONObject(Boolean.parseBoolean(message));
+ if (response.containsKey("params")) {
+ JSONObject result = response.getJSONObject("params").getJSONArray("result").getJSONObject(0);
+ String transactionHash = result.getString("transactionHash");
+ String from = result.getString("address");
+ String to = result.getJSONArray("topics").getString(2);
+ String value = result.getJSONArray("data").getString(0);
+ // 在这里处理收到的交易信息
+ // transactionHash: 交易哈希值
+ // from: 发送方地址
+ // to: 接收方地址
+ // value: 转账数量
+ }
+ }
+
+ @Override
+ public void onClose(int code, String reason, boolean remote) {
+ System.out.println("WebSocket连接关闭: " + reason);
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ System.out.println("WebSocket连接出错: " + ex.getMessage());
+ }
+ };
+ client.connect();
+ }
+
+ private JSONObject getFilterParams() {
+ JSONObject filterParams = new JSONObject();
+ filterParams.put("address", USDT_CONTRACT_ADDRESS);
+ filterParams.put("topics", new String[]{
+ "0xa9059cbb000000000000000000000000" + YOUR_ADDRESS.substring(2),
+ null,
+ null
+ });
+ return filterParams;
+ }
+}
diff --git a/src/main/resources/templates/febs/views/modules/system/systemSetting.html b/src/main/resources/templates/febs/views/modules/system/systemSetting.html
index a3f34f6..a7ec430 100644
--- a/src/main/resources/templates/febs/views/modules/system/systemSetting.html
+++ b/src/main/resources/templates/febs/views/modules/system/systemSetting.html
@@ -7,7 +7,7 @@
<label class="layui-form-label ">商品补贴比例:</label>
<div class="layui-input-block">
<input type="text" name="subsidyPercent" data-th-id="${adminSystemSettingVo.subsidyPercent}"
- lay-verify="number" autocomplete="off" class="layui-input" >
+ lay-verify="text" autocomplete="off" class="layui-input" >
</div>
<div class="layui-word-aux" style="margin-left: 150px;">完成一单,会员获得补贴订单金额</div>
<div class="layui-word-aux" style="margin-left: 150px;">【填写整数】:直接输入百分比,例如25%,直接输入25</div>
--
Gitblit v1.9.1