From 725649d0ee2a57bfb5265a2208dbfc5b1f687a58 Mon Sep 17 00:00:00 2001 From: ap <951984189@qq.com> Date: Wed, 1 Dec 2021 18:18:21 +0800 Subject: [PATCH] =?UTF-8?q?4.x=20=E5=B0=B1=E7=BB=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- .../modules/base/controller/admin/sys/log.ts | 4 +++ src/app/modules/base/service/sys/user.ts | 4 +-- src/app/modules/demo/config.ts | 2 ++ .../modules/demo/controller/admin/goods.ts | 13 +++++++- src/app/modules/demo/middleware/user.ts | 33 +++++++++++++++++++ src/welcome.ts | 2 +- 7 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/app/modules/demo/middleware/user.ts diff --git a/package.json b/package.json index ee0c46e..f883333 100755 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "private": true, "dependencies": { "@cool-midway/alipay": "^4.0.3", - "@cool-midway/core": "^4.0.6", + "@cool-midway/core": "/Users/mac/Documents/src/cool/admin/midway-core/core/dist/", "@cool-midway/es": "^4.0.2", "@cool-midway/oss": "^4.0.2", "@cool-midway/queue": "^4.0.3", diff --git a/src/app/modules/base/controller/admin/sys/log.ts b/src/app/modules/base/controller/admin/sys/log.ts index 8d58642..56a7242 100644 --- a/src/app/modules/base/controller/admin/sys/log.ts +++ b/src/app/modules/base/controller/admin/sys/log.ts @@ -12,6 +12,10 @@ import { BaseSysLogService } from '../../../service/sys/log'; @CoolController({ api: ['page'], entity: BaseSysLogEntity, + urlTag: { + name: 'a', + url: ['add'], + }, pageQueryOp: { keyWordLikeFields: ['b.name', 'a.params', 'a.ipAddr'], select: ['a.*', 'b.name'], diff --git a/src/app/modules/base/service/sys/user.ts b/src/app/modules/base/service/sys/user.ts index 2f0c2b6..cf2a8ce 100644 --- a/src/app/modules/base/service/sys/user.ts +++ b/src/app/modules/base/service/sys/user.ts @@ -89,9 +89,9 @@ export class BaseSysUserService extends BaseService { */ async person() { const info = await this.baseSysUserEntity.findOne({ - id: this.ctx.admin.userId, + id: this.ctx.admin?.userId, }); - delete info.password; + delete info?.password; return info; } diff --git a/src/app/modules/demo/config.ts b/src/app/modules/demo/config.ts index 2535cb9..0511205 100644 --- a/src/app/modules/demo/config.ts +++ b/src/app/modules/demo/config.ts @@ -12,5 +12,7 @@ export default (app: Application) => { description: '演示示例', // 中间件 middlewares: ['testMiddleware'], + // 全局中间件 + globalMiddlewares: ['demoUserMiddleware'], } as ModuleConfig; }; diff --git a/src/app/modules/demo/controller/admin/goods.ts b/src/app/modules/demo/controller/admin/goods.ts index 4054af7..adfa4ae 100644 --- a/src/app/modules/demo/controller/admin/goods.ts +++ b/src/app/modules/demo/controller/admin/goods.ts @@ -1,7 +1,8 @@ import { Get, Provide } from '@midwayjs/decorator'; import { Context } from 'egg'; -import { CoolController, BaseController } from '@cool-midway/core'; +import { CoolController, BaseController, CoolUrlTag } from '@cool-midway/core'; import { DemoGoodsEntity } from '../../entity/goods'; +import { SelectQueryBuilder } from 'typeorm'; /** * 商品 @@ -18,6 +19,11 @@ import { DemoGoodsEntity } from '../../entity/goods'; userId: ctx.admin.userId, }; }, + // 给请求路径打上标签 + urlTag: { + name: 'ignoreToken', + url: ['page'], + }, // info接口忽略价格字段 infoIgnoreProperty: ['price'], // 分页查询配置 @@ -26,6 +32,10 @@ import { DemoGoodsEntity } from '../../entity/goods'; keyWordLikeFields: ['title'], // 让type字段支持筛选 fieldEq: ['type'], + // 4.x 新增 追加其他条件 + extend: async (find: SelectQueryBuilder) => { + find.groupBy('a.id'); + }, // 增加其他条件 where: async (ctx: Context) => { return [ @@ -44,6 +54,7 @@ export class DemoAdminGoodsController extends BaseController { /** * 其他接口 */ + @CoolUrlTag('ignoreToken') @Get('/other') async other() { return this.ok('hello, cool-admin!!!'); diff --git a/src/app/modules/demo/middleware/user.ts b/src/app/modules/demo/middleware/user.ts new file mode 100644 index 0000000..3a994b5 --- /dev/null +++ b/src/app/modules/demo/middleware/user.ts @@ -0,0 +1,33 @@ +import { ICoolUrlTag } from '@cool-midway/core'; +import { App, Provide } from '@midwayjs/decorator'; +import { + IWebMiddleware, + IMidwayWebNext, + IMidwayWebApplication, +} from '@midwayjs/web'; +import { Context } from 'egg'; + +/** + * 描述 + */ +@Provide() +export class DemoUserMiddleware implements IWebMiddleware { + @App() + app: IMidwayWebApplication; + + resolve() { + return async (ctx: Context, next: IMidwayWebNext) => { + // 获得请求路径标签,可以利用此处来判断是否忽略token校验,以及其他需求场景 + const urlTag: ICoolUrlTag = await this.app + .getApplicationContext() + .getAsync('cool:urlTag'); + console.log('urlTag', urlTag); + // 控制器前执行的逻辑 + const startTime = Date.now(); + // 执行下一个 Web 中间件,最后执行到控制器 + await next(); + // 控制器之后执行的逻辑 + console.log(Date.now() - startTime); + }; + } +} diff --git a/src/welcome.ts b/src/welcome.ts index dd63f21..e73717f 100644 --- a/src/welcome.ts +++ b/src/welcome.ts @@ -13,6 +13,6 @@ export class WelcomeController extends BaseController { @Get('/') public async welcome() { - await this.ctx.render('welcome', { text: 'HELLO COOL-ADMIN' }); + await this.ctx.render('welcome', { text: 'HELLO COOL-ADMIN 4.x' }); } }