From 10498c96e30c9744febe86e3409ebc5d825e7746 Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 1 Feb 2024 09:41:56 +0800 Subject: [PATCH] =?UTF-8?q?ip=E6=96=B9=E6=B3=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/co/yixiang/utils/IpUtil.java | 165 ------------------ .../java/co/yixiang/utils/RequestHolder.java | 9 + .../modules/mp/service/WeixinPayService.java | 7 +- 3 files changed, 13 insertions(+), 168 deletions(-) delete mode 100644 yshop-common/src/main/java/co/yixiang/utils/IpUtil.java diff --git a/yshop-common/src/main/java/co/yixiang/utils/IpUtil.java b/yshop-common/src/main/java/co/yixiang/utils/IpUtil.java deleted file mode 100644 index abf02cbf..00000000 --- a/yshop-common/src/main/java/co/yixiang/utils/IpUtil.java +++ /dev/null @@ -1,165 +0,0 @@ -package co.yixiang.utils; - -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -public class IpUtil { - private IpUtil(){} - /** - * 此方法描述的是:获得服务器的IP地址 - * @author: zhangyang33@sinopharm.com - * @version: 2014年9月5日 下午4:57:15 - */ - public static String getLocalIP() { - String sIP = ""; - InetAddress ip = null; - try { - boolean bFindIP = false; - Enumeration netInterfaces = (Enumeration) NetworkInterface - .getNetworkInterfaces(); - while (netInterfaces.hasMoreElements()) { - if (bFindIP) { - break; - } - NetworkInterface ni = (NetworkInterface) netInterfaces - .nextElement(); - Enumeration ips = ni.getInetAddresses(); - while (ips.hasMoreElements()) { - ip = (InetAddress) ips.nextElement(); - if (!ip.isLoopbackAddress() - && ip.getHostAddress().matches( - "(\\d{1,3}\\.){3}\\d{1,3}")) { - bFindIP = true; - break; - } - } - } - } catch (Exception e) { - } - if (null != ip) { - sIP = ip.getHostAddress(); - } - return sIP; - } - /** - * 此方法描述的是:获得服务器的IP地址(多网卡) - * @author: zhangyang33@sinopharm.com - * @version: 2014年9月5日 下午4:57:15 - */ - public static List getLocalIPS() { - InetAddress ip = null; - List ipList = new ArrayList(); - try { - Enumeration netInterfaces = (Enumeration) NetworkInterface - .getNetworkInterfaces(); - while (netInterfaces.hasMoreElements()) { - NetworkInterface ni = (NetworkInterface) netInterfaces - .nextElement(); - Enumeration ips = ni.getInetAddresses(); - while (ips.hasMoreElements()) { - ip = (InetAddress) ips.nextElement(); - if (!ip.isLoopbackAddress() - && ip.getHostAddress().matches( - "(\\d{1,3}\\.){3}\\d{1,3}")) { - ipList.add(ip.getHostAddress()); - } - } - } - } catch (Exception e) { - } - return ipList; - } - /** - * 此方法描述的是:获得服务器的MAC地址 - * @author: zhangyang33@sinopharm.com - * @version: 2014年9月5日 下午1:27:25 - */ - public static String getMacId() { - String macId = ""; - InetAddress ip = null; - NetworkInterface ni = null; - try { - boolean bFindIP = false; - Enumeration netInterfaces = (Enumeration) NetworkInterface - .getNetworkInterfaces(); - while (netInterfaces.hasMoreElements()) { - if (bFindIP) { - break; - } - ni = (NetworkInterface) netInterfaces - .nextElement(); - // ----------特定情况,可以考虑用ni.getName判断 - // 遍历所有ip - Enumeration ips = ni.getInetAddresses(); - while (ips.hasMoreElements()) { - ip = (InetAddress) ips.nextElement(); - if (!ip.isLoopbackAddress() // 非127.0.0.1 - && ip.getHostAddress().matches( - "(\\d{1,3}\\.){3}\\d{1,3}")) { - bFindIP = true; - break; - } - } - } - } catch (Exception e) { - } - if (null != ip) { - try { - macId = getMacFromBytes(ni.getHardwareAddress()); - } catch (SocketException e) { - } - } - return macId; - } - /** - * 此方法描述的是:获得服务器的MAC地址(多网卡) - * @author: zhangyang33@sinopharm.com - * @version: 2014年9月5日 下午1:27:25 - */ - public static List getMacIds() { - InetAddress ip = null; - NetworkInterface ni = null; - List macList = new ArrayList(); - try { - Enumeration netInterfaces = (Enumeration) NetworkInterface - .getNetworkInterfaces(); - while (netInterfaces.hasMoreElements()) { - ni = (NetworkInterface) netInterfaces - .nextElement(); - // ----------特定情况,可以考虑用ni.getName判断 - // 遍历所有ip - Enumeration ips = ni.getInetAddresses(); - while (ips.hasMoreElements()) { - ip = (InetAddress) ips.nextElement(); - if (!ip.isLoopbackAddress() // 非127.0.0.1 - && ip.getHostAddress().matches( - "(\\d{1,3}\\.){3}\\d{1,3}")) { - macList.add(getMacFromBytes(ni.getHardwareAddress())); - } - } - } - } catch (Exception e) { - } - return macList; - } - private static String getMacFromBytes(byte[] bytes) { - StringBuffer mac = new StringBuffer(); - byte currentByte; - boolean first = false; - for (byte b : bytes) { - if (first) { - mac.append("-"); - } - currentByte = (byte) ((b & 240) >> 4); - mac.append(Integer.toHexString(currentByte)); - currentByte = (byte) (b & 15); - mac.append(Integer.toHexString(currentByte)); - first = true; - } - return mac.toString().toUpperCase(); - } -} diff --git a/yshop-common/src/main/java/co/yixiang/utils/RequestHolder.java b/yshop-common/src/main/java/co/yixiang/utils/RequestHolder.java index cd7b2ca3..26bde0ac 100644 --- a/yshop-common/src/main/java/co/yixiang/utils/RequestHolder.java +++ b/yshop-common/src/main/java/co/yixiang/utils/RequestHolder.java @@ -5,6 +5,7 @@ */ package co.yixiang.utils; +import cn.hutool.extra.servlet.ServletUtil; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -21,4 +22,12 @@ public class RequestHolder { public static HttpServletRequest getHttpServletRequest() { return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); } + + public static String getClientIP() { + HttpServletRequest request = getHttpServletRequest(); + if (request == null) { + return null; + } + return ServletUtil.getClientIP(request); + } } diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/WeixinPayService.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/WeixinPayService.java index 4ed89ee6..2a8d6f84 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/WeixinPayService.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/WeixinPayService.java @@ -8,6 +8,7 @@ */ package co.yixiang.modules.mp.service; import cn.hutool.core.lang.UUID; +import cn.hutool.core.net.NetUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -26,8 +27,8 @@ import co.yixiang.modules.user.service.YxUserRechargeService; import co.yixiang.modules.user.service.YxUserService; import co.yixiang.modules.user.service.dto.WechatUserDto; import co.yixiang.modules.mp.config.WxPayConfiguration; -import co.yixiang.utils.IpUtil; import co.yixiang.utils.RedisUtils; +import co.yixiang.utils.RequestHolder; import co.yixiang.utils.ShopKeyUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.binarywang.wxpay.bean.entpay.EntPayRequest; @@ -124,7 +125,7 @@ public class WeixinPayService { WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); orderRequest.setOutTradeNo(orderId); orderRequest.setTotalFee(payPrice); - orderRequest.setSpbillCreateIp(IpUtil.getLocalIP()); + orderRequest.setSpbillCreateIp(RequestHolder.getClientIP()); orderRequest.setNotifyUrl(this.getApiUrl() + "/api/wechat/notify"); orderRequest.setBody(body); orderRequest.setAttach(attach); @@ -214,7 +215,7 @@ public class WeixinPayService { entPayRequest.setReUserName(userName); entPayRequest.setAmount(amount); entPayRequest.setDescription("提现"); - entPayRequest.setSpbillCreateIp(IpUtil.getLocalIP()); + entPayRequest.setSpbillCreateIp(RequestHolder.getClientIP()); wxPayService.getEntPayService().entPay(entPayRequest); }