You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
5.9 KiB
PHP
178 lines
5.9 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Helper\Client;
|
|
|
|
use App\Exception\BusinessException;
|
|
use App\Helper\Log;
|
|
use GuzzleHttp\Client;
|
|
use Hyperf\Guzzle\CoroutineHandler;
|
|
use GuzzleHttp\HandlerStack;
|
|
|
|
class Lanhuo
|
|
{
|
|
const SUCCESS = 0;
|
|
|
|
private static $accessToken;
|
|
private static $expiredAt;
|
|
|
|
private static $client;
|
|
|
|
public static function addUser($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'],
|
|
'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);
|
|
}
|
|
|
|
public 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;
|
|
}
|
|
} |