Browse Source

订单编号生成规则调整

zsf 3 months ago
parent
commit
2c4f0f360f

+ 1 - 1
src/main/java/com/rf/psychological/wxpay/service/OrderInfoService.java

@@ -21,7 +21,7 @@ public interface OrderInfoService {
      * @param resultId 结果id
      * @return
      */
-    public OrderInfo createOrderByProductId(String productId, String userId, String resultId,Integer price ,WxTradeType type) throws Exception;
+    public OrderInfo createOrderByProductId(String productId, String userId, String resultId,Integer price ,WxTradeType type,String merchantNo) throws Exception;
 
     /**
      * 保存二维码连接

+ 5 - 5
src/main/java/com/rf/psychological/wxpay/service/impl/OrderInfoServiceImpl.java

@@ -53,7 +53,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
      * @return
      */
     @Override
-    public OrderInfo createOrderByProductId(String productId, String userId, String resultId,Integer total, WxTradeType type) throws Exception {
+    public OrderInfo createOrderByProductId(String productId, String userId, String resultId,Integer total, WxTradeType type,String merchantNo) throws Exception {
         //根据产品id获取到和当前人id查询是否存在未支付订单
         OrderInfo orderInfo = orderInfoRepository.findByProductIdAndUserIdAndResultIdAndOrderStatus(productId,userId,resultId,OrderStatus.NOTPAY.getType());
         //如果存在,判断生成类型
@@ -64,15 +64,15 @@ public class OrderInfoServiceImpl implements OrderInfoService {
                 //取消订单,生成新的订单
                 wxPayService.cancelOrder(orderInfo.getOrderNo());
                 this.cancelOrder(orderInfo.getOrderNo());
-                orderInfo =  saveOrder(productId,userId,resultId,total,type);
+                orderInfo =  saveOrder(productId,userId,resultId,total,type,merchantNo);
             }
         }else {
-            orderInfo =  saveOrder(productId,userId,resultId,total,type);
+            orderInfo =  saveOrder(productId,userId,resultId,total,type,merchantNo);
         }
         return orderInfo;
     }
 
-    private OrderInfo saveOrder(String productId, String userId, String resultId, Integer total, WxTradeType type) {
+    private OrderInfo saveOrder(String productId, String userId, String resultId, Integer total, WxTradeType type,String merchantNo) {
         //TODO 获取产品信息,产品名称 价格
         OrderInfo orderInfo = new OrderInfo();
 
@@ -88,7 +88,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
             }
         }
         //生成订单
-        orderInfo.setOrderNo(OrderNoUtils.getOrderNo());
+        orderInfo.setOrderNo(OrderNoUtils.getOrderNoByMerchantNo(merchantNo));
         orderInfo.setProductId(productId);
         orderInfo.setUserId(userId);
         orderInfo.setTotalFee(total);

+ 4 - 2
src/main/java/com/rf/psychological/wxpay/service/impl/WxPayServiceImpl.java

@@ -313,8 +313,9 @@ public class WxPayServiceImpl implements WxPayService {
         String resultId = paramData.getString("resultId");
         String description = paramData.getString("description");
         String price = paramData.getString("total");
+        String merchantNo = paramData.get("merchantNo") == null?null:paramData.getString("merchantNo");
         Integer money = new BigDecimal(String.valueOf(price)).movePointRight(2).intValue();
-        OrderInfo orderInfo = orderInfoService.createOrderByProductId(productId,userId,resultId,money,WxTradeType.JSAPI);
+        OrderInfo orderInfo = orderInfoService.createOrderByProductId(productId,userId,resultId,money,WxTradeType.JSAPI,merchantNo);
         //判断支付码连接是否存在
         String codeUrl =orderInfo.getCodeUrl();
         log.info("生成订单----------------------"+StringUtils.hasLength(codeUrl));
@@ -408,8 +409,9 @@ public class WxPayServiceImpl implements WxPayService {
         String resultId = paramData.getString("resultId");
         String description = paramData.getString("description");
         String price = paramData.getString("total");
+        String merchantNo = paramData.get("merchantNo") == null?null:paramData.getString("merchantNo");
         Integer money = new BigDecimal(String.valueOf(price)).movePointRight(2).intValue();
-        OrderInfo orderInfo = orderInfoService.createOrderByProductId(productId,userId,resultId,money,type);
+        OrderInfo orderInfo = orderInfoService.createOrderByProductId(productId,userId,resultId,money,type,merchantNo);
         //判断支付码连接是否存在
         String codeUrl =orderInfo.getCodeUrl();
         log.info("生成订单----------------------"+StringUtils.hasLength(codeUrl));

+ 16 - 0
src/main/java/com/rf/psychological/wxpay/utils/OrderNoUtils.java

@@ -1,6 +1,9 @@
 package com.rf.psychological.wxpay.utils;
 
+import com.alibaba.druid.sql.visitor.functions.Concat;
+import com.rf.psychological.utils.Constant;
 import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
+import org.apache.commons.lang.StringUtils;
 
 import java.io.ByteArrayInputStream;
 import java.io.UnsupportedEncodingException;
@@ -25,6 +28,19 @@ public class OrderNoUtils {
         return "ORDER_" + getNo();
     }
 
+    /**
+     * 根据商户号生成订单号
+     * @param merchantNo
+     * @return
+     */
+    public static String getOrderNoByMerchantNo(String merchantNo) {
+        if (StringUtils.isEmpty(merchantNo)){
+            return "ORDER_" + getNo();
+        }else {
+            return "ORDER_"+merchantNo+ "_" + getNo();
+        }
+    }
+
     /**
      * 获取退款单编号
      * @return