', 2]; if (isset($search['id']) && !empty($search['id'])) { $where[] = ['users.id', '=', $search['id']]; } if (isset($search['register_ip']) && !empty($search['register_ip'])) { $where[] = ['users.register_ip', '=', $search['register_ip']]; } if (isset($search['member_id']) && !empty($search['member_id'])) { $where[] = ['users.member_id', '=', $search['member_id']]; } if (isset($search['first_name']) && !empty($search['first_name'])) { $where[] = ['users.first_name', '=', $search['first_name']]; } if (isset($search['username']) && !empty($search['username'])) { $where[] = ['users.username', '=', $search['username']]; } if (isset($search['like_first_name']) && !empty($search['like_first_name'])) { $where[] = ['users.first_name', 'like', "%" . $search['like_first_name'] . "%"]; } if (isset($search['user_code']) && !empty($search['user_code'])) { $where[] = ['users.user_code', '=', $search['user_code']]; } if (isset($search['agent_user_code']) && !empty($search['agent_user_code'])) { $where[] = ['users.agent_user_code', '=', $search['agent_user_code']]; } if (isset($search['level']) && !empty($search['level'])) { $where[] = ['users.level', '=', $search['level']]; } return $where; } /** * @description: 查询单条数据 * @param array $search * @return \App\Models\User|null */ public static function findOne(array $search): ?User { return static::$MODEL::where(self::getWhere($search))->first(); } /** * @description: 查询所有数据 * @param array $search * @return \Illuminate\Database\Eloquent\Collection */ public static function findAll(array $search = []) { return static::$MODEL::where(self::getWhere($search))->get(); } /** * @description: 分页查询 * @param array $search * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public static function paginate(array $search = [], $order = 'desc', $by = 'created_at') { $limit = isset($search['limit']) ? $search['limit'] : 15; $query = static::$MODEL::with(['wallet','level','agent']) ->join('wallets', 'users.member_id', '=', 'wallets.member_id') ->where(self::getWhere($search)); if ($by == 'available_balance') $by = "wallets.{$by}"; else { $by = "users.{$by}"; } $paginator = $query->orderBy($by, $order) ->select("users.*") ->paginate($limit); return ['total' => $paginator->total(), 'data' => $paginator->items()]; } //设置游戏ID public function setGameID($chatId, $gameId) { $gameId = trim($gameId); if (!$gameId) return ['chat_id' => $chatId, 'text' => '❌游戏ID设置失败,请输入正确的游戏ID']; if (User::where('game_id', $gameId)->where('member_id', '<>', $chatId)->first()) { return ['chat_id' => $chatId, 'text' => '❌游戏ID设置失败,游戏ID已绑定其他用户']; } $user = User::where('member_id', $chatId)->first(); $user->game_id = $gameId; $user->save(); return ['chat_id' => $chatId, 'text' => "✅ 游戏ID设置成功\n游戏ID:{$gameId}"]; } /** * @param Api $telegram * @param $data * @param $chatId * @param $firstName * @param $messageId * @return void * @throws TelegramSDKException */ public static function init(Api $telegram, $data, $chatId, $firstName, $messageId): void { $pattern = "/^setLanguage@@.*$/"; if (preg_match($pattern, $data)) { $language = preg_replace('/^setLanguage@@/', '', $data); $res = UserService::setLanguage($chatId, $language); $telegram->deleteMessage(['chat_id' => $chatId, 'message_id' => $messageId]); TelegramWebHook::setReplyKeyboard($chatId, $language); // $telegram->sendMessage($res); } } public static function getIsBanned($memberId) { $user = User::where('member_id', $memberId)->first(); return $user->is_banned == 1; } public static function setLanguage($chatId, $language): array { $userInfo = self::findOne(['member_id' => $chatId]); $userInfo->setLanguage($language); $userInfo->save(); App::setLocale($language); (new Home)->setMyCommands(); return self::getLanguages($chatId); } public static function getLanguages($chatId): array { $keyboard = [ [['text' => lang('en'), 'callback_data' => "setLanguage@@en"]], [['text' => lang('zh'), 'callback_data' => "setLanguage@@zh"]], [['text' => lang('vi'), 'callback_data' => "setLanguage@@vi"]], [['text' => lang('❌取消'), 'callback_data' => "message@@close"]], ]; return [ 'chat_id' => $chatId, 'text' => lang("请选择您的语言"), 'reply_markup' => json_encode(['inline_keyboard' => $keyboard]), 'protect_content' => true ]; } }