lrf402788946 4 年之前
父节点
当前提交
cc7b26c525
共有 3 个文件被更改,包括 26 次插入5 次删除
  1. 2 1
      app/controller/users/.expert.js
  2. 9 1
      app/service/users/expert.js
  3. 15 3
      app/service/users/product.js

+ 2 - 1
app/controller/users/.expert.js

@@ -57,12 +57,13 @@ module.exports = {
         name: "%name%",
         phone: "phone",
         code: "code",
+        company: "company",
         status: "status",
         "create_time@start": "create_time@start",
         "create_time@end": "create_time@end",
       },
       options: {
-        "isdel": '0' // 默认条件
+        isdel: "0", // 默认条件
       },
     },
     service: "query",

+ 9 - 1
app/service/users/expert.js

@@ -12,10 +12,18 @@ class ExpertService extends CrudService {
   }
 
   async query({ skip = 0, limit = 10, ...condition } = {}) {
-    const { code, status } = condition;
+    condition = this.ctx.service.util.util.dealQuery(condition);
+    const { code, status, company, name, phone } = condition;
     const query = {};
     if (code) query.code = code;
     if (status) query['expert.status'] = status;
+    if (name)query.name = name;
+    if (phone) query.phone = phone;
+    if (company) {
+      if (company === '中科系') query['expert.company'] = { $in: [ '中科院长春分院', '中国科学院东北地理与农业生态研究所', '中国科学院长春应用化学研究所', '中科院长春光学精密机械与物理研究所' ] };
+      else if (company === '其他')query['expert.company'] = { $nin: [ '中科院长春分院', '中国科学院东北地理与农业生态研究所', '中国科学院长春应用化学研究所', '中科院长春光学精密机械与物理研究所', '吉林大学', '长春工业大学' ] };
+      else query['expert.company'] = company;
+    }
     let data = await this.personal.aggregate([
       { $match: { is_expert: true } },
       { $project: { name: 1, phone: 1, email: 1, code: 1, expert: 1 } },

+ 15 - 3
app/service/users/product.js

@@ -11,12 +11,24 @@ class ProductService extends CrudService {
     this.organization = this.ctx.model.Organization;
   }
   async query({ skip = 0, limit = 0, ...query } = {}) {
-    const { code, ...oq } = query;
+    const { code, company, ...oq } = query;
     let res = [];
     let total = 0;
     if (!code) {
-      res = await this.model.find(query).skip(parseInt(skip)).limit(parseInt(limit));
-      total = await this.model.count(query);
+      if (!company) {
+        res = await this.model.find(query).skip(parseInt(skip)).limit(parseInt(limit));
+        total = await this.model.count(query);
+      } else {
+      // 处理company特殊的情况
+        let nquery = {};
+        if (company === '中科系') nquery.company = [ '中科院长春分院', '中国科学院东北地理与农业生态研究所', '中国科学院长春应用化学研究所', '中科院长春光学精密机械与物理研究所' ];
+        else if (company === '其他')nquery.company = { $nin: [ '中科院长春分院', '中国科学院东北地理与农业生态研究所', '中国科学院长春应用化学研究所', '中科院长春光学精密机械与物理研究所', '吉林大学', '长春工业大学' ] };
+        else nquery.company = company;
+        nquery = { ...oq, ...nquery };
+        res = await this.model.find(nquery).skip(parseInt(skip)).limit(parseInt(limit));
+        total = await this.model.count(nquery);
+      }
+
     } else {
       // 使用code查出个人,专家,机构下的产品,skip和limit限制的是最后产品,而不是角色那部分
       let pl = await this.personal.find({ code }, '_id');