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
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
225 additions
and
167 deletions
+225
-167
CoinReleaseCheckController.php
backend/controllers/CoinReleaseCheckController.php
+36
-110
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
...
...
@@ -156,126 +156,52 @@ class CoinReleaseCheckController extends BaseController
if
(
CoinReleaseCheck
::
STATUS_NORMAL
!=
$model
->
status
)
{
return
[
'code'
=>
-
1
,
'msg'
=>
'不允许进行审核!'
];
}
if
(
self
::
STEP_CHECK_FIRST
==
$step
)
{
//初审
if
(
$model
->
check_second_status
!=
CoinReleaseCheck
::
CHECK_SECOND_STATUS_NORMAL
)
{
return
[
'code'
=>
-
1
,
'msg'
=>
'已经复核的申请不允许初审!'
];
}
$model
->
check_first_uid
=
Yii
::
$app
->
user
->
id
;
$model
->
check_first_status
=
$status
;
if
(
$model
->
check_first_status
==
CoinReleaseCheck
::
CHECK_FIRST_STATUS_FAILD
)
{
$message
=
'操作成功! 该申请已被撤提'
;
$model
->
status
=
CoinReleaseCheck
::
STATUS_CANCEL
;
}
if
(
$model
->
save
())
{
if
(
$model
->
check_first_status
==
CoinReleaseCheck
::
CHECK_FIRST_STATUS_FAILD
)
{
try
{
if
(
self
::
STEP_CHECK_FIRST
==
$step
)
{
//初审
if
(
$model
->
check_first
(
$status
))
{
if
(
$model
->
check_first_status
==
CoinReleaseCheck
::
CHECK_FIRST_STATUS_FAILD
)
{
$message
=
'操作成功! 该申请已被撤提'
;
}
else
{
$message
=
'审核通过!'
;
}
return
[
'code'
=>
0
,
'msg'
=>
$message
];
}
return
[
'code'
=>
0
,
'msg'
=>
'操作成功!'
];
}
return
[
'code'
=>
-
1
,
'msg'
=>
'初审失败!'
];
}
elseif
(
self
::
STEP_CHECK_SECOND
==
$step
)
{
//复审
if
(
CoinReleaseCheck
::
CHECK_FIRST_STATUS_SUCCEED
==
$model
->
check_first_status
)
{
//开启事务
$trans
=
CoinReleaseMember
::
getDb
()
->
beginTransaction
();
$model
->
check_second_uid
=
Yii
::
$app
->
user
->
id
;
$model
->
check_second_status
=
$status
;
if
(
$model
->
check_second_status
==
CoinReleaseCheck
::
CHECK_SECOND_STATUS_FAILD
)
{
$message
=
'操作成功! 该申请已被撤提'
;
$model
->
status
=
CoinReleaseCheck
::
STATUS_CANCEL
;
}
else
{
//改变status
$model
->
status
=
CoinReleaseCheck
::
STATUS_PADDING
;
return
[
'code'
=>
-
1
,
'msg'
=>
'初审失败!'
];
}
if
(
$model
->
save
())
{
//复审状态
if
(
$model
->
check_second_status
==
CoinReleaseCheck
::
CHECK_SECOND_STATUS_FAILD
)
{
//复审不通过就撤提
$trans
->
commit
();
return
[
'code'
=>
0
,
'msg'
=>
$message
];
}
// 提币 区块链转账接口
$from
=
''
;
$member
=
CoinReleaseMember
::
findOne
(
$model
->
mid
);
if
(
$member
)
{
$coin_publish_rule
=
CoinPublishRule
::
findOne
(
$member
->
rule_id
);
if
(
$coin_publish_rule
)
{
$coin_publish
=
CoinPublish
::
findOne
(
$coin_publish_rule
->
pid
);
if
(
$coin_publish
)
{
$from
=
$coin_publish
->
address
;
}
}
elseif
(
self
::
STEP_CHECK_SECOND
==
$step
)
{
//复审
$from
=
''
;
$member
=
CoinReleaseMember
::
findOne
(
$model
->
mid
);
if
(
$member
)
{
$coin_publish_rule
=
CoinPublishRule
::
findOne
(
$member
->
rule_id
);
if
(
$coin_publish_rule
)
{
$coin_publish
=
CoinPublish
::
findOne
(
$coin_publish_rule
->
pid
);
if
(
$coin_publish
)
{
$from
=
$coin_publish
->
address
;
}
}
if
(
empty
(
$from
))
{
$trans
->
rollBack
();
return
[
'code'
=>
-
1
,
'msg'
=>
'提币失败'
];
}
if
(
strtoupper
(
$model
->
coin
)
==
'BTY'
)
{
$isToken
=
false
;
}
else
{
$isToken
=
true
;
}
//减少用户资产
$member
->
release
-=
$model
->
amount
;
$member
->
output
+=
$model
->
amount
;
if
(
$member
->
save
())
{
//保存提币记录到数据库
$coin_release_list
=
new
CoinReleaseList
();
$coin_release_list
->
mid
=
$member
->
id
;
$coin_release_list
->
mobile
=
$member
->
mobile
;
$coin_release_list
->
amount
=
$model
->
amount
;
$coin_release_list
->
coin
=
$model
->
coin
;
$coin_release_list
->
type
=
1
;
//提币
$coin_release_list
->
from
=
$from
;
$coin_release_list
->
to
=
$model
->
to_address
;
if
(
$coin_release_list
->
save
())
{
//转账
$result
=
Chain33Business
::
transToken
(
trim
(
$from
),
trim
(
$model
->
to_address
),
(
int
)
$model
->
amount
,
"锁仓释放"
,
$isToken
,
$model
->
coin
);
if
(
is_array
(
$result
))
{
$trans
->
rollBack
();
return
$result
;
}
Yii
::
$app
->
queue
->
delay
(
15
)
->
push
(
new
QueryTransJob
([
'txhash'
=>
$result
,
'lid'
=>
$coin_release_list
->
id
,
'cid'
=>
$model
->
id
]));
$trans
->
commit
();
return
[
'code'
=>
0
,
'msg'
=>
'审核通过'
];
}
else
{
$trans
->
rollBack
();
return
[
'code'
=>
-
1
,
'msg'
=>
'保存提币记录失败!'
];
}
}
if
(
empty
(
$from
))
{
return
[
'code'
=>
-
1
,
'msg'
=>
'获取提币地址失败!'
];
}
if
(
$model
->
check_second
(
$status
,
$from
))
{
if
(
$model
->
check_second_status
==
CoinReleaseCheck
::
CHECK_SECOND_STATUS_FAILD
)
{
$message
=
'操作成功! 该申请已被撤提'
;
}
else
{
$trans
->
rollBack
();
return
[
'code'
=>
-
1
,
'msg'
=>
'减少资产失败!'
];
$message
=
'审核通过!'
;
}
return
[
'code'
=>
0
,
'msg'
=>
$message
];
}
else
{
$trans
->
rollBack
();
return
[
'code'
=>
-
1
,
'msg'
=>
'保存提币记录失败'
];
return
[
'code'
=>
-
1
,
'msg'
=>
'复审失败!'
];
}
}
elseif
(
self
::
STEP_CANCEL
==
$step
)
{
if
(
$model
->
check_cancel
())
{
return
[
'code'
=>
0
,
'msg'
=>
'操作成功'
];
}
}
else
{
return
[
'code'
=>
-
1
,
'msg'
=>
'初审未通过'
];
}
}
elseif
(
self
::
STEP_CANCEL
==
$step
)
{
$model
->
check_first_uid
=
Yii
::
$app
->
user
->
id
;
$model
->
check_second_uid
=
Yii
::
$app
->
user
->
id
;
$model
->
status
=
CoinReleaseCheck
::
STATUS_CANCEL
;
if
(
$model
->
save
(
false
))
{
//返还币
return
[
'code'
=>
0
,
'msg'
=>
'操作成功'
];
}
else
{
return
[
'code'
=>
-
1
,
'操作失败'
];
}
}
catch
(
\Exception
$exception
)
{
return
[
'code'
=>
$exception
->
getCode
(),
'msg'
=>
$exception
->
getMessage
()];
}
}
}
...
...
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