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