一 源代码(php项目)
<?php
// 数据库连接信息
$db_host = 'localhost'; // 数据库主机
$db_name = ''; // 数据库名
$db_user = ''; // 数据库用户名
$db_pass = ''; // 数据库密码
// wxPusher 配置
$wxPusherAppToken = ""; // 替换为你的wxPusher AppToken
$wxPusherUids = [""]; // 接收消息的用户UID数组(如 ["UID_1", "UID_2"])
$wxPusherApiUrl = "https://wxpusher.zjiecode.com/api/send/message";
try {
// 连接数据库
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 获取当前日期和本周的准确时间范围(周一00:00:00到周日23:59:59)
$start_of_week = date('Y-m-d 00:00:00', strtotime('last Monday'));
$end_of_week = date('Y-m-d 23:59:59', strtotime('next Sunday'));
$today = date('Y-m-d');
// 查询今日订单数量
$stmt = $pdo->query("SELECT COUNT(*) AS today_orders FROM love_learn_order WHERE DATE(addtime) = '$today'");
$today_orders = $stmt->fetch(PDO::FETCH_ASSOC)['today_orders'];
// 获取昨日日期
$yesterday = date('Y-m-d', strtotime('-1 day'));
// 查询昨日订单数量
$stmt = $pdo->query("SELECT COUNT(*) AS yesterday_orders FROM love_learn_order WHERE DATE(addtime) = '$yesterday'");
$yesterday_orders = $stmt->fetch(PDO::FETCH_ASSOC)['yesterday_orders'];
// 查询本周订单数量
$stmt = $pdo->query("SELECT COUNT(*) AS week_orders FROM love_learn_order WHERE addtime BETWEEN '$start_of_week' AND '$end_of_week'");
$week_orders = $stmt->fetch(PDO::FETCH_ASSOC)['week_orders'];
// 查询总订单数量
$stmt = $pdo->query("SELECT COUNT(*) AS total_orders FROM love_learn_order");
$total_orders = $stmt->fetch(PDO::FETCH_ASSOC)['total_orders'];
// 查询今日新增代理数量
$stmt = $pdo->query("SELECT COUNT(*) AS today_users FROM love_learn_user WHERE DATE(addtime) = '$today'");
$today_users = $stmt->fetch(PDO::FETCH_ASSOC)['today_users'];
// 查询本周新增代理数量(周一00:00:00到周日23:59:59)
$stmt = $pdo->query("SELECT COUNT(*) AS week_users FROM love_learn_user WHERE addtime BETWEEN '$start_of_week' AND '$end_of_week'");
$week_users = $stmt->fetch(PDO::FETCH_ASSOC)['week_users'];
// 查询余额大于0的代理数量
$stmt = $pdo->query("SELECT COUNT(*) AS active_users FROM love_learn_user WHERE money > 0");
$active_users = $stmt->fetch(PDO::FETCH_ASSOC)['active_users'];
// 查询今日登录代理数量(按endtime字段统计)
$stmt = $pdo->query("SELECT COUNT(*) AS today_login_users FROM love_learn_user WHERE DATE(endtime) = '$today'");
$today_login_users = $stmt->fetch(PDO::FETCH_ASSOC)['today_login_users'];
// 查询本周登录代理数量(周一00:00:00到周日23:59:59,同一个代理在一周内多次登录,仅取一次计数)
$stmt = $pdo->query("SELECT COUNT(DISTINCT uid) AS week_login_users FROM love_learn_user WHERE endtime BETWEEN '$start_of_week' AND '$end_of_week'");
$week_login_users = $stmt->fetch(PDO::FETCH_ASSOC)['week_login_users'];
// 查询总代理数量
$stmt = $pdo->query("SELECT COUNT(*) AS total_users FROM love_learn_user");
$total_users = $stmt->fetch(PDO::FETCH_ASSOC)['total_users'];
// 查询今日订单量TOP3用户
$stmt = $pdo->query("
SELECT o.uid, u.name, COUNT(*) AS order_count
FROM love_learn_order o
LEFT JOIN love_learn_user u ON o.uid = u.uid
WHERE DATE(o.addtime) = '$today'
GROUP BY o.uid
ORDER BY order_count DESC
LIMIT 3
");
$top_users = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 查询今日销量前10的项目
$stmt = $pdo->query("SELECT ptname, COUNT(*) AS oid FROM love_learn_order WHERE DATE(addtime) = '$today' GROUP BY ptname ORDER BY oid DESC LIMIT 10");
$today_top_projects = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 查询本周销量前10的项目
$stmt = $pdo->query("SELECT ptname, COUNT(*) AS oid FROM love_learn_order WHERE addtime BETWEEN '$start_of_week' AND '$end_of_week' GROUP BY ptname ORDER BY oid DESC LIMIT 10");
$week_top_projects = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 生成统计内容
$content = "📊 统计报告\n\n";
$content .= "【订单统计】\n";
$content .= "今日订单:$today_orders\n";
$content .= "昨日订单:$yesterday_orders\n";
$content .= "本周订单:$week_orders\n";
$content .= "累计订单:$total_orders\n\n";
$content .= "【代理统计】\n";
$content .= "今日新增:$today_users\n";
$content .= "本周新增:$week_users\n";
$content .= "余额代理:$active_users\n"; // 余额大于0
$content .= "今日登录:$today_login_users\n";
$content .= "本周登录:$week_login_users\n";
$content .= "累计代理:$total_users\n\n";
$content .= "【贡献统计】\n";
if (!empty($top_users)) {
foreach ($top_users as $index => $user) {
$rank = $index + 1;
$name = $user['name'] ?? '匿名用户';
$content .= "第{$rank}名:\n";
$content .= "UID:{$user['uid']}\n";
$content .= "昵称:{$name}\n";
$content .= "今日订单:{$user['order_count']}\n\n";
}
} else {
$content .= "今日暂无订单数据\n";
}
$content .= "🔥 今日热销TOP10\n";
if (!empty($today_top_projects)) {
foreach ($today_top_projects as $index => $project) {
$rank = $index + 1;
$content .= "{$rank}. {$project['ptname']} (销量: {$project['oid']})\n";
}
} else {
$content .= "暂无今日销售数据\n";
}
$content .= "\n🏆 本周热销TOP10\n";
if (!empty($week_top_projects)) {
foreach ($week_top_projects as $index => $project) {
$rank = $index + 1;
$content .= "{$rank}. {$project['ptname']} (销量: {$project['oid']})\n";
}
} else {
$content .= "暂无本周销售数据\n";
}
// 发送微信通知
$data = [
"appToken" => $wxPusherAppToken,
"content" => $content,
"summary" => "每日和每周统计报告", // 消息摘要(显示在通知栏)
"contentType" => 1, // 1-文本消息
"uids" => $wxPusherUids
];
$options = [
'http' => [
'header' => "Content-type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data),
],
];
$context = stream_context_create($options);
$response = file_get_contents($wxPusherApiUrl, false, $context);
if ($response === false) {
echo "推送失败,请检查网络或配置";
} else {
$result = json_decode($response, true);
if ($result['success']) {
echo "推送成功!";
} else {
echo "推送失败:" . $result['msg'];
}
}
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
?>
二 功能解释
推送每天平台数据到WxPusher公众号/APP。
推送内容:
【订单统计】
今日订单:
昨日订单:
本周订单:
累计订单:
【代理统计】
今日新增:
本周新增:
余额代理:
今日登录:
本周登录:
累计代理:
【贡献统计】(取当日订单量前三名代理)
第1名:
UID:
昵称:
今日订单:
今日热销项目TOP10
1...
2...
...
本周热销项目TOP10
1...
2...
...
三 配置方法
1. 在你网站根目录新建一个文件夹,命名为:jiankong,创建php文件,命名为sjtj.php
2. 粘贴源代码,填写自己的数据库信息,填写WxPusher的AppToken以及用户组UID
3. 打开宝塔面板 =>计划任务 =>新建shell脚本 => 填写脚本内容:cd /www/wwwroot/你的网站根目录/jiankong/sjtj && sudo -u root php sjtj.php,设置每天晚上11.59分执行即可
附:
WxPusher注册以及获取token及uid方法:
点击以上链接,扫码登录(新用户自动注册)
右上角,新建新应用,填写必填项即可。
用户列表中即可看到UID
应用列表中可以看到自己的apptoken
当然如果不习惯用这个推送工具,自行更新其他的即可。
