定时任务
检查并处理用户主角色过期
每隔 10 分钟执行一次用户主角色过期时间检测
php
\FresnsCmdWord::plugin('Fresns')->checkUserRoleExpired()
- 1、筛选
user_roles
表,字段type=2
+expired_at 小于当前时间
的记录(时间小于,说明已经过期)。 - 2、判断该记录
restore_role_id
字段是否有值。- 2.1、有值,判断该值是否已经和该用户关联:
- 2.1.1、已关联:删除该条过期记录,将已关联的记录
type
字段值改为2
- 2.1.2、无关联:删除该条过期记录,以
restore_role_id
字段值(角色 ID)创建一条新记录,并且type
字段值为2
- 2.1.1、已关联:删除该条过期记录,将已关联的记录
- 2.2、无值:中止任务,暂不做任何操作。
- 2.1、有值,判断该值是否已经和该用户关联:
检查并处理注销账号的删除
每隔 6 小时执行一次用户注销任务
php
\FresnsCmdWord::plugin('Fresns')->checkDeleteAccount()
逻辑注销:不删除数据,只标注状态
- 在
accounts
表phone 和 email
字段现有内容前加上deleted#YmdHis#
前缀,YmdHis
为当前执行任务时的时间; - 物理删除
account_connects
表关联信息; - 为避免遗漏,定时任务每次都检测库里所有
accounts->deleted_at
有值的用户,如果phone 和 email
前缀有deleted#
则代表执行过任务,则跳过,如果没有则执行任务。 - 配置表
delete_account_todo
键值规定时间内的不处理;比如当前执行任务时,配置的是 7 天,则查询所有记录时,7 天内的不查(不处理)。
物理注销:物理删除数据(真实删除)
- 删除用户以下表的所有记录
accounts
account_connects
account_wallets
account_wallet_logs
session_tokens
session_logs
plugin_badges
users
user_stats
user_extcredits_logs
user_roles
user_likes
user_follows
user_blocks
files
头像file_usages
notifications
seo
posts
post_logs
comments
comment_logs
- 为避免遗漏,定时任务每次都检测库里所有
accounts->deleted_at
有值的用户,如果存在则执行物理删除。 - 配置表
delete_account_todo
键值规定时间内的不处理;比如当前执行任务时,配置的是 7 天,则查询所有记录时,7 天内的不查(不处理)。
检查并更新版本信息
每隔 8 小时执行一次插件版本情况,检查是否有新版。
php
\FresnsCmdWord::plugin('Fresns')->checkAppsVersions()
- 1、向 Fresns 官方发送已安装应用清单,接口返回该清单应用的最新版本号。
- 2、对比应用表版本号,如果不一致,更新版本号
is_upgrade = 1
upgrade_version = 接口返回的版本号