OneThink1.0开发手册

OneThink系列开发手册在线版

用户行为设计

用户行为

用户行为是记录用户操作,继而生成日志的操作。在记录日志的同时,也可以操作一些数据,如用户积分的增减。

用户在网站的每一个操作都可以看成一个行为,例如:登录、评论、发布文章……

在什么情况下需要定义行为:

对某张表的某个字段值的修改是不确定的,且修改操作是由系统自动执行的

用户行为规则

# 规则定义  table:$table|field:$field|condition:$condition|rule:$rule[|cycle:$cycle|max:$max][;......]
# 规则字段解释:table->要操作的数据表,不需要加表前缀;
#             field->要操作的字段;
#             condition->操作的条件,目前支持字符串,默认变量{$self}为执行行为的用户,解析行为时会进行替换
#             rule->对字段进行的具体操作,目前支持四则混合运算,如:1+score*2/2-3
#             cycle->执行周期,单位(小时),表示$cycle小时内最多执行$max次
#             max->单个周期内的最大执行次数($cycle和$max必须同时定义,否则无效)
# 单个行为后可加 ; 连接其他规则

示例:table:member|field:score|condition:uid={$self} AND status>-1|rule:9-2+3+score*1/1|cycle:24|max:1;

表示修改think_member表的score字段,修改条件为'uid={$self} AND status>-1',修改的值为9-2+3+score*1/1,每24个小时最多执行一次

用TP的写法来表示:D('Member')->where("uid={$self} AND status>-1")->setField('score', '9-2+3+score*1/1');

行为日志规则

如何记录行为日志的备注由该行为定义,如果未定义则只记录操作URL。

日志规则里可以使用变量和函数。使用方式:[变量名|函数名]

目前有如下变量

user:触发行为的用户编号(uid)

time:触发行为的时间(NOW_TIME)

model:触发行为的模型

record:触发行为的记录编号

data:上述变量结合的一个数组array('user'=>$user_id,,'model'=>$model,'record'=>$record_id,'time'=>NOW_TIME)

函数是已定义的公共函数。变量将会传递给函数的第一个参数。

该函数一般需要返回处理过的结果,用于日志变量的替换。