lrf402788946 hace 3 años
padre
commit
07fc0b0e1c

+ 39 - 0
app/controller/patent/.report.js

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

+ 13 - 0
app/controller/patent/report.js

@@ -0,0 +1,13 @@
+'use strict';
+const meta = require('./.report.js');
+const Controller = require('egg').Controller;
+const { CrudController } = require('naf-framework-mongoose/lib/controller');
+
+// 评估报告
+class ReportController extends Controller {
+  constructor(ctx) {
+    super(ctx);
+    this.service = this.ctx.service.patent.report;
+  }
+}
+module.exports = CrudController(ReportController, meta);

+ 0 - 1
app/middleware/disclosure_record.js

@@ -7,7 +7,6 @@ const addRecord = async (ctx, id, method) => {
 
 module.exports = options => {
   return async function disclosure_record(ctx, next) {
-    console.log('function in disclosure_record middleware');
     await next();
     const { url, method } = ctx.request;
     if (method === 'POST') {

+ 41 - 0
app/middleware/disclosure_report.js

@@ -0,0 +1,41 @@
+'use strict';
+const _ = require('lodash');
+const { ObjectId } = require('mongoose').Types;
+
+const checkReport = async (ctx, data) => {
+  return await ctx.service.patent.report.checkReport(data);
+};
+
+module.exports = options => {
+  return async function disclosure_report(ctx, next) {
+    await next();
+    const { method } = ctx.request;
+    if (method === 'GET') {
+      let { data } = ctx.body;
+      if (data || data.length > 0) {
+        data = JSON.parse(JSON.stringify(data));
+        const ids = [];
+        if (_.isArray(data)) {
+          for (const i of data) {
+            ids.push(i._id);
+          }
+        } else {
+          ids.push(data._id);
+        }
+        const res = await checkReport(ctx, ids);
+        if (_.isArray(data)) {
+          for (const i of data) {
+            const r = res.find(f => ObjectId(f).equals(i._id));
+            if (r) i.has_report = true;
+            else i.has_report = false;
+          }
+        } else {
+          if (res.length > 0) data.has_report = true;
+          else data.has_report = false;
+        }
+        ctx.body.data = data;
+      }
+
+    }
+  };
+};

+ 20 - 0
app/model/patent/report.js

@@ -0,0 +1,20 @@
+'use strict';
+const Schema = require('mongoose').Schema;
+const moment = require('moment');
+const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
+const { ObjectId } = require('mongoose').Types;
+// 评估报告表
+const report = {
+  disclosure_id: { type: ObjectId }, // 申请id
+  content: { type: String }, // 内容
+  remark: { type: String },
+};
+const schema = new Schema(report, { toJSON: { virtuals: true } });
+schema.index({ id: 1 });
+schema.index({ disclosure_id: 1 });
+schema.index({ 'meta.createdAt': 1 });
+schema.plugin(metaPlugin);
+module.exports = app => {
+  const { mongoose } = app;
+  return mongoose.model('DisclosureReport', schema, 'disclosure_report');
+};

+ 1 - 0
app/router.js

@@ -71,4 +71,5 @@ module.exports = app => {
 
   // 专利运营
   require('./router/patent/disclosure')(app); // 交底表
+  require('./router/patent/report')(app); // 评估报告
 };

+ 3 - 1
app/router/patent/disclosure.js

@@ -8,7 +8,9 @@ module.exports = app => {
   const index = 'patent';
   const target = 'disclosure';
   const mware = app.middleware.disclosureRecord();
-  router.resources(target, `${profix}${vision}/${index}/${target}`, mware, controller[index][target]); // index、create、show、destroy
+  const mware2 = app.middleware.disclosureReport();
+
+  router.resources(target, `${profix}${vision}/${index}/${target}`, mware, mware2, controller[index][target]); // index、create、show、destroy
   router.post(target, `${profix}${vision}/${index}/${target}/update/:id`, mware, controller[index][target].update);
   router.post(target, `${profix}${vision}/${index}/${target}/check`, controller[index][target].check);
 };

+ 12 - 0
app/router/patent/report.js

@@ -0,0 +1,12 @@
+'use strict';
+
+
+module.exports = app => {
+  const { router, controller } = app;
+  const profix = '/api/live/';
+  const vision = 'v0';
+  const index = 'patent';
+  const target = 'report';
+  router.resources(target, `${profix}${vision}/${index}/${target}`, controller[index][target]); // index、create、show、destroy
+  router.post(target, `${profix}${vision}/${index}/${target}/update/:id`, controller[index][target].update);
+};

+ 23 - 0
app/service/patent/report.js

@@ -0,0 +1,23 @@
+'use strict';
+const { CrudService } = require('naf-framework-mongoose/lib/service');
+const { BusinessError, ErrorCode } = require('naf-core').Error;
+const _ = require('lodash');
+const assert = require('assert');
+const { ObjectId } = require('mongoose').Types;
+
+// 评估报告
+class ReportService extends CrudService {
+  constructor(ctx) {
+    super(ctx, 'report');
+    this.model = this.ctx.model.Patent.Report;
+  }
+
+  async checkReport(ids) {
+    ids = ids.map(i => ObjectId(i));
+    let list = await this.model.find({ disclosure_id: { $in: ids } }, { disclosure_id: 1 });
+    list = list.map(i => i.disclosure_id);
+    return list;
+  }
+}
+
+module.exports = ReportService;