Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
token
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wallet
token
Commits
accc1a5c
Commit
accc1a5c
authored
Sep 17, 2019
by
shajiaiming
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature/issue_coin
parents
cf53079d
894eb0ac
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
412 additions
and
121 deletions
+412
-121
CoinController.php
api/controllers/CoinController.php
+5
-1
CoinDogController.php
api/controllers/CoinDogController.php
+82
-0
CrossChainController.php
api/controllers/CrossChainController.php
+65
-4
GameBetController.php
api/controllers/GameBetController.php
+2
-2
ServiceController.php
api/controllers/ServiceController.php
+31
-26
CoinController.php
backend/controllers/CoinController.php
+2
-2
Curl.php
common/helpers/Curl.php
+59
-15
CoinCrossChain.php
common/models/psources/CoinCrossChain.php
+5
-2
Chain33Service.php
common/service/chain33/Chain33Service.php
+24
-3
CrossChainController.php
console/controllers/CrossChainController.php
+75
-29
GameBetController.php
console/controllers/GameBetController.php
+62
-28
AutoTransfer.sh
shell/AutoTransfer.sh
+0
-3
GameBet.sh
shell/GameBet.sh
+0
-3
QueryTransaction.sh
shell/QueryTransaction.sh
+0
-3
No files found.
api/controllers/CoinController.php
View file @
accc1a5c
...
...
@@ -131,7 +131,7 @@ class CoinController extends BaseController
if
(
$recommend
)
{
$condition
[
'recommend'
]
=
$recommend
;
}
$select
=
[
'id'
,
'sid'
,
'icon'
,
'name'
,
'optional_name'
,
'nickname'
,
'platform'
,
'chain'
,
'treaty'
];
$select
=
[
'id'
,
'sid'
,
'icon'
,
'name'
,
'
introduce'
,
'
optional_name'
,
'nickname'
,
'platform'
,
'chain'
,
'treaty'
];
$order_by
=
[
'sort'
=>
SORT_ASC
];
$datas
=
CoinRecommend
::
getList
(
$page
,
$limit
,
$condition
,
$order_by
,
$select
);
//获取详细信息
...
...
@@ -143,6 +143,8 @@ class CoinController extends BaseController
foreach
(
$coin_infos
as
$key
=>
&
$val
)
{
$nickname
=
json_decode
(
$val
[
'nickname'
],
true
);
$val
[
'nickname'
]
=
$nickname
[
$this
->
lang
];
$introduce
=
json_decode
(
$val
[
'introduce'
],
true
);
$val
[
'introduce'
]
=
$introduce
[
$this
->
lang
];
}
//获取行情信息
$coin_names
=
array_column
(
$coin_infos
,
'name'
);
...
...
@@ -243,7 +245,9 @@ class CoinController extends BaseController
}
foreach
(
$result
[
'data'
]
as
$key
=>
&
$value
)
{
$nickname
=
json_decode
(
$value
[
'nickname'
],
true
);
$introduce
=
json_decode
(
$value
[
'introduce'
],
true
);
$value
[
'nickname'
]
=
$nickname
[
$this
->
lang
];
$value
[
'introduce'
]
=
$introduce
[
$this
->
lang
];
$value
[
'chain_quotation'
]
=
$chain_quotation
[
$value
[
'chain'
]]
?:
null
;
$value
[
'chain_rmb'
]
=
isset
(
$value
[
'chain_quotation'
][
'rmb'
])
?
$value
[
'chain_quotation'
][
'rmb'
]
:
0
;
$value
[
'chain_usd'
]
=
isset
(
$value
[
'chain_quotation'
][
'usd'
])
?
$value
[
'chain_quotation'
][
'usd'
]
:
0
;
...
...
api/controllers/CoinDogController.php
0 → 100644
View file @
accc1a5c
<?php
namespace
api\controllers
;
use
linslin\yii2\curl\Curl
;
use
Yii
;
use
api\base\BaseController
;
class
CoinDogController
extends
BaseController
{
public
function
actionArticle
()
{
$coindog
=
Yii
::
$app
->
params
[
'coindog'
];
$accessKey
=
$coindog
[
'accessKey'
];
$secretKey
=
$coindog
[
'secretKey'
];
$httpParams
=
array
(
'access_key'
=>
$accessKey
,
'date'
=>
time
()
);
$signParams
=
array_merge
(
$httpParams
,
array
(
'secret_key'
=>
$secretKey
));
ksort
(
$signParams
);
$signString
=
http_build_query
(
$signParams
);
$httpParams
[
'sign'
]
=
strtolower
(
md5
(
$signString
));
$url
=
$coindog
[
'article'
]
.
'?'
.
http_build_query
(
$httpParams
);
$curl
=
new
Curl
();
$resp
=
$curl
->
get
(
$url
,
false
);
return
[
'code'
=>
200
,
'data'
=>
$resp
,
'msg'
=>
'ok'
];
}
public
function
actionLive
()
{
$limit
=
Yii
::
$app
->
request
->
get
(
'limit'
,
20
);
$id
=
Yii
::
$app
->
request
->
get
(
'id'
,
0
);
$flag
=
Yii
::
$app
->
request
->
get
(
'flag'
,
'down'
);
$coindog
=
Yii
::
$app
->
params
[
'coindog'
];
$accessKey
=
$coindog
[
'accessKey'
];
$secretKey
=
$coindog
[
'secretKey'
];
$httpParams
=
array
(
'access_key'
=>
$accessKey
,
'date'
=>
time
()
);
$signParams
=
array_merge
(
$httpParams
,
array
(
'secret_key'
=>
$secretKey
));
ksort
(
$signParams
);
$signString
=
http_build_query
(
$signParams
);
$httpParams
=
[
'sign'
=>
strtolower
(
md5
(
$signString
)),
'limit'
=>
$limit
,
'id'
=>
$id
,
'flag'
=>
$flag
];
$url
=
$coindog
[
'live'
]
.
'?'
.
http_build_query
(
$httpParams
);
$curl
=
new
Curl
();
$resp
=
$curl
->
get
(
$url
,
false
);
if
(
!
isset
(
$resp
[
'list'
]))
{
$msg
=
'数据不存在'
;
$code
=
-
1
;
$data
=
null
;
goto
doEnd
;
}
$list
=
$resp
[
'list'
][
0
][
'lives'
];
foreach
(
$list
as
&
$item
)
{
preg_match_all
(
"/\【(.+?)\】/"
,
$item
[
'content'
],
$match
);
$item
[
'title'
]
=
$match
[
1
][
0
];
}
$code
=
0
;
$msg
=
'success'
;
doEnd
:
return
[
'code'
=>
$code
,
'data'
=>
$list
,
'msg'
=>
$msg
];
}
}
\ No newline at end of file
api/controllers/CrossChainController.php
View file @
accc1a5c
...
...
@@ -51,6 +51,8 @@ class CrossChainController extends BaseController
$model
=
new
CoinCrossChain
();
$data
[
'txhex'
]
=
$val
[
'tx'
];
$data
[
'transfer_url'
]
=
$val
[
'url'
];
$data
[
'step'
]
=
$val
[
'step'
];
$data
[
'amount'
]
=
isset
(
$val
[
'amount'
])
?
$val
[
'amount'
]
:
0
;
$model
->
load
(
$data
,
''
);
$model
->
save
();
}
...
...
@@ -61,12 +63,68 @@ 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
;
$msg
=
'fail'
;
$data
=
null
;
$step
=
0
;
$step
=
$amount
=
0
;
$request
=
Yii
::
$app
->
request
;
if
(
!
$request
->
isGet
)
{
$msg
=
'请求错误!'
;
...
...
@@ -83,11 +141,13 @@ 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
);
foreach
(
$model
as
$key
=>
$val
)
{
$amount
=
$val
[
'amount'
];
//未交易
if
(
'0'
==
$val
[
'send_result'
]
&&
'0'
==
$val
[
'query_result'
]
&&
'0'
==
$val
[
'msg'
])
{
$step
=
$key
+
1
;
...
...
@@ -111,7 +171,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 +179,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'
];
...
...
@@ -131,7 +191,8 @@ class CrossChainController extends BaseController
doEnd
:
$data
=
[
'step'
=>
$step
'step'
=>
$step
,
'amount'
=>
(
int
)
$amount
];
return
[
'code'
=>
$code
,
'msg'
=>
$msg
,
'data'
=>
$data
];
}
...
...
api/controllers/GameBetController.php
View file @
accc1a5c
...
...
@@ -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
();
...
...
api/controllers/ServiceController.php
View file @
accc1a5c
...
...
@@ -5,6 +5,7 @@
* Date: 2018/12/29
* Time: 16:26
*/
namespace
api\controllers
;
use
api\base\BaseController
;
...
...
@@ -34,22 +35,22 @@ class ServiceController extends BaseController
{
$request
=
Yii
::
$app
->
request
;
$coinItems
=
$request
->
post
(
'names'
);
if
(
!
$coinItems
)
{
return
[
'code'
=>
1
,
'data'
=>
[],
'msg'
=>
'币种不能为空'
];
if
(
!
$coinItems
)
{
return
[
'code'
=>
1
,
'data'
=>
[],
'msg'
=>
'币种不能为空'
];
}
if
(
!
is_array
(
$coinItems
))
{
if
(
!
is_array
(
$coinItems
))
{
$coinItems
=
[
$coinItems
];
}
$tol_coins
=
[
'ETC'
];
$tickerData
=
[];
if
(
$coinItems
)
{
foreach
(
$coinItems
as
$item
)
{
if
(
$coinItems
)
{
foreach
(
$coinItems
as
$item
)
{
$item
=
strtoupper
(
$item
);
if
(
in_array
(
$item
,
$tol_coins
))
{
if
(
in_array
(
$item
,
$tol_coins
))
{
$exchange
=
ExchangeFactory
::
createExchange
(
'HuoBi'
);
if
(
$exchange
->
symbolExists
(
$item
))
{
$quotation
=
$exchange
->
getTicker
(
$item
);
if
(
$quotation
)
{
if
(
$quotation
)
{
//格式化行情数据
foreach
(
$quotation
as
$key
=>
$value
)
{
$quotation
[
$key
]
=
(
float
)
sprintf
(
"%0.4f"
,
(
double
)
$value
);
...
...
@@ -58,7 +59,7 @@ class ServiceController extends BaseController
$quotation
[
'rmb'
]
=
(
float
)
sprintf
(
"%0.4f"
,
$rate
*
$quotation
[
'last'
]);
}
}
}
else
{
}
else
{
$quotation
=
ExchangeBusiness
::
getquatation
(
$item
);
}
if
(
!
$quotation
)
{
...
...
@@ -69,19 +70,23 @@ class ServiceController extends BaseController
$tickerData
[
$item
][
'last'
]
=
$coinServer
->
getDollar
();
$tickerData
[
$item
][
'low'
]
=
$coinServer
->
getLow
();
$tickerData
[
$item
][
'high'
]
=
$coinServer
->
getHigh
();
$tickerData
[
$item
][
'open'
]
=
$coinServer
->
getDollar
();
$tickerData
[
$item
][
'usd'
]
=
$coinServer
->
getDollar
();
$coinServer
->
__destruct
();
}
catch
(
\Exception
$exception
)
{
$tickerData
[
$item
][
'rmb'
]
=
0
;
$tickerData
[
$item
][
'last'
]
=
0
;
$tickerData
[
$item
][
'low'
]
=
0
;
$tickerData
[
$item
][
'high'
]
=
0
;
$tickerData
[
$item
][
'open'
]
=
0
;
$tickerData
[
$item
][
'usd'
]
=
0
;
\Yii
::
error
(
$exception
->
getMessage
());
}
}
else
{
}
else
{
$tickerData
[
$item
]
=
$quotation
;
}
}
return
[
'code'
=>
0
,
'data'
=>
$tickerData
,
'msg'
=>
'行情获取成功'
];
return
[
'code'
=>
0
,
'data'
=>
$tickerData
,
'msg'
=>
'行情获取成功'
];
}
}
...
...
@@ -94,13 +99,13 @@ class ServiceController extends BaseController
$platform_id
=
Yii
::
$app
->
request
->
get
(
'platform_id'
,
6
);
$type
=
Yii
::
$app
->
request
->
get
(
'type'
,
1
);
$coin_recommendItems
=
$this
->
coinRecommendList
(
$platform_id
,
$type
);
$fields
=
[
'id'
,
'sid'
,
'icon'
,
'name'
,
'nickname'
,
'chain'
,
'platform'
];
$rows
=
Coin
::
getSelectList
(
1
,
999
,
$fields
,[[
'in'
,
'id'
,
$coin_recommendItems
]]);
$fields
=
[
'id'
,
'sid'
,
'icon'
,
'name'
,
'nickname'
,
'chain'
,
'platform'
];
$rows
=
Coin
::
getSelectList
(
1
,
999
,
$fields
,
[[
'in'
,
'id'
,
$coin_recommendItems
]]);
foreach
(
$rows
[
'data'
]
as
$key
=>
&
$value
)
{
$nickname
=
json_decode
(
$value
[
'nickname'
],
true
);
$value
[
'nickname'
]
=
$nickname
[
$this
->
lang
];
}
return
[
'code'
=>
0
,
'data'
=>
$rows
,
'msg'
=>
'币种列表获取成功'
];
return
[
'code'
=>
0
,
'data'
=>
$rows
,
'msg'
=>
'币种列表获取成功'
];
}
/**
...
...
@@ -109,9 +114,9 @@ class ServiceController extends BaseController
*/
private
function
coinRecommendList
(
$platform_id
,
$type
=
1
)
{
$recommend_list
=
CoinRecommend
::
find
()
->
select
(
'cid'
)
->
where
([
'platform_id'
=>
$platform_id
,
'type'
=>
$type
])
->
all
();
if
(
$recommend_list
)
{
$coin_ids
=
array_column
(
$recommend_list
,
'cid'
);
$recommend_list
=
CoinRecommend
::
find
()
->
select
(
'cid'
)
->
where
([
'platform_id'
=>
$platform_id
,
'type'
=>
$type
])
->
all
();
if
(
$recommend_list
)
{
$coin_ids
=
array_column
(
$recommend_list
,
'cid'
);
return
$coin_ids
;
}
return
[];
...
...
@@ -125,14 +130,14 @@ class ServiceController extends BaseController
{
$request
=
Yii
::
$app
->
request
;
$coin
=
$request
->
post
(
'name'
);
if
(
!
$coin
)
{
return
[
'code'
=>
1
,
'data'
=>
[],
'msg'
=>
'币种不能为空'
];
if
(
!
$coin
)
{
return
[
'code'
=>
1
,
'data'
=>
[],
'msg'
=>
'币种不能为空'
];
}
$fee
=
MinerFee
::
find
()
->
where
([
'platform'
=>
$coin
,
'type'
=>
2
])
->
select
(
'id,platform,type,fee,create_at,update_at'
)
->
asArray
()
->
one
();
if
(
!
$fee
)
{
return
[
'code'
=>
1
,
'data'
=>
[],
'msg'
=>
'旷工费未设置'
];
$fee
=
MinerFee
::
find
()
->
where
([
'platform'
=>
$coin
,
'type'
=>
2
])
->
select
(
'id,platform,type,fee,create_at,update_at'
)
->
asArray
()
->
one
();
if
(
!
$fee
)
{
return
[
'code'
=>
1
,
'data'
=>
[],
'msg'
=>
'旷工费未设置'
];
}
return
[
'code'
=>
0
,
'data'
=>
$fee
,
'msg'
=>
'旷工费获取成功'
];
return
[
'code'
=>
0
,
'data'
=>
$fee
,
'msg'
=>
'旷工费获取成功'
];
}
/**
...
...
@@ -153,12 +158,12 @@ class ServiceController extends BaseController
public
function
actionChain
()
{
$request
=
Yii
::
$app
->
request
;
$currency
=
$request
->
post
(
'currency'
,
''
);
$currency
=
$request
->
post
(
'currency'
,
''
);
$coin
=
Coin
::
find
()
->
where
([
'name'
=>
$currency
])
->
select
(
'name,nickname,chain'
)
->
asArray
()
->
one
();
if
(
$coin
)
{
return
[
'code'
=>
0
,
'data'
=>
$coin
];
if
(
$coin
)
{
return
[
'code'
=>
0
,
'data'
=>
$coin
];
}
return
[
'code'
=>
-
1
,
'msg'
=>
'币种不存在'
];
return
[
'code'
=>
-
1
,
'msg'
=>
'币种不存在'
];
}
}
backend/controllers/CoinController.php
View file @
accc1a5c
...
...
@@ -92,7 +92,7 @@ class CoinController extends BaseController
if
(
isset
(
$data
[
'optional_name'
]))
{
$data
[
'optional_name'
]
=
strtoupper
(
$data
[
'optional_name'
]);
}
$data
[
'name'
]
=
strtoupper
(
$data
[
'name'
]
);
$data
[
'name'
]
=
strtoupper
(
trim
(
$data
[
'name'
])
);
$data
[
'platform'
]
=
strtolower
(
$data
[
'platform'
]);
$data
[
'chain'
]
=
strtoupper
(
$data
[
'chain'
]);
$lang
=
[
...
...
@@ -105,7 +105,7 @@ class CoinController extends BaseController
$nickname
=
[];
$introduce
=
[];
foreach
(
$nickname_arr
as
$key
=>
$val
)
{
$nickname
[
$lang
[
$key
]]
=
$val
;
$nickname
[
$lang
[
$key
]]
=
trim
(
$val
)
;
}
foreach
(
$introduce_arr
as
$key
=>
$val
)
{
$introduce
[
$lang
[
$key
]]
=
$val
;
...
...
common/helpers/Curl.php
View file @
accc1a5c
...
...
@@ -103,11 +103,24 @@ class Curl
*
* @return mixed response
*/
protected
$connect_timeout_ms
;
protected
$timeout_ms
;
public
function
__construct
(
$config
=
[])
{
if
(
!
empty
(
$config
))
{
$this
->
connect_timeout_ms
=
isset
(
$config
[
'connect_timeout'
])
?
$config
[
'connect_timeout'
]
:
10
;
$this
->
timeout_ms
=
isset
(
$config
[
'timeout_ms'
])
?
$config
[
'timeout_ms'
]
:
100
;
}
}
public
function
get
(
$url
,
$raw
=
true
)
{
$this
->
_baseUrl
=
$url
;
return
$this
->
_httpRequest
(
'GET'
,
$raw
);
}
/**
* Start performing HEAD-HTTP-Request
*
...
...
@@ -120,6 +133,7 @@ class Curl
$this
->
_baseUrl
=
$url
;
return
$this
->
_httpRequest
(
'HEAD'
);
}
/**
* Start performing POST-HTTP-Request
*
...
...
@@ -133,6 +147,7 @@ class Curl
$this
->
_baseUrl
=
$url
;
return
$this
->
_httpRequest
(
'POST'
,
$raw
);
}
/**
* Start performing PUT-HTTP-Request
*
...
...
@@ -146,6 +161,7 @@ class Curl
$this
->
_baseUrl
=
$url
;
return
$this
->
_httpRequest
(
'PUT'
,
$raw
);
}
/**
* Start performing PATCH-HTTP-Request
*
...
...
@@ -160,8 +176,9 @@ class Curl
$this
->
setHeaders
([
'X-HTTP-Method-Override'
=>
'PATCH'
]);
return
$this
->
_httpRequest
(
'POST'
,
$raw
);
return
$this
->
_httpRequest
(
'POST'
,
$raw
);
}
/**
* Start performing DELETE-HTTP-Request
*
...
...
@@ -175,6 +192,7 @@ class Curl
$this
->
_baseUrl
=
$url
;
return
$this
->
_httpRequest
(
'DELETE'
,
$raw
);
}
/**
* Set curl option
*
...
...
@@ -194,6 +212,7 @@ class Curl
//return self
return
$this
;
}
/**
* Set get params
*
...
...
@@ -210,6 +229,7 @@ class Curl
//return self
return
$this
;
}
/**
* Set get params
*
...
...
@@ -227,6 +247,7 @@ class Curl
//return self
return
$this
;
}
/**
* Set raw post data allows you to post any data format.
*
...
...
@@ -242,6 +263,7 @@ class Curl
//return self
return
$this
;
}
/**
* Set get params
*
...
...
@@ -259,6 +281,7 @@ class Curl
//return self
return
$this
;
}
/**
* Get URL - return URL parsed with given params
*
...
...
@@ -267,11 +290,12 @@ class Curl
public
function
getUrl
()
{
if
(
Count
(
$this
->
_getParams
)
>
0
)
{
return
$this
->
_baseUrl
.
'?'
.
http_build_query
(
$this
->
_getParams
);
return
$this
->
_baseUrl
.
'?'
.
http_build_query
(
$this
->
_getParams
);
}
else
{
return
$this
->
_baseUrl
;
}
}
/**
* Set curl options
*
...
...
@@ -284,6 +308,7 @@ class Curl
$this
->
_options
=
$options
+
$this
->
_options
;
return
$this
;
}
/**
* Set multiple headers for request.
*
...
...
@@ -298,11 +323,11 @@ class Curl
$parsedHeader
=
[];
//collect currently set headers
foreach
(
$this
->
getRequestHeaders
()
as
$header
=>
$value
)
{
array_push
(
$parsedHeader
,
$header
.
':'
.
$value
);
array_push
(
$parsedHeader
,
$header
.
':'
.
$value
);
}
//parse header into right format key:value
foreach
(
$headers
as
$header
=>
$value
)
{
array_push
(
$parsedHeader
,
$header
.
':'
.
$value
);
array_push
(
$parsedHeader
,
$header
.
':'
.
$value
);
}
//set headers
$this
->
setOption
(
...
...
@@ -312,6 +337,7 @@ class Curl
}
return
$this
;
}
/**
* Set a single header for request.
*
...
...
@@ -326,11 +352,11 @@ class Curl
$parsedHeader
=
[];
//collect currently set headers
foreach
(
$this
->
getRequestHeaders
()
as
$headerToSet
=>
$valueToSet
)
{
array_push
(
$parsedHeader
,
$headerToSet
.
':'
.
$valueToSet
);
array_push
(
$parsedHeader
,
$headerToSet
.
':'
.
$valueToSet
);
}
//add override new header
if
(
strlen
(
$header
)
>
0
)
{
array_push
(
$parsedHeader
,
$header
.
':'
.
$value
);
array_push
(
$parsedHeader
,
$header
.
':'
.
$value
);
}
//set headers
$this
->
setOption
(
...
...
@@ -339,6 +365,7 @@ class Curl
);
return
$this
;
}
/**
* Unset a single header.
*
...
...
@@ -353,7 +380,7 @@ class Curl
//collect currently set headers and filter "unset" header param.
foreach
(
$this
->
getRequestHeaders
()
as
$headerToSet
=>
$valueToSet
)
{
if
(
$header
!==
$headerToSet
)
{
array_push
(
$parsedHeader
,
$headerToSet
.
':'
.
$valueToSet
);
array_push
(
$parsedHeader
,
$headerToSet
.
':'
.
$valueToSet
);
}
}
//set headers
...
...
@@ -363,6 +390,7 @@ class Curl
);
return
$this
;
}
/**
* Get all request headers as key:value array
*
...
...
@@ -381,6 +409,7 @@ class Curl
}
return
$parsedRequestHeaders
;
}
/**
* Get specific request header as key:value array
*
...
...
@@ -394,6 +423,7 @@ class Curl
$parsedRequestHeaders
=
$this
->
getRequestHeaders
();
return
isset
(
$parsedRequestHeaders
[
$headerKey
])
?
$parsedRequestHeaders
[
$headerKey
]
:
null
;
}
/**
* Unset a single curl option
*
...
...
@@ -409,6 +439,7 @@ class Curl
}
return
$this
;
}
/**
* Unset all curl option, excluding default options.
*
...
...
@@ -422,6 +453,7 @@ class Curl
}
return
$this
;
}
/**
* Total reset of options, responses, etc.
*
...
...
@@ -449,6 +481,7 @@ class Curl
$this
->
_getParams
=
[];
return
$this
;
}
/**
* Return a single option
*
...
...
@@ -462,6 +495,7 @@ class Curl
//return value or false if key is not set.
return
isset
(
$mergesOptions
[
$key
])
?
$mergesOptions
[
$key
]
:
false
;
}
/**
* Return merged curl options and keep keys!
*
...
...
@@ -471,6 +505,7 @@ class Curl
{
return
$this
->
_options
+
$this
->
_defaultOptions
;
}
/**
* Get curl info according to http://php.net/manual/de/function.curl-getinfo.php
*
...
...
@@ -487,6 +522,7 @@ class Curl
return
[];
}
}
/**
* Performs HTTP request
*
...
...
@@ -508,8 +544,8 @@ class Curl
}
//setup error reporting and profiling
if
(
YII_DEBUG
)
{
Yii
::
trace
(
'Start sending cURL-Request: '
.
$this
->
getUrl
()
.
'\n'
,
__METHOD__
);
Yii
::
beginProfile
(
$method
.
' '
.
$this
->
_baseUrl
.
'#'
.
md5
(
serialize
(
$this
->
getOption
(
CURLOPT_POSTFIELDS
))),
__METHOD__
);
Yii
::
trace
(
'Start sending cURL-Request: '
.
$this
->
getUrl
()
.
'\n'
,
__METHOD__
);
Yii
::
beginProfile
(
$method
.
' '
.
$this
->
_baseUrl
.
'#'
.
md5
(
serialize
(
$this
->
getOption
(
CURLOPT_POSTFIELDS
))),
__METHOD__
);
}
/**
* proceed curl
...
...
@@ -517,7 +553,12 @@ class Curl
$curlOptions
=
$this
->
getOptions
();
$this
->
curl
=
curl_init
(
$this
->
getUrl
());
curl_setopt_array
(
$this
->
curl
,
$curlOptions
);
curl_setopt
(
$this
->
curl
,
CURLOPT_TIMEOUT
,
40
);
if
(
true
==
$this
->
timeout_ms
&&
true
==
$this
->
connect_timeout_ms
)
{
curl_setopt
(
$this
->
curl
,
CURLOPT_TIMEOUT_MS
,
$this
->
timeout_ms
);
curl_setopt
(
$this
->
curl
,
CURLOPT_CONNECTTIMEOUT
,
$this
->
timeout_ms
);
curl_setopt
(
$this
->
curl
,
CURLOPT_CONNECTTIMEOUT_MS
,
$this
->
connect_timeout_ms
);
}
//curl_setopt($this->curl, CURLOPT_TIMEOUT,40);
$response
=
curl_exec
(
$this
->
curl
);
//check if curl was successful
if
(
$response
===
false
)
{
...
...
@@ -547,7 +588,7 @@ class Curl
$this
->
_extractAdditionalCurlParameter
();
//end yii debug profile
if
(
YII_DEBUG
)
{
Yii
::
endProfile
(
$method
.
' '
.
$this
->
getUrl
()
.
'#'
.
md5
(
serialize
(
$this
->
getOption
(
CURLOPT_POSTFIELDS
))),
__METHOD__
);
Yii
::
endProfile
(
$method
.
' '
.
$this
->
getUrl
()
.
'#'
.
md5
(
serialize
(
$this
->
getOption
(
CURLOPT_POSTFIELDS
))),
__METHOD__
);
}
//check responseCode and return data/status
if
(
$this
->
getOption
(
CURLOPT_CUSTOMREQUEST
)
===
'HEAD'
)
{
...
...
@@ -557,10 +598,11 @@ class Curl
return
$this
->
response
;
}
}
/**
* Extract additional curl params protected class helper
*/
protected
function
_extractAdditionalCurlParameter
()
protected
function
_extractAdditionalCurlParameter
()
{
/**
* retrieve response code
...
...
@@ -581,27 +623,29 @@ class Curl
* try extract response length
*/
$this
->
responseLength
=
curl_getinfo
(
$this
->
curl
,
CURLINFO_CONTENT_LENGTH_DOWNLOAD
);
if
((
int
)
$this
->
responseLength
==
-
1
)
{
if
((
int
)
$this
->
responseLength
==
-
1
)
{
$this
->
responseLength
=
strlen
(
$this
->
response
);
}
}
/**
* Extract body curl data from response
*
* @param string $response
* @return string
*/
protected
function
_extractCurlBody
(
$response
)
protected
function
_extractCurlBody
(
$response
)
{
return
substr
(
$response
,
$this
->
getInfo
(
CURLINFO_HEADER_SIZE
));
}
/**
* Extract header curl data from response
*
* @param string $response
* @return array
*/
protected
function
_extractCurlHeaders
(
$response
)
protected
function
_extractCurlHeaders
(
$response
)
{
//Init
$headers
=
[];
...
...
common/models/psources/CoinCrossChain.php
View file @
accc1a5c
...
...
@@ -10,6 +10,9 @@ class CoinCrossChain extends BaseActiveRecord
const
WITHDRAW
=
0
;
const
RECHARGE
=
1
;
const
CROSS_CHAIN_TRANSFERING
=
'cross_chain_transfering'
;
const
CROSS_CHAIN_CACHE_FAIL
=
'cross_chain_fail'
;
public
static
function
getDb
()
{
return
Yii
::
$app
->
get
(
'p_sources'
);
...
...
@@ -28,14 +31,14 @@ class CoinCrossChain extends BaseActiveRecord
{
return
[
[[
'is_with_draw'
,
'address'
,
'txhex'
,
'transfer_url'
],
'required'
],
[
'transfer_number'
,
'safe'
]
[
[
'transfer_number'
,
'amount'
,
'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'
,
'amount'
,
'step'
,
'send_result'
,
'query_result'
,
'msg'
],
];
return
array_merge
(
parent
::
scenarios
(),
$scenarios
);
}
...
...
common/service/chain33/Chain33Service.php
View file @
accc1a5c
...
...
@@ -20,7 +20,7 @@ class Chain33Service
public
function
__construct
(
$parameter
=
[])
{
if
(
empty
(
$parameter
))
{
if
(
empty
(
$parameter
))
{
$this
->
node_params
=
Yii
::
$app
->
params
[
'chain33'
];
}
else
{
$this
->
node_params
=
$parameter
;
...
...
@@ -56,7 +56,11 @@ class Chain33Service
public
function
send
(
$params
=
[],
$method
=
'Chain33.Query'
)
{
$ch
=
new
Curl
();
$timeout
=
[
'connect_timeout'
=>
50000
,
'timeout_ms'
=>
40000
];
$ch
=
new
Curl
(
$timeout
);
$jsonrpc
=
self
::
jsonRpcBuild
(
$params
,
$method
);
$ch
->
setHeader
(
'Content-Type'
,
'application/json'
);
$ch
->
setRawPostData
(
$jsonrpc
);
...
...
@@ -203,7 +207,7 @@ class Chain33Service
return
$this
->
send
(
$params
,
'Chain33.CreateRawTransaction'
);
}
public
function
createRawTransaction
(
$to
,
$amount
,
$fee
,
$note
,
$execer
)
public
function
createRawTransaction
(
$to
,
$amount
,
$fee
,
$note
,
$execer
)
{
$params
=
[
"to"
=>
$to
,
...
...
@@ -294,6 +298,15 @@ class Chain33Service
return
$this
->
send
(
$params
,
'Chain33.SignRawTx'
);
}
public
function
getBlock2MainInfo
(
$start
,
$end
)
{
$params
=
[
"Start"
=>
$start
,
"End"
=>
$end
,
];
return
$this
->
send
(
$params
,
'paracross.GetBlock2MainInfo'
);
}
public
function
sendTrade
(
$data
)
{
$params
=
[
...
...
@@ -302,6 +315,14 @@ class Chain33Service
return
$this
->
send
(
$params
,
'Chain33.SendTransaction'
);
}
public
function
getHeight
(
$params
=
[])
{
$params
=
[
"data"
=>
'user.p.game.'
,
];
return
$this
->
send
(
$params
,
'paracross.GetHeight'
);
}
/**
* 获取最新的区块
*/
...
...
console/controllers/CrossChainController.php
View file @
accc1a5c
...
...
@@ -14,14 +14,17 @@ class CrossChainController extends Controller
*
* @return array
*/
public
function
actionAutoTransfer
()
public
function
actionAutoTransfer
(
$step
,
$is_with_draw
)
{
$model
=
CoinCrossChain
::
find
()
->
where
([
'send_result'
=>
"0"
])
->
limit
(
20
)
->
groupBy
(
'transfer_number'
)
->
orderBy
(
'id'
)
->
asArray
()
->
all
();
$redis
=
Yii
::
$app
->
redis
;
$model
=
CoinCrossChain
::
find
()
->
where
([
'send_result'
=>
"0"
,
'step'
=>
(
int
)
$step
,
'is_with_draw'
=>
(
int
)
$is_with_draw
,
'query_result'
=>
'0'
])
->
asArray
()
->
all
();
if
(
empty
(
$model
))
{
echo
date
(
'Y-m-d H:i:s'
)
.
'暂无跨链交易计划'
.
PHP_EOL
;
echo
date
(
'Y-m-d H:i:s'
)
.
'
STEP: '
.
$step
.
'
暂无跨链交易计划'
.
PHP_EOL
;
return
0
;
}
$current_time
=
time
();
foreach
(
$model
as
$val
)
{
if
(
$step
>
1
)
{
$isExist
=
CoinCrossChain
::
find
()
->
where
([
'transfer_number'
=>
$val
[
'transfer_number'
]])
->
andWhere
([
'<'
,
'id'
,
(
int
)
$val
[
'id'
]])
...
...
@@ -32,53 +35,74 @@ class CrossChainController extends Controller
if
(
'success'
!=
$isExist
[
'query_result'
]
&&
!
empty
(
$isExist
))
{
continue
;
}
}
$cache_transfering_time
=
$redis
->
hget
(
CoinCrossChain
::
CROSS_CHAIN_TRANSFERING
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]
.
':'
.
$val
[
'id'
]);
if
(
true
==
$cache_transfering_time
)
{
continue
;
}
$redis
->
hmset
(
CoinCrossChain
::
CROSS_CHAIN_TRANSFERING
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]
.
':'
.
$val
[
'id'
],
$current_time
);
//go(function () use ($val
) {
//
\Co::sleep(0.5);
go
(
function
()
use
(
$val
,
$redis
)
{
\Co
::
sleep
(
0.5
);
$transfer_url
=
$val
[
'transfer_url'
];
$transfer_url
=
explode
(
':'
,
$transfer_url
);
$node_params
=
[
'scheme'
=>
$transfer_url
[
0
],
'host'
=>
str_replace
(
'//'
,
''
,
$transfer_url
[
1
]),
'port'
=>
isset
(
$transfer_url
[
2
])
?
$transfer_url
[
2
]
:
''
'port'
=>
isset
(
$transfer_url
[
2
])
?
$transfer_url
[
2
]
:
''
,
];
$service
=
new
Chain33Service
(
$node_params
);
$sign_str
=
$val
[
'txhex'
];
$result
=
$service
->
sendTransaction
(
$sign_str
);
if
(
0
!=
$result
[
'code'
])
{
$msg
=
$result
[
'msg'
];
goto
doEnd
;
}
if
(
0
==
$result
[
'code'
])
{
$send_result
=
$result
[
'result'
];
doEnd
:
$currentModel
=
CoinCrossChain
::
findOne
(
$val
[
'id'
]);
if
(
isset
(
$msg
))
{
$currentModel
->
msg
=
$msg
;
}
if
(
isset
(
$send_result
))
{
$currentModel
->
send_result
=
$send_result
;
$currentModel
->
msg
=
0
;
$currentModel
->
save
();
$redis
->
hdel
(
CoinCrossChain
::
CROSS_CHAIN_TRANSFERING
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]
.
':'
.
$val
[
'id'
]);
}
if
(
0
!=
$result
[
'code'
]
&&
(
true
==
strstr
(
$result
[
'msg'
],
'Balance'
)))
{
$currentModel
=
CoinCrossChain
::
findOne
(
$val
[
'id'
]);
$currentModel
->
msg
=
$result
[
'msg'
];
$currentModel
->
save
();
$redis
->
hdel
(
CoinCrossChain
::
CROSS_CHAIN_TRANSFERING
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]
.
':'
.
$val
[
'id'
]);
}
else
if
(
0
!=
$result
[
'code'
]
&&
(
false
==
strstr
(
$result
[
'msg'
],
'ErrDupTx'
)))
{
$redis
->
hdel
(
CoinCrossChain
::
CROSS_CHAIN_TRANSFERING
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]
.
':'
.
$val
[
'id'
]);
}
else
{
//});
}
echo
date
(
'Y-m-d H:i:s'
)
.
'跨链交易成功'
.
PHP_EOL
;
});
}
echo
date
(
'Y-m-d H:i:s'
)
.
' STEP: '
.
$step
.
'跨链交易成功'
.
PHP_EOL
;
return
0
;
}
public
function
actionQueryTransaction
()
{
$model
=
CoinCrossChain
::
find
()
->
where
([
'<>'
,
'send_result'
,
'0'
])
->
andWhere
([
'msg'
=>
'0'
])
->
limit
(
20
)
->
asArray
()
->
all
();
$redis
=
Yii
::
$app
->
redis
;
$model
=
CoinCrossChain
::
find
()
->
where
([
'<>'
,
'send_result'
,
'0'
])
->
andWhere
([
'msg'
=>
'0'
])
->
asArray
()
->
all
();
if
(
empty
(
$model
))
{
echo
date
(
'Y-m-d H:i:s'
)
.
'暂无跨链交易计划'
.
PHP_EOL
;
return
0
;
}
//查询共识高度
$node_params
=
[
'scheme'
=>
'https'
,
'host'
=>
'jiedian1.bityuan.com'
,
'port'
=>
8801
];
$service
=
new
Chain33Service
(
$node_params
);
$result
=
$service
->
getHeight
();
$consensHeight
=
$result
[
'result'
][
'consensHeight'
];
$current_time
=
time
();
foreach
(
$model
as
$val
)
{
$node_params
=
$val
[
'transfer_url'
];
$node_params
=
explode
(
':'
,
$node_params
);
...
...
@@ -90,30 +114,53 @@ class CrossChainController extends Controller
$service
=
new
Chain33Service
(
$node_params
);
$send_result
=
$val
[
'send_result'
];
$result
=
$service
->
QueryTransaction
(
$send_result
);
if
(
-
1
==
$result
[
'code'
])
{
if
(
'tx not exist'
==
$result
[
'msg'
])
continue
;
$msg
=
$result
[
'msg'
];
$query_result
=
$result
[
'code'
];
goto
doEnd
;
// echo date('Y-m-d H:i:s') . 'ID:' . $val['id'] . '查询错误' . PHP_EOL;
// continue;
}
$switch
=
true
;
if
(
isset
(
$result
[
'result'
][
'actionName'
])
&&
'unknown'
==
$result
[
'result'
][
'actionName'
])
{
$redis
->
hdel
(
CoinCrossChain
::
CROSS_CHAIN_CACHE_FAIL
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]);
$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
(
CoinCrossChain
::
CROSS_CHAIN_CACHE_FAIL
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]);
$query_result
=
'success'
;
$msg
=
'success'
;
$height
=
isset
(
$result
[
'result'
][
'height'
])
?
$result
[
'result'
][
'height'
]
:
0
;
goto
doEnd
;
}
else
{
$cache_error_time
=
$redis
->
hget
(
CoinCrossChain
::
CROSS_CHAIN_CACHE_FAIL
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]);
if
(
false
==
$cache_error_time
)
{
$redis
->
hmset
(
CoinCrossChain
::
CROSS_CHAIN_CACHE_FAIL
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
],
$current_time
);
continue
;
}
if
((
$current_time
-
$cache_error_time
)
<
60
)
{
continue
;
}
$redis
->
hdel
(
CoinCrossChain
::
CROSS_CHAIN_CACHE_FAIL
,
$val
[
'address'
]
.
':'
.
$val
[
'is_with_draw'
]);
if
(
-
1
==
$result
[
'code'
])
{
$msg
=
$result
[
'msg'
];
$query_result
=
$result
[
'code'
];
$switch
=
false
;
goto
doEnd
;
}
else
{
$query_result
=
'fail'
;
foreach
(
$result
[
'result'
][
'receipt'
][
'logs'
]
as
$log
)
{
if
(
is_array
(
$log
[
'log'
]))
continue
;
$msg
=
isset
(
$log
[
'log'
])
?
$log
[
'log'
]
:
'查询错误'
;
}
$switch
=
false
;
goto
doEnd
;
}
}
doEnd
:
if
(
CoinCrossChain
::
RECHARGE
==
$val
[
'is_with_draw'
]
&&
$val
[
'step'
]
==
2
&&
$switch
&&
isset
(
$height
)
&&
(
$consensHeight
<
$height
))
{
continue
;
}
$currentModel
=
CoinCrossChain
::
findOne
(
$val
[
'id'
]);
$currentModel
->
query_result
=
$query_result
;
$currentModel
->
msg
=
$msg
;
...
...
@@ -121,7 +168,6 @@ class CrossChainController extends Controller
$count
=
CoinCrossChain
::
find
()
->
where
([
'transfer_number'
=>
$val
[
'transfer_number'
]])
->
andWhere
([
'query_result'
=>
'success'
])
->
count
();
if
(
3
==
$count
)
{
$redis
=
Yii
::
$app
->
redis
;
$key
=
$val
[
'address'
]
.
'_'
.
$val
[
'is_with_draw'
];
if
(
$redis
->
exists
(
$key
))
{
$redis
->
del
(
$key
);
...
...
console/controllers/GameBetController.php
View file @
accc1a5c
...
...
@@ -4,6 +4,7 @@ namespace console\controllers;
use
common\business\Chain33Business
;
use
common\models\psources\CoinGameBet
;
use
common\service\chain33\Chain33Service
;
use
yii\console\Controller
;
use
Yii
;
...
...
@@ -17,47 +18,46 @@ class GameBetController extends Controller
public
function
actionGameStatus
()
{
$nodes
=
\Yii
::
$app
->
params
[
'chain_parallel'
][
'wasm'
];
if
(
empty
(
$nodes
))
{
echo
date
(
'Y-m-d H:i:s'
)
.
'无节点'
.
PHP_EOL
;
if
(
empty
(
$nodes
))
{
echo
date
(
'Y-m-d H:i:s'
)
.
'无节点'
.
PHP_EOL
;
return
0
;
}
foreach
(
$nodes
as
$key
=>
$node
)
{
$service
=
new
Chain33Business
();
$result
=
$service
->
getGameStatus
(
$node
);
if
(
0
!==
$result
[
'code'
])
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
$result
[
'msg'
]
.
PHP_EOL
;
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
$result
[
'msg'
]
.
PHP_EOL
;
continue
;
}
$queryResultItems
=
$result
[
'result'
]
??
[];
if
(
empty
(
$queryResultItems
))
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'error'
.
PHP_EOL
;
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'error'
.
PHP_EOL
;
continue
;
}
$resultJSON
=
json_decode
(
$queryResultItems
[
'queryResultItems'
][
0
][
'resultJSON'
],
true
);
$current_round
=
$resultJSON
[
'current_round'
];
$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
))
{
$cache_current_round
=
CoinGameBet
::
find
()
->
where
([
'platform'
=>
$key
])
->
max
(
'round'
);
Yii
::
$app
->
redis
->
set
(
'chain33_game_bet_status_'
.
$key
,
$cache_current_round
,
'EX'
,
300
);
Yii
::
$app
->
redis
->
set
(
'chain33_game_bet_status_'
.
$key
,
$cache_current_round
,
'EX'
,
300
);
}
$cache_current_round
=
(
false
==
$cache_current_round
?
0
:
$cache_current_round
);
if
(
$cache_current_round
>=
$current_round
)
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据已为最新'
.
PHP_EOL
;
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据已为最新'
.
PHP_EOL
;
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
);
$result
=
$service
->
getBetStatus
(
$cache_current_round
,
$current_round
,
''
,
$node
);
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
;
continue
;
}
$queryResultItems
=
$result
[
'result'
]
??
[];
if
(
empty
(
$queryResultItems
))
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据错误'
.
PHP_EOL
;
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据错误'
.
PHP_EOL
;
continue
;
}
$platform
=
$key
;
...
...
@@ -69,7 +69,7 @@ class GameBetController extends Controller
];
}
CoinGameBet
::
loadArray
(
$datas
);
echo
$platform
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据更新成功'
.
PHP_EOL
;
echo
$platform
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据更新成功'
.
PHP_EOL
;
continue
;
}
return
0
;
...
...
@@ -77,44 +77,66 @@ class GameBetController extends Controller
public
function
actionBetUpdate
()
{
$service
=
new
Chain33Business
();
$node_params
=
[
'scheme'
=>
'https'
,
'host'
=>
'jiedian1.bityuan.com'
,
'port'
=>
8801
];
$result
=
$service
->
getLastHeader
(
$node_params
);
$main_height
=
isset
(
$result
[
'result'
][
'height'
])
?
$result
[
'result'
][
'height'
]
:
0
;
$safe_main_height
=
$main_height
-
14
;
$nodes
=
\Yii
::
$app
->
params
[
'chain_parallel'
][
'wasm'
];
if
(
empty
(
$nodes
))
{
echo
date
(
'Y-m-d H:i:s'
)
.
'无节点'
.
PHP_EOL
;
if
(
empty
(
$nodes
))
{
echo
date
(
'Y-m-d H:i:s'
)
.
'无节点'
.
PHP_EOL
;
return
0
;
}
foreach
(
$nodes
as
$key
=>
$node
)
{
$service
=
new
Chain33
Business
(
);
$result
=
$service
->
getLastHeader
(
$node
);
$service
=
new
Chain33
Service
(
$node
);
$result
=
$service
->
getLastHeader
(
);
$height
=
$result
[
'result'
][
'height'
];
$main_info
=
$service
->
getBlock2MainInfo
(
$height
-
14
,
$height
);
if
(
!
isset
(
$main_info
[
'result'
][
'items'
]))
continue
;
$items
=
$main_info
[
'result'
][
'items'
];
$items
=
$this
->
arraySort
(
$items
,
'mainHeight'
);
$safe_height
=
0
;
foreach
(
$items
as
$item
)
{
if
(
$safe_main_height
>
$item
[
'mainHeight'
])
{
$safe_height
=
$item
[
'height'
];
break
;
}
}
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'当前主链高度为:'
.
$main_height
.
';当前平行链高度为:'
.
$height
.
';当前安全高度为:'
.
$safe_height
.
PHP_EOL
;
$models
=
CoinGameBet
::
find
()
->
select
(
'round'
)
->
where
([
'and'
,
[
'valid'
=>
CoinGameBet
::
VAILD_FALSE
],
[
'<'
,
'height'
,
$
height
-
12
],
[
'<'
,
'height'
,
$
safe_height
],
[
'platform'
=>
$key
]
])
->
all
();
if
(
empty
(
$models
))
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'无需更新的数据'
.
PHP_EOL
;
if
(
empty
(
$models
))
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'无需更新的数据'
.
PHP_EOL
;
continue
;
}
$valid_arr
=
[];
foreach
(
$models
as
$model
)
{
$valid_arr
[]
=
$model
->
round
;
}
$result
=
$service
->
getBetStatus
(
''
,
''
,
$valid_arr
,
$node
);
if
(
0
!==
$result
[
'code'
]){
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据错误'
.
PHP_EOL
;
$business
=
new
Chain33Business
();
$result
=
$business
->
getBetStatus
(
''
,
''
,
$valid_arr
,
$node
);
if
(
0
!==
$result
[
'code'
])
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据错误'
.
PHP_EOL
;
continue
;
}
$queryResultItems
=
$result
[
'result'
]
??
[];
if
(
empty
(
$queryResultItems
))
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据错误'
.
PHP_EOL
;
if
(
empty
(
$queryResultItems
))
{
echo
$key
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据错误'
.
PHP_EOL
;
continue
;
}
$platform
=
$key
;
foreach
(
$queryResultItems
[
'queryResultItems'
]
as
$key
=>
$val
){
foreach
(
$queryResultItems
[
'queryResultItems'
]
as
$key
=>
$val
)
{
if
(
false
==
$val
[
'found'
])
continue
;
$resultArr
=
json_decode
(
$val
[
'resultJSON'
],
true
);
$resultArr
=
json_decode
(
$val
[
'resultJSON'
],
true
);
CoinGameBet
::
updateAll
([
'amount'
=>
$resultArr
[
'amount'
],
'height'
=>
$resultArr
[
'height'
],
...
...
@@ -122,14 +144,25 @@ class GameBetController extends Controller
'rand_num'
=>
$resultArr
[
'rand_num'
],
'player_win'
=>
$resultArr
[
'player_win'
],
'valid'
=>
CoinGameBet
::
VAILD_TRUE
],[
],
[
'round'
=>
$resultArr
[
'round'
],
'platform'
=>
$platform
]);
}
echo
$platform
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据更新成功'
.
PHP_EOL
;
echo
$platform
.
':'
.
date
(
'Y-m-d H:i:s'
)
.
'数据更新成功'
.
PHP_EOL
;
continue
;
}
return
0
;
}
protected
function
arraySort
(
$array
,
$keys
,
$sort
=
SORT_DESC
)
{
$keysValue
=
[];
foreach
(
$array
as
$k
=>
$v
)
{
$keysValue
[
$k
]
=
$v
[
$keys
];
}
array_multisort
(
$keysValue
,
$sort
,
$array
);
return
$array
;
}
}
\ No newline at end of file
shell/AutoTransfer.sh
deleted
100644 → 0
View file @
cf53079d
#!/bin/bash
while
true
;
do
php /var/www/html/token_pwallet/yii cross-chain/auto-transfer
>>
/var/www/html/auto-transfer.log 2>&1
;
sleep
15
;
done
&
\ No newline at end of file
shell/GameBet.sh
deleted
100644 → 0
View file @
cf53079d
#!/bin/bash
while
true
;
do
php /var/www/html/token_pwallet/yii game-bet/game-status
>>
/var/log/game-bet.log 2>&1
;
sleep
5
;
done
&
\ No newline at end of file
shell/QueryTransaction.sh
deleted
100644 → 0
View file @
cf53079d
#!/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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment