1
0

UserController.php 2.1 KB

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