Commit ad770fc3 authored by shajiaiming's avatar shajiaiming

fix

parent a7dd5665
......@@ -18,10 +18,6 @@ class OrderController extends BaseController
goto doEnd;
}
$post = $request->post();
// if (2 != count($post['txs'])) {
// $msg = '交易笔数错误!';
// goto doEnd;
// }
$data['is_sell'] = (false == $post['isSell']) ? 0 : 1;
$data['type'] = $post['type'];
......@@ -33,16 +29,15 @@ class OrderController extends BaseController
$data['transfer_number'] = date('YmdHis') . self::getrandnums();
$redis = Yii::$app->redis;
$key = 'C2C_' . $post['address'] . '_' . $post['isSell'] . '_' . $post['token_name'] . '-' . $post['market_name'];
if ($redis->exists($key)) {
$redis = Yii::$app->redis_app;
$key = 'C2C_' . $data['is_sell'] . '_' . str_replace('/', '', strtoupper($post['token_name'])) . '_' . str_replace('/', '', strtoupper($post['market_name']));
if ($redis->hexists($key, $data['address'])) {
$msg = '尚存在一笔未完成的交易!';
goto doEnd;
}
$redis->set($key, time());
if (!$redis->exists($key)) {
$redis->hmset($key, $data['address'], time());
}
foreach ($post['txs'] as $key => $val) {
$model = new CoinCTocTransfer();
$data['txhex'] = $val['tx'];
......@@ -59,44 +54,6 @@ class OrderController extends BaseController
return ['code' => $code, 'msg' => $msg];
}
public function actionFixOrder()
{
$code = -1;
$request = Yii::$app->request;
if (!$request->isPost) {
$msg = '请求错误!';
goto doEnd;
}
$post = $request->post();
$data['is_sell'] = (false == $post['isSell']) ? 0 : 1;
$data['type'] = $post['type'];
$data['address'] = $post['address'];
foreach ($post['txs'] as $key => $val) {
$model = CoinCTocTransfer::find()->where(['is_sell' => $data['is_sell']])
->andWhere(['type' => $data['type']])
->andWhere(['address' => $data['address']])
->andWhere(['step' => $val['step']])
->andWhere(['<>', 'msg', 'success'])
->one();
$model->txhex = $val['tx'];
$model->transfer_url = $val['url'];
$model->send_result = 0;
$model->query_result = 0;
$model->msg = 0;
$model->save();
continue;
}
$redis = Yii::$app->redis;
$redis->set('C2C_' . $post['address'] . '_' . $data['is_sell'], time());
$code = 0;
$msg = 'success';
doEnd :
return ['code' => $code, 'msg' => $msg];
}
public function actionOrderList()
{
$address = Yii::$app->request->get('address', '');
......@@ -144,7 +101,7 @@ class OrderController extends BaseController
{
$address = Yii::$app->request->get('address', '');
$token_name = Yii::$app->request->get('token_name', '');
$market_name= Yii::$app->request->get('market_name', '');
$market_name = Yii::$app->request->get('market_name', '');
$is_sell = Yii::$app->request->get('isSell', -1);
$type = Yii::$app->request->get('type', '');
......
......@@ -17,8 +17,8 @@ class CoinCTocTransfer extends BaseActiveRecord
const TYPE_TRANSFER = 2; //交易
const TYPE_REVOKE = 3; //撤消
const C2C_ORDER_TRANSFERING = 'C2C_order_transfering';
const C2C_ORDER_FAIL = 'C2C_order_fail';
const C2C_ORDERING = 'C2C_ORDERING';
const C2C_ORDER_FAILED = 'C2C_ORDER_FAILED';
public static function getDb()
{
......
......@@ -17,7 +17,7 @@ class OrderController extends Controller
*/
public function actionAutoOrder($is_sell, $type)
{
$redis = Yii::$app->redis;
$redis = Yii::$app->redis_app;
$model = CoinCTocTransfer::find()->where(['send_result' => "0", 'is_sell' => (int)$is_sell, 'type' => (int)$type, 'query_result' => '0'])->asArray()->all();
if (empty($model)) {
echo date('Y-m-d H:i:s') . '暂无交易计划' . PHP_EOL;
......@@ -39,11 +39,11 @@ class OrderController extends Controller
}
$key = $val['address'] . '_' . $val['is_sell'] . '_' . $val['token_name'] . '_' . $val['market_name'];
$cache_transfering_time = $redis->hget(CoinCTocTransfer::C2C_ORDER_TRANSFERING, $key);
$cache_transfering_time = $redis->hget(CoinCTocTransfer::C2C_ORDERING, $key);
if (true == $cache_transfering_time) {
continue;
}
$redis->hmset(CoinCTocTransfer::C2C_ORDER_TRANSFERING, $key, $current_time);
$redis->hmset(CoinCTocTransfer::C2C_ORDERING, $key, $current_time);
go(function () use ($val, $redis, $key) {
\Co::sleep(0.5);
......@@ -66,7 +66,7 @@ class OrderController extends Controller
$currentModel->send_result = $send_result;
$currentModel->msg = 0;
$currentModel->save();
$redis->hdel(CoinCTocTransfer::C2C_ORDER_TRANSFERING, $key);
$redis->hdel(CoinCTocTransfer::C2C_ORDERING, $key);
} else {
$currentModel = CoinCTocTransfer::findOne($val['id']);
$currentModel->msg = $result['msg'];
......@@ -80,7 +80,7 @@ class OrderController extends Controller
public function actionOrderStatus()
{
$redis = Yii::$app->redis;
$redis = Yii::$app->redis_app;
$model = CoinCTocTransfer::find()->where(['<>', 'send_result', '0'])->andWhere(['msg' => '0'])->asArray()->all();
if (empty($model)) {
......@@ -109,7 +109,7 @@ class OrderController extends Controller
$current_time = time();
foreach ($model as $val) {
$key = $val['address'] . '_' . $val['is_sell'] . '_' . $val['token_name'] . '_' . $val['market_name'];
$key = $val['address'] . '_' . $val['is_sell'] . '_' . str_replace('/', '', strtoupper($val['token_name'])) . '_' . str_replace('/', '', strtoupper($val['market_name']));
$node_params = $val['transfer_url'];
$node_params = explode(':', $node_params);
$node_params = [
......@@ -118,25 +118,24 @@ class OrderController extends Controller
'port' => isset($node_params[2]) ? $node_params[2] : ''
];
$send_result = $val['send_result'];
#$result = $service->QueryTransaction($send_result);
$switch = true;
$result = $this->queryTransaction($node_params, $send_result);
if (isset($result['result']['actionName']) && 'unknown' == $result['result']['actionName']) {
$redis->hdel(CoinCTocTransfer::C2C_ORDER_FAIL, $key);
$redis->hdel(CoinCTocTransfer::C2C_ORDER_FAILED, $key);
$query_result = 'success';
$msg = 'success';
$height = isset($result['result']['height']) ? $result['result']['height'] : 0;
goto doEnd;
} else if (isset($result['result']['receipt']['ty']) && 2 == $result['result']['receipt']['ty']) {
$redis->hdel(CoinCTocTransfer::C2C_ORDER_FAIL, $key);
$redis->hdel(CoinCTocTransfer::C2C_ORDER_FAILED, $key);
$query_result = 'success';
$msg = 'success';
$height = isset($result['result']['height']) ? $result['result']['height'] : 0;
goto doEnd;
} else {
$cache_error_time = $redis->hget(CoinCTocTransfer::C2C_ORDER_FAIL, $key);
$cache_error_time = $redis->hget(CoinCTocTransfer::C2C_ORDER_FAILED, $key);
if (false == $cache_error_time) {
$redis->hmset(CoinCTocTransfer::C2C_ORDER_FAIL, $key, $current_time);
$redis->hmset(CoinCTocTransfer::C2C_ORDER_FAILED, $key, $current_time);
continue;
}
......@@ -144,7 +143,7 @@ class OrderController extends Controller
continue;
}
$redis->hdel(CoinCTocTransfer::C2C_ORDER_FAIL, $key);
$redis->hdel(CoinCTocTransfer::C2C_ORDER_FAILED, $key);
if (-1 == $result['code']) {
$msg = $result['msg'];
$query_result = $result['code'];
......@@ -180,8 +179,8 @@ class OrderController extends Controller
}
}
if (true == $clear) {
$key = 'C2C_' . $val['address'] . '_' . $val['is_sell'] . '_' . $val['token_name'] . '-' . $val['market_name'];
$redis->del($key);
$key = 'C2C_' . $val['is_sell'] . '_' . str_replace('/', '', strtoupper($val['token_name'])) . '_' . str_replace('/', '', strtoupper($val['market_name']));
$redis->hdel($key, $val['address']);
}
}
......
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