Browse Source

BUG修正 改进REDIS脚本变量类型

秦国才 4 years ago
parent
commit
6b545e3ba0

+ 3 - 3
common/fire-common/src/main/java/com/fire/common/redisscript/RedisAmountScript.java

@@ -69,10 +69,10 @@ public class RedisAmountScript {
      * 5.creditNum 授信金额
      * 返回 成功返回操作后金额 失败返回null
      */
-    public String changeAmount(String amountName, String orderId, String operating, String changeNum, String creditNum) {
-        Object res = jedisCluster.evalsha(runCode, Arrays.asList(amountName, orderId), Arrays.asList(operating, changeNum, creditNum));
+    public Long changeAmount(String amountName, String orderId, String operating, int changeNum, Long creditNum) {
+        Object res = jedisCluster.evalsha(runCode, Arrays.asList(amountName, orderId), Arrays.asList(operating, String.valueOf(changeNum), String.valueOf(creditNum)));
         if (res != null) {
-            return res.toString();
+            return Long.valueOf(res.toString());
         } else {
             return null;
         }

+ 2 - 2
modules/admin/src/main/java/com/fire/admin/rest/TestRest.java

@@ -101,8 +101,8 @@ public class TestRest {
     public String redis() {
         jedisCluster.hset(CUSTOMER_AMOUNT.key(), CUSTOMER_AMOUNT.key() + "123456", "1000");
         redisOrderIdScript.checkOrderId(ORDER_DOWN.key() + "asdfgh", "123456789");
-        String res = redisAmountScript.changeAmount(SUPPLIER_AMOUNT.key(), SUPPLIER_AMOUNT.key() + "123456", "sub", "500", "1000");
-        return res;
+        Long res = redisAmountScript.changeAmount(SUPPLIER_AMOUNT.key(), SUPPLIER_AMOUNT.key() + "123456", "sub", 500, 1000L);
+        return res.toString();
     }
 
 

+ 1 - 1
modules/make-order/src/main/java/com/fire/order/service/impl/MakeOrderServiceImpl.java

@@ -311,7 +311,7 @@ public class MakeOrderServiceImpl implements MakeOrderService {
             return responseDto;
         }
         //扣减
-        redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(),CUSTOMER_AMOUNT.key()+flowAppInfo.getCustomerId(),SUB.oper(),String.valueOf(product.getPrice()),String.valueOf(customerInfo.getCreditAmount()));
+        redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(),CUSTOMER_AMOUNT.key()+flowAppInfo.getCustomerId(),SUB.oper(),product.getPrice(),customerInfo.getCreditAmount());
 
         jedisCluster.hset(ORDER_INFO.key(), String.valueOf(orderId), orderStr);