'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'); const moment = require('moment'); // class CashOutService extends CrudService { constructor(ctx) { super(ctx, 'cashout'); this.model = this.ctx.model.User.CashOut; this.cashBackModel = this.ctx.model.User.CashBack; } async beforeCreate(data) { const { customer } = data; if (!customer) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '缺少提款人'); const num = await this.model.count({ customer, status: '0' }); if (num > 0) throw new BusinessError(ErrorCode.DATA_EXISTED, '您有未处理提现申请,请联系管理员先处理之前的申请'); return data; } async beforeUpdate(filter, update) { if (_.get(update, 'status') !== '0') { update.deal_person = _.get(this.ctx, 'admin._id'); } return { filter, update }; } async afterUpdate(filter, body, data) { const { status } = body; if (status === '1') { const { customer: inviter, money } = data; const obj = { inviter, money, time: moment().format('YYYY-MM-DD HH:mm:ss'), status: '-1', source: '-1', source_id: data._id }; const num = await this.cashBackModel.count({ inviter, status: '-1', source: '-1', source_id: data._id }); // 说明该申请没有流水,添加流水;有流水就不加了 if (num <= 0) await this.cashBackModel.create(obj); } return data; } } module.exports = CashOutService;