lrf преди 1 година
родител
ревизия
48feeb5302
променени са 2 файла, в които са добавени 27 реда и са изтрити 1 реда
  1. 11 1
      src/controller/login.controller.ts
  2. 16 0
      src/service/login.service.ts

+ 11 - 1
src/controller/login.controller.ts

@@ -6,6 +6,7 @@ import { JwtService } from '@midwayjs/jwt';
 import { Context } from '@midwayjs/koa';
 const assert = require('assert');
 import get = require('lodash/get');
+import { FrameworkErrorEnum, ServiceError } from 'free-midway-component';
 
 @ApiTags(['登录服务'])
 @Controller('/login')
@@ -42,7 +43,16 @@ export class LoginController {
    * @param openid 微信小程序openid
    */
   @Post('/wxapp/:openid')
-  async wxAppLogin(@Param('openid') openid: string) {}
+  async wxAppLogin(@Param('openid') openid: string) {
+    if (!openid) throw new ServiceError('缺少微信凭证!', FrameworkErrorEnum.BAD_PARAMS);
+    const user = await this.loginService.wxAppLogin(openid);
+    let vo = new LoginVO(user);
+    vo = JSON.parse(JSON.stringify(vo));
+    const token = await this.jwtService.sign(vo, this.jwtSecret, {
+      expiresIn: this.jwtExpiresIn,
+    });
+    return token;
+  }
 
   /**
    * 修改密码

+ 16 - 0
src/service/login.service.ts

@@ -26,4 +26,20 @@ export class LoginService {
     user.password = data.password;
     await user.save();
   }
+
+  async wxAppLogin(openid: string) {
+    const tables = ['Doctor', 'Nurse', 'Patient'];
+    let user;
+    let role;
+    for (const table of tables) {
+      const model = GetModel(upperFirst(table));
+      user = await model.findOne({ openid }).lean();
+      if (user) {
+        role = table;
+        break;
+      }
+    }
+    if (user) return { ...user, role };
+    throw new ServiceError('未找到用户信息!', FrameworkErrorEnum.NOT_FOUND_DATA);
+  }
 }