mirror of
https://github.com/zwpro/coupons.git
synced 2025-12-10 16:52:48 +00:00
99 lines
2.4 KiB
JavaScript
99 lines
2.4 KiB
JavaScript
'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)
|
||
|
||
}; |