前言

本教程是基于 “apifm-wxapi” 模块,教你快速实现小程序开发,所以你可能需要先了解以下知识点:

《创建 HelloWorld 项目》
《使用 “apifm-wxapi” 快速开发小程序》
《免费注册开通后台,获得专属域名》

本案例中,部分功能,需要用户登录后才能操作,也就是说需要 token 授权,请先了解:

《微信小程序登录获取openid及三方token》

功能介绍

激励用户每天登录小程序,完成每日签到任务获得积分奖励;
积分可用于兑换积分专享优惠券、积分抵扣购物等等场景;
后天设置每天签到赠送积分数量、连续签到 x 天可获得 y 积分奖励;

启用模块

登录 “第一步” 注册的后台,左侧菜单 —> 工厂设置 —> 模块管理

找到并启用下述模块,然后 F5 刷新一下后台界面,你将可以看到本案例所需的所有功能菜单:

本案例菜单为 “积分模块” —> “签到规则”

积分模块

设置签到规则

每日签到送积分/连续签到奖励 - 图1

编写小程序

每日签到送积分/连续签到奖励 - 图2

  1. <view class="page">
  2. <view class="page__bd">
  3. <view class="weui-panel">
  4. <view class="weui-panel__hd"> 签到规则: </view>
  5. <view class="weui-panel__bd">
  6. <view wx:for="{{ scoreSignRules }}" wx:key="*this" class="weui-media-box weui-media-box_text">
  7. <view class="weui-media-box__title weui-media-box__title_in-text">
  8. 连续签到 {{ item.continuous }} 天,赠送 {{ item.score }} 积分
  9. </view>
  10. </view>
  11. </view>
  12. </view>
  13. <button wx:if="{{todaySigned}}" class="addAddress" type="default" disabled>今日已签到,明天再来</button>
  14. <button wx:else class="addAddress" type="primary" bindtap="scoreSign">点击签到</button>
  15. <view class="weui-panel">
  16. <view class="weui-panel__hd"> 签到记录: </view>
  17. <view class="weui-panel__bd">
  18. <view wx:for="{{ scoreSignLogs }}" wx:key="*this" class="weui-media-box weui-media-box_text">
  19. <view class="weui-media-box__title weui-media-box__title_in-text">
  20. 连续签到第 {{ item.continuous }} 天
  21. </view>
  22. <view class="weui-media-box__desc">
  23. {{ item.dateAdd }}
  24. </view>
  25. </view>
  26. </view>
  27. </view>
  28. </view>
  29. </view>
  1. const WXAPI = require('apifm-wxapi')
  2. Page({
  3. data: {
  4. scoreSignRules: undefined, // 签到赠送积分规则
  5. scoreSignLogs: undefined, // 签到记录
  6. todaySigned: true, // 今天是否已签到
  7. },
  8. onLoad: function (options) {
  9. },
  10. onShow: function () {
  11. this.scoreSignRules()
  12. const loginToken = wx.getStorageSync('loginToken')
  13. if (!loginToken) {
  14. wx.showToast({
  15. title: '请先登录',
  16. icon: 'none'
  17. })
  18. this.goRegist()
  19. return
  20. }
  21. this.scoreTodaySignedInfo()
  22. this.scoreSignLogs()
  23. },
  24. goRegist() {
  25. wx.navigateTo({
  26. url: '/pages/auth/index'
  27. })
  28. },
  29. scoreSignRules(){ // 读取签到赠送积分规则
  30. WXAPI.scoreSignRules().then(res => {
  31. if (res.code == 0) {
  32. this.setData({
  33. scoreSignRules: res.data
  34. })
  35. }
  36. })
  37. },
  38. scoreSignLogs(){ // 读取签到记录
  39. const loginToken = wx.getStorageSync('loginToken')
  40. WXAPI.scoreSignLogs({
  41. token: loginToken.token
  42. }).then(res => {
  43. if (res.code == 0) {
  44. this.setData({
  45. scoreSignLogs: res.data.result
  46. })
  47. }
  48. })
  49. },
  50. scoreTodaySignedInfo(){ // 判断今日是否已签到
  51. const loginToken = wx.getStorageSync('loginToken')
  52. WXAPI.scoreTodaySignedInfo(loginToken.token).then(res => {
  53. if (res.code == 700) {
  54. this.setData({
  55. todaySigned: false
  56. })
  57. }
  58. })
  59. },
  60. scoreSign(){ // 签到
  61. const loginToken = wx.getStorageSync('loginToken')
  62. WXAPI.scoreSign(loginToken.token).then(res => {
  63. if (res.code == 0) {
  64. wx.showToast({
  65. title: '签到成功',
  66. icon: 'success'
  67. })
  68. this.setData({
  69. todaySigned: true
  70. })
  71. this.onShow()
  72. } else {
  73. wx.showToast({
  74. title: res.msg,
  75. icon: 'none'
  76. })
  77. }
  78. })
  79. },
  80. })

apifm-wxapi 方法说明

签到规则

  1. WXAPI.scoreSignRules()

读取签到一次送多少积分;连续签到x天赠送y积分

签到

  1. WXAPI.scoreSign(token)

读取今日签到信息

  1. WXAPI.scoreTodaySignedInfo(token)

判断今天有没有签到 错误码返回 700 表示未签到;错误码返回 0 表示已经签到

签到记录

  1. WXAPI.scoreSignLogs(Object object)

读取历史签到记录 分页展示,具体参数详见接口文档说明

关于更加详细的参数使用,以及更加高级的进阶使用方法,可以参考api接口文档说明:

《api接口文档》

关于 apifm-wxapi 更多的使用方法:

《apifm-wxapi使用说明》

本案例Demo代码下载:

《apifm-wxapi使用Demo程序》

期待你的进步!
感谢!