🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 用户行为 用户行为是记录用户操作,继而生成日志的操作。在记录日志的同时,也可以操作一些数据,如用户积分的增减。 用户在网站的每一个操作都可以看成一个行为,例如:登录、评论、发布文章…… > 在什么情况下需要定义行为: > > 对某张表的某个字段值的修改是不确定的,且修改操作是由系统自动执行的 ## 用户行为规则 ~~~ # 规则定义 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) 函数是已定义的公共函数。变量将会传递给函数的第一个参数。 该函数一般需要返回处理过的结果,用于日志变量的替换。