一 源代码(php项目)
<?php
// 数据库配置
$dbHost = ''; // 通常是 localhost
$dbUser = ''; // 数据库用户名
$dbPass = ''; // 数据库密码
$dbName = ''; // 数据库名
$tableName = 'love_learn_user'; // 表名
// wxPusher配置(需要到官网注册获取)
$wxPusherAppToken = ''; // 你的应用AppToken
$wxPusherUids = ['']; // 要推送的频道ID(或使用用户UID数组)
// 或使用指定用户UID推送(二选一)
// $wxPusherUids = ['UID1','UID2'];
$currentTime = date('Y-m-d H:i:s');
try {
$mysqli = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
$mysqli->set_charset('utf8mb4');
if ($mysqli->connect_errno) {
throw new Exception('数据库连接失败: ' . $mysqli->connect_error);
}
// 查询符合条件的用户(与原查询保持一致)
$query = "
SELECT uid, uuid, zcz, money, addtime
FROM `$tableName`
WHERE STR_TO_DATE(addtime, '%Y-%m-%d %H:%i:%s') < DATE_SUB(NOW(), INTERVAL 3 DAY)
AND zcz = 0
AND money = 0
";
$result = $mysqli->query($query);
if (!$result) {
throw new Exception('查询失败: ' . $mysqli->error);
}
$deleteCount = 0;
$userList = [];
while ($row = $result->fetch_assoc()) {
$uid = (int)$row['uid'];
$uuid = (int)$row['uuid'];
$zcz = (float)$row['zcz'];
$money = (float)$row['money'];
$addtime = $row['addtime'];
$userList[] = [
'uid' => $uid,
'uuid' => $uuid,
'zcz' => $zcz,
'money' => $money,
'addtime' => $addtime
];
// 删除操作保持不变
$del = $mysqli->prepare("DELETE FROM `$tableName` WHERE uid = ? LIMIT 1");
if ($del) {
$del->bind_param('i', $uid);
$del->execute();
if ($del->affected_rows > 0) {
$deleteCount++;
}
$del->close();
}
}
// 构建wxPusher推送内容
if ($deleteCount > 0) {
$content = "🗑️ 成功清理 {$deleteCount} 个无效用户\n\n";
foreach ($userList as $user) {
$content .= "━━━━━━━━━━━━━━\n";
$content .= "UID:{$user['uid']}\n";
$content .= "上级UID:{$user['uuid']}\n";
$content .= "总充值:{$user['zcz']}元\n";
$content .= "账户余额:{$user['money']}元\n";
$content .= "注册时间:{$user['addtime']}\n";
}
$content .= "\n⏰ 清理时间:{$currentTime}";
} else {
$content = "✅ 今日无符合条件用户,无需清理。\n\n清理时间:{$currentTime}";
}
// 构建wxPusher请求数据
$payload = json_encode([
"appToken" => $wxPusherAppToken,
"content" => $content,
"summary" => $deleteCount > 0 ? "清理{$deleteCount}个无效用户" : "无用户需要清理",
"contentType" => 1, // 1表示文字
"uids" => $wxPusherUids, // 如果使用UID推送则启用此项
"url" => "" // 可选跳转链接
], JSON_UNESCAPED_UNICODE);
// 发送到wxPusher
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://wxpusher.zjiecode.com/api/send/message');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
$response = curl_exec($ch);
curl_close($ch);
// 处理响应
$responseData = json_decode($response, true);
if ($responseData['code'] === 1000) {
echo "[{$currentTime}] wxPusher推送成功,消息ID:{$responseData['data'][0]['messageId']}\r\n";
} else {
throw new Exception("wxPusher推送失败:{$responseData['msg']}");
}
echo "------------------------------------------------------\r\n";
$mysqli->close();
} catch (Exception $e) {
echo "[{$currentTime}] 错误:" . $e->getMessage() . "\r\n";
echo "------------------------------------------------------\r\n";
}
二 功能解释
判断用户表中是否存在余额和总充值量均为0的用户,如果此用户注册时间大于3天,将删除此用户并推送。
可以实现自动清理注册了但是不充值的僵尸用户,保障平台安全(注册3天内不充值基本不会充值了)
三 配置方法
同“数据统计”相同,聪明人一下就能想到只用更改文件名即可。
数据统计插件教程:爱学习系统实用小插件--数据统计
