diff --git a/src/Services/Cron.php b/src/Services/Cron.php index aac27eb0..d52fb98c 100755 --- a/src/Services/Cron.php +++ b/src/Services/Cron.php @@ -313,16 +313,18 @@ final class Cron foreach ($paidUsers as $user) { if (strtotime($user->class_expire) < time()) { - $text = '你好,系统发现你的账号等级已经过期了。'; + $text = '您好,系统发现您的套餐已经过期了。'; $reset_traffic = $_ENV['class_expire_reset_traffic']; if ($reset_traffic >= 0) { $user->transfer_enable = Tools::toGB($reset_traffic); - $text .= '流量已经被重置为' . $reset_traffic . 'GB。'; + $text .= '已转为免费体验帐户,赠送' . $reset_traffic . 'GB体验流量。'; } + + // todo 反水 try { - Notification::notifyUser($user, $_ENV['appName'] . '-你的账号等级已经过期了', $text); + Notification::notifyUser($user, $_ENV['appName'] . '-您的套餐已经过期', $text); } catch (GuzzleException|ClientExceptionInterface|TelegramSDKException $e) { echo $e->getMessage() . PHP_EOL; } @@ -333,6 +335,33 @@ final class Cron $user->class = 0; $user->save(); } + + //// 流量到期处理 + // 这里,只重置付费用户,不重置免费用户。那么假如免费用户领了60g流量,他就真的能用到没。付费用户则会连带套餐一起重置掉。 + // 应该问题不大,赠送流量有关时,区分免费付费用户,对付费大方(陷阱),对免费抠门。 + // 其实压根就不叠加,套餐流量直接覆盖免费流量。 + // 再者,免费流量 + // 总之,免费流量就是零头,无所谓重置的。 + $ud = $user->u + $user->d; + if ($ud >= $user->transfer_enable && $user->class > 0) { + + $sText = "你好,系统发现您的流量已用完,已转为免费体验帐户,可用每日签到获取免费流量。"; + + try { + Notification::notifyUser($user, $_ENV['appName'] . '-您的流量已用完', $sText); + } catch (GuzzleException|ClientExceptionInterface|TelegramSDKException $e) { + echo $e->getMessage() . PHP_EOL; + } + + $user->u = 0; + $user->d = 0; + $user->transfer_today = 0; + $user->class = 0; + $user->save(); + + } + + //// end } echo Tools::toDateTime(time()) . ' 付费用户过期检测完成' . PHP_EOL; diff --git a/src/Services/Tg/Hook/Mod/User.php b/src/Services/Tg/Hook/Mod/User.php index 5dac9047..630d01dc 100644 --- a/src/Services/Tg/Hook/Mod/User.php +++ b/src/Services/Tg/Hook/Mod/User.php @@ -9,8 +9,48 @@ use App\Models\User as ModelUser; use App\Utils\Tools; use App\Services\CountUser as ServiceCountUser; -final class User +final class User extends Base { + private function format($aUser) + { + unset($aUser['pass']); + unset($aUser['passwd']); + unset($aUser['uuid']); + unset($aUser['method']); + unset($aUser['is_admin']); + unset($aUser['theme']); + unset($aUser['ga_token']); + unset($aUser['ga_enable']); + unset($aUser['api_token']); + unset($aUser['is_dark_mode']); + unset($aUser['locale']); + + $aUser['transfer_today'] = Tools::flowToGB($aUser['transfer_today']).'GB'; + $aUser['transfer_total'] = Tools::flowToGB($aUser['transfer_total']).'GB'; + $aUser['transfer_enable'] = Tools::flowToGB($aUser['transfer_enable']).'GB'; + $aUser['u'] = Tools::flowToGB($aUser['u']).'GB'; + $aUser['d'] = Tools::flowToGB($aUser['d']).'GB'; + $aUser['ud'] = $aUser['u'] + $aUser['d']; + $aUser['last_use_time'] = date('Y-m-d H:i:s', $aUser['last_use_time']); + + return $aUser; + } + + public function Limit($aParam) + { +// $sField = $aParam['aOption'][1]; + $iLimit = $aParam['aArg'][1] ?? 5; // 默认五条 + + $aUser = ModelUser::where("class", '>', 0)->orderBy("id", "desc")->limit($iLimit)->get()->toArray(); + + foreach ($aUser as $row) { + $sMsg = json_encode($row, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); + $this->oTGHttp->sendToTG($sMsg); + } + + $this->oHttp::response(200, 'ok'); + + } public function Find($aParam) { @@ -23,25 +63,26 @@ final class User if ($oUser) { $aUser = $oUser->toArray(); - unset($aUser['pass']); - unset($aUser['passwd']); - unset($aUser['uuid']); - unset($aUser['method']); - unset($aUser['is_admin']); - unset($aUser['theme']); - unset($aUser['ga_token']); - unset($aUser['ga_enable']); - unset($aUser['api_token']); - unset($aUser['is_dark_mode']); - unset($aUser['locale']); - - $aUser['transfer_today'] = Tools::flowToGB($aUser['transfer_today']).'GB'; - $aUser['transfer_total'] = Tools::flowToGB($aUser['transfer_total']).'GB'; - $aUser['transfer_enable'] = Tools::flowToGB($aUser['transfer_enable']).'GB'; - $aUser['u'] = Tools::flowToGB($aUser['u']).'GB'; - $aUser['d'] = Tools::flowToGB($aUser['d']).'GB'; - $aUser['ud'] = $aUser['u'] + $aUser['d']; - $aUser['last_use_time'] = date('Y-m-d H:i:s', $aUser['last_use_time']); + $aUser = $this->format($aUser); +// unset($aUser['pass']); +// unset($aUser['passwd']); +// unset($aUser['uuid']); +// unset($aUser['method']); +// unset($aUser['is_admin']); +// unset($aUser['theme']); +// unset($aUser['ga_token']); +// unset($aUser['ga_enable']); +// unset($aUser['api_token']); +// unset($aUser['is_dark_mode']); +// unset($aUser['locale']); +// +// $aUser['transfer_today'] = Tools::flowToGB($aUser['transfer_today']).'GB'; +// $aUser['transfer_total'] = Tools::flowToGB($aUser['transfer_total']).'GB'; +// $aUser['transfer_enable'] = Tools::flowToGB($aUser['transfer_enable']).'GB'; +// $aUser['u'] = Tools::flowToGB($aUser['u']).'GB'; +// $aUser['d'] = Tools::flowToGB($aUser['d']).'GB'; +// $aUser['ud'] = $aUser['u'] + $aUser['d']; +// $aUser['last_use_time'] = date('Y-m-d H:i:s', $aUser['last_use_time']); } else { $aUser = ["not have id" => $iUserId]; }