Explorar o código

去除有问题的id工具类

赵冬冬 %!s(int64=4) %!d(string=hai) anos
pai
achega
fba53dc80e

+ 6 - 4
UtilsDemo-WX/src/main/java/com/example/controller/OrderController.java

@@ -1,12 +1,14 @@
 package com.example.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.example.base.*;
+import com.example.base.BaseController;
+import com.example.base.ResponseBase;
+import com.example.base.ResultVO;
 import com.example.entity.OmsOrder;
 import com.example.enums.PayStatusEnum;
 import com.example.enums.ResultEnum;
-import com.example.util.GeneratorIdUtils;
 import com.example.util.RedisUtil;
+import com.example.util.SnowFlake;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -32,8 +34,8 @@ public class OrderController extends BaseController {
     @ApiOperation(value = "创建订单")
     @PostMapping("/createOrder")
     public ResponseBase createOrder() {
-        GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
-        String orderId = generatorIdUtils.nextId();
+        SnowFlake generatorIdUtils = new SnowFlake(2,3);
+        String orderId = generatorIdUtils.nextId()+"";
         OmsOrder order = new OmsOrder();
         order.setId(orderId);
         order.setProductId("23");

+ 10 - 5
UtilsDemo-WX/src/main/java/com/example/controller/WechatAppPayController.java

@@ -1,20 +1,25 @@
 package com.example.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.example.base.*;
+import com.example.base.BaseController;
+import com.example.base.ResponseBase;
+import com.example.base.ResultVO;
 import com.example.entity.OmsOrder;
 import com.example.entity.WxPayFrom;
 import com.example.enums.PayStatusEnum;
 import com.example.enums.ResultEnum;
-import com.example.util.GeneratorIdUtils;
 import com.example.util.RedisUtil;
+import com.example.util.SnowFlake;
 import com.example.util.UUIDUtils;
 import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
 import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.service.WxPayService;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.bean.WxJsapiSignature;
 import me.chanjar.weixin.common.error.WxErrorException;
@@ -78,8 +83,8 @@ public class WechatAppPayController extends BaseController {
         //商品描述
         orderRequest.setBody("购碳扶贫");
         //商户订单号(支付编号)
-        GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
-        String orderNum = generatorIdUtils.nextId();
+        SnowFlake generatorIdUtils = new SnowFlake(2,3);
+        String orderNum = generatorIdUtils.nextId()+"";
         log.info("orderNum:" + orderNum);
         //设置商户订单号
         orderRequest.setOutTradeNo(orderNum);

+ 15 - 10
UtilsDemo-WX/src/main/java/com/example/controller/WechatH5PayController.java

@@ -1,18 +1,23 @@
 package com.example.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.example.base.*;
+import com.example.base.BaseController;
+import com.example.base.ResponseBase;
+import com.example.base.ResultVO;
 import com.example.entity.OmsOrder;
 import com.example.entity.RefundOrder;
 import com.example.entity.WxPayFrom;
 import com.example.enums.PayStatusEnum;
 import com.example.enums.ResultEnum;
-import com.example.util.GeneratorIdUtils;
 import com.example.util.RedisUtil;
+import com.example.util.SnowFlake;
 import com.example.util.UUIDUtils;
 import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
 import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
-import com.github.binarywang.wxpay.bean.request.*;
+import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
 import com.github.binarywang.wxpay.bean.result.WxPayRefundQueryResult;
 import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
@@ -73,7 +78,7 @@ public class WechatH5PayController extends BaseController {
         String productName = "测试商品";
         orderRequest.setBody(productName);
         //商户订单号(支付编号)
-//        GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
+//        SnowFlake generatorIdUtils = new SnowFlake(2,3);
 //        String orderNum = generatorIdUtils.nextId();
 //        log.info("orderNum:" + orderNum);
         //设置商户订单号
@@ -243,8 +248,8 @@ public class WechatH5PayController extends BaseController {
     public ResponseBase refundOrder(@RequestBody RefundOrder refundOrder) {
         WxPayRefundRequest refundRequest = new WxPayRefundRequest();
         try {
-            GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
-            String refundNo = generatorIdUtils.nextId();
+            SnowFlake generatorIdUtils = new SnowFlake(2,3);
+            String refundNo = generatorIdUtils.nextId()+"";
             refundRequest.setOutTradeNo(refundOrder.getOrderId());
             refundRequest.setOutRefundNo(refundNo);
             refundRequest.setRefundDesc(refundOrder.getRefundDesc());
@@ -350,8 +355,8 @@ public class WechatH5PayController extends BaseController {
         String productName = "测试商品";
         orderRequest.setBody(productName);
         //商户订单号(支付编号)
-        GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
-        String orderNum = generatorIdUtils.nextId();
+        SnowFlake generatorIdUtils = new SnowFlake(2,3);
+        String orderNum = generatorIdUtils.nextId()+"";
         log.info("OutTradeNo:" + orderNum);
         //设置商户订单号
         orderRequest.setOutTradeNo(orderNum);
@@ -405,8 +410,8 @@ public class WechatH5PayController extends BaseController {
         //商品描述
         orderRequest.setBody("测试商品!");
         //商户订单号(支付编号)
-        GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
-        String orderNum = generatorIdUtils.nextId();
+        SnowFlake generatorIdUtils = new SnowFlake(2,3);
+        String orderNum = generatorIdUtils.nextId()+"";
         log.info("OutTradeNo:" + orderNum);
         //设置商户订单号
         orderRequest.setOutTradeNo(orderNum);

+ 0 - 129
UtilsDemo-WX/src/main/java/com/example/util/GeneratorIdUtils.java

@@ -1,129 +0,0 @@
-package com.example.util;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.text.SimpleDateFormat;
-
-/**
- * 订购业务唯一订单号实现
- *
- * @author ouyangjun
- */
-public class GeneratorIdUtils {
-
-    /**
-     * 用ip地址最后几个字节标示
-     */
-    private long workerId;
-    /**
-     * 可配置在properties中,启动时加载,此处默认先写成0
-     */
-    private long datacenterId = 0L;
-
-    private long sequence = 0L;
-    /**
-     * 节点ID长度
-     */
-    private long workerIdBits = 8L;
-    /**
-     * 序列号12位
-     */
-    private long sequenceBits = 12L;
-    /**
-     * 机器节点左移12位
-     */
-    private long workerIdShift = sequenceBits;
-    /**
-     * 数据中心节点左移17位
-     */
-    private long datacenterIdShift = sequenceBits + workerIdBits;
-    /**
-     * 4095
-     */
-    private long sequenceMask = -1L ^ (-1L << sequenceBits);
-
-    private long lastTimestamp = -1L;
-
-    public GeneratorIdUtils() {
-        workerId = 0x000000FF & getLastIP();
-    }
-
-    /**
-     * 调用该方法,获取序列ID
-     *
-     * @return
-     */
-    public synchronized String nextId() {
-        //获取当前毫秒数
-        long timestamp = currentTime();
-        //如果服务器时间有问题(时钟后退) 报错。
-        if (timestamp < lastTimestamp) {
-            throw new RuntimeException(String.format("时钟向后移动。拒绝在%d毫秒内生成id", lastTimestamp - timestamp));
-        }
-        //如果上次生成时间和当前时间相同,在同一毫秒内
-        if (lastTimestamp == timestamp) {
-            //sequence自增,因为sequence只有12bit,所以和sequenceMask相与一下,去掉高位
-            sequence = (sequence + 1) & sequenceMask;
-            //判断是否溢出,也就是每毫秒内超过4095,当为4096时,与sequenceMask相与,sequence就等于0
-            if (sequence == 0) {
-                //自旋等待到下一毫秒
-                timestamp = nextMillis(lastTimestamp);
-            }
-        } else {
-            //如果和上次生成时间不同,重置sequence,就是下一毫秒开始,sequence计数重新从0开始累加
-            sequence = 0L;
-        }
-        lastTimestamp = timestamp;
-
-        long suffix = (datacenterId << datacenterIdShift) | (workerId << workerIdShift) | sequence;
-
-        // 格式化日期
-        SimpleDateFormat timePe = new SimpleDateFormat("yyyyMMddHHMMssSSS");
-        String datePrefix = timePe.format(timestamp);
-
-        return datePrefix + suffix;
-    }
-
-    /**
-     * 比较当前时间戳和下一个时间戳,如果下一个时间戳等于或小于当前时间戳,则循环获取下个时间戳
-     * 该方法主要是避免同一时间获取同一时间戳
-     *
-     * @param lastTimestamp
-     * @return
-     */
-    protected long nextMillis(long lastTimestamp) {
-        long timestamp = currentTime();
-        while (timestamp <= lastTimestamp) {
-            timestamp = currentTime();
-        }
-        return timestamp;
-    }
-
-    /**
-     * 获取系统当前时间戳
-     *
-     * @return
-     */
-    protected long currentTime() {
-        return System.currentTimeMillis();
-    }
-
-    /**
-     * 获取当前本地IP
-     *
-     * @return
-     */
-    private byte getLastIP() {
-        byte lastip = 0;
-        try {
-            InetAddress ip = InetAddress.getLocalHost();
-            byte[] ipByte = ip.getAddress();
-            lastip = ipByte[ipByte.length - 1];
-        } catch (UnknownHostException e) {
-            e.printStackTrace();
-        }
-        return lastip;
-    }
-
-
-}