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 ...@@ -51,6 +51,7 @@ class CrossChainController extends BaseController
$model = new CoinCrossChain(); $model = new CoinCrossChain();
$data['txhex'] = $val['tx']; $data['txhex'] = $val['tx'];
$data['transfer_url'] = $val['url']; $data['transfer_url'] = $val['url'];
$data['step'] = $val['step'];
$model->load($data, ''); $model->load($data, '');
$model->save(); $model->save();
} }
...@@ -61,6 +62,62 @@ class CrossChainController extends BaseController ...@@ -61,6 +62,62 @@ class CrossChainController extends BaseController
return ['code' => $code, 'msg' => $msg]; 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() public function actionTransferStatus()
{ {
$code = -1; $code = -1;
...@@ -83,6 +140,7 @@ class CrossChainController extends BaseController ...@@ -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(); $model = CoinCrossChain::find()->where(['address' => $address, 'is_with_draw' => $is_with_draw])->orderBy("id desc")->limit(3)->asArray()->all();
if (empty($model)) { if (empty($model)) {
$msg = '数据不存在!'; $msg = '数据不存在!';
$code = 0;
goto doEnd; goto doEnd;
} }
sort($model); sort($model);
...@@ -111,7 +169,7 @@ class CrossChainController extends BaseController ...@@ -111,7 +169,7 @@ class CrossChainController extends BaseController
goto doEnd; goto doEnd;
} }
//交易成功,查询失败 //交易成功,查询失败
if (true == $val['send_result'] && 'fail' == $val['query_result']) { if (true == $val['send_result'] && 'success' != $val['query_result']) {
$step = $key + 1; $step = $key + 1;
$code = -1; $code = -1;
$msg = $val['msg']; $msg = $val['msg'];
...@@ -119,7 +177,7 @@ class CrossChainController extends BaseController ...@@ -119,7 +177,7 @@ class CrossChainController extends BaseController
} }
//交易成功,查询成功 //交易成功,查询成功
if (true == $val['send_result'] && 'success' == $val['query_result'] && 'success' == $val['msg']) { if (true == $val['send_result'] && 'success' == $val['query_result'] && 'success' == $val['msg']) {
if (2 == $key){ if (2 == $key) {
$step = (2 == $key) ? 4 : ($key + 2); $step = (2 == $key) ? 4 : ($key + 2);
$code = 0; $code = 0;
$msg = $val['send_result']; $msg = $val['send_result'];
......
...@@ -23,10 +23,10 @@ class GameBetController extends BaseController ...@@ -23,10 +23,10 @@ class GameBetController extends BaseController
} }
$query = CoinGameBet::find() $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]) ->where('player= :player',[':player' => $player])
->andWhere(['platform' => $platform]) ->andWhere(['platform' => $platform])
#->andWhere(['valid' => CoinGameBet::VAILD_TRUE]) //->andWhere(['valid' => CoinGameBet::VAILD_TRUE])
->orderBy('update_time desc'); ->orderBy('update_time desc');
$count = $query->count(); $count = $query->count();
......
...@@ -28,14 +28,14 @@ class CoinCrossChain extends BaseActiveRecord ...@@ -28,14 +28,14 @@ class CoinCrossChain extends BaseActiveRecord
{ {
return [ return [
[['is_with_draw', 'address', 'txhex', 'transfer_url'], 'required'], [['is_with_draw', 'address', 'txhex', 'transfer_url'], 'required'],
['transfer_number', 'safe'] [['transfer_number', 'step', 'send_result', 'query_result', 'msg'], 'safe']
]; ];
} }
public function scenarios() public function scenarios()
{ {
$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); return array_merge(parent:: scenarios(), $scenarios);
} }
......
...@@ -37,6 +37,7 @@ class GameBetController extends Controller ...@@ -37,6 +37,7 @@ class GameBetController extends Controller
$resultJSON = json_decode($queryResultItems['queryResultItems'][0]['resultJSON'], true); $resultJSON = json_decode($queryResultItems['queryResultItems'][0]['resultJSON'], true);
$current_round = $resultJSON['current_round']; $current_round = $resultJSON['current_round'];
$current_height = $resultJSON['height'];
$cache_current_round = Yii::$app->redis->get('chain33_game_bet_status_'.$key); $cache_current_round = Yii::$app->redis->get('chain33_game_bet_status_'.$key);
if (empty($cache_current_round)) { if (empty($cache_current_round)) {
$cache_current_round = CoinGameBet::find()->where(['platform' => $key])->max('round'); $cache_current_round = CoinGameBet::find()->where(['platform' => $key])->max('round');
...@@ -48,7 +49,7 @@ class GameBetController extends Controller ...@@ -48,7 +49,7 @@ class GameBetController extends Controller
continue; continue;
} }
Yii::$app->redis->set('chain33_game_bet_status_'.$key, $current_round, 'EX', 300); 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); $result = $service->getBetStatus($cache_current_round, $current_round, '', $node);
if (0 !== $result['code']) { if (0 !== $result['code']) {
echo $key.':'.date('Y-m-d H:i:s') . '数据错误' . PHP_EOL; echo $key.':'.date('Y-m-d H:i:s') . '数据错误' . PHP_EOL;
...@@ -132,4 +133,5 @@ class GameBetController extends Controller ...@@ -132,4 +133,5 @@ class GameBetController extends Controller
} }
return 0; return 0;
} }
} }
\ No newline at end of file
#!/bin/bash #!/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 & 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 \ No newline at end of file
#!/bin/bash #!/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 & 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 \ 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