浏览代码

专利查询

lrf 3 年之前
父节点
当前提交
7236450b08
共有 4 个文件被更改,包括 76 次插入2 次删除
  1. 4 0
      app/controller/config/.patent.js
  2. 70 0
      app/middleware/patentQuery.js
  3. 1 1
      app/z_router/patent.js
  4. 1 1
      config/config.default.js

+ 4 - 0
app/controller/config/.patent.js

@@ -122,6 +122,10 @@ module.exports = {
         law_num: 'law_num',
         first_inventor: 'first_inventor',
         status: 'status',
+        name: 'name',
+        code: 'code',
+        role: 'role',
+        user_id: 'user_id',
         'meta.createdAt@start': 'meta.createdAt@start',
         'meta.createdAt@end': 'meta.createdAt@end',
       },

+ 70 - 0
app/middleware/patentQuery.js

@@ -0,0 +1,70 @@
+'use strict';
+const _ = require('lodash');
+
+const findUserByCode = async (ctx, code) => {
+  const { code: qcode } = ctx.query;
+  const http = ctx.service.util.httpUtil;
+  const basePrefix = ctx.app.config.httpPrefix.base;
+  console.log('code ? code : qcode');
+  console.log(code);
+  console.log(qcode);
+  console.log(code ? code : qcode);
+  const res = await http.cget(`${basePrefix}/personal`, { code: code ? code : qcode });
+  if (res) return res;
+};
+
+const findOrgByCode = async ctx => {
+  const { code } = ctx.query;
+  const http = ctx.service.util.httpUtil;
+  const basePrefix = ctx.app.config.httpPrefix.base;
+  const adminRes = await http.cget(`${basePrefix}/admin`, { code });
+  if (!adminRes) return [];
+  const ids = [];
+  for (const r of adminRes) {
+    const pr = await http.cget(`${basePrefix}/admin`, { role: '2', pid: r._id });
+    const list = pr.map(i => i.code);
+    ids.push(...list);
+  }
+  return ids;
+};
+
+const role2Search = async (ctx, code) => {
+  // target:查询和 code有关的平台用户
+  const res = await findUserByCode(ctx, code);
+  const user_ids = res.map(i => i._id);
+  return user_ids;
+};
+
+const role1Search = async ctx => {
+  // target:查询和code有关的平台用户 和 与code有关的机构用户下的平台用户
+  let res = [];
+  // p1: 查询平台用户
+  const p1 = await role2Search(ctx);
+  res.push(...p1);
+  // p2:和code有关的机构用户下的平台用户
+  const orgCodes = await findOrgByCode(ctx);
+  for (const code of orgCodes) {
+    console.log(code);
+    const l = await role2Search(ctx, code);
+    res.push(...l);
+  }
+  res = _.uniq(res);
+  return res;
+};
+
+module.exports = options => {
+  return async function patentQuery(ctx, next) {
+    console.log('function in patentquery middleware');
+    const query = ctx.query;
+    const { code, role } = query;
+    if (code && role) {
+      let res;
+      if (role === '1') res = await role1Search(ctx);
+      else res = await role2Search(ctx);
+      delete ctx.query.code;
+      delete ctx.query.role;
+      ctx.query.user_id = { $elemMatch: { user_id: { $in: res } } };
+    }
+    await next();
+  };
+};

+ 1 - 1
app/z_router/patent.js

@@ -4,7 +4,7 @@ const rkey = 'patent';
 const ckey = 'patent';
 const keyZh = '专利信息';
 const routes = [
-  { method: 'get', path: `${rkey}`, controller: `${ckey}.index`, name: `${ckey}Query`, zh: `${keyZh}列表查询` },
+  { method: 'get', path: `${rkey}`, middleware: [ 'patentQuery' ], controller: `${ckey}.index`, name: `${ckey}Query`, zh: `${keyZh}列表查询` },
   { method: 'get', path: `${rkey}/:id`, controller: `${ckey}.show`, name: `${ckey}Show`, zh: `${keyZh}查询` },
   { method: 'post', path: `${rkey}`, controller: `${ckey}.create`, middleware: [ 'password' ], name: `${ckey}Create`, zh: `创建${keyZh}` },
   { method: 'post', path: `${rkey}/:id`, controller: `${ckey}.update`, name: `${ckey}Update`, zh: `修改${keyZh}` },

+ 1 - 1
config/config.default.js

@@ -76,7 +76,7 @@ module.exports = appInfo => {
   // 数据库设置
   config.dbName = 'platform-patent-v1';
   config.mongoose = {
-    url: `mongodb://localhost:27017/${config.dbName}`,
+    url: `mongodb://101.36.221.66:27017/${config.dbName}`,
     options: {
       user: 'admin',
       pass: 'admin',