99 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
const utils = require('utils');
function getFormatDate(ms) {
let date = new Date();
date.setTime(date.getTime() + ms);
const year = date.getFullYear();
const month = date.getMonth() + 1;
const strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = '0' + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = '0' + strDate;
}
const currentdate = year + '-' + month + '-' + strDate;
return currentdate;
};
exports.main = async (event, context) => {
const appid = utils.APPID;
const secret = utils.SECREAT;
const tokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appid + '&secret=' + secret;
// uniCloud.httpclient 发起请求
const res = await uniCloud.httpclient.request(tokenUrl,
{
method: 'GET',
dataType:"json"
});
//返回数据给客户端
const access_token = res.data.access_token;
const db = uniCloud.database();
console.log('access_token' + access_token);
// 从云开发数据库中查询等待发送的消息列表
const messages = await db
.collection('messages')
.where({
send: false,
})
.get();
const now_date = getFormatDate(0);
let sendArr = [];
// 循环消息列表
const sendPromises = messages.data.map(async message => {
// 发送订阅消息
try{
if (sendArr.includes(message.touser)){
console.log('该用户已发送!')
}else
{
sendArr.push(message.touser);
const sendUrl = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + access_token;
let send_data = {
touser: message.touser,
page: "pages/index/index",
data: {
thing1: {
value: "记得领红包哦!",
},
thing4: {
value: message.data,
},
thing5: {
value: now_date,
}
},
template_id: message.templateId,
};
console.log(send_data);
// uniCloud.httpclient 发起请求
const sendres = await uniCloud.httpclient.request(sendUrl,
{
data: send_data,
method: 'POST',
contentType: 'json',
dataType:"json",
});
console.log('发送成功');
console.log(message);
// 发送成功后将消息的状态改为已发送
return await db.collection('messages')
.doc(message._id)
.update({
send: true,
sendDate: now_date,
}
)
}
}catch(e){
//TODO handle the exception
console.log('发送失败');
console.log(message);
}
});
return Promise.all(sendPromises)
};