# 前言
本教程是基于 “apifm-wxapi” 模块,教你快速实现小程序开发,所以你可能需要先了解以下知识点:
[《创建 HelloWorld 项目》](https://www.yuque.com/apifm/doc/hezlrm)
[《使用 “apifm-wxapi” 快速开发小程序》](https://www.yuque.com/apifm/doc/mdldsd)
[《免费注册开通后台,获得专属域名》](https://www.yuque.com/apifm/doc/qr6l4m)
本案例中,部分功能,需要用户登录后才能操作,也就是说需要 token 授权,请先了解:
[《微信小程序登录获取openid及三方token》](https://www.yuque.com/apifm/doc/kaygbw)
# 功能介绍
激励用户每天登录小程序,完成每日签到任务获得积分奖励;
积分可用于兑换积分专享优惠券、积分抵扣购物等等场景;
后天设置每天签到赠送积分数量、连续签到 x 天可获得 y 积分奖励;
# 启用模块
登录 “第一步” 注册的后台,左侧菜单 --> 工厂设置 --> 模块管理
找到并启用下述模块,然后 F5 刷新一下后台界面,你将可以看到本案例所需的所有功能菜单:
_本案例菜单为 “积分模块” --> “签到规则”_
**积分模块**
# 设置签到规则

## 最大连续签到天数
**参数类型:** 文本参数
参数名称:MAX_CONTINUOUS_SIGN_DAYS
最大连续签到天数,超过这个天数按连续签到1天处理
# 编写小程序

```plain
签到规则:
连续签到 {{ item.continuous }} 天,赠送 {{ item.score }} 积分
签到记录:
连续签到第 {{ item.continuous }} 天
{{ item.dateAdd }}
```
```javascript
const WXAPI = require('apifm-wxapi')
Page({
data: {
scoreSignRules: undefined, // 签到赠送积分规则
scoreSignLogs: undefined, // 签到记录
todaySigned: true, // 今天是否已签到
},
onLoad: function (options) {
},
onShow: function () {
this.scoreSignRules()
const loginToken = wx.getStorageSync('loginToken')
if (!loginToken) {
wx.showToast({
title: '请先登录',
icon: 'none'
})
this.goRegist()
return
}
this.scoreTodaySignedInfo()
this.scoreSignLogs()
},
goRegist() {
wx.navigateTo({
url: '/pages/auth/index'
})
},
scoreSignRules(){ // 读取签到赠送积分规则
WXAPI.scoreSignRules().then(res => {
if (res.code == 0) {
this.setData({
scoreSignRules: res.data
})
}
})
},
scoreSignLogs(){ // 读取签到记录
const loginToken = wx.getStorageSync('loginToken')
WXAPI.scoreSignLogs({
token: loginToken.token
}).then(res => {
if (res.code == 0) {
this.setData({
scoreSignLogs: res.data.result
})
}
})
},
scoreTodaySignedInfo(){ // 判断今日是否已签到
const loginToken = wx.getStorageSync('loginToken')
WXAPI.scoreTodaySignedInfo(loginToken.token).then(res => {
if (res.code == 700) {
this.setData({
todaySigned: false
})
}
})
},
scoreSign(){ // 签到
const loginToken = wx.getStorageSync('loginToken')
WXAPI.scoreSign(loginToken.token).then(res => {
if (res.code == 0) {
wx.showToast({
title: '签到成功',
icon: 'success'
})
this.setData({
todaySigned: true
})
this.onShow()
} else {
wx.showToast({
title: res.msg,
icon: 'none'
})
}
})
},
})
```
# apifm-wxapi 方法说明
### 签到规则
```javascript
WXAPI.scoreSignRules()
```
> 读取签到一次送多少积分;连续签到x天赠送y积分
>
### 签到
```javascript
WXAPI.scoreSign(token)
```
### 读取今日签到信息
```javascript
WXAPI.scoreTodaySignedInfo(token)
```
> 判断今天有没有签到
>
> 错误码返回 700 表示未签到;错误码返回 0 表示已经签到
>
### 签到记录
```javascript
WXAPI.scoreSignLogs(Object object)
```
> 读取历史签到记录
>
> 分页展示,具体参数详见接口文档说明
>
**关于更加详细的参数使用,以及更加高级的进阶使用方法,可以参考api接口文档说明:**
[《api接口文档》](https://api.it120.cc/doc.html)
_关于 apifm-wxapi 更多的使用方法:_
[《apifm-wxapi使用说明》](https://github.com/gooking/apifm-wxapi/blob/master/instructions.md)
_本案例Demo代码下载:_
[《apifm-wxapi使用Demo程序》](https://github.com/gooking/apifm-wxapi-demo)
期待你的进步!
感谢!