状态记录
项目访问链接
https://zion.functorz.com/tool/2gXzl5Orley/WEB?code=6N6XCvRLybK2m&ref=4857164
简介
- 目标:创建一个安全的每日奖励系统,限制每个用户每天只能领取 3 次奖励。
- 适用场景:每日登录奖励、免费 API 调用额度控制、每日抽奖次数刷新或高频业务动作审计。
- 核心逻辑:使用
领取状态表追踪用户的“单条状态”进度。后端行为流处理日期校验和计数自增,而数据库内容变化触发器则自动将审计日志写入领取日志表。
实现步骤
本教程基于预置的常用组件样式模板 进行演示。模板页中仅预设了基础的常用组件的样式,不包条件状态、数据绑定或行为配置。在实际搭建时,可以选择直接从模板页复制所需组件到工作页,以节省样式调整时间,专注于核心逻辑的构建。
数据存储
数据模型
配置关系型数据库以存储用户状态和交易历史。
1. 表名:领取状态
用于状态控制;每个帐户在系统中至多维持一条对应记录。
| 字段名 | 类型 | 备注 |
|---|---|---|
| id | 长整数 | 主键 |
| 最后领取日期 | 日期 | 用于比对当前请求是否为“新的一天” |
| 当日领取次数 | 长整数 | 每日循环自增的值(1-3) |
| 帐户_id | 长整数 | 指向 帐户 表的外键(1:1 关系) |
2. 表名:领取日志
仅追加的审计日志表。
| 字段名 | 类型 | 备注 |
|---|---|---|
| id | 长整数 | 主键 |
| 领取序号 | 长整数 | 记录本次领取是当天的第几次(1, 2, 或 3) |
| 帐户_id | 长整数 | 指向 帐户 表的外键(N:1 关系) |

逻辑与状态配置
“每日领取”行为流构建
此行为流在用户请求领取时更新或创建用户的状态记录,并输出操作状态。
- 行为流变量:在行为流内部添加一个名为
status的全局变量,类型为布尔值,用于追踪请求执行的整体成功情况。
- 获取 ID:添加一个名为“获取 ID”的代码块节点,以检索登录用户的帐户 ID (
current_account_id)。 - 查询数据:添加一个名为“获取领取状态”的查询记录节点。
- 数据表:
领取状态。 - 数据过滤:
帐户_id等于行为流数据/获取 ID/current_account_id。 - 行数限制:1。

- 数据表:
- 条件分支 - 根分支:添加一个“条件分支”节点,验证数据库中是否存在状态记录。
- 分支 已有状态记录:
行为流数据/获取领取状态/id非空。(进入步骤 5) - 分支 无记录 (Else):如果用户从未领取过(记录为空)。(进入步骤 9)

- 分支 已有状态记录:
- 条件分支 - 嵌套日期检查:在“已有状态记录”分支内,添加一个嵌套的“条件分支”节点。
- 分支 今日已领:
行为流数据/获取领取状态/最后领取日期等于当前日期。(进入步骤 6) - 分支 今日未领 (Else):如果最后领取日期属于之前的日期。(进入步骤 8)

- 分支 今日已领:
- 修改数据 (今日已领):添加一个名为“更新当日领取次数”的修改数据节点。
- 数据表:
领取状态。 - 输入参数:
当日领取次数->增加1。 - 数据过滤:
帐户_id等于行为流数据/获取 ID/current_account_id且当日领取次数小于3。
- 数据表:
- 设置变量:添加一个设置变量节点,根据计数自增的执行结果确定
status变量的值。- 分支 更新成功:
行为流数据/更新当日领取次数/id非空-> 设置为True。 - 分支 更新失败 (Else):设置为
False(如果当日领取次数已达到 3,则违反过滤约束)。
- 分支 更新成功:
- 修改数据 (今日未领):由于是新的一天,添加一个名为“更新领取状态”的修改数据节点来重置计数。
- 数据表:
领取状态。 - 输入参数:
最后领取日期->当前日期,当日领取次数-> 直接设为1。 - 数据过滤:
帐户_id等于行为流数据/获取 ID/current_account_id且最后领取日期不等于当前日期。 - 设置变量:更新行为流变量
status。如果更新领取状态/id非空,设为True,否则为False。
- 数据表:
- 添加数据 (无记录):对于首次领取的账户,添加一个名为“添加领取状态记录”的添加数据节点。
- 数据表:
领取状态。 - 输入参数:
最后领取日期->当前日期,当日领取次数->1,帐户_id->行为流数据/获取 ID/current_account_id。 - 约束冲突:选择
ud_zhanghu_id约束,处理方式设为 忽略并跳过。 - 设置变量:更新行为流变量
status。如果添加领取状态记录/id非空,设为True,否则为False。
- 数据表:
- 行为流出参:将所有条件分支合并到输出节点,并配置出参绑定以返回
行为流变量/status。
“领取日志”行为流与触发器
每当 领取状态 表被修改时,自动创建审计轨迹。
- 行为流入参:创建一个名为“领取日志”的新行为流。添加输入参数:
account_id(长整数) 和sequence(长整数)。
- 配置触发器:
- 触发器类型:
数据库内容变化。 - 选择操作类型:
数据添加或修改时。 - 选择数据表:
领取状态。 - 行为流入参映射:
account_id->添加或修改的数据/帐户_id。sequence->添加或修改的数据/当日领取次数。
- 触发器类型:
- 添加数据:添加一个名为“添加数据”的节点。
- 数据表:
领取日志。 - 输入参数:
领取序号->行为流数据/入参/sequence,帐户_id->行为流数据/入参/account_id。
- 数据表:
通过使用“数据添加或修改时”触发器,您可以确保无论 领取状态 表如何更新,每次成功的领取都会被记录。
UI 构建与交互
配置前端以动态显示领取状态,并根据后端逻辑处理用户交互。
页面:每日奖励领取
-
条件式容器设置:
条件 未满三次:适用于仍可领取奖励的用户。条件 已满三次:适用于已达到每日限额的用户。初始化:默认状态(未登录用户)。
-
配置激活按钮:在
未满三次分支内,放置一个按钮组件。- 按钮文本:点击 数据绑定 图标并选择 条件。
- 分支 无记录:若
当前登录用户→领取状态→当日领取次数为空,设置显示数据为0。 - 分支 有记录:否则,将数据绑定到
当前登录用户→领取状态→当日领取次数。 - 最终字符串:
领取每日奖励 ({条件}/3)。
- 分支 无记录:若
- 配置按钮交互:选中激活按钮,切换到 交互 面板,配置其行为。
- 动作:添加
点击时事件,选择每日领取行为流,并启用 显示加载动画 开关。 - 成功时:
- 显示提示:添加一个“显示提示”节点。点击 数据绑定 图标设置 消息,并选择 条件。
- 分支 领取成功:若
行为结果→每日领取→status为真,设置消息为领取成功。 - 分支 领取失败:否则,设置消息为
领取失败。
- 分支 领取成功:若
- 刷新当前用户数据:添加一个“刷新当前用户数据”节点,确保数据库更改后前端计数器立即更新。

- 显示提示:添加一个“显示提示”节点。点击 数据绑定 图标设置 消息,并选择 条件。
- 动作:添加
- 按钮文本:点击 数据绑定 图标并选择 条件。
-
配置禁用按钮:在
已满三次分支内,配置达到每日限额时的 UI。按钮文本同“激活按钮”或直接使用静态文本领取每日奖励 (3/3)。 -
配置初始化视图:在
初始化分支内,选中文本组件,为未认证用户显示提示。- 文本内容:静态文本
请先登录。
- 文本内容:静态文本
-
配置条件式容器逻辑:选中顶层的
条件式容器,在右侧面板中点击 配置,定义每个分支的显示条件。- 未满三次:
- 添加条件:
全局→是否登录状态为真。 - 添加 且 条件:
当前登录用户→领取状态→当日领取次数小于3。
- 添加条件:
- 已满三次:
- 添加条件:
全局→是否登录状态为真。 - (注意:由于分支按顺序评估,此条件将捕获计数为 3 或更多的用户。)
- 添加条件:
- 初始化:
- 添加条件:
全局→是否登录状态为假。

- 添加条件:
- 未满三次:
验证
步骤 1:未登录状态
- 点击右上角的“预览”图标。
- 预期结果:页面显示文本“请先登录”。
步骤 2:首次领取
- 使用底部栏的 模拟登录 工具。点击“添加用户”并选择
已登录用户角色。 - 点击标记为 领取每日奖励 (0/3) 的按钮。
- 预期结果:出现“领取成功”提示,按钮标签更新为 领取每日奖励 (1/3)。
步骤 3:达到限额
- 再点击按钮两次。
- 预期结果:第三次领取后,按钮标签显示 领取每日奖励 (3/3) 并变为禁用状态(切换到
条件 已满三次UI)。
步骤 4:数据库审计
- 导航到“数据”选项卡。
- 检查
领取状态表:当日领取次数应为3。 - 检查
领取日志表:应有三条不同的记录,领取序号分别为1、2和3,且都链接到同一个帐户_id。
⚠️
如果前端计数器没有更新,请验证“刷新当前用户数据”动作是否正确放置在按钮 点击时 交互的“成功时”分支中。
Last updated on