Pārlūkot izejas kodu

修改教师积分归档

zs 9 mēneši atpakaļ
vecāks
revīzija
ce6c4a6309

+ 38 - 0
app/controller/.document.js

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

+ 26 - 0
app/controller/document.js

@@ -0,0 +1,26 @@
+'use strict';
+
+const _ = require('lodash');
+const meta = require('./.document.js');
+const Controller = require('egg').Controller;
+const { CrudController } = require('naf-framework-mongoose/lib/controller');
+
+// 积分归档
+class DocumentController extends Controller {
+  constructor(ctx) {
+    super(ctx);
+    this.service = this.ctx.service.document;
+  }
+  async create() {
+    const res = await this.service.create();
+    this.ctx.ok({ msg: 'created', data: res });
+  }
+  // GET
+  // 查询
+  async queryTeacher() {
+    const res = await this.service.queryTeacher(this.ctx.query);
+    this.ctx.ok({ ...res });
+  }
+}
+
+module.exports = CrudController(DocumentController, meta);

+ 20 - 0
app/model/document.js

@@ -0,0 +1,20 @@
+'use strict';
+const Schema = require('mongoose').Schema;
+const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
+
+// 积分归档
+const DocumentSchema = {
+  create_time: { type: String, required: false, zh: '归档时间' }, //
+  record: { type: Array, required: false, zh: '记录' }, //
+};
+const schema = new Schema(DocumentSchema, { toJSON: { getters: true, virtuals: true } });
+schema.index({ id: 1 });
+schema.index({ 'meta.createdAt': 1 });
+schema.index({ create_time: 1 });
+
+schema.plugin(metaPlugin);
+
+module.exports = app => {
+  const { mongoose } = app;
+  return mongoose.model('Document', schema, 'document');
+};

+ 4 - 0
app/router.js

@@ -357,4 +357,8 @@ module.exports = app => {
 
   // 教师首页,根据计划id和教师id查教师的安排(已确定的,不是预课表)
   router.get('/api/train/teaIndex', controller.lesson.teaIndex);
+
+  // 教师积分归档
+  router.get('document', '/api/train/document/queryTeacher', controller.document.queryTeacher);
+  router.resources('document', '/api/train/document', controller.document); // index、create、show、destroy
 };

+ 41 - 0
app/service/document.js

@@ -0,0 +1,41 @@
+'use strict';
+
+const assert = require('assert');
+const _ = require('lodash');
+const { ObjectId } = require('mongoose').Types;
+const { CrudService } = require('naf-framework-mongoose/lib/service');
+const { BusinessError, ErrorCode } = require('naf-core').Error;
+const moment = require('moment');
+
+class DocumentService extends CrudService {
+  constructor(ctx) {
+    super(ctx, 'document');
+    this.model = this.ctx.model.Document;
+    this.tmodel = this.ctx.model.Teacher;
+  }
+  // 查询教师信息 记录评分
+  async create() {
+    const info = { create_time: moment().format('YYYY-MM-DD HH:mm:ss') };
+    // 只查询相关评分
+    info.record = await this.tmodel.aggregate([{ $project: { name: 1, zlscore: 1, msscore: 1, xsscore: 1, beforescore: 1 } }]);
+    // 所有教师评分全部修改为0
+    await this.tmodel.updateMany({}, { $set: { xsscore: '0' } });
+    return await this.model.create(info);
+  }
+  // 查询
+  async queryTeacher({ skip, limit, teacher, ...info }) {
+    const res = await this.model.find(info).skip(Number(skip)).limit(Number(limit));
+    const data = [];
+    for (const val of res) {
+      if (val.record && val.record.length > 0) {
+        for (const re of val.record) {
+          if (re._id.toString() === teacher) data.push({ ...re, ...{ create_time: val.create_time } });
+        }
+      }
+    }
+    const total = data.length;
+    return { total, data };
+  }
+}
+
+module.exports = DocumentService;