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
7708aabe
Commit
7708aabe
authored
Oct 18, 2018
by
rlgy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提币审核不通过,账单里全部和提币两栏仍然记录这一笔,状态显示成功
parent
d4603e13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
189 additions
and
57 deletions
+189
-57
CoinReleaseCheckController.php
backend/controllers/CoinReleaseCheckController.php
+0
-0
CoinReleaseCheck.php
common/models/psources/CoinReleaseCheck.php
+127
-32
GuodunController.php
h5/controllers/GuodunController.php
+62
-25
No files found.
backend/controllers/CoinReleaseCheckController.php
View file @
7708aabe
This diff is collapsed.
Click to expand it.
common/models/psources/CoinReleaseCheck.php
View file @
7708aabe
...
...
@@ -10,11 +10,14 @@ namespace common\models\psources;
use
common\core\BaseActiveRecord
;
use
Yii
;
use
common\business\Chain33Business
;
use
backend\jobs\QueryTransJob
;
/**
* @property integer $id
* @property integer $uid
* @property integer $mid
* @property integer $list_id
* @property string $mobile
* @property string $coin
* @property double $amount
...
...
@@ -70,6 +73,7 @@ class CoinReleaseCheck extends BaseActiveRecord
return
[
'id'
=>
'ID'
,
'uid'
=>
'UID'
,
'list_id'
=>
'记录ID'
,
'mobile'
=>
'手机'
,
'coin'
=>
'币种'
,
'to_address'
=>
'对方地址'
,
...
...
@@ -89,46 +93,137 @@ class CoinReleaseCheck extends BaseActiveRecord
{
return
[
self
::
SCENARIOS_CHECK
=>
[
'coin'
,
'start_time'
,
'end_time'
,
'mobile'
],
self
::
SCENARIOS_SEARCH
=>
[
'status'
,
'coin'
,
'check_first_uid'
,
'check_second_uid'
,
'start_time'
,
'end_time'
,
'mobile'
],
self
::
SCENARIOS_SEARCH
=>
[
'status'
,
'coin'
,
'check_first_uid'
,
'check_second_uid'
,
'start_time'
,
'end_time'
,
'mobile'
],
];
}
public
function
rules
()
{
return
[
[
[
'id'
,
'uid'
,
'check_first_status'
,
'check_first_uid'
,
'check_second_status'
,
'check_second_uid'
,
'status'
],
'integer'
],
[
[
'mobile'
,
'coin'
,
'to_address'
,
'create_time'
,
'update_time'
,
'start_time'
,
'end_time'
],
'string'
,
'max'
=>
255
],
[[
'id'
,
'uid'
,
'check_first_status'
,
'check_first_uid'
,
'check_second_status'
,
'check_second_uid'
,
'status'
,
'list_id'
],
'integer'
],
[[
'mobile'
,
'coin'
,
'to_address'
,
'create_time'
,
'update_time'
,
'start_time'
,
'end_time'
],
'string'
,
'max'
=>
255
],
[[
'end_time'
],
'compare'
,
'compareAttribute'
=>
'start_time'
,
'operator'
=>
'>='
,
'skipOnEmpty'
=>
true
],
[[
'coin'
,
'start_time'
,
'end_time'
,
'mobile'
],
'default'
,
'value'
=>
''
,
'on'
=>
self
::
SCENARIOS_CHECK
],
[
[
'status'
,
'coin'
,
'check_first_uid'
,
'check_second_uid'
,
'start_time'
,
'end_time'
,
'mobile'
],
'default'
,
'value'
=>
''
,
'on'
=>
self
::
SCENARIOS_SEARCH
],
[[
'status'
,
'coin'
,
'check_first_uid'
,
'check_second_uid'
,
'start_time'
,
'end_time'
,
'mobile'
],
'default'
,
'value'
=>
''
,
'on'
=>
self
::
SCENARIOS_SEARCH
],
];
}
/**
* 初审
*
* @param int $status
* @throws \Exception
* @return bool
*/
public
function
check_first
(
int
$status
)
{
if
(
$this
->
check_second_status
!=
CoinReleaseCheck
::
CHECK_SECOND_STATUS_NORMAL
)
{
throw
new
\Exception
(
'已经复核的申请不允许初审'
,
-
1
);
}
if
(
self
::
CHECK_FIRST_STATUS_FAILD
==
$status
)
{
$this
->
check_first_status
=
$status
;
return
$this
->
check_cancel
();
}
else
{
$this
->
check_first_uid
=
Yii
::
$app
->
user
->
id
;
$this
->
check_first_status
=
$status
;
return
$this
->
save
();
}
}
/**
* @param int $status
* @param string $address 提币地址
* @throws \Exception
* @return bool
*/
public
function
check_second
(
int
$status
,
string
$address
=
''
)
{
if
(
self
::
CHECK_FIRST_STATUS_SUCCEED
!=
$this
->
check_first_status
)
{
throw
new
\Exception
(
'初审未通过!'
,
-
1
);
}
if
(
CoinReleaseCheck
::
CHECK_SECOND_STATUS_FAILD
==
$status
)
{
$this
->
check_second_status
=
$status
;
return
$this
->
check_cancel
();
}
else
{
//开启事务
$trans
=
self
::
getDb
()
->
beginTransaction
();
try
{
$this
->
check_second_uid
=
Yii
::
$app
->
user
->
id
;
$this
->
check_second_status
=
$status
;
$this
->
status
=
self
::
STATUS_PADDING
;
if
(
$this
->
save
(
false
))
{
//区块链转币
if
(
strtoupper
(
$this
->
coin
)
==
'BTY'
)
{
$isToken
=
false
;
}
else
{
$isToken
=
true
;
}
$result
=
Chain33Business
::
transToken
(
trim
(
$address
),
trim
(
$this
->
to_address
),
(
int
)
$this
->
amount
,
"锁仓释放"
,
$isToken
,
$this
->
coin
);
if
(
is_array
(
$result
))
{
$trans
->
rollBack
();
throw
new
\Exception
(
$result
[
'msg'
],
$result
[
'code'
]);
}
$trans
->
commit
();
Yii
::
$app
->
queue
->
delay
(
15
)
->
push
(
new
QueryTransJob
([
'txhash'
=>
$result
,
'lid'
=>
$this
->
list_id
,
'cid'
=>
$this
->
id
]));
return
true
;
}
else
{
throw
new
\Exception
(
'修改审核状态失败'
,
-
1
);
}
}
catch
(
\Exception
$exception
)
{
throw
$exception
;
}
}
}
/**
* 提币审核撤提
*
* @return bool
* @throws \Exception
*/
public
function
check_cancel
()
{
//开启事务
$trans
=
self
::
getDb
()
->
beginTransaction
();
try
{
$this
->
status
=
self
::
STATUS_CANCEL
;
if
(
empty
(
$this
->
check_first_uid
))
{
$this
->
check_first_uid
=
Yii
::
$app
->
user
->
id
;
}
if
(
empty
(
$this
->
check_second_uid
))
{
$this
->
check_second_uid
=
Yii
::
$app
->
user
->
id
;
}
if
(
$this
->
save
(
false
))
{
//修改提币记录
$coin_release_list
=
CoinReleaseList
::
findOne
(
$this
->
list_id
);
if
(
$coin_release_list
)
{
$coin_release_list
->
status
=
2
;
//提币失败
if
(
$coin_release_list
->
save
(
false
))
{
$trans
->
commit
();
return
true
;
}
else
{
throw
new
\Exception
(
'修改提币记录失败'
,
-
1
);
}
}
else
{
throw
new
\Exception
(
'获取提币记录失败'
,
-
1
);
}
}
else
{
throw
new
\Exception
(
'修改审核状态失败'
,
-
1
);
}
}
catch
(
\Exception
$exception
)
{
$trans
->
rollBack
();
throw
$exception
;
}
}
}
h5/controllers/GuodunController.php
View file @
7708aabe
...
...
@@ -18,6 +18,7 @@ use h5\base\ResponseBuild;
use
Yii
;
use
h5\base\BaseController
;
use
common\business\ZhaobiBusiness
;
use
common\models\psources\CoinPublish
;
class
GuodunController
extends
BaseController
{
...
...
@@ -84,36 +85,72 @@ class GuodunController extends BaseController
return
$response
;
}
$user_asset
=
CoinReleaseMember
::
findOne
([
$id
]);
//判断余额师傅充足
if
(
$user_asset
->
release
<
$amount
*
1e8
)
{
$response
->
build
(
-
1
,
'余额不足!'
);
return
$response
;
}
//添加提币申请
$request_coin
=
new
CoinReleaseCheck
();
$request_coin
->
uid
=
$user_asset
->
user_id
;
$request_coin
->
mid
=
$id
;
$request_coin
->
mobile
=
$user_asset
->
mobile
;
$request_coin
->
amount
=
$amount
*
1e8
;
$request_coin
->
coin
=
$user_asset
->
coin
;
$request_coin
->
to_address
=
$address
;
$request_coin
->
company_name
=
$user_asset
->
company_name
;
//记录提笔数据
// $user_asset->release -= ($amount * 1e8);
// $user_asset->output += $amount * 1e8;
//开启事务
$transaction
=
Yii
::
$app
->
db
->
beginTransaction
();
try
{
$trans
=
CoinReleaseMember
::
getDb
()
->
beginTransaction
();
if
(
$request_coin
->
save
())
{
$trans
->
commit
();
$response
->
build
(
ResponseBuild
::
STATUS_SUCCEED
);
$user_asset
=
CoinReleaseMember
::
findOne
([
$id
]);
if
(
!
$user_asset
)
{
throw
new
\Exception
(
'资产不存在'
,
-
1
);
}
//判断余额是否充足
$amount
*=
1e8
;
if
(
$user_asset
->
release
<
$amount
)
{
throw
new
\Exception
(
'余额不足'
,
-
1
);
}
//添加提币申请
$request_coin
=
new
CoinReleaseCheck
();
$request_coin
->
uid
=
$user_asset
->
user_id
;
$request_coin
->
mid
=
$id
;
$request_coin
->
mobile
=
$user_asset
->
mobile
;
$request_coin
->
amount
=
$amount
;
$request_coin
->
coin
=
$user_asset
->
coin
;
$request_coin
->
to_address
=
$address
;
$request_coin
->
company_name
=
$user_asset
->
company_name
;
//减少用户资产
$user_asset
->
release
-=
$amount
;
$user_asset
->
output
+=
$amount
;
//获取发币地址
$from
=
''
;
$coin_publish_rule
=
CoinPublishRule
::
findOne
(
$user_asset
->
rule_id
);
if
(
$coin_publish_rule
)
{
$coin_publish
=
CoinPublish
::
findOne
(
$coin_publish_rule
->
pid
);
if
(
$coin_publish
)
{
$from
=
$coin_publish
->
address
;
}
}
if
(
empty
(
$from
))
{
throw
new
\Exception
(
'获取发币地址失败'
,
-
1
);
}
//添加提币记录
$coin_release_list
=
new
CoinReleaseList
();
$coin_release_list
->
mid
=
$id
;
$coin_release_list
->
uid
=
$user_asset
->
user_id
;
$coin_release_list
->
mobile
=
$user_asset
->
mobile
;
$coin_release_list
->
amount
=
$amount
;
$coin_release_list
->
coin
=
$user_asset
->
coin
;
$coin_release_list
->
type
=
1
;
$coin_release_list
->
from
=
$from
;
$coin_release_list
->
to
=
$address
;
$coin_release_list
->
status
=
3
;
//未完成
if
(
$user_asset
->
save
(
false
))
{
if
(
$coin_release_list
->
save
())
{
$request_coin
->
list_id
=
$coin_release_list
->
id
;
if
(
$request_coin
->
save
())
{
$transaction
->
commit
();
$response
->
build
(
ResponseBuild
::
STATUS_SUCCEED
);
}
else
{
throw
new
\Exception
(
'保存提币申请失败'
,
-
1
);
}
}
else
{
throw
new
\Exception
(
'保存提币记录失败'
,
-
1
);
}
}
else
{
$trans
->
rollBack
();
$response
->
build
(
ResponseBuild
::
STATUS_INTERNAL_ERROR
);
throw
new
\Exception
(
'提币失败'
,
-
1
);
}
}
catch
(
\Exception
$exception
)
{
$transaction
->
rollBack
();
$response
->
build
(
$exception
->
getCode
(),
$exception
->
getMessage
());
}
//记录提币申请
...
...
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