MonitorController.php 2.09 KB
<?php

namespace wallet\controllers;

use common\models\psources\CoinPlatformWithHold;
use common\service\chain33\Chain33Service;
use Yii;
use wallet\base\BaseController;
use yii\data\Pagination;

class MonitorController extends BaseController
{
    /**
     * landing
     * @return array
     * @throws \yii\base\Exception
     * @throws \yii\base\InvalidConfigException
     */
    public function actionList()
    {
        $msg = 'ok';
        $code = 0;
        $page = Yii::$app->request->get('page', 1);
        $query = CoinPlatformWithHold::find()->select('id, platform, address')->asArray();
        $count = $query->count();
        if( 0 == $count ) {
            $msg = '数据不存在';
            $code = -1;
            $data = null;
            goto doEnd;
        }
        $models = $query->offset(($page - 1) * 10)->limit(10)->asArray()->all();
        $countQuery = clone $query;
        $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => '10']);
        $address = [];
        foreach ($models as $model){
            $address[] = $model['address'];
        }
        if(empty($address)){
            $data = null;
            goto doEnd;
        }
        $service = new Chain33Service();
        $execer = 'coins';
        $result  = $service->getBalance($address, $execer);
        if(0 != $result['code']){
            $msg = $result['msg'];
            $code = -1;
            goto doEnd;
        }
        $result_balance = $result['result'];
        $balance_arr = [];
        foreach ($result_balance as $key => $val){
            $balance_arr[$val['addr']] = $val;
        }
        foreach ($models as &$model){
            $model['balance'] = $balance_arr[$model['address']]['balance'];
        }
        $data = [
            'list' => $models,
            'page' => [
                'pageCount' => $pages->pageCount,
                'pageSize'  => 10,
                'currentPage' => $page,
            ]
        ];
        doEnd :
        return ['code' => $code, 'msg' => $msg, 'data' => $data];
    }

}