no message

This commit is contained in:
hellcat 2025-06-14 14:18:06 +08:00
parent 23a053cc51
commit d9bcb95aa7
7 changed files with 64 additions and 24 deletions

View File

@ -554,9 +554,10 @@
{else}
<code>{$public_setting['checkin_min']} MB</code>
{/if}
,未购买套餐用户获得一天试用时长。
</p>
<p>
(免费体验用户可依靠签到持续体验)
(免费用户可依靠签到持续体验)
</p>
<p>
上次签到时间:<code id="last-checkin-time">{$user->lastCheckInTime()}</code>

View File

@ -56,11 +56,11 @@ EOL;
) {
$jobs->cleanDb();
// $jobs->resetNodeBandwidth();
$jobs->resetDuckBandwidth();
$jobs->reportBandWidth();
$jobs->resetFreeUserBandwidth();
$jobs->sendDailyTrafficReport();
$jobs->clearTodayWidth();
$jobs->resetDuckBandwidth(); // 重置每日的duck流量
$jobs->reportBandWidth(); // 报告流量给tg
$jobs->resetFreeUserBandwidth(); // 重置免费用户的流量
$jobs->sendDailyTrafficReport(); // 流量报告?不重要
$jobs->clearTodayWidth(); // 重置每日的用户使用流量
// 每日清除前一天残留TgStep
$jobs->clearTgStep();

View File

@ -81,9 +81,9 @@ final class TestController extends BaseController
public function test2()
{
echo 1;
$oCron = new CronService();
$oCron->resetFreeUserBandwidth();
// $oCron->expirePaidUserAccount();
$oCron->expireFreeUserAccount();
}

View File

@ -312,21 +312,42 @@ final class Cron
echo Tools::toDateTime(time()) . ' 节点离线检测完成' . PHP_EOL;
}
// 新增,专门检测处理体验用户
// class=1为免费体验用户免费体验到期转为0彻底不能用
public static function expireFreeUserAccount(): void
{
$paidUsers = (new User())->where('class', 1)->get();
foreach ($paidUsers as $user) {
if (strtotime($user->class_expire) < time()) {
$user->u = 0;
$user->d = 0;
$user->transfer_today = 0;
$user->class = 0;
$user->save();
}
}
echo Tools::toDateTime(time()) . ' 体验用户过期检测完成' . PHP_EOL;
}
// 付费用户过期检测
// class > 0所以不包含注册试用帐户
// 现在付费用户是2+体验用户是1。付费到期转为体验。
public static function expirePaidUserAccount(): void
{
$paidUsers = (new User())->where('class', '>', 0)->get();
$paidUsers = (new User())->where('class', '>=', 2)->get();
foreach ($paidUsers as $user) {
if (strtotime($user->class_expire) < time()) {
$text = '您好,系统发现您的套餐已经过期了。';
$reset_traffic = $_ENV['class_expire_reset_traffic'];
$reset_day = $_ENV['class_expire_reset_day'];
if ($reset_traffic >= 0) {
$user->transfer_enable = Tools::toGB($reset_traffic);
$text .= '已转为免费体验帐户,赠送' . $reset_traffic . 'GB体验流量。';
$user->class_expire = date('Y-m-d H:i:s', strtotime("+$reset_day days"));
$text .= '已转为免费体验帐户,赠送' . $reset_traffic . 'GB体验流量'.$reset_day.'天体验时长。';
}
// todo 反水
@ -341,7 +362,7 @@ final class Cron
$user->u = 0;
$user->d = 0;
$user->transfer_today = 0;
$user->class = 0;
$user->class = 1;
$user->save();
}
@ -1024,6 +1045,9 @@ final class Cron
echo Tools::toDateTime(time()) . ' 重设用户每日流量完成' . PHP_EOL;
}
// 这是那个每月几日重置
// 是重置免费用户
// 现在没用了,傻逼功能。用户光有流量没有等级照样用不了,取消等级限制则变成所有用户都运作,根本不合理
public static function resetFreeUserBandwidth(): void
{
$freeUsers = (new User())->where('class', 0)
@ -1048,6 +1072,11 @@ final class Cron
echo Tools::toDateTime(time()) . ' 免费用户流量重置完成' . PHP_EOL;
}
public static function resetFreeUserBandwidth_new(): void
{
echo 1111;
}
// 财务日报,好像没用
public static function sendDailyFinanceMail(): void
@ -1131,6 +1160,7 @@ final class Cron
echo Tools::toDateTime(time()) . ' 成功发送财务月报' . PHP_EOL;
}
// 流量提醒
public static function sendPaidUserUsageLimitNotification(): void
{
$paidUsers = (new User())->where('class', '>', 0)->get();

View File

@ -10,20 +10,26 @@ final class Maps
public static function levelToClass($level): string
{
switch ($level) {
case 0:
$sClass = '无套餐';
break;
case 1:
$sClass = '轻量套餐';
$sClass = '试用套餐';
break;
case 2:
$sClass = '普通套餐';
$sClass = '轻量套餐';
break;
case 3:
$sClass = '旗舰套餐';
$sClass = '普通套餐';
break;
case 4:
$sClass = '旗舰套餐';
break;
case 5:
$sClass = '专业套餐';
break;
default:
$sClass = '免费体验';
$sClass = '无套餐';
}
return $sClass;
}

View File

@ -155,6 +155,12 @@ final class Reward
if ($traffic !== 0) {
$user->transfer_enable += Tools::toMB($traffic);
$user->last_check_in_time = time();
if ($user->class == 0) {
$user->class = 1;
$user->class_expire = date("Y-m-d H:i:s", strtotime("+1 day"));
}
$user->save();
}

View File

@ -42,16 +42,13 @@ final class User extends Base
$iLimit = $aParam['aArg'][1] ?? 1; // 默认五条
$sType = $aParam['aOption'][1] ?? "class0";
if ($sType) {
if ($sType == "class1") {
$aa = ">";
} else if ($sType == "class0") {
$sType = ">=";
}
if ($sType == "class1") {
$sTypePre = ">";
} else if ($sType == "class0") {
$sTypePre = ">=";
}
$aUser = ModelUser::where("class", $sType, 0)->orderBy("id", "desc")->limit($iLimit)->get()->toArray();
$aUser = ModelUser::where("class", $sTypePre, 0)->orderBy("id", "desc")->limit($iLimit)->get()->toArray();
foreach ($aUser as $row) {
$sMsg = json_encode($this->format($row), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);