Skip to content

Commit d92ad89

Browse files
committed
Add WeChat-OC project Demo
1 parent 8dc05c3 commit d92ad89

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1548
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# 【待办事项提醒小程序】微信公开课Pro 小程序云开发项目实战
2+
3+
## 项目介绍
4+
5+
此处为项目完整代码,可以直接部署使用;以下是现场部署步骤:
6+
7+
- 初始化云开发环境,如果有多个云开发环境造成wx.cloud.init错误,则在app.js处进行环境定义。
8+
- 在云开发环境中创建一个数据库,名称为messages
9+
- 前往微信小程序平台,选用小程序类别【办公-效率】,之后申请订阅消息模板,模板名称为【待办事项提醒】,编号4630
10+
- 将申请到的模板ID复制到miniprogram/pages/index/index.js文件的第2行,lessonTmplId后面
11+
- 将cloudfunctions文件夹内的2个云函数创建并部署,并将send云函数上传触发器
12+
13+
## 实战作者
14+
- 腾讯云·云开发团队([bestony](https://github.com/bestony)[lidongyx](https://github.com/lidongyx)[Zira](https://github.com/wasfzxt)
15+
16+
## 参考文档
17+
18+
- [云开发文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"permissions": {
3+
"openapi": [
4+
"subscribeMessage.send"
5+
]
6+
},
7+
"triggers": [
8+
{
9+
"name": "sendMessagerTimer",
10+
"type": "timer",
11+
"config": "1/5 * * * * * *"
12+
}
13+
]
14+
}
15+
16+
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
const cloud = require('wx-server-sdk');
2+
cloud.init();
3+
const db = cloud.database();
4+
const _ = db.command;
5+
6+
exports.main = async (event, context) => {
7+
try {
8+
let now = new Date();
9+
console.log(now);
10+
const messages = await db.collection('messages').where({
11+
done: false,
12+
date: _.lt(now)
13+
}).get();
14+
console.log(messages);
15+
// 循环消息列表
16+
/*【开始】-----------------【代码实战位置C-1】-----------------【开始】*/
17+
const sendPromises = messages.data.map(async message => {
18+
try {
19+
// 发送订阅消息
20+
await cloud.openapi.subscribeMessage.send({
21+
touser: message.touser,
22+
page: message.page,
23+
data: message.data,
24+
templateId: message.templateId,
25+
});
26+
// 发送成功后将消息的状态改为已发送
27+
return db.collection('messages').doc(message._id).update({
28+
data: {
29+
done: true,
30+
},
31+
});
32+
} catch (e) {
33+
return e;
34+
}
35+
});
36+
/*【结束】-----------------【代码实战位置C-1】-----------------【结束】*/
37+
return Promise.all(sendPromises);
38+
} catch (err) {
39+
console.log(err);
40+
return err;
41+
}
42+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "openapi",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"author": "",
10+
"license": "ISC",
11+
"dependencies": {
12+
"wx-server-sdk": "latest"
13+
}
14+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const cloud = require('wx-server-sdk');
2+
cloud.init();
3+
const db = cloud.database();
4+
5+
exports.main = async (event, context) => {
6+
try {
7+
/*【开始】-----------------【代码实战位置B-1】-----------------【开始】*/
8+
const result = await db.collection('messages').add({
9+
data: {
10+
touser: event.userInfo.openId,
11+
page: 'index',
12+
data: event.data,
13+
templateId: event.templateId,
14+
date: new Date(event.date),
15+
done: false,
16+
},
17+
});
18+
return result;
19+
/*【结束】-----------------【代码实战位置B-1】-----------------【结束】*/
20+
} catch (err) {
21+
console.log(err);
22+
return err;
23+
}
24+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "openapi",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"author": "",
10+
"license": "ISC",
11+
"dependencies": {
12+
"wx-server-sdk": "latest"
13+
}
14+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//app.js
2+
App({
3+
onLaunch: function() {
4+
if (!wx.cloud) {
5+
console.error('请使用 2.2.3 或以上的基础库以使用云能力');
6+
} else {
7+
wx.cloud.init({
8+
traceUser: true
9+
});
10+
}
11+
}
12+
});
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"pages": [
3+
"pages/index/index"
4+
],
5+
"window": {
6+
"backgroundColor": "#F6F6F6",
7+
"backgroundTextStyle": "light",
8+
"navigationBarBackgroundColor": "#286dee",
9+
"navigationBarTitleText": "待办提醒",
10+
"navigationBarTextStyle": "white"
11+
},
12+
"sitemapLocation": "sitemap.json"
13+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
const app = getApp();
2+
const lessonTmplId = '';
3+
4+
Page({
5+
data: {
6+
7+
},
8+
onSubscribe: function(e) {
9+
let date = new Date(Date.parse(new Date())+5000);
10+
const item = {
11+
thing1: {
12+
value: this.text
13+
},
14+
date2: {
15+
value: this.formdate(date)
16+
}
17+
}
18+
console.log(item);
19+
wx.requestSubscribeMessage({
20+
// 传入订阅消息的模板id,模板 id 可在小程序管理后台申请
21+
tmplIds: [lessonTmplId],
22+
success(res) {
23+
// 申请订阅成功
24+
if (res.errMsg === 'requestSubscribeMessage:ok') {
25+
wx.showLoading({
26+
title: '订阅中',
27+
mask:true
28+
})
29+
/*【开始】-----------------【代码观看位置A-1】-----------------【开始】*/
30+
wx.cloud.callFunction({
31+
name: 'subscribe',
32+
data: {
33+
data: item,
34+
date: date,
35+
templateId: lessonTmplId,
36+
},
37+
}).then(() => {
38+
wx.hideLoading();
39+
wx.showToast({
40+
title: '订阅成功'
41+
});
42+
}).catch(() => {
43+
wx.showToast({
44+
title: '订阅失败',
45+
icon: 'none'
46+
});
47+
});
48+
/*【结束】-----------------【代码观看位置A-1】-----------------【结束】*/
49+
}
50+
},
51+
});
52+
},
53+
textin(e){
54+
this.text = e.detail.value;
55+
},
56+
formdate(date){
57+
var year = date.getFullYear();
58+
var month = date.getMonth() + 1;
59+
var date1 = date.getDate();
60+
var hour = date.getHours();
61+
var minutes = date.getMinutes();
62+
var second = date.getSeconds();
63+
return year + "年" + month + "月" + date1 + "日 " + hour + ":" + minutes;
64+
}
65+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"usingComponents": {}
3+
}

0 commit comments

Comments
 (0)