Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Page module #4

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 签到打卡
## 模块说明
小程序中 “签到打卡”是一个典型的促进用户活跃,提高粘性的模块。
本模块支持典型的7日连续打卡,签到后可配置积分奖励,连续签到x天,可进行额外的抽奖。

点击[小程序组件下载地址](https://scene-module-9gee6idgabd997ca-1306328562.tcloudbaseapp.com/signIn/scene-module.zip)下载zip包

## 效果截图
### 小程序端效果截图
![](https://qcloudimg.tencent-cloud.cn/raw/e1b38ea969e6e4bd5896190b0bbc7150.png)

### 管理端截图
1. ![添加奖品](https://scene-module-9gee6idgabd997ca-1306328562.tcloudbaseapp.com/signIn/console/guide/step1/prize.png)
2. ![签到配置](https://scene-module-9gee6idgabd997ca-1306328562.tcloudbaseapp.com/signIn/console/guide/step1/config.png)
3. ![编辑签到规则](https://scene-module-9gee6idgabd997ca-1306328562.tcloudbaseapp.com/signIn/console/guide/step1/rule.png)

## 项目配置

1. temId: 该订阅提醒模板 ID,需要登录当前小程序的 mp 管理系统,进入 <https://mp.weixin.qq.com/wxamp/newtmpl/mytmpl?start=0&limit=10&token=1823265021&lang=zh_CN>
搜索"签到提醒"模板,然后点击选用, 详细内容配置如下效果:
温馨提示:{{thing2.DATA}}
签到奖励:{{thing1.DATA}}
活动名称:{{thing3.DATA}}
2. page: 即使用者订阅后,会收到一个服务通知消息,提醒签到打卡,然后点击这条消息,需要跳转到的小程序页面,这里根据自己页面路径自由配置。比如 pages/index/card
3. tag:表示当前是生效哪个签到打卡项目ID,当前固定为 continuous-weekly,一周连续签到。
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# 概述
## 产品介绍
小程序开发过程中,有很多通用的业务模块,例如:打卡签到、邀请有礼、趣味小游戏、运营banner配置等。

这些模块业务模型具备通用性,但是前端每个小程序都有自己的样式设计。因此,每个小程序都需要重复性的进行开发。

单页模板致力于帮助小程序开发者聚焦前端交互展示,无需关注于实现接口以及管理端。

开通单页模板后,运营人员可直接在管理端配置新功能,小程序前端源码组件可导入到小程序内快速接入,也可以对前端组件进行二开以满足业务需求。


## 产品优势
相比于开源的模板,需要前后端都自行部署维护。

单页模板只需要关注前端交互,管理端以及后端接口将由模块开发者进行运维以及迭代,省心省力。

模块基于云开发开发,无需运维,弹性扩缩容。

## 适用场景
小程序内新增业务模块,且模块的业务模型具有很强的通用性。

## 面向群体
小程序开发者,有小程序开发能力

## 产品说明
### 使用入口
[下载微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
1. 开发者右键新建时,会有配置单页模板的入口进行插入和管理。
![](https://qcloudimg.tencent-cloud.cn/raw/a3313221d295a411c2506e83ec856798.png)
2. 选择单页模块进行,如果未开通微信云开发需要先点击授权开通。
![](https://qcloudimg.tencent-cloud.cn/raw/86ae58eda00b8ce0191b62b94b6624af.png)

### 控制台
小程序开发者在微信开发者工具内开通后,可进入对应的模块控制台页面查看接入指引、导入小程序组件、查看模块提供的接口。

![](https://qcloudimg.tencent-cloud.cn/raw/25ded4b6bd239b0eee3a00b6e1419c37.png)

### 管理端
在控制台内点击访问管理系统,可得到管理端链接。
运营人员通过链接在浏览器内通过账号+密码登录后可进行管理。

![](https://scene-module-9gee6idgabd997ca-1306328562.tcloudbaseapp.com/signIn/console/guide/step1/prize.png)

### 接口
![](https://qcloudimg.tencent-cloud.cn/raw/3d6bb6f0a5d028a04da1c4b9f07ccc0a.png)
在控制台内可查看模块提供的开放接口
1. 小程序端接口,开发者可在小程序端调用,可使用接口构建自己的交互展示
2. 服务端接口,可在服务器端调用,通过该接口可与已有后台系统互联互通
3. 自定义接口,需要自行实现以与其他模块连通,例如:签到接口内发积分需要调用自定义的发积分接口。

### 小程序组件
每个模块都会有对应的小程序源码组件,开发者可直接导入使用,可根据自己的需要进行二开,或者基于模块提供的接口完全自己开发小程序页面。
![](https://qcloudimg.tencent-cloud.cn/raw/d984368d6769b336e93131edc24b8d27.png)
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# 小程序组件
## 概述
小程序源码组件是由模块开发者提供模板示例,源码组件导入后可参考模块的 README 文件进行配置。
开发者可基于前端代码进行二次开发以满足自己的小程序交互样式需求。

## 组件的导入
1. 在 miniprogramRoot 目录下对文件夹点击右键,则弹出**配置单页模板**入口。
2. 在单页模板控制台的小程序组件页面
![](https://qcloudimg.tencent-cloud.cn/raw/b0e60a4bbdc4063f3f78d96dae3dfff2.png)
3. 选中组件并点击,弹出组件预览弹窗
![](https://qcloudimg.tencent-cloud.cn/raw/d984368d6769b336e93131edc24b8d27.png)
4. 点击“导入到IDE”,导入成功并弹出提示弹窗。会在**打开当前控制台的目录**下创建 `page_module_{模块名}`目录,如遇文件夹冲突则会自动递增。组件导入成功后将自动导入示例页面路径到`app.json`内的[`pages`](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#pages)中。
![](https://qcloudimg.tencent-cloud.cn/raw/47f30be83fb14a8960fafd4dfedf09ac.png)


## 小程序目录树
```shell
.
├── README.md
├── cloudfunctions # 云开发云函数目录
├── miniprogram # 小程序前端代码
│ ├── miniprogram_npm
│ ├── node_modules # 如果希望在 miniprogram/pages 下调用 @cloudbase/page-module,需要在 miniprogram 下安装依赖
│ ├── pages
│ │ ├── index
│ │ ├── page_module_sign_up # 导入目录规范 page_module_${模块名}
│ │ │ ├── README.md
│ │ │ ├── components # 模块内的组件
│ │ │ ├── config.js
│ │ │ ├── images
│ │ │ ├── miniprogram_npm # 构建后的npm包,包含 @cloudbase/page-module
│ │ │ ├── package.json
│ │ │ └── pages # 模块内示例页面
│ │ └── demo
│ └── sitemap.json
├── project.config.json
```

## 维护说明
单页模板的开发者,会配套提供小程序源码组件,开发者会更新示例与修复示例里存在的BUG。
但是因为源码是交由开发者导入并修改,开发者遇到组件中遇到BUG,需要小程序开发者自行修复。

[小程序插件](https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/)的前后端都由插件开发者维护,使用者无法看到插件的代码。只能指定依赖的插件版本,通过插件暴露的接口能力。
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# 接口
单页模板通过开放的接口提供服务,业务方可在小程序端,服务器端调用接口。

## 小程序端接口调用

### 小程序目录树
```shell
.
├── README.md
├── cloudfunctions # 云开发云函数目录
├── miniprogram # 小程序前端代码
│ ├── miniprogram_npm
│ ├── node_modules # 如果希望在 miniprogram/pages 下调用 @cloudbase/page-module,需要在 miniprogram 下安装依赖
│ ├── pages
│ │ ├── index
│ │ ├── page_module_sign_up # 导入目录规范 page_module_${模块名}
│ │ │ ├── README.md
│ │ │ ├── components
│ │ │ ├── config.js
│ │ │ ├── images
│ │ │ ├── miniprogram_npm # 构建后的npm包,包含 @cloudbase/page-module
│ │ │ ├── package.json
│ │ │ └── pages
│ │ └── demo
│ └── sitemap.json
├── project.config.json
```
### 引入sdk
#### 组件内引入
小程序端导入组件后,在组件目录下会安装好 `@cloudbase/page-module`的npm包,可直接使用,无需额外引入。

#### miniprogram/pages 下引入
参考[小程序使用Npm包](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)进行引入。

1. 在 `miniprogram` 下安装模块,`npm install @cloudbase/page-module`
2. 构建 npm,点击开发者工具中的菜单栏:工具 --> 构建 npm
![](https://res.wx.qq.com/wxdoc/dist/assets/img/construction.408e13ae.png)
3. 勾选“使用 npm 模块”选项
![](data:image/png;base64,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)
4. 构建完成后即可使用 npm 包。

### 完整代码示例
```js
import { PageModule } from '@cloudbase/page-module'

// 初始化模块名称
const pageModule = new PageModule('tcb:sign_up')

// 调用小程序端接口 callMethod(methodName: string, data: object)
pageModule.callMethod('doSignIn', {
a: 1,
b: 2
})
```

## 服务端接口调用
### 安装npm
```shell
npm install @cloudbase/page-module wx-server-sdk sm-crypto -s
```
### 代码示例
```javascript
const PageModule = require('@cloudbase/page-module');
// 初始化模块名称
const pageModule = new PageModule('tcb:sign_up', {
secretId: 'your-secret-id',
secretKey: 'your-secret-key'
})

// 调用服务端接口 callMethod(methodName: string, data: object)
pageModule.callMethod('doSignIn', {
a: 1,
b: 2
})
```

## 自定义接口
自定义接口由模块定义接口名、入参、出参,业务方来实现接口逻辑。

模块会调用自定义接口来实现与业务已有系统的数据打通,接口调用参考管理端接口。

场景举例:用户签到后发放积分,签到模块会先调用业务实现的 发积分 接口,积分发放成功则完成签到。
### 操作指南
云开发相关操作,可前往[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)了解详情。

**步骤1**:选择云开发环境,部署示例云函数
![](https://qcloudimg.tencent-cloud.cn/raw/b54def8b602f5c4b36547a48e2887106.png)
**步骤2**:确认接口协议前往实现
![](https://qcloudimg.tencent-cloud.cn/raw/cf05ca39fec115cd8e39954973e89d18.png)
**步骤3** 请前往微信开发者工具,切换云开发的环境
![](htthttps://qcloudimg.tencent-cloud.cn/raw/606f4351cf22f57165eef1ad6dd1c64e.png)
**步骤4**:右键云函数文件夹进行代码下载
![](https://qcloudimg.tencent-cloud.cn/raw/cf05ca39fec115cd8e39954973e89d18.png)
**步骤5**:在云函数下新建 /api/send_prize.js 文件并实现该接口
![](https://qcloudimg.tencent-cloud.cn/raw/cf05ca39fec115cd8e39954973e89d18.png)
**步骤6**:上传云函数
![](https://qcloudimg.tencent-cloud.cn/raw/bd1e4e3145dc632a202e1be25ceaeba6.png)
**步骤7**:点击下一步,确认连接到云函数
### 实现规范
一个模块下有多个自定义接口,开发者可选择一个云开发环境,系统会部署一个示例云函数到该环境下。

开发者在该函数内实现该模块的所有自定义接口。
#### 目录结构

```shell
.
├── README.md
├── api # 每个文件对应一个自定义接口
│ ├── send_prize.js
│ └── demo.js
├── index.js # 负责将接口路由转发
└── package.json
```

#### 实现接口
例如,当前需要实现的自定义接口为 `send_prize`,则编辑 /api/send_prize.js文件。

```js
const objCloud = require('wx-server-sdk');
/**
* 具体的业务函数,在这里实现你发奖,发积分的逻辑,data 入参是固定的,出参必须遵循规范
* @param { object } data - 业务入参
* @returns { object } - 返回参数
* @returns { number } code 返回的状态标记,成功返回0, 非0代表错误
* @returns { string } [msg] 如果成功,则可以不返回,如果失败把相应的错误原因中文描述放在这里
*
*/
module.exports = async (data) => {
console.log("参数:", data);
// 这里实现你具体的业务逻辑,比如发积分,发奖
return {code:0, msg:'suc'};
};

```

**错误码**
1. -1:自定义接口未实现,请按规范在${methodApiFile}文件中编写代码实现接口
2. -2:调用接口实现异常:${errMessage}
Loading