UserFree.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Models\User;
  4. use App\Components\Helpers;
  5. use App\Notifications\AccountExpire;
  6. use Illuminate\Console\Command;
  7. use Log;
  8. class UserFree extends Command
  9. {
  10. protected $signature = 'userfree';
  11. protected $description = '用户免费到期';
  12. public function handle(): void
  13. {
  14. $jobStartTime = microtime(true);
  15. // 扣减用户到期商品的流量
  16. $this->decGoodsTraffic();
  17. $jobEndTime = microtime(true);
  18. $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
  19. Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒');
  20. }
  21. // 扣减用户到期商品的流量
  22. private function decGoodsTraffic(): void
  23. {
  24. //获取用户10G的用户 定时改到期
  25. foreach (User::whereEnable(1)->where("transfer_enable",'=',MB * ((int) sysConfig('default_traffic')))->get() as $user) {
  26. // 用户名不是邮箱的跳过
  27. if (filter_var($user->email, FILTER_VALIDATE_EMAIL) === false) {
  28. continue;
  29. }
  30. //$expired_at = strtotime('-1 day',$user->expired_at);
  31. $user->update([
  32. "expired_at" => date('y-m-d',strtotime('-2 day')),
  33. "enable" => 0
  34. ]);
  35. $user->notify(new AccountExpire($user->expired_at));
  36. }
  37. //获取失效的套餐
  38. // foreach (Order::activePlan()->where('expired_at', '<=', date('Y-m-d H:i:s'))->with('user')->whereHas('user')->get() as $order) {
  39. // // 无用户订单,跳过
  40. // // 清理全部流量,重置重置日期和等级
  41. // $user = $order->user;
  42. //
  43. // $user->update([
  44. // 'u' => 0,
  45. // 'd' => 0,
  46. // 'transfer_enable' => 0,
  47. // 'reset_time' => null,
  48. // 'level' => 0,
  49. // ]);
  50. // Helpers::addUserTrafficModifyLog($user->id, $order->id, $user->transfer_enable, 0, '[定时任务]用户所购商品到期,扣减商品对应的流量');
  51. //
  52. // // 过期本订单
  53. // $order->update(['is_expire' => 1]);
  54. // }
  55. }
  56. }