UserController.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace App\Http\Controllers\Muv2;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Models\SsNode;
  5. use App\Http\Models\User;
  6. use App\Http\Models\UserTrafficLog;
  7. use Illuminate\Http\Request;
  8. class UserController extends Controller
  9. {
  10. // 用户列表
  11. public function index()
  12. {
  13. $users = User::query()->where('enable', 1)->select(
  14. "id", "username", "passwd", "t", "u", "d", "transfer_enable",
  15. "port", "protocol", "obfs", "enable", "expire_time as expire_time_d", "method",
  16. "v2ray_uuid", "v2ray_level", "v2ray_alter_id")->get();
  17. foreach ($users as $user) {
  18. $user['switch'] = 1;
  19. $user['email'] = $user['username'];
  20. $user['expire_time'] = strval((new \DateTime($user['expire_time_d']))->getTimestamp()); // datetime 转timestamp
  21. }
  22. return response()->json([
  23. "data" => $users
  24. ]);
  25. }
  26. // 更新流量到user表
  27. public function addTraffic(Request $request)
  28. {
  29. $userId = $request->route('id');
  30. $u = $request->get('u');
  31. $d = $request->get('d');
  32. $nodeId = $request->get('node_id');
  33. $node = SsNode::query()->where('id', $nodeId)->first();
  34. $user = User::query()->where('id', $userId)->first();
  35. $user->t = time();
  36. $user->u = $user->u + ($u * $node->traffic_rate);
  37. $user->d = $user->d + ($d * $node->traffic_rate);
  38. if (!$user->save()) {
  39. return response()->json([
  40. "msg" => "update failed",
  41. ], 400);
  42. }
  43. // 记录流量日志
  44. $this->addUserTrafficLog($userId, $nodeId, $u, $d, $node->traffic_rate);
  45. return response()->json([
  46. 'ret' => 1,
  47. "msg" => "ok",
  48. ]);
  49. }
  50. // 写入流量日志
  51. private function addUserTrafficLog($userId, $nodeId, $u, $d, $rate)
  52. {
  53. $totalTraffic = flowAutoShow(($u + $d) * $rate);
  54. $traffic = new UserTrafficLog();
  55. $traffic->user_id = $userId;
  56. $traffic->u = $u;
  57. $traffic->d = $d;
  58. $traffic->node_id = $nodeId;
  59. $traffic->rate = $rate;
  60. $traffic->traffic = $totalTraffic;
  61. $traffic->log_time = time();
  62. return $traffic->save();
  63. }
  64. }