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