Commit 17908887 authored by shajiaiming's avatar shajiaiming

Merge branch 'feature/cross_chain' into 'master'

Feature/cross chain See merge request !110
parents 4cffdb88 3cecfa21
......@@ -51,6 +51,7 @@ class CrossChainController extends BaseController
$model = new CoinCrossChain();
$data['txhex'] = $val['tx'];
$data['transfer_url'] = $val['url'];
$data['step'] = $val['step'];
$model->load($data, '');
$model->save();
}
......@@ -61,6 +62,62 @@ class CrossChainController extends BaseController
return ['code' => $code, 'msg' => $msg];
}
public function actionFixTransfer()
{
$code = -1;
$request = Yii::$app->request;
if (!$request->isPost) {
$msg = '请求错误!';
goto doEnd;
}
$post = $request->post();
$data['is_with_draw'] = (false == $post['isWithdraw']) ? 0 : 1;
$data['address'] = $post['address'];
foreach ($post['txs'] as $key => $val) {
$model = CoinCrossChain::find()->where(['is_with_draw' => $data['is_with_draw']])
->andWhere(['address' => $data['address']])
->andWhere(['step' => $val['step']])
->andWhere(['<>', 'msg', 'success'])
->one();
if(false == $model) continue;
$node_params = $model->transfer_url;
$node_params = explode(':', $node_params);
$node_params = [
'scheme' => $node_params[0],
'host' => str_replace('//', '', $node_params[1]),
'port' => isset($node_params[2]) ? $node_params[2] : ''
];
$service = new Chain33Service($node_params);
$send_result = $model->send_result;
$result = $service->QueryTransaction($send_result);
if (isset($result['result']['actionName']) && 'unknown' == $result['result']['actionName']) {
$model->query_result = 'success';
$model->msg = 'success';
$model->save();
continue;
} else if (isset($result['result']['receipt']['ty']) && 2 == $result['result']['receipt']['ty']) {
$model->query_result = 'success';
$model->msg = 'success';
$model->save();
continue;
} else {
$model->txhex = $val['tx'];
$model->transfer_url = $val['url'];
$model->send_result = 0;
$model->query_result = 0;
$model->msg = 0;
$model->save();
continue;
}
}
$code = 0;
$msg = 'success';
doEnd :
return ['code' => $code, 'msg' => $msg];
}
public function actionTransferStatus()
{
$code = -1;
......@@ -83,6 +140,7 @@ class CrossChainController extends BaseController
$model = CoinCrossChain::find()->where(['address' => $address, 'is_with_draw' => $is_with_draw])->orderBy("id desc")->limit(3)->asArray()->all();
if (empty($model)) {
$msg = '数据不存在!';
$code = 0;
goto doEnd;
}
sort($model);
......@@ -111,7 +169,7 @@ class CrossChainController extends BaseController
goto doEnd;
}
//交易成功,查询失败
if (true == $val['send_result'] && 'fail' == $val['query_result']) {
if (true == $val['send_result'] && 'success' != $val['query_result']) {
$step = $key + 1;
$code = -1;
$msg = $val['msg'];
......@@ -119,7 +177,7 @@ class CrossChainController extends BaseController
}
//交易成功,查询成功
if (true == $val['send_result'] && 'success' == $val['query_result'] && 'success' == $val['msg']) {
if (2 == $key){
if (2 == $key) {
$step = (2 == $key) ? 4 : ($key + 2);
$code = 0;
$msg = $val['send_result'];
......
......@@ -23,10 +23,10 @@ class GameBetController extends BaseController
}
$query = CoinGameBet::find()
->select('round, player, amount, height, guess_num, guess_num, rand_num, player_win, platform')
->select('round, player, amount, height, guess_num, valid, rand_num, player_win, platform')
->where('player= :player',[':player' => $player])
->andWhere(['platform' => $platform])
#->andWhere(['valid' => CoinGameBet::VAILD_TRUE])
//->andWhere(['valid' => CoinGameBet::VAILD_TRUE])
->orderBy('update_time desc');
$count = $query->count();
......
......@@ -28,14 +28,14 @@ class CoinCrossChain extends BaseActiveRecord
{
return [
[['is_with_draw', 'address', 'txhex', 'transfer_url'], 'required'],
['transfer_number', 'safe']
[['transfer_number', 'step', 'send_result', 'query_result', 'msg'], 'safe']
];
}
public function scenarios()
{
$scenarios = [
self:: SCENARIOS_CREATE => ['is_with_draw', 'address', 'txhex', 'transfer_url', 'transfer_number'],
self:: SCENARIOS_CREATE => ['is_with_draw', 'address', 'txhex', 'transfer_url', 'transfer_number', 'step', 'send_result', 'query_result', 'msg'],
];
return array_merge(parent:: scenarios(), $scenarios);
}
......
......@@ -37,6 +37,7 @@ class GameBetController extends Controller
$resultJSON = json_decode($queryResultItems['queryResultItems'][0]['resultJSON'], true);
$current_round = $resultJSON['current_round'];
$current_height = $resultJSON['height'];
$cache_current_round = Yii::$app->redis->get('chain33_game_bet_status_'.$key);
if (empty($cache_current_round)) {
$cache_current_round = CoinGameBet::find()->where(['platform' => $key])->max('round');
......@@ -48,7 +49,7 @@ class GameBetController extends Controller
continue;
}
Yii::$app->redis->set('chain33_game_bet_status_'.$key, $current_round, 'EX', 300);
Yii::$app->redis->set('chain33_game_bet_status_height_'.$key, $current_height, 'EX', 300);
$result = $service->getBetStatus($cache_current_round, $current_round, '', $node);
if (0 !== $result['code']) {
echo $key.':'.date('Y-m-d H:i:s') . '数据错误' . PHP_EOL;
......@@ -132,4 +133,5 @@ class GameBetController extends Controller
}
return 0;
}
}
\ No newline at end of file
#!/bin/bash
while true; do php /var/www/html/token_pwallet/yii game-bet/bet-update >> /var/log/bet-update.log 2>&1; sleep 5; done &
\ No newline at end of file
while true; do php /var/www/html/token_pwallet/yii game-bet/bet-update >> /var/log/bet-update.log 2>&1; sleep 2; done &
\ No newline at end of file
#!/bin/bash
while true; do php /var/www/html/token_pwallet/yii cross-chain/query-transaction >> /var/www/html/query-transaction.log 2>&1; sleep 20; done &
\ No newline at end of file
while true; do php /var/www/html/token_pwallet/yii cross-chain/query-transaction >> /var/www/html/query-transaction.log 2>&1; sleep 5; done &
\ 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