$data['user_id'], 'account' => $data['account'], 'phone' => $data['phone'], 'device_type' => $data['device_type'], // 设备类型(1-andriod 2-ios) 'device_number' => $data['device_number'], 'name' => $data['name'], 'id_card' => $data['id_card'], 'is_real' => $data['is_real'], // 是否实名(1-实名 0-未实名) ]; return self::api('/llwf/user/add', $params); } public static function updateUser($data) { $params = [ 'user_id' => $data['user_id'], 'phone' => $data['phone'], 'device_type' => $data['device_type'], // 设备类型(1-andriod 2-ios) 'device_number' => $data['device_number'], 'name' => $data['name'], 'id_card' => $data['id_card'], 'is_real' => $data['is_real'], // 是否实名(1-实名 0-未实名) ]; return self::api('/llwf/user/update', $params); } public static function addLoginLog($data) { $params = [ 'user_id' => $data['user_id'], 'account' => $data['account'], 'phone' => $data['phone'], 'device_type' => $data['device_type'], // 设备类型(1-andriod 2-ios) 'device_number' => $data['device_number'], ]; return self::api('/llwf/user/addLoginLog', $params); } public static function addOrder($data) { $params = [ 'order_code' => $data['order_code'], 'user_id' => $data['user_id'], 'account' => $data['account'], 'server_id' => $data['server_id'], 'server_name' => $data['server_name'], 'role_id' => $data['role_id'], 'role_name' => $data['role_name'], 'game_name' => $data['game_name'], 'order_amount' => $data['order_amount'], 'pay_time' => $data['pay_time'], 'status' => $data['status'], //支付状态(待支付 0 已支付 1 支付失败 2) ]; return self::api('/llwf/order/add', $params); } public static function addRole($data) { $params = [ 'user_id' => $data['user_id'], 'server_id' => $data['server_id'], 'server_name' => $data['server_name'], 'role_id' => $data['role_id'], 'role_name' => $data['role_name'], 'role_level' => $data['role_level'], 'profession_id' => '', // 职业ID 'profession_name' => '', // 职业名称 'power' => '', // 战力 ]; return self::api('/llwf/role/add', $params); } private static function auth() { $params = [ 'appId' => config('clients.lanhuo.app_id', ''), 'appKey' => config('clients.lanhuo.app_key', ''), 'appSecret' => config('clients.lanhuo.app_secret', ''), ]; return self::api('/auth', $params, false); } private static function api($uri, array $params, $withAccessToken = true) { $headers = []; if ($withAccessToken) { if (!self::$accessToken || time() > self::$expiredAt) { self::refreshAccessToken(); } $headers['accessToken'] = self::$accessToken; } $result = self::post($uri, $params, $headers); if ($result['errorCode'] == self::SUCCESS) { return $result['data']; } else { Log::error('LANHUO_REQUEST_ERROR[' . $uri . ']: ' . $result['msg'], $params, 'lanhuo'); throw new BusinessException('请求接口错误:' . $result['msg']); } } private static function refreshAccessToken() { $data = self::auth(); self::$accessToken = $data['accessToken']; self::$expiredAt = strtotime($data['createDt']) + $data['expireTime'] - 10; // 前置10秒 } private static function post($uri, array $params, array $headers = []): array { try { $response = self::getClient()->post('/openapi' . $uri, [ 'verify' => false, // 'form_params' => $params, 'json' => $params, 'headers' => $headers, ]); $result = (string)$response->getBody(); Log::info( 'LANHUO_POST[' . $uri . ']: ', ['headers' => $headers, 'params' => $params, 'result' => $result], 'lanhuo' ); return json_decode($result, true); } catch (\Exception $e) { Log::error('LANHUO_NET_ERROR[' . $uri . ']: ' . $e->getMessage(), $params, 'lanhuo'); return [ 'errorCode' => 88888, 'msg' => env('APP_ENV') == 'prod' ? '网络异常' : '网络异常:' . $e->getMessage(), 'data' => [], ]; } } private static function getClient() { if (is_null(self::$client)) { self::$client = new Client([ 'base_uri' => config('clients.lanhuo.base_url', ''), 'handler' => HandlerStack::create(new CoroutineHandler()), 'timeout' => 5, 'swoole' => [ 'timeout' => 10, 'socket_buffer_size' => 1024 * 1024 * 2, ], 'headers' => [ 'Content-Type' => 'application/json', ], ]); } return self::$client; } }