lrf 1 yıl önce
ebeveyn
işleme
50b42ebf87

+ 2 - 1
package.json

@@ -8,6 +8,7 @@
     "@midwayjs/bootstrap": "^3.12.0",
     "@midwayjs/core": "^3.12.0",
     "@midwayjs/decorator": "^3.12.0",
+    "@midwayjs/i18n": "3",
     "@midwayjs/info": "^3.12.0",
     "@midwayjs/jwt": "^3.13.7",
     "@midwayjs/koa": "^3.12.0",
@@ -19,7 +20,7 @@
     "@typegoose/typegoose": "^9.0.0",
     "crypto-js": "^4.2.0",
     "dayjs": "^1.11.10",
-    "free-midway-component": "^1.0.50",
+    "free-midway-component": "^1.0.52",
     "lodash": "^4.17.21",
     "mongoose": "^6.0.7"
   },

+ 8 - 4
pnpm-lock.yaml

@@ -17,6 +17,9 @@ dependencies:
   '@midwayjs/decorator':
     specifier: ^3.12.0
     version: 3.14.12
+  '@midwayjs/i18n':
+    specifier: '3'
+    version: 3.14.12
   '@midwayjs/info':
     specifier: ^3.12.0
     version: 3.14.12
@@ -51,8 +54,8 @@ dependencies:
     specifier: ^1.11.10
     version: 1.11.10
   free-midway-component:
-    specifier: ^1.0.50
-    version: 1.0.50
+    specifier: ^1.0.52
+    version: 1.0.52
   lodash:
     specifier: ^4.17.21
     version: 4.17.21
@@ -3997,11 +4000,12 @@ packages:
       qs: 6.11.2
     dev: true
 
-  /free-midway-component@1.0.50:
-    resolution: {integrity: sha512-G0T11VZ94yfJVC6kwtLERhvMLekFivtTDyR8+moaOCPkPd8fwHGQjxMO2KKwHzv1FNsawYn6HitHjJ9O3KlxEA==}
+  /free-midway-component@1.0.52:
+    resolution: {integrity: sha512-kbbJQe5l0hLL3DdnkoJZlVetFifdNeWJC95v1MAeMC/0iOqt4JQJ74ofTm/R5FDC8agdpfa6IxWzKneXqyOjCA==}
     dependencies:
       '@midwayjs/axios': 3.14.13
       '@midwayjs/bull': 3.14.12
+      '@midwayjs/jwt': 3.14.12
       '@midwayjs/upload': 3.14.12
       '@types/mime': 3.0.4
       fs-extra: 11.2.0

+ 12 - 0
src/config/config.default.ts

@@ -6,4 +6,16 @@ export default {
   koa: {
     port: 7001,
   },
+  i18n: {
+    localeTable: {
+      en_us: {
+        default: require('../locales/en_us/defaults'),
+        error: require('../locales/en_us/errors')
+      },
+      zh_cn: {
+        default: require('../locales/zh_cn/defaults'),
+        error: require('../locales/zh_cn/errors')
+      },
+    },
+  },
 } as MidwayConfig;

+ 5 - 2
src/configuration.ts

@@ -7,10 +7,12 @@ import * as FreeFrame from 'free-midway-component';
 import * as jwt from '@midwayjs/jwt';
 import { VerifyTokenInit } from './decorator/verifyToken.decorator';
 import { CheckPermissionCodeInit } from './decorator/checkPermissionCode';
-import { CheckTokenMiddleware } from './middleware/checkToken.middleware';
+// import { CheckTokenMiddleware } from './middleware/checkToken.middleware';
 import * as swagger from '@midwayjs/swagger';
 import * as redis from '@midwayjs/redis';
 import { CheckOnePointLoginMiddleware } from './middleware/checkOnePointLogin.middleware';
+import * as i18n from '@midwayjs/i18n';
+import { SetLocaleToCtxMiddleware } from './middleware/setLocaleToCtx.middleware';
 @Configuration({
   imports: [
     koa,
@@ -18,6 +20,7 @@ import { CheckOnePointLoginMiddleware } from './middleware/checkOnePointLogin.mi
     FreeFrame,
     jwt,
     redis,
+    i18n,
     {
       component: info,
       enabledEnvironment: ['local'],
@@ -36,7 +39,7 @@ export class MainConfiguration {
   decoratorService: MidwayDecoratorService;
 
   async onReady() {
-    this.app.getMiddleware().insertFirst(CheckTokenMiddleware);
+    this.app.getMiddleware().insertFirst(SetLocaleToCtxMiddleware)
     this.app.getMiddleware().insertAfter(CheckOnePointLoginMiddleware, 'checkToken');
     // 注解
     VerifyTokenInit(this.decoratorService);

+ 10 - 3
src/controller/home.controller.ts

@@ -1,9 +1,16 @@
-import { Controller, Get } from '@midwayjs/core';
-
+import { Controller, Get, Inject } from '@midwayjs/core';
+import { FrameworkErrorEnum, ServiceError } from 'free-midway-component';
+import { Context } from '@midwayjs/koa';
+import { MidwayI18nService } from '@midwayjs/i18n';
 @Controller('/')
 export class HomeController {
+  @Inject()
+  ctx: Context;
+  @Inject()
+  i18n: MidwayI18nService;
   @Get('/', { description: 'ignore' })
   async home(): Promise<string> {
-    return 'connect success!';
+    throw new ServiceError(this.i18n.translate(FrameworkErrorEnum.BAD_ARGS, {  group: 'error' }),FrameworkErrorEnum.BAD_ARGS)
+    // return ;
   }
 }

+ 3 - 0
src/locales/en_us/defaults.ts

@@ -0,0 +1,3 @@
+export default {
+  locale: 'language is: {locale}',
+};

+ 17 - 0
src/locales/en_us/errors.ts

@@ -0,0 +1,17 @@
+export default {
+  locale: 'error language is: {locale}',
+  '-1': 'unknown error',
+  '-2': 'need params',
+  '-20': 'params error',
+  '-3': 'need query',
+  '-30': 'query error',
+  '-4': 'need body',
+  '-40': 'body error',
+  '-5': 'need args',
+  '-50': 'bad args',
+  '-10': 'data not found',
+  '-100': 'service fault',
+  '-101': 'not login',
+  '-102': 'bad password',
+  '-500': 'request falut',
+};

+ 3 - 0
src/locales/zh_cn/defaults.ts

@@ -0,0 +1,3 @@
+export default {
+  locale: '当前语言为: {locale}',
+};

+ 17 - 0
src/locales/zh_cn/errors.ts

@@ -0,0 +1,17 @@
+export default {
+  locale: '错误测试: {locale}',
+  '-1': '未知错误',
+  '-2': '缺少params',
+  '-20': 'params错误',
+  '-3': '缺少query',
+  '-30': '缺少query错误',
+  '-4': '缺少body',
+  '-40': 'body错误',
+  '-5': '需要参数',
+  '-50': '参数错误',
+  '-10': '未找到数据',
+  '-100': '服务发生错误',
+  '-101': '未登录',
+  '-102': '密码错误',
+  '-500': '请求错误',
+};

+ 4 - 0
src/middleware/checkOnePointLogin.middleware.ts

@@ -10,6 +10,10 @@ export class CheckOnePointLoginMiddleware implements IMiddleware<Context, NextFu
   resolve() {
     return async (ctx: Context, next: NextFunction) => {
       const routeInfo = await this.webRouterService.getMatchedRouterInfo(ctx.path, ctx.method);
+      if(!routeInfo) {
+        await next()
+        return
+      }
       const desc = routeInfo.description;
       if (desc !== 'ignore') {
         const loginService = await ctx.requestContext.getAsync(LoginService);

+ 24 - 0
src/middleware/setLocaleToCtx.middleware.ts

@@ -0,0 +1,24 @@
+import { IMiddleware } from '@midwayjs/core';
+import { Middleware } from '@midwayjs/decorator';
+import { NextFunction, Context } from '@midwayjs/koa';
+import { head, last } from 'lodash';
+@Middleware()
+export class SetLocaleToCtxMiddleware implements IMiddleware<Context, NextFunction> {
+  resolve() {
+    return async (ctx: Context, next: NextFunction) => {
+      const cookies = ctx.request.headers.cookie;
+      let arr = cookies.split(';');
+      arr = arr.filter(f => f.includes('locale='));
+      // 没找到locale就默认使用中文
+      if (arr.length <= 0) arr = ['locale=zh-cn'];
+      const a2 = head(arr).split('=');
+      const locale = last(a2);
+      ctx.locale = locale;
+      await next();
+    };
+  }
+
+  static getName(): string {
+    return 'setLocale';
+  }
+}