浏览代码

填写获取openid

zs 7 月之前
父节点
当前提交
7ec40ceeb7

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

@@ -46,4 +46,13 @@ export default {
     },
     from: '吉林省工业技术研究院', // 发件人名称
   },
+  wechatSetting: {
+    // 吉林省工业技术研究院
+    friendShoolApp: {
+      appid: 'wxef5b87d5fef241b4',
+      secret: 'd315753502e0cbc24de5a230bed5c87a',
+      mchid: '1505364491',
+      v3key: '1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9',
+    },
+  },
 } as MidwayConfig;

+ 9 - 0
src/config/config.local.ts

@@ -84,4 +84,13 @@ export default {
   PathConfig: {
     path: 'C:\\temp\\cxyy\\',
   },
+  wechatSetting: {
+    // 吉林省工业技术研究院
+    friendShoolApp: {
+      appid: 'wxef5b87d5fef241b4',
+      secret: 'd315753502e0cbc24de5a230bed5c87a',
+      mchid: '1505364491',
+      v3key: '1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9',
+    },
+  },
 } as MidwayConfig;

+ 9 - 0
src/config/config.prod.ts

@@ -82,4 +82,13 @@ export default {
   PathConfig: {
     path: '/home/workspace/service/proxy/upload/cxyy/export',
   },
+  wechatSetting: {
+    // 吉林省工业技术研究院
+    friendShoolApp: {
+      appid: 'wxef5b87d5fef241b4',
+      secret: 'd315753502e0cbc24de5a230bed5c87a',
+      mchid: '1505364491',
+      v3key: '1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9',
+    },
+  },
 } as MidwayConfig;

+ 9 - 0
src/config/config.self.ts

@@ -82,4 +82,13 @@ export default {
   PathConfig: {
     path: 'D:\\temp\\cxyy\\',
   },
+  wechatSetting: {
+    // 吉林省工业技术研究院
+    friendShoolApp: {
+      appid: 'wxef5b87d5fef241b4',
+      secret: 'd315753502e0cbc24de5a230bed5c87a',
+      mchid: '1505364491',
+      v3key: '1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9',
+    },
+  },
 } as MidwayConfig;

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

@@ -40,7 +40,7 @@ export class LoginController {
     if (!phone) throw new ServiceError(ErrorCode.PWD_NO_PHONE); // 缺少手机号
     const res = await this.userSerivce.checkPhone({ phone });
     if (!res) throw new ServiceError(ErrorCode.PHONE_IS_EXISTS);
-    await this.loginService.sendRegCode(phone)
+    await this.loginService.sendRegCode(phone);
   }
 
   @Post('/pwd/reset', { routerName: '用户忘记密码-重置密码' })
@@ -139,6 +139,14 @@ export class LoginController {
     const token = await this.jwtService.sign(vo, this.jwtSecret);
     return token;
   }
+
+  // 获取微信统一标识
+  @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 修改密码所需数据

+ 4 - 0
src/error/service.error.ts

@@ -59,6 +59,10 @@ export enum ErrorCode {
   // export
   NO_EXPORT_SETTING = 'NO_EXPORT_SETTING',
   NO_DATA_IN_EXPORT_QUERY = 'NO_DATA_IN_EXPORT_QUERY',
+
+  // openid
+  SERVICE_FAULT = 'SERVICE_FAULT',
+  NOT_FOUND_DATA = 'NOT_FOUND_DATA',
 }
 export class ServiceError extends Error {
   constructor(errcode: string) {

+ 5 - 5
src/service/asyncExport.service.ts

@@ -77,7 +77,7 @@ export class AsyncExportService {
   }
 
   async execute(id) {
-    const mission = await this.model.createQueryBuilder().where(`"id" = :id`, { id }).getOne();
+    const mission = await this.model.createQueryBuilder().where('"id" = :id', { id }).getOne();
     // 没有任务,不需要执行
     if (!mission) return false;
     // 没有配置,不需要执行
@@ -93,7 +93,7 @@ export class AsyncExportService {
     // 没有导出配置,不需要执行
     if (!cc) return;
     /**根据表名找到完整的配置 */
-    const configData = await this.ecService.createQueryBuilder().where(`"table" =:table`, { table }).getOne();
+    const configData = await this.ecService.createQueryBuilder().where('"table" =:table', { table }).getOne();
     // 需要通过cc换正常的配置
     // 未找到配置,不需要执行
     if (!configData) return;
@@ -114,7 +114,7 @@ export class AsyncExportService {
     const total = await builder.getCount();
     // 找数据,处理数据,写入数据
     let skip = 0;
-    let fileName = `${table}-${dayjs().format('YYYYMMDDHHmmss')}.xlsx`;
+    const fileName = `${table}-${dayjs().format('YYYYMMDDHHmmss')}.xlsx`;
     let downloadPath;
     /**循环标志 */
     let whileContinue = true;
@@ -233,7 +233,7 @@ export class AsyncExportService {
       const table = upperFirst(from);
       const model = this[`_model_${table}`];
       if (!model) return value;
-      const relationData = await model.createQueryBuilder().where(`"id" =:id`, { id: value }).getOne();
+      const relationData = await model.createQueryBuilder().where('"id" =:id', { id: value }).getOne();
       // 没找到关联的数据
       if (!relationData) return value;
       // 找到了,就取指定字段
@@ -271,7 +271,7 @@ export class AsyncExportService {
     }
     const fullPath = Path.resolve(path, fileName);
     const has_file = fs.existsSync(fullPath);
-    let workbook = new Excel.Workbook();
+    const workbook = new Excel.Workbook();
     let sheet;
     if (!has_file) {
       // 没有文件,第一次,需要生成

+ 21 - 1
src/service/login.service.ts

@@ -1,4 +1,4 @@
-import { Config, Inject, Provide } from '@midwayjs/core';
+import { Config, Inject, makeHttpRequest, Provide } from '@midwayjs/core';
 import { get, random } from 'lodash';
 import { RoleService } from '../service/system/role.service';
 import { RedisService } from '@midwayjs/redis';
@@ -48,6 +48,9 @@ export class LoginService {
   @InjectEntityModel(User)
   userModel: Repository<User>;
 
+  @Config('wechatSetting')
+  wechatSetting;
+
   /**
    * 注册验证 验证码
    * @param phone 电话号码
@@ -226,4 +229,21 @@ export class LoginService {
   randomStr(len = 32) {
     return Math.random().toString(36).slice(-len);
   }
+
+  // 获取openid
+  async appLogin(config, js_code) {
+    const appConfig = get(this.wechatSetting, config);
+    if (!appConfig) throw new ServiceError(ErrorCode.SERVICE_FAULT);
+    const { appid, secret } = appConfig;
+    if (!(appid && secret)) throw new ServiceError(ErrorCode.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(ErrorCode.NOT_FOUND_DATA);
+    return { openid };
+  }
 }