Browse Source

获取openid

zs 1 year ago
parent
commit
39481f85f5

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

@@ -34,4 +34,11 @@ export default {
       db: 4,
     },
   },
+  wechatSetting: {
+    // 随访
+    followApp: {
+      appid: 'wx23c71bee5876d1b9',
+      secret: 'aa942570f1d056adf7891a32eb87a818',
+    },
+  },
 } as MidwayConfig;

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

@@ -57,6 +57,17 @@ export class LoginController {
   @Post('/wxapp/:openid')
   async wxAppLogin(@Param('openid') openid: string) {}
 
+  /**
+   * TODO:微信小程序获取openid
+   * @param fiiter
+   */
+  @Get('/app')
+  async appLogin(fiiter) {
+    const { config, js_code } = fiiter.query;
+    const result: any = await this.loginService.appLogin(config, js_code);
+    return result;
+  }
+
   /**
    * 修改密码
    * @param data 修改密码所需数据

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

@@ -6,9 +6,13 @@ import {
 } from 'free-midway-component';
 import { isEqual, upperFirst } from 'lodash';
 import { LoginDTO, LoginType, UPwdDTO } from '../interface/login.interface';
+import { makeHttpRequest, Config } from '@midwayjs/core';
+import _ = require('lodash');
 
 @Provide()
 export class LoginService {
+  @Config('wechatSetting')
+  wechatSetting;
   /**
    * 账密登录
    * @param data 用户名和密码
@@ -38,4 +42,33 @@ export class LoginService {
     user.password = data.password;
     await user.save();
   }
+
+  // 获取openid
+  async appLogin(config, js_code) {
+    const appConfig = _.get(this.wechatSetting, config);
+    if (!appConfig)
+      throw new ServiceError(
+        '未设置该微信相关信息,无法登陆!',
+        FrameworkErrorEnum.SERVICE_FAULT
+      );
+    const { appid, secret } = appConfig;
+    if (!(appid && secret))
+      throw new ServiceError(
+        '微信相关信息设置错误,无法登陆!',
+        FrameworkErrorEnum.SERVICE_FAULT
+      );
+    const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${secret}&js_code=${js_code}&grant_type=authorization_code`;
+    const res = await makeHttpRequest(url, {
+      method: 'GET',
+      contentType: 'json',
+      dataType: 'json',
+    });
+    const openid = _.get(res, 'data.openid');
+    if (!openid)
+      throw new ServiceError(
+        '未获取到openid',
+        FrameworkErrorEnum.NOT_FOUND_DATA
+      );
+    return { openid };
+  }
 }

BIN
upload/adv/20231020150425.jpg


BIN
upload/adv/20231020150454.jpg


upload/adv/20231020112001.jpg → upload/adv/20231020150511.jpg


BIN
upload/config/20231020150259.jpg


BIN
upload/config/20231020150306.png


BIN
upload/config/20231020150309.png


BIN
upload/config/20231020150313.jpg