lrf преди 2 години
родител
ревизия
8f6a3e37fd

+ 0 - 13
app/controller/business/charge.js

@@ -1,13 +0,0 @@
-'use strict';
-const meta = require('./config/.charge.js');
-const Controller = require('egg').Controller;
-const { CrudController } = require('naf-framework-mongoose-free/lib/controller');
-
-//
-class ChargeController extends Controller {
-  constructor(ctx) {
-    super(ctx);
-    this.service = this.ctx.service.business.charge;
-  }
-}
-module.exports = CrudController(ChargeController, meta);

+ 0 - 41
app/controller/business/config/.charge.js

@@ -1,41 +0,0 @@
-module.exports = {
-  create: {
-    requestBody: ['school_id', 'payer_id', 'payer_role', 'money', 'pay_id', 'is_pay', 'time'],
-  },
-  destroy: {
-    params: ['!id'],
-    service: 'delete',
-  },
-  update: {
-    params: ['!id'],
-    requestBody: ['school_id', 'payer_id', 'payer_role', 'money', 'pay_id', 'is_pay', 'time'],
-  },
-  show: {
-    parameters: {
-      params: ['!id'],
-    },
-    service: 'fetch',
-  },
-  index: {
-    parameters: {
-      query: {
-        'meta.createdAt@start': 'meta.createdAt@start',
-        'meta.createdAt@end': 'meta.createdAt@end',
-        school_id: 'school_id',
-        payer_id: 'payer_id',
-        payer_role: 'payer_role',
-        is_pay: 'is_pay',
-      },
-      // options: {
-      //   "meta.state": 0 // 默认条件
-      // },
-    },
-    service: 'query',
-    options: {
-      query: ['skip', 'limit'],
-      sort: ['meta.createdAt'],
-      desc: true,
-      count: true,
-    },
-  },
-};

+ 0 - 15
app/service/business/charge.js

@@ -1,15 +0,0 @@
-'use strict';
-const { CrudService } = require('naf-framework-mongoose-free/lib/service');
-const { BusinessError, ErrorCode } = require('naf-core').Error;
-const _ = require('lodash');
-const assert = require('assert');
-
-// 
-class ChargeService extends CrudService {
-  constructor(ctx) {
-    super(ctx, 'charge');
-    this.model = this.ctx.model.Business.Charge;
-  }
-}
-
-module.exports = ChargeService;

+ 0 - 15
app/service/business/costDetail.js

@@ -1,15 +0,0 @@
-'use strict';
-const { CrudService } = require('naf-framework-mongoose-free/lib/service');
-const { BusinessError, ErrorCode } = require('naf-core').Error;
-const _ = require('lodash');
-const assert = require('assert');
-
-//
-class CostDetailService extends CrudService {
-  constructor(ctx) {
-    super(ctx, 'costdetail');
-    this.model = this.ctx.model.Business.CostDetail;
-  }
-}
-
-module.exports = CostDetailService;

+ 15 - 7
app/service/business/lessonStudent.js

@@ -13,9 +13,6 @@ class LessonStudentService extends CrudService {
     this.rscModel = this.ctx.model.Relation.RelationStudentCoach;
     this.lessonCoachModel = this.ctx.model.Business.LessonCoach;
     this.lessonModel = this.ctx.model.Business.Lesson;
-    this.payOrderService = this.ctx.service.business.payOrder;
-    this.payOrderModel = this.ctx.model.Business.PayOrder;
-    this.billModel = this.ctx.model.Business.Bill;
   }
 
   async checkCanUse({ school_id, student_id, lesson_id }) {
@@ -87,6 +84,9 @@ class LessonStudentService extends CrudService {
 
   // 退课,将钱退至余额
   async toRefund({ lesson_id, student_id }) {
+    const payOrderService = this.ctx.service.business.payOrder;
+    const payOrderModel = this.ctx.model.Business.PayOrder;
+    const billModel = this.ctx.model.Business.Bill;
     const data = await this.model.findOne({ lesson_id, student_id });
     if (!data) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到数据');
     if (data.is_pay === '-3') throw new BusinessError(ErrorCode.DATA_INVALID, '已经完成退课,无法再次退课');
@@ -97,14 +97,22 @@ class LessonStudentService extends CrudService {
       return;
     }
     // 正常交钱的课,将 pay_id 的status 修改为 -3, 同时触发修改这条数据,但是没有退款;
-    await this.payOrderService.updateOne({ _id: data.pay_id }, { status: '-3' });
-    const payOrder = await this.payOrderModel.findById(data.pay_id);
+    await payOrderService.update({ _id: data.pay_id }, { status: '-3' });
+    const payOrder = await payOrderModel.findById(data.pay_id);
     // 再生成账单记录
-    const obj = _.pick(payOrder, [ 'school_id', 'payer_role', 'payer_id', 'pay_for', 'from_id' ]);
+    const obj = _.pick(payOrder, [ 'school_id', 'payer_role', 'payer_id', 'pay_for', 'from_id', 'money', 'pay_id' ]);
     obj.type = '2';
     obj.is_pay = '1';
     obj.time = moment().format('YYYY-MM-DD HH:mm:ss');
-    await this.billModel.create(obj);
+    await billModel.create(obj);
+    // 再将钱返回给余额
+    let relation;
+    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 = relation.money + obj.money;
+    await relation.save();
+
   }
 }
 

+ 6 - 5
app/service/business/payOrder.js

@@ -37,13 +37,14 @@ class PayOrderService extends CrudService {
     if (pay_for && pay_for === 'Bill') return { data, next: true };
     const payer_id = _.get(data, 'payer_id');
     const payer_role = _.get(data, 'payer_role');
+    const school_id = _.get(data, 'school_id');
     let billData;
     let relation;
     // 没有要支付的人及其角色,那就找不到余额,返回下单
     if (!(payer_id && payer_role)) return { data, next: true };
     // 有支付的人,可以查查这个人的余额
-    if (payer_role === 'Student') relation = await this.rssModel.findOne({ student_id: payer_id });
-    else if (payer_role === 'Coach') relation = await this.rcsModel.findOne({ coach_id: payer_id });
+    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 });
     // 没找到关系,那就直接返回正常下单缴费
     if (!relation) return { data, next: true };
     // 有关系,找余额
@@ -157,11 +158,11 @@ class PayOrderService extends CrudService {
         await this.billModel.updateOne({ _id: data.config.bill }, { is_pay });
         billData = await this.billModel.findById(data.config.bill);
       }
-      const { type, payer_role, payer_id, money } = billData;
+      const { type, payer_role, payer_id, money, school_id } = billData;
       if (type === '-2') {
         let relation;
-        if (payer_role === 'Student') relation = await this.rssModel.findOne({ student_id: payer_id });
-        else if (payer_role === 'Coach') relation = await this.rcsModel.findOne({ coach_id: payer_id });
+        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 = relation.money - money;
         await relation.save();
       }