platform notify
This commit is contained in:
90
app/Bean/Model/Wallet/Platform/WalletPlatformBean.php
Normal file
90
app/Bean/Model/Wallet/Platform/WalletPlatformBean.php
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Bean\Model\Wallet\Platform;
|
||||||
|
|
||||||
|
use App\Bean\Model\Base\BaseBean;
|
||||||
|
|
||||||
|
class WalletPlatformBean extends BaseBean
|
||||||
|
{
|
||||||
|
|
||||||
|
protected $id;
|
||||||
|
protected $name;
|
||||||
|
protected $code;
|
||||||
|
protected $appid;
|
||||||
|
protected $secret;
|
||||||
|
protected $notify_ip;
|
||||||
|
protected $created_at;
|
||||||
|
|
||||||
|
public function getId()
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setId($id): void
|
||||||
|
{
|
||||||
|
$this->id = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setName($name): void
|
||||||
|
{
|
||||||
|
$this->name = $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCode()
|
||||||
|
{
|
||||||
|
return $this->code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCode($code): void
|
||||||
|
{
|
||||||
|
$this->code = $code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAppid()
|
||||||
|
{
|
||||||
|
return $this->appid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setAppid($appid): void
|
||||||
|
{
|
||||||
|
$this->appid = $appid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSecret()
|
||||||
|
{
|
||||||
|
return $this->secret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSecret($secret): void
|
||||||
|
{
|
||||||
|
$this->secret = $secret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNotifyIp()
|
||||||
|
{
|
||||||
|
return $this->notify_ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setNotifyIp($notify_ip): void
|
||||||
|
{
|
||||||
|
$this->notify_ip = $notify_ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCreatedAt()
|
||||||
|
{
|
||||||
|
return $this->created_at;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCreatedAt($created_at): void
|
||||||
|
{
|
||||||
|
$this->created_at = $created_at;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -5,7 +5,7 @@ use App\Bean\Model\Base\BaseBean;
|
|||||||
|
|
||||||
class QueueBaseBean extends BaseBean
|
class QueueBaseBean extends BaseBean
|
||||||
{
|
{
|
||||||
const TRY_LIMIT = 3;
|
protected $try_limt = 3;
|
||||||
protected $try_times = 0;
|
protected $try_times = 0;
|
||||||
|
|
||||||
public function IncrTryTimes($num = 1): void
|
public function IncrTryTimes($num = 1): void
|
||||||
@ -15,11 +15,21 @@ class QueueBaseBean extends BaseBean
|
|||||||
|
|
||||||
public function checkTryTimes(): bool
|
public function checkTryTimes(): bool
|
||||||
{
|
{
|
||||||
if($this->try_times >= self::TRY_LIMIT) {
|
if($this->try_times >= $this->try_limt) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTryTimes(): int
|
||||||
|
{
|
||||||
|
return $this->try_times;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDelaySeconds($seconds = 30): int
|
||||||
|
{
|
||||||
|
return $seconds * $this->try_times;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
23
app/Bean/Service/HttpServiceConfigBean.php
Normal file
23
app/Bean/Service/HttpServiceConfigBean.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Bean\Service;
|
||||||
|
|
||||||
|
use App\Bean\Model\Base\BaseBean;
|
||||||
|
|
||||||
|
class HttpServiceConfigBean extends BaseBean
|
||||||
|
{
|
||||||
|
protected bool $is_return_json = true;
|
||||||
|
|
||||||
|
public function isIsReturnJson(): bool
|
||||||
|
{
|
||||||
|
return $this->is_return_json;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setIsReturnJson(bool $is_return_json): void
|
||||||
|
{
|
||||||
|
$this->is_return_json = $is_return_json;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
66
app/Bean/Service/HttpServiceReturnLogBean.php
Normal file
66
app/Bean/Service/HttpServiceReturnLogBean.php
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Bean\Service;
|
||||||
|
|
||||||
|
use App\Bean\Model\Base\BaseBean;
|
||||||
|
|
||||||
|
class HttpServiceReturnLogBean extends BaseBean
|
||||||
|
{
|
||||||
|
protected $request_url;
|
||||||
|
protected $request_data;
|
||||||
|
protected $request_header;
|
||||||
|
protected $response_body;
|
||||||
|
protected $response_status_code;
|
||||||
|
|
||||||
|
public function getResponseStatusCode()
|
||||||
|
{
|
||||||
|
return $this->response_status_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setResponseStatusCode($response_status_code): void
|
||||||
|
{
|
||||||
|
$this->response_status_code = $response_status_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRequestUrl()
|
||||||
|
{
|
||||||
|
return $this->request_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRequestUrl($request_url): void
|
||||||
|
{
|
||||||
|
$this->request_url = $request_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRequestData()
|
||||||
|
{
|
||||||
|
return $this->request_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRequestData($request_data): void
|
||||||
|
{
|
||||||
|
$this->request_data = $request_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRequestHeader()
|
||||||
|
{
|
||||||
|
return $this->request_header;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRequestHeader($request_header): void
|
||||||
|
{
|
||||||
|
$this->request_header = $request_header;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getResponseBody()
|
||||||
|
{
|
||||||
|
return $this->response_body;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setResponseBody($response_body): void
|
||||||
|
{
|
||||||
|
$this->response_body = $response_body;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -39,6 +39,10 @@ abstract class BaseCache
|
|||||||
{
|
{
|
||||||
return $this->getCacheData($key);
|
return $this->getCacheData($key);
|
||||||
}
|
}
|
||||||
|
function del($key): bool
|
||||||
|
{
|
||||||
|
return $this->delCacheData($key);
|
||||||
|
}
|
||||||
|
|
||||||
function getCacheData($primary_key = null): array|string|null
|
function getCacheData($primary_key = null): array|string|null
|
||||||
{
|
{
|
||||||
|
|||||||
26
app/Cache/Table/Wallet/TableWalletPlatformCache.php
Normal file
26
app/Cache/Table/Wallet/TableWalletPlatformCache.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Cache\Table\Wallet;
|
||||||
|
|
||||||
|
use App\Cache\Base\TableBaseCache;
|
||||||
|
use App\Models\Wallet\Other\WalletSettingModel;
|
||||||
|
use App\Models\Wallet\Platform\WalletPlatformModel;
|
||||||
|
|
||||||
|
//用户缓存用户基础信息(结构自己组装不完全等于数据表)uid为主键
|
||||||
|
class TableWalletPlatformCache extends TableBaseCache
|
||||||
|
{
|
||||||
|
|
||||||
|
public string $table_class = WalletPlatformModel::class;
|
||||||
|
public string $primary_prefix = 'TableWalletPlatformCache:'; //后面跟name
|
||||||
|
|
||||||
|
public string $primary_key_column = 'id';
|
||||||
|
public array $get_columns = [
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'code',
|
||||||
|
'appid',
|
||||||
|
'secret',
|
||||||
|
'notify_ip',
|
||||||
|
'created_at',
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Console\Commands;
|
namespace App\Console\Commands\Api;
|
||||||
|
|
||||||
use App\Models\Api\Customer\CustomerUserExtendModel;
|
use App\Models\Api\Customer\CustomerUserExtendModel;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Console\Commands;
|
namespace App\Console\Commands\Api;
|
||||||
|
|
||||||
use App\Models\Api\Wallet\CustomerWalletBalanceTransactionModel;
|
use App\Models\Api\Wallet\CustomerWalletBalanceTransactionModel;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
35
app/Console/Commands/Api/SecondsWalletBlockCheckCmd.php
Normal file
35
app/Console/Commands/Api/SecondsWalletBlockCheckCmd.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands\Api;
|
||||||
|
|
||||||
|
use App\Service\Wallet\Coin\Tron\UsdtTrx20Service;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
|
class SecondsWalletBlockCheckCmd extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'app:seconds-wallet-block-check-cmd';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = '每2秒检查最新链上区块';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$this->info('每2秒检查最新链上区块');
|
||||||
|
$this->info('开始...');
|
||||||
|
$oUsdtTrx20Service = new UsdtTrx20Service();
|
||||||
|
$oUsdtTrx20Service->checkNowBlock();
|
||||||
|
$this->info('结束...');
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -15,6 +15,7 @@ class Kernel extends ConsoleKernel
|
|||||||
// $schedule->command('inspire')->hourly();
|
// $schedule->command('inspire')->hourly();
|
||||||
$schedule->command('app:daily-check-user-active-status-cmd')->dailyAt('00:30')->onOneServer();
|
$schedule->command('app:daily-check-user-active-status-cmd')->dailyAt('00:30')->onOneServer();
|
||||||
$schedule->command('app:hour-customer-wallet-trs-delay-pay-cmd')->hourly()->onOneServer();
|
$schedule->command('app:hour-customer-wallet-trs-delay-pay-cmd')->hourly()->onOneServer();
|
||||||
|
$schedule->command('app:seconds-wallet-block-check-cmd')->everyTwoSeconds()->onOneServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
8
app/Exceptions/PlatformNotifyException.php
Normal file
8
app/Exceptions/PlatformNotifyException.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Exceptions;
|
||||||
|
|
||||||
|
class PlatformNotifyException extends \Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@ -35,8 +35,12 @@ class WalletBlockTransactionQueue implements ShouldQueue
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function putToQueue(QueueWalletBlockTransactionBean $bean): \Illuminate\Foundation\Bus\PendingDispatch
|
public static function putToQueue(QueueWalletBlockTransactionBean $bean, $delaySec = null): \Illuminate\Foundation\Bus\PendingDispatch
|
||||||
{
|
{
|
||||||
return self::dispatch($bean->toArrayNotNull())->onQueue(QueueWalletBlockTransactionBean::QUEUE_NAME);
|
$queue = self::dispatch($bean->toArrayNotNull())->onQueue(QueueWalletBlockTransactionBean::QUEUE_NAME);
|
||||||
|
if(!empty($delaySec)){
|
||||||
|
$queue->delay(now()->addSeconds($delaySec));
|
||||||
|
}
|
||||||
|
return $queue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
namespace App\Jobs\Wallet;
|
namespace App\Jobs\Wallet;
|
||||||
|
|
||||||
use App\Bean\Queue\Wallet\QueueNotifyToPlatformBean;
|
use App\Bean\Queue\Wallet\QueueNotifyToPlatformBean;
|
||||||
|
use App\Service\Wallet\PlatformNotifyService;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
@ -24,13 +25,18 @@ class WalletNotifyToPlatformQueue implements ShouldQueue
|
|||||||
/**
|
/**
|
||||||
* Execute the job.
|
* Execute the job.
|
||||||
*/
|
*/
|
||||||
public function handle(): void
|
public function handle(array $params): void
|
||||||
{
|
{
|
||||||
//
|
$oPlatformNotifyService = new PlatformNotifyService();
|
||||||
|
$oPlatformNotifyService->notifyToPlatform(new QueueNotifyToPlatformBean($params));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function putToQueue(QueueNotifyToPlatformBean $bean): \Illuminate\Foundation\Bus\PendingDispatch
|
public static function putToQueue(QueueNotifyToPlatformBean $bean, $delaySec = null): \Illuminate\Foundation\Bus\PendingDispatch
|
||||||
{
|
{
|
||||||
return self::dispatch($bean->toArrayNotNull())->onQueue(QueueNotifyToPlatformBean::QUEUE_NAME);
|
$queue = self::dispatch($bean->toArrayNotNull())->onQueue(QueueNotifyToPlatformBean::QUEUE_NAME);
|
||||||
|
if(!empty($delaySec)){
|
||||||
|
$queue->delay(now()->addSeconds($delaySec));
|
||||||
|
}
|
||||||
|
return $queue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,8 +47,12 @@ class WalletPlatformTransactionQueue implements ShouldQueue
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function putToQueue(QueueWalletPlatformTransactionBean $bean): \Illuminate\Foundation\Bus\PendingDispatch
|
public static function putToQueue(QueueWalletPlatformTransactionBean $bean, $delaySec = null): \Illuminate\Foundation\Bus\PendingDispatch
|
||||||
{
|
{
|
||||||
return self::dispatch($bean->toArrayNotNull())->onQueue(QueueWalletPlatformTransactionBean::QUEUE_NAME);
|
$queue = self::dispatch($bean->toArrayNotNull())->onQueue(QueueWalletPlatformTransactionBean::QUEUE_NAME);
|
||||||
|
if(!empty($delaySec)){
|
||||||
|
$queue->delay(now()->addSeconds($delaySec));
|
||||||
|
}
|
||||||
|
return $queue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,13 @@ class BaseModel extends Model
|
|||||||
{
|
{
|
||||||
public $timestamps = false;
|
public $timestamps = false;
|
||||||
|
|
||||||
|
const LOCK_TYPE_FOR_UPDATE = 1;
|
||||||
|
const LOCK_TYPE_FOR_SHARE = 2;
|
||||||
|
const LOCK_TYPE = [
|
||||||
|
self::LOCK_TYPE_FOR_UPDATE => '悲观锁',
|
||||||
|
self::LOCK_TYPE_FOR_SHARE => '乐观锁',
|
||||||
|
];
|
||||||
|
|
||||||
function checkColInFill($aItem)
|
function checkColInFill($aItem)
|
||||||
{
|
{
|
||||||
foreach ($aItem as $key => $value) {
|
foreach ($aItem as $key => $value) {
|
||||||
@ -64,6 +71,17 @@ class BaseModel extends Model
|
|||||||
return $this->newQuery()->where($aWhere)->get($col);
|
return $this->newQuery()->where($aWhere)->get($col);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setLockByPrimaryKey($id,$lock_type = self::LOCK_TYPE_FOR_UPDATE): Model|\Illuminate\Database\Eloquent\Builder|null
|
||||||
|
{
|
||||||
|
$model = $this->newQuery()->where($this->primaryKey, $id);
|
||||||
|
if($lock_type == self::LOCK_TYPE_FOR_SHARE){
|
||||||
|
$model = $model->sharedLock();
|
||||||
|
}elseif ($lock_type == self::LOCK_TYPE_FOR_UPDATE){
|
||||||
|
$model = $model->lockForUpdate();
|
||||||
|
}
|
||||||
|
return $model->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Models\Wallet\Platform;
|
namespace App\Models\Wallet\Platform;
|
||||||
|
|
||||||
|
use App\Cache\Table\Wallet\TableWalletPlatformCache;
|
||||||
use App\Exceptions\ModelException;
|
use App\Exceptions\ModelException;
|
||||||
use App\Models\Wallet\Base\WalletBaseModel;
|
use App\Models\Wallet\Base\WalletBaseModel;
|
||||||
use App\Tools\Times;
|
use App\Tools\Times;
|
||||||
@ -49,10 +50,19 @@ class WalletPlatformModel extends WalletBaseModel
|
|||||||
return $resModel;
|
return $resModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
//@@给平台下发用户信息
|
function updateItem($aItem,$col = null): bool|int
|
||||||
static function userTransactionNotifyToPlatform($user_transaction_id)
|
|
||||||
{
|
{
|
||||||
|
$res = parent::updateItem($aItem,$col); // TODO: Change the autogenerated stub
|
||||||
|
if($res && isset($aItem[$this->primaryKey])) {
|
||||||
|
$this->delTableCache($aItem[$this->primaryKey]);
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
function delTableCache($key): bool
|
||||||
|
{
|
||||||
|
$oTableWalletPlatformCache = new TableWalletPlatformCache();
|
||||||
|
return $oTableWalletPlatformCache->del($key);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
86
app/Service/HttpService.php
Normal file
86
app/Service/HttpService.php
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use App\Bean\Service\HttpServiceConfigBean;
|
||||||
|
use App\Bean\Service\HttpServiceReturnLogBean;
|
||||||
|
use App\Tools\Logs;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Exception\GuzzleException;
|
||||||
|
|
||||||
|
class HttpService
|
||||||
|
{
|
||||||
|
protected Client $client;
|
||||||
|
|
||||||
|
const REQ_METHOD_GET = 'GET';
|
||||||
|
const REQ_METHOD_POST = 'POST';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->client = new Client();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getClient(): Client
|
||||||
|
{
|
||||||
|
return $this->client;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function get(string $endpoint, array $data = [], HttpServiceConfigBean $configBean = null)
|
||||||
|
{
|
||||||
|
if ($configBean === null) $configBean = new HttpServiceConfigBean();
|
||||||
|
$oHttpServiceReturnLogBean = $this->request(self::REQ_METHOD_GET, $endpoint, $data, $configBean);
|
||||||
|
if ($configBean->isIsReturnJson() === true) {
|
||||||
|
return json_decode($oHttpServiceReturnLogBean->getResponseBody(), false);
|
||||||
|
}
|
||||||
|
return $oHttpServiceReturnLogBean->getResponseBody();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function post(string $endpoint, array $data = [], HttpServiceConfigBean $configBean = null)
|
||||||
|
{
|
||||||
|
if ($configBean === null) $configBean = new HttpServiceConfigBean();
|
||||||
|
$oHttpServiceReturnLogBean = $this->request(self::REQ_METHOD_POST, $endpoint, $data, $configBean);
|
||||||
|
if ($configBean->isIsReturnJson() === true) {
|
||||||
|
return json_decode($oHttpServiceReturnLogBean->getResponseBody(), false);
|
||||||
|
}
|
||||||
|
return $oHttpServiceReturnLogBean->getResponseBody();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws GuzzleException
|
||||||
|
*/
|
||||||
|
function request($req_method , string $endpoint, array $data = [], HttpServiceConfigBean $configBean = null): HttpServiceReturnLogBean|bool
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if(!in_array($req_method, [self::REQ_METHOD_GET, self::REQ_METHOD_POST])) {
|
||||||
|
throw new \Exception('request method not support');
|
||||||
|
}
|
||||||
|
if ($configBean === null) $configBean = new HttpServiceConfigBean();
|
||||||
|
$req_data = [];
|
||||||
|
if($req_method === self::REQ_METHOD_GET) {
|
||||||
|
$req_data = ['query' => $data];
|
||||||
|
}
|
||||||
|
if($req_method === self::REQ_METHOD_POST) {
|
||||||
|
$req_data = ['json' => $data];
|
||||||
|
}
|
||||||
|
$resp = $this->getClient()->request($req_method,$endpoint, $req_data);
|
||||||
|
$status_code = $resp->getStatusCode();
|
||||||
|
$body = $resp->getBody()->getContents();
|
||||||
|
$resp->getBody()->close();
|
||||||
|
|
||||||
|
//记录日志
|
||||||
|
$oHttpServiceReturnLogBean = new HttpServiceReturnLogBean();
|
||||||
|
$oHttpServiceReturnLogBean->setRequestData($data);
|
||||||
|
$oHttpServiceReturnLogBean->setRequestUrl($endpoint);
|
||||||
|
$oHttpServiceReturnLogBean->setResponseStatusCode($status_code);
|
||||||
|
$oHttpServiceReturnLogBean->setResponseBody($body);
|
||||||
|
Logs::InfoLog(__CLASS__ . '-' . __FUNCTION__, $oHttpServiceReturnLogBean->toArrayNotNull());
|
||||||
|
|
||||||
|
return $oHttpServiceReturnLogBean;
|
||||||
|
}catch (\Exception $e) {
|
||||||
|
Logs::ErrLog(__CLASS__ . '-' . __FUNCTION__, $e, func_get_args());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -113,7 +113,7 @@ class UsdtTrx20Service
|
|||||||
$oWalletTronBlockModel->updateItem($updateItem);
|
$oWalletTronBlockModel->updateItem($updateItem);
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Logs::ErrLog(__FUNCTION__, $e, $oQueueWalletBlockBean->toArray());
|
Logs::ErrLog(__FUNCTION__, $e, $oQueueWalletBlockBean->toArrayNotNull());
|
||||||
$oQueueWalletBlockBean->IncrTryTimes();
|
$oQueueWalletBlockBean->IncrTryTimes();
|
||||||
if (!$oQueueWalletBlockBean->checkTryTimes()) { //超出重试次数
|
if (!$oQueueWalletBlockBean->checkTryTimes()) { //超出重试次数
|
||||||
$updateItem = [
|
$updateItem = [
|
||||||
@ -137,7 +137,7 @@ class UsdtTrx20Service
|
|||||||
try {
|
try {
|
||||||
$this->tronBlockTransaction($oEventBean);
|
$this->tronBlockTransaction($oEventBean);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Logs::ErrLog(__FUNCTION__, $e, $oEventBean->toArray());
|
Logs::ErrLog(__FUNCTION__, $e, $oEventBean->toArrayNotNull());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -158,7 +158,7 @@ class UsdtTrx20Service
|
|||||||
$is_to = $oTronWalletAddressSetCache->checkKey($to_addr);
|
$is_to = $oTronWalletAddressSetCache->checkKey($to_addr);
|
||||||
if (!$is_from && !$is_to) return;
|
if (!$is_from && !$is_to) return;
|
||||||
//投递到钱包地址账变处理队列
|
//投递到钱包地址账变处理队列
|
||||||
$oQueueEventBean = new QueueEventBean($oEventBean->toArray());
|
$oQueueEventBean = new QueueEventBean($oEventBean->toArrayNotNull());
|
||||||
WalletAddressTransactionQueue::putToQueue($oQueueEventBean);
|
WalletAddressTransactionQueue::putToQueue($oQueueEventBean);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
48
app/Service/Wallet/PlatformNotifyService.php
Normal file
48
app/Service/Wallet/PlatformNotifyService.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Service\Wallet;
|
||||||
|
|
||||||
|
use App\Bean\Model\Wallet\Platform\WalletPlatformBean;
|
||||||
|
use App\Bean\Queue\Wallet\QueueNotifyToPlatformBean;
|
||||||
|
use App\Bean\Service\HttpServiceConfigBean;
|
||||||
|
use App\Cache\Table\Wallet\TableWalletPlatformCache;
|
||||||
|
use App\Exceptions\PlatformNotifyException;
|
||||||
|
use App\Jobs\Wallet\WalletNotifyToPlatformQueue;
|
||||||
|
use App\Tools\Logs;
|
||||||
|
|
||||||
|
class PlatformNotifyService
|
||||||
|
{
|
||||||
|
const RETURN_SUCCESS = 'success';
|
||||||
|
function notifyToPlatform(QueueNotifyToPlatformBean $bean): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if(empty($bean->getPlatformId())) return;
|
||||||
|
|
||||||
|
$oTableWalletPlatformCache = new TableWalletPlatformCache();
|
||||||
|
$aWalletPlatform= $oTableWalletPlatformCache->get($bean->getPlatformId());
|
||||||
|
if(empty($aWalletPlatform)) return;
|
||||||
|
|
||||||
|
$oWalletPlatformBean = new WalletPlatformBean($aWalletPlatform);
|
||||||
|
if(empty($oWalletPlatformBean->getNotifyIp())) return;
|
||||||
|
//通知到平台
|
||||||
|
$oHttpService = new \App\Service\HttpService();
|
||||||
|
$HttpServiceConfigBean = new HttpServiceConfigBean();
|
||||||
|
$HttpServiceConfigBean->setIsReturnJson(false); //返回不格式化json
|
||||||
|
$res = $oHttpService->post($oWalletPlatformBean->getNotifyIp(),$bean->toArrayNotNull(),$HttpServiceConfigBean);
|
||||||
|
if($res !== self::RETURN_SUCCESS){ //通知失败
|
||||||
|
throw new PlatformNotifyException('notify to platform failed');
|
||||||
|
}
|
||||||
|
|
||||||
|
Logs::SuccLog(__FUNCTION__, $bean->toArrayNotNull());
|
||||||
|
}catch (\Exception $e) {
|
||||||
|
Logs::ErrLog(__FUNCTION__, $e, $bean->toArrayNotNull());
|
||||||
|
$bean->IncrTryTimes();
|
||||||
|
if (!$bean->checkTryTimes()) { //超出重试次数
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
WalletNotifyToPlatformQueue::putToQueue($bean, $bean->getTryTimes());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -16,6 +16,11 @@ class Logs
|
|||||||
Log::error(self::getTitle($title,'success:'), $params);
|
Log::error(self::getTitle($title,'success:'), $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function InfoLog($title, $params = []): void
|
||||||
|
{
|
||||||
|
Log::error(self::getTitle($title,'info:'), $params);
|
||||||
|
}
|
||||||
|
|
||||||
static function getTitle($title,$prefix=''): string
|
static function getTitle($title,$prefix=''): string
|
||||||
{
|
{
|
||||||
return $title.' '.$prefix;
|
return $title.' '.$prefix;
|
||||||
|
|||||||
Reference in New Issue
Block a user