使用ThinkJs搭建微信中控服务的实现方法(4)

// src/controller/open/wx.js async send_msg_textAction() { let that = this; let {list} = that.post(); if (think.isEmpty(list)) { return that.json({code: 1, msg: '参数不正确'}) } that._sendMsgTextList(that.wxConfig.id, list); return that.json({code: 0, msg: '', data: null}) } async _sendMsgTextList(wxid, list) { let that = this; let apiWxController = that.controller('private/wx'); for (let item of list) { let data = await apiWxController.sendMsgText(wxid, item.openid, item.text) } } // src/controller/private/wx.js async sendMsgText(id, openid, content) { let that = this; let accessToken = await that.controller('common').getAccessToken(id); let url = `https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=${accessToken}` let {data} = await axios({ method: 'post', url: url, data: {"msgtype": 'text', "touser": openid, "text": {"content": content}} }) return data; }

文档

使用ThinkJs搭建微信中控服务的实现方法

 

写在结尾

其实还有很多接口,这里就不全部列出来了。

应该能看出来,在这个项目里面并不仅仅是把微信的接口做了个简单的转发,而是有一些自己的处理逻辑在里面。

比如获取微信用户信息的时候,会先判断缓存里有没有,如果没有就取数据库,如果还没有再去微信的接口取;如果数据库有,并且关注字段是未关注的话,还是会调用微信的接口取一波再更新。 反正一天内,微信接口的调用次数是绝对够用的。

再比如批量发送模版消息,中控服务在收到请求后会先创建一个uuid,要发的模版消息全部保存到数据库内,直接把uuid返给调用方。 然后中控会异步用uuid取出来这批模版消息,一个一个发,一个一个更新结果。 这样在业务方调用发送模版消息之后,无需等待全部发送完毕,就可以用拿到的uuid,去中控查询这次批量发送的状态结果。

目前是绑了七八个公众号,在没烧过香的前提下,还没出过什么问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a9cc9d49876738c76e803f71ef62c02c.html