Browse Source

加入模板url

liuyu 5 years ago
parent
commit
1ee3be69c0
3 changed files with 24 additions and 9 deletions
  1. 15 7
      app/controller/weixin.js
  2. 3 0
      app/router.js
  3. 6 2
      app/service/weixin.js

+ 15 - 7
app/controller/weixin.js

@@ -24,7 +24,7 @@ class WeixinController extends Controller {
   //       store - 默认,认证结果写入sessionStore,然后重定向回请求页面(要求请求页面和认证服务在同一域名下)
   //       token - url带上token参数重定向到原始地址
   async auth() {
-    const { redirect_uri, code, test, type, response_type = 'store', groupid, doctorid } = this.ctx.query;
+    const { redirect_uri, code, test, type, response_type = 'store', objid } = this.ctx.query;
     if (test) {
       return await this.authTest();
     }
@@ -42,7 +42,7 @@ class WeixinController extends Controller {
     // TODO: 保存原始请求地址
     const state = uuid();
     const key = `visit:auth:state:${state}`;
-    const val = JSON.stringify({ redirect_uri, type, groupid, doctorid });
+    const val = JSON.stringify({ redirect_uri, type, objid });
     await this.app.redis.set(key, val, 'EX', 600);
 
     // TODO: 生成回调地址
@@ -74,15 +74,23 @@ class WeixinController extends Controller {
     if (openid) {
       const key = `visit:auth:state:${state}`;
       const val = await this.app.redis.get(key);
-      const { redirect_uri } = JSON.parse(val);
+      const { redirect_uri, type, objid } = JSON.parse(val);
       console.log('redirect_uri-->' + redirect_uri);
       // 通过openid取得用户信息
       const user = await this.ctx.service.user.findByOpenid(openid);
       if (user) {
-        const to_uri = urljoin(redirect_uri, `?openid=${openid}&uid=${user.id}&type=${user.type}`);
-        // TODO: 重定性页面
-        console.log('to_uri222-->' + to_uri);
-        this.ctx.redirect(to_uri);
+        if (type === 'login') {
+          const to_uri = urljoin(redirect_uri, `?openid=${openid}&uid=${user.id}&type=${user.type}`);
+          // TODO: 重定性页面
+          console.log('to_uri222-->' + to_uri);
+          this.ctx.redirect(to_uri);
+        } else if (type === 'template') {
+          const to_uri = urljoin(redirect_uri, `?openid=${openid}&uid=${user.id}&type=${user.type}&classid=${objid}`);
+          // TODO: 重定性页面
+          console.log('to_uri222-->' + to_uri);
+          this.ctx.redirect(to_uri);
+        }
+
       } else {
         console.log('rrr--->' + redirect_uri);
         const to_uri = urljoin(redirect_uri, `?openid=${openid}`);

+ 3 - 0
app/router.js

@@ -134,4 +134,7 @@ module.exports = app => {
   // 行政区划表设置路由
   router.resources('termquest', '/api/train/termquest', controller.termquest); // index、create、show、destroy
   router.post('termquest', '/api/train/termquest/update/:id', controller.termquest.update);
+
+  // 微信端访问地址
+  router.get('/api/train/auth', controller.weixin.auth); // 微信登录
 };

+ 6 - 2
app/service/weixin.js

@@ -141,12 +141,16 @@ class WeixinAuthService extends AxiosService {
   }
 
   // 发送微信模板消息
-  async sendTemplateMsg(templateid, openid, first, keyword1, keyword2, remark) {
+  async sendTemplateMsg(templateid, openid, first, keyword1, keyword2, remark, tourl) {
     const url = this.ctx.app.config.sendDirMq + this.ctx.app.config.appid;
+    let _url = '';
+    if (tourl) {
+      _url = this.ctx.app.config.baseUrl + '/api/train/auth?state=1&redirect_uri=' + this.ctx.app.config.baseUrl + '/classinfo/&type=template&objid=' + tourl;
+    }
     const requestData = { // 发送模板消息的数据
       touser: openid,
       template_id: templateid,
-      url: '',
+      url: _url,
       data: {
         first: {
           value: first,