PublicService.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace App\Services;
  3. use App\Constants\HttpStatus;
  4. use App\Models\User;
  5. use Exception;
  6. use Illuminate\Support\Facades\App;
  7. class PublicService extends BaseService
  8. {
  9. public static function init($telegram, $data, $chatId, $firstName, $messageId): void
  10. {
  11. switch ($data) {
  12. case "message@@close"://关闭本条消息
  13. $telegram->deleteMessage(['chat_id' => $chatId, 'message_id' => $messageId]);
  14. break;
  15. }
  16. }
  17. public static function setVisitorId($memberId, $visitorId)
  18. {
  19. $user = User::where('member_id', $memberId)->first();
  20. if (!$user) throw new Exception('验证失败', HttpStatus::CUSTOM_ERROR);
  21. if (empty($user->visitor_id)) {
  22. if (User::where('visitor_id', $visitorId)->exists()) {
  23. User::where('visitor_id', $visitorId)->update(['status' => 1]);
  24. $user->status = 1;
  25. }
  26. $user->visitor_id = $visitorId;
  27. }
  28. if (empty($user->register_ip)) {
  29. $registerIp = request()->ip();
  30. if (User::where('register_ip', $registerIp)->exists()) {
  31. User::where('register_ip', $registerIp)->update(['status' => 1]);
  32. $user->status = 1;
  33. }
  34. $user->register_ip = $registerIp;
  35. }
  36. $user->save();
  37. }
  38. public static function index($chatId, $username, $firstName): User
  39. {
  40. $user = User::where('member_id', $chatId)->first();
  41. if (!$user) {
  42. $user = new User();
  43. $user->member_id = $chatId;
  44. }
  45. if (empty($user->register_ip)) {
  46. $registerIp = request()->ip();
  47. if (User::where('register_ip', $registerIp)->exists()) {
  48. User::where('register_ip', $registerIp)->update(['status' => 1]);
  49. $user->status = 1;
  50. }
  51. $user->register_ip = $registerIp;
  52. }
  53. if ($username) $user->username = $username;
  54. $user->first_name = $firstName;
  55. $user->save();
  56. //给每个用户生成一个专属的钱包
  57. WalletService::getUserWallet($chatId);
  58. return $user;
  59. }
  60. }