lrf 2 năm trước cách đây
mục cha
commit
3ffb13834b
3 tập tin đã thay đổi với 40 bổ sung3 xóa
  1. 37 0
      app/extend/context.js
  2. 2 3
      app/service/business/payOrder.js
  3. 1 0
      package.json

+ 37 - 0
app/extend/context.js

@@ -0,0 +1,37 @@
+'use strict';
+const Decimal = require('decimal.js');
+// Decimal.set({ precision: 2 });
+module.exports = {
+  // 加法
+  plus(n1 = 0, n2 = 0) {
+    const number1 = new Decimal(n1);
+    const number2 = new Decimal(n2);
+    const result = number1.add(number2).toFixed(2, Decimal.ROUND_DOWN);
+    return this.toNumber(result);
+  },
+  // 减法
+  minus(n1 = 0, n2 = 0) {
+    const number1 = new Decimal(n1);
+    const number2 = new Decimal(n2);
+    const result = number1.minus(number2).toFixed(2, Decimal.ROUND_DOWN);
+    return this.toNumber(result);
+  },
+  // 乘法
+  multiply(n1 = 0, n2 = 0) {
+    const number1 = new Decimal(n1);
+    const number2 = new Decimal(n2);
+    const result = number1.mul(number2).toFixed(2, Decimal.ROUND_DOWN);
+    return this.toNumber(result);
+  },
+  // 除法
+  divide(n1 = 0, n2 = 0) {
+    const number1 = new Decimal(n1);
+    const number2 = new Decimal(n2);
+    const result = number1.div(number2).toFixed(2, Decimal.ROUND_DOWN);
+    return this.toNumber(result);
+  },
+
+  toNumber(num) {
+    return new Decimal(num).toNumber();
+  },
+};

+ 2 - 3
app/service/business/payOrder.js

@@ -28,7 +28,6 @@ class PayOrderService extends CrudService {
     const { data: nd, next } = await this.checkSurplus(data);
     if (!next) throw new BusinessError(0, '扣除余额成功', nd);
     data = nd;
-    console.log(data);
     return data;
   }
   // 检查是否扣除余额
@@ -54,7 +53,7 @@ class PayOrderService extends CrudService {
     // 没有余额,或者余额没钱,返回正常下单缴费
     if (surplus && surplus <= 0) return { data, next: true };
     // 有余额,看余额够不够
-    if (surplus >= money) {
+    if (this.ctx.minus(surplus, money) >= 0) {
       try {
         // 余额够, 无需生成订单,直接去使用余额缴费
         const bill = _.pick(data, [ 'school_id', 'payer_id', 'payer_role', 'pay_for', 'from_id' ]);
@@ -78,7 +77,7 @@ class PayOrderService extends CrudService {
       }
     } else if (surplus !== 0) {
       // 余额不足且不为0,在config里记录部分使用了余额,再进行下单,下单完后,生成余额的扣款
-      const needPay = money - surplus;
+      const needPay = this.ctx.minus(money, surplus);
       const bill = _.pick(data, [ 'school_id', 'payer_id', 'payer_role', 'pay_for', 'from_id' ]);
       bill.money = surplus;
       bill.type = '-2';

+ 1 - 0
package.json

@@ -8,6 +8,7 @@
   },
   "dependencies": {
     "colors": "^1.4.0",
+    "decimal.js": "^10.4.2",
     "egg": "^2.15.1",
     "egg-naf-amqp": "0.0.13",
     "egg-redis": "^2.4.0",