Commit a6fe229f authored by shajiaiming's avatar shajiaiming

fix

parent 0faab015
...@@ -4,117 +4,150 @@ namespace console\controllers; ...@@ -4,117 +4,150 @@ namespace console\controllers;
use common\models\psources\Coin; use common\models\psources\Coin;
use common\models\psources\CoinIssueCoin; use common\models\psources\CoinIssueCoin;
use common\models\psources\CoinIssueTransfer;
use common\service\chain33\Chain33Service; use common\service\chain33\Chain33Service;
use Yii; use Yii;
use yii\console\Controller; use yii\console\Controller;
class IssueCoinController extends Controller class IssueCoinController extends Controller
{ {
public function actionAutoIssue() /**
* 手续费划转
* @return
*/
public function actionPayCharge()
{ {
$manual_review = Yii::$app->redis->get('issue_chain_manual_review'); $issue_transfer = CoinIssueTransfer::find()->where(['send_result' => '0', 'msg' => '0'])->asArray()->all();
if ('close' == $manual_review) { if (false == $issue_transfer) {
echo date('Y-m-d H:i:s') . '暂无手续费划转任务' . PHP_EOL;
return 0; return 0;
} }
$node = Yii::$app->params['chain_nodes']['STO'];
$service = new Chain33Service($node);
foreach ($issue_transfer as $val) {
$result = $service->sendTransaction($val['txhex']);
if (0 == $result['code']) {
$send_result = $result['result'];
$currentModel = CoinIssueTransfer::findOne($val['id']);
$currentModel->send_result = $send_result;
$currentModel->msg = 0;
$currentModel->save();
} else {
$currentModel = CoinIssueTransfer::findOne($val['id']);
$currentModel->msg = $result['msg'];
$currentModel->save();
}
}
echo date('Y-m-d H:i:s') . '手续费划转任务完成' . PHP_EOL;
return 0;
}
$issue_coin_model = CoinIssueCoin::find() /**
->select('id, name, platform_id, symbol, introduction, total, category, owner') * 手续费划转状态确认
->where(['status' => CoinIssueCoin::UN_AUDIT]) * @return
->orderBy('create_time desc') */
->all(); public function actionPayChargeStatus()
{
if (false == $issue_coin_model) { $model = CoinIssueTransfer::find()->where(['<>', 'send_result', '0'])->andWhere(['msg' => '0'])->asArray()->all();
echo date('Y-m-d H:i:s') . '暂无发行任务' . PHP_EOL; if (empty($model)) {
echo date('Y-m-d H:i:s') . '暂无需要确认的手续费划转状态' . PHP_EOL;
return 0; return 0;
} }
$node = Yii::$app->params['chain_nodes']['STO'];
$chain_service = new Chain33Service($node);
foreach ($issue_coin_model as $issue_coin) {
go(function () use ($issue_coin, $chain_service) {
\Co::sleep(0.5);
$params = [
'name' => $issue_coin->name,
'symbol' => $issue_coin->symbol,
'introduction' => $issue_coin->introduction,
//'total' => (int)$issue_coin->total,
'total' => 10,
'price' => isset($issue_coin->platform->issue_charge) ? (int)$issue_coin->platform->issue_charge : 0,
'category' => (int)$issue_coin->category,
//'owner' => $issue_coin->owner
'owner' => '14TaZDqdzzmt8FcLrSJuWQux62JXmJynR9'
];
$result = $chain_service->createRawTokenPreCreateTx($params);
if (null == $result['error'] && false == $result['code']) {
$status = CoinIssueCoin::SUCCESS_ISSUE;
$params['platform'] = $issue_coin->chain->platform;
$this->syncCoin($params);
} else { $node = \Yii::$app->params['chain_parallel']['primary'];
$status = CoinIssueCoin::FAIL_ISSUE; $service = new Chain33Service($node);
} foreach ($model as $val) {
$send_result = $val['send_result'];
$result = $service->QueryTransaction($send_result);
if (isset($result['result']['actionName']) && 'unknown' == $result['result']['actionName']) {
$query_result = 'success';
$msg = 'success';
goto doEnd;
} else if (isset($result['result']['receipt']['ty']) && 2 == $result['result']['receipt']['ty']) {
$query_result = 'success';
$msg = 'success';
goto doEnd;
} else {
$msg = $result['msg'];
$query_result = $result['code'];
goto doEnd;
}
doEnd :
if ($status > CoinIssueCoin::REFUSE_ISSUE) { $currentModel = CoinIssueTransfer::findOne($val['id']);
CoinIssueCoin::updateAll([ $currentModel->query_result = $query_result;
'msg' => $result['result'], $currentModel->msg = $msg;
'status' => $status $currentModel->save();
], [
'id' => $issue_coin['id'],
]);
}
});
} }
echo date('Y-m-d H:i:s') . '发行成功' . PHP_EOL;
return 0;
} }
public function actionManualIssue() /**
* 自动发币
* @param $type 0 未开启人工 1 已开启人工
* @return
*/
public function actionAutoIssue($type)
{ {
$issue_coin_model = CoinIssueCoin::find() if (0 == $type) {
->select('id, name, platform_id, symbol, introduction, total, category, owner') $status = CoinIssueCoin::UN_AUDIT;
->where(['status' => CoinIssueCoin::ALLOW_ISSUE]) $manual_review = Yii::$app->redis->get('issue_chain_manual_review');
->orderBy('create_time desc') if ('close' == $manual_review) {
->all(); return 0;
}
}
if (1 == $type) {
$status = CoinIssueCoin::ALLOW_ISSUE;
}
if (false == $issue_coin_model) { $issue_transfers = CoinIssueTransfer::find()
->where(['<>', 'send_result', '0'])
->andWhere(['msg' => 'success'])
->andWhere(['unissue' => 1])
->asArray()
->all();
if (false == $issue_transfers) {
echo date('Y-m-d H:i:s') . '暂无发行任务' . PHP_EOL; echo date('Y-m-d H:i:s') . '暂无发行任务' . PHP_EOL;
return 0; return 0;
} }
$node = Yii::$app->params['chain_nodes']['STO']; $node = Yii::$app->params['chain_nodes']['STO'];
$chain_service = new Chain33Service($node); $chain_service = new Chain33Service($node);
foreach ($issue_coin_model as $issue_coin) { foreach ($issue_transfers as $issue_transfer) {
go(function () use ($issue_coin, $chain_service) { $issue_coin_model = CoinIssueCoin::find()
\Co::sleep(0.5); ->select('id, name, platform_id, chain_id, symbol, introduction, total, category, owner')
$params = [ ->where(['id' => $issue_transfer['issue_coin_id'], 'status' => $status])
'name' => $issue_coin->name, ->one();
'symbol' => $issue_coin->symbol,
'introduction' => $issue_coin->introduction,
//'total' => (int)$issue_coin->total,
'total' => 10,
'price' => isset($issue_coin->platform->issue_charge) ? (int)$issue_coin->platform->issue_charge : 0,
'category' => (int)$issue_coin->category,
//'owner' => $issue_coin->owner
'owner' => '14TaZDqdzzmt8FcLrSJuWQux62JXmJynR9'
];
$result = $chain_service->createRawTokenPreCreateTx($params); if (false == $issue_coin_model) continue;
if (null == $result['error'] && false == $result['code']) { $params = [
$status = CoinIssueCoin::SUCCESS_ISSUE; 'name' => $issue_coin_model->name,
$params['platform'] = $issue_coin->chain->platform; 'symbol' => $issue_coin_model->symbol,
$this->syncCoin($params); 'introduction' => $issue_coin_model->introduction,
} else { 'total' => (int)$issue_coin_model->total,
$status = CoinIssueCoin::FAIL_ISSUE; 'price' => isset($issue_coin_model->platform->issue_charge) ? (int)$issue_coin_model->platform->issue_charge : 0,
} 'category' => (int)$issue_coin_model->category,
'owner' => $issue_coin_model->owner
];
if ($status > CoinIssueCoin::REFUSE_ISSUE) { $result = $chain_service->createRawTokenPreCreateTx($params);
CoinIssueCoin::updateAll([ if (null == $result['error'] && false == $result['code']) {
'msg' => $result['result'], $status = CoinIssueCoin::SUCCESS_ISSUE;
'status' => $status $params['platform'] = $issue_coin_model->chain->platform;
], [ $this->syncTransfer($issue_transfer['id']);
'id' => $issue_coin['id'], $this->syncCoin($params);
]); } else {
} $status = CoinIssueCoin::FAIL_ISSUE;
}); }
if ($status > CoinIssueCoin::REFUSE_ISSUE) {
CoinIssueCoin::updateAll([
'msg' => $result['result'],
'status' => $status
], [
'id' => $issue_coin_model->id,
]);
}
} }
echo date('Y-m-d H:i:s') . '发行成功' . PHP_EOL; echo date('Y-m-d H:i:s') . '发行成功' . PHP_EOL;
return 0; return 0;
...@@ -128,10 +161,16 @@ class IssueCoinController extends Controller ...@@ -128,10 +161,16 @@ class IssueCoinController extends Controller
$model->name = $params['name']; $model->name = $params['name'];
$model->sid = $params['symbol']; $model->sid = $params['symbol'];
$model->platform = $params['platform']; $model->platform = $params['platform'];
$model->introduce['zh-CN'] = $params['introduction'];
$model->chain = 'BTY'; $model->chain = 'BTY';
$model->treaty = 1; $model->treaty = 1;
$model->save(); $model->save();
} }
} }
public function syncTransfer($id)
{
$issue_transfer = CoinIssueTransfer::find()->where(['id' => $id])->one();
$issue_transfer->unissue = 0;
$issue_transfer->save();
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment