zs 1 vuosi sitten
vanhempi
commit
b2ad8ef390

+ 2 - 0
src/configuration.ts

@@ -10,6 +10,7 @@ import { CheckPermissionCodeInit } from './decorator/checkPermissionCode';
 import * as swagger from '@midwayjs/swagger';
 import * as redis from '@midwayjs/redis';
 import { CheckOnePointLoginMiddleware } from './middleware/checkOnePointLogin.middleware';
+import { newsQueryMiddleware } from './middleware/newsQuery.middleware';
 import * as i18n from '@midwayjs/i18n';
 import { SetLocaleToCtxMiddleware } from './middleware/setLocaleToCtx.middleware';
 import * as bull from '@midwayjs/bull';
@@ -46,6 +47,7 @@ export class MainConfiguration {
     this.app.getMiddleware().insertFirst(SetLocaleToCtxMiddleware)
     this.app.getMiddleware().insertAfter(CheckOnePointLoginMiddleware, 'checkToken');
     this.app.getMiddleware().insertAfter(DataRecordMiddleware, 'checkOnePonitLogin');
+    this.app.getMiddleware().insertAfter(newsQueryMiddleware, 'newsQuery');
     // 注解
     VerifyTokenInit(this.decoratorService);
     CheckPermissionCodeInit(this.decoratorService);

+ 31 - 0
src/middleware/newsQuery.middleware.ts

@@ -0,0 +1,31 @@
+import { IMiddleware } from '@midwayjs/core';
+import { Middleware } from '@midwayjs/decorator';
+import { NextFunction, Context } from '@midwayjs/koa';
+@Middleware()
+export class newsQueryMiddleware implements IMiddleware<Context, NextFunction> {
+  resolve() {
+    return async (ctx: Context, next: NextFunction) => {
+      // 获取原始的查询参数对象
+      const rawQuery = ctx.request.query;
+      // 创建一个空对象来存储处理后的查询参数
+      const parsedQuery = {};
+      // 遍历原始的查询参数
+      for (const key in rawQuery) {
+        // 检查键是否以 [] 结尾
+        if (key.endsWith('[]')) {
+          // 去除 [] 后缀,并将值存储到数组中
+          const paramName = key.slice(0, -2);
+          if (!Array.isArray(parsedQuery[paramName])) {
+            parsedQuery[paramName] = [];
+          }
+          parsedQuery[paramName].push(rawQuery[key]);
+        } else {
+          // 非数组参数直接存储
+          parsedQuery[key] = rawQuery[key];
+        }
+      }
+      ctx.request.query = parsedQuery;
+      await next();
+    };
+  }
+}

+ 22 - 3
src/service/platform/demand.service.ts

@@ -17,8 +17,27 @@ export class DemandService extends BaseService<modelType> {
   uModel: ReturnModelType<typeof User>;
   // 需求列表
   async list(query) {
-    const { skip = 0, limit = 0, ...condition } = query;
-    const data = await this.model.find(condition).skip(skip).limit(limit).lean();
+    const { skip = 0, limit = 0, is_use, status, ...condition } = query;
+    const { one, two, thr, four } = condition;
+    const info: any = { is_use, status };
+    // 如果 one 不是一个数组,你可能需要手动处理
+    if (one) {
+      if (!Array.isArray(one)) info.field = one;
+      else info.field = { $all: one };
+    }
+    if (two) {
+      if (!Array.isArray(two)) info.method = two;
+      else info.method = { $all: two };
+    }
+    if (thr) {
+      if (!Array.isArray(thr)) info.area = thr;
+      else info.area = { $all: thr };
+    }
+    if (four) {
+      if (!Array.isArray(four)) info.demand_status = four;
+      else info.demand_status = { $all: four };
+    }
+    const data = await this.model.find(info).skip(skip).limit(limit).lean();
     for (const val of data) {
       if (get(val, 'user')) {
         // 查询需求发布者
@@ -26,7 +45,7 @@ export class DemandService extends BaseService<modelType> {
         if (userData) Object.assign(val, { userName: userData.nick_name });
       }
     }
-    const total = await this.model.count(condition);
+    const total = await this.model.count(info);
     return { data, total };
   }
   // 需求详情