|
@@ -193,8 +193,7 @@ class LessonStudentService extends CrudService {
|
|
|
await data.save();
|
|
|
return;
|
|
|
}
|
|
|
- // 交钱退课的
|
|
|
- if (data.pay_id) {
|
|
|
+ try {
|
|
|
// 正常交钱的课,将 pay_id 的status 修改为 -3, 同时触发修改这条数据,但是没有退款;
|
|
|
await payOrderService.update({ _id: data.pay_id }, { status: '-3' });
|
|
|
const payOrder = await payOrderModel.findById(data.pay_id);
|
|
@@ -204,45 +203,35 @@ class LessonStudentService extends CrudService {
|
|
|
obj.type = '2';
|
|
|
obj.is_pay = '1';
|
|
|
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;
|
|
|
- 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;
|
|
|
+ } 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();
|
|
|
}
|
|
|
}
|
|
|
|