lrf 2 年之前
父節點
當前提交
34559a6e04
共有 2 個文件被更改,包括 27 次插入38 次删除
  1. 26 37
      app/service/business/lessonStudent.js
  2. 1 1
      app/service/business/payOrder.js

+ 26 - 37
app/service/business/lessonStudent.js

@@ -193,8 +193,7 @@ class LessonStudentService extends CrudService {
       await data.save();
       await data.save();
       return;
       return;
     }
     }
-    // 交钱退课的
-    if (data.pay_id) {
+    try {
       // 正常交钱的课,将 pay_id 的status 修改为 -3, 同时触发修改这条数据,但是没有退款;
       // 正常交钱的课,将 pay_id 的status 修改为 -3, 同时触发修改这条数据,但是没有退款;
       await payOrderService.update({ _id: data.pay_id }, { status: '-3' });
       await payOrderService.update({ _id: data.pay_id }, { status: '-3' });
       const payOrder = await payOrderModel.findById(data.pay_id);
       const payOrder = await payOrderModel.findById(data.pay_id);
@@ -204,45 +203,35 @@ class LessonStudentService extends CrudService {
       obj.type = '2';
       obj.type = '2';
       obj.is_pay = '1';
       obj.is_pay = '1';
       obj.time = moment().format('YYYY-MM-DD HH:mm:ss');
       obj.time = moment().format('YYYY-MM-DD HH:mm:ss');
-      // 检查是否有从余额扣款部分
-      if (_.get(payOrder, 'config,useSurplus')) {
-        // 有余额扣款部分,查账单把钱加上
-        const billId = _.get(payOrder, 'config,bill');
-        const bill = await this.billModel.findById(billId);
-        bill.is_pay = '-3';
-        await bill.save();
-      }
-      await billModel.create(obj);
+
       // 再将钱返回给余额
       // 再将钱返回给余额
-      let relation;
+      let relation,
+        model;
       const { payer_role, payer_id, school_id } = payOrder;
       const { payer_role, payer_id, school_id } = payOrder;
-      if (payer_role === 'Student') relation = await this.rssModel.findOne({ student_id: payer_id, school_id });
-      else if (payer_role === 'Coach') relation = await this.rcsModel.findOne({ coach_id: payer_id, school_id });
-      relation.money = _.get(relation, 'money', 0) + _.get(obj, 'money', 0);
-      await relation.save();
+      if (payer_role === 'Student') {
+        relation = await this.rssModel.findOne({ student_id: payer_id, school_id });
+        model = 'RelationStudentSchool';
+      } else if (payer_role === 'Coach') {
+        relation = await this.rcsModel.findOne({ coach_id: payer_id, school_id });
+        model = 'RelationCoachSchool';
+      }
+      const newMoney = this.ctx.plus(relation.money, obj.money);
+      // 退至余额
+      this.tran.update(model, relation._id, { money: newMoney });
+      // 生成退款账单
+      this.tran.insert('Bill', obj);
+      // 付款单状态修改
+      this.tran.update('PayOrder', data.pay_id, { status: '-3' });
+      // 课程-学生状态修改
+      this.tran.update('LessonStudent', data._id, { is_pay: '-3' });
+      await this.tran.run();
       return;
       return;
+    } catch (error) {
+      await this.tran.rollback();
+      throw new Error(error);
+    } finally {
+      this.tran.clean();
     }
     }
-    // 从余额付款,退回余额
-    const obj = {
-      school_id: data.school_id,
-      payer_id: student_id,
-      payer_role: 'Student',
-      pay_for: 'lessonStudent',
-      from_id: data._id,
-      type: '2',
-      is_pay: '1',
-      time: moment().format('YYYY-MM-DD HH:mm:ss'),
-      money: data.money,
-    };
-    // 创建退回余额的账单
-    await billModel.create(obj);
-    const relation = await this.rssModel.findOne({ student_id, school_id: data.school_id });
-    relation.money = _.get(relation, 'money', 0) + _.get(obj, 'money', 0);
-    // 退回至账户
-    await relation.save();
-    data.is_pay = '-3';
-    // 学员退课
-    await data.save();
   }
   }
 }
 }
 
 

+ 1 - 1
app/service/business/payOrder.js

@@ -215,7 +215,7 @@ class PayOrderService extends CrudService {
   }
   }
 
 
   /**
   /**
-   * 申请退款
+   * 申请退款,弃用
    * @param {Object} body 参数体
    * @param {Object} body 参数体
    * @property {String} id 支付单的数据id
    * @property {String} id 支付单的数据id
    */
    */