连续签到功能开发,含SQL数据库示例

易语言 2020-07-16 14:56:46

连续签到功能开发,含SQL数据库示例

大家有需要的可以参考一下思路源码里为了简洁,我就用数组模拟数据了,加了大量注释,这都还看不懂的话,建议重新看入门教程。

.子程序 开源测试_连续签到原理, 逻辑型, , 演示下原理,建议搭配数据库使用
.参数 参_用户ID, 文本型, , 用户的账号ID
.参数 参_是否重算连续天数, 逻辑型, 可空, 比如每周连续签到,则提前判断是否为周一,周一的话就为真,这样就打断天数了
.参数 返_今日是否签到, 逻辑型, 参考 可空, *选*如果在此命令前,今天已经签到,则返回真,未签到返回假
.参数 返_连续签到天数, 整数型, 参考 可空, *选*返回已经连续签到的天数
.局部变量 模拟_最近一条签到记录, 用户签到记录
.局部变量 临_签到间隔, 整数型
.局部变量 临_连续签到天数, 整数型
.局部变量 模拟_今日签到数据, 用户签到记录, , "1"

' //由于原本例子是Mysql数据库存储数据,使用E2EE的连接池,为防止大家出现没有支持库,所以就演示下原理,大家可以根据自己的存储方式进行变通
' //数据存储结构:1\用户ID;2\签到时间;3\连续签到天数)
' 1=>[模拟] 模拟签到存储结构
模拟_签到记录 [1].用户ID = “stone” ' //模拟签到用户ID
模拟_签到记录 [1].签到时间 = 增减时间 (取现行时间 (), #日, -1) ' //这里的-1是模拟上次签到时昨天,今天=0,前天=-2,
模拟_签到记录 [1].连续签到次数 = 1 ' //这个是上次签到时记录的连续天数
' 2=>模拟获取最近一次的签到记录
模拟_最近一条签到记录 = 模拟_签到记录 [1]
' 3=>进行基础的逻辑判断
.判断开始 (取数组成员数 (模拟_最近一条签到记录) = 0) ' //如果成员数=0;表示没有签到记录
返_连续签到天数 = 0
返_今日是否签到 = 假
调试输出 (“触发:无记录,直接签到”)
.默认
' //有记录,开始获取上次签到的数据
临_签到间隔 = 取时间间隔 (取现行时间 (), 模拟_最近一条签到记录.签到时间, #日) ' //计算上次签到与本次签到的间隔天数
临_连续签到天数 = 模拟_最近一条签到记录.连续签到次数 ' //上次签到时已经连续签到的天数
.判断开始 (临_签到间隔 = 0) ' //今日已经签到,返回信息
返_连续签到天数 = 临_连续签到天数
返_今日是否签到 = 真
调试输出 (“触发:今日已经签到过了”)
返回 (真)
.判断 (临_签到间隔 > 1 或 参_是否重算连续天数 = 真) ' //连续签到失败或周期断签
返_连续签到天数 = 0
调试输出 (“触发:连续签到失败”)
.默认
返_连续签到天数 = 临_连续签到天数
调试输出 (“触发:连续签到成功”)
.判断结束

.判断结束
' //开始添加新的签到记录
返_连续签到天数 = 返_连续签到天数 + 1
模拟_今日签到数据 [1].用户ID = 参_用户ID
模拟_今日签到数据 [1].签到时间 = 取现行时间 ()
模拟_今日签到数据 [1].连续签到次数 = 返_连续签到天数
插入成员 (模拟_签到记录, 1, 模拟_今日签到数据) ' //新增一条新的签到记录