Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
杨树贤
/
ic_server_welfare
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
63b85851
authored
Aug 27, 2019
by
叶明星
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
更新代码
parent
7f1a9930
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
87 additions
and
39 deletions
app/Http/Controllers/ExchangesTask.php
app/Http/Controllers/UserExchangesController.php
app/Models/Recharge.php
app/helpers.php
config/database.php
config/laravels.php
app/Http/Controllers/ExchangesTask.php
View file @
63b85851
...
...
@@ -20,24 +20,15 @@ class ExchangesTask extends Task
// 处理任务的逻辑,运行在Task进程中,不能投递任务
public
function
handle
()
{
//金额大于等于20走审核流程
if
(
$this
->
Exchange
[
'amount'
]
>=
20
)
return
true
;
//微信红包暂时不能对接,走人工
if
(
$this
->
data
[
'type'
]
==
2
)
//验证这个订单是否充值,防止重复提现
$Redis
=
new
RedisModel
();
$Cache
=
$Redis
->
hsetnx
(
'ic_user_exchanges'
,
$this
->
data
[
'id'
]
.
'_'
.
$this
->
data
[
'user_id'
]
,
1
);
if
(
!
$Cache
)
return
true
;
try
{
DB
::
beginTransaction
();
//获取用户手机号
$Redis
=
new
RedisModel
(
false
);
$UserInfo
=
json_decode
(
$Redis
->
hget
(
'ic_user'
,
$this
->
data
[
'user_id'
]),
true
);
if
(
!
$UserInfo
||
empty
(
$UserInfo
[
'mobile'
]))
throw
new
\Exception
(
'用户手机号获取失败#'
.
$this
->
data
[
'id'
]);
//先修改提现记录状态
$UserExchangModel
=
new
UserExchange
();
$Exchang
=
[
...
...
@@ -49,21 +40,55 @@ class ExchangesTask extends Task
if
(
!
$result
)
throw
new
\Exception
(
'提现记录状态修改失败#'
.
$this
->
data
[
'id'
]);
if
(
$this
->
data
[
'type'
]
==
1
)
$this
->
Recharge
();
elseif
(
$this
->
data
[
'type'
]
==
2
)
$this
->
Integrals
();
DB
::
commit
();
SendDingTalk
(
'充值完成'
);
return
true
;
}
catch
(
\Exception
$e
){
DB
::
rollBack
();
//强制删除充值标记
$Redis
->
hdel
(
'ic_user_exchanges'
,
$this
->
data
[
'id'
]
.
'_'
.
$this
->
data
[
'user_id'
]);
return
SendErrMsg
(
$e
);
}
}
//红包提现(后期需要对接微信平台)
public
function
Integrals
(){
//目前只改审核状态
return
true
;
}
//话费充值
public
function
Recharge
(){
//获取用户手机号
$Redis
=
new
RedisModel
(
false
);
$UserInfo
=
json_decode
(
$Redis
->
hget
(
'ic_user'
,
$this
->
data
[
'user_id'
])
,
true
);
if
(
!
$UserInfo
||
empty
(
$UserInfo
[
'mobile'
]))
throw
new
\Exception
(
'用户手机号获取失败#'
.
$this
->
data
[
'id'
]);
$RechargeModel
=
new
Recharge
();
//验证手机号能不能充值
$RechargeModel
->
TelCheck
(
$UserInfo
[
'mobile'
]
,
$this
->
Exchange
[
'amount'
]);
$result
=
$RechargeModel
->
TelCheck
(
$UserInfo
[
'mobile'
]
,
$this
->
Exchange
[
'amount'
]);
if
(
!
$result
)
throw
new
\Exception
(
'手机号与金额无法充值'
);
//开始充值
$time
=
date
(
'Ymd'
);
$OrderId
=
$this
->
data
[
'user_id'
]
.
$time
;
//用户ID拼接时间
$OrderId
=
$this
->
data
[
'user_id'
]
.
$time
.
'2'
;
//用户ID拼接时间
$result
=
$RechargeModel
->
Recharge
(
$UserInfo
[
'mobile'
]
,
$this
->
Exchange
[
'amount'
]
,
$OrderId
);
if
(
!
$result
)
throw
new
\Exception
(
'充值失败#'
.
$this
->
data
[
'id'
]);
DB
::
commit
();
}
catch
(
\Exception
$e
){
DB
::
rollBack
();
return
SendErrMsg
(
$e
);
}
return
true
;
}
public
function
finish
()
...
...
app/Http/Controllers/UserExchangesController.php
View file @
63b85851
...
...
@@ -104,7 +104,7 @@ class UserExchangesController extends Controller
}
}
//用于抢兑换名额
(接口自己需要先验证是否能)
//用于抢兑换名额
public
function
create
(
Request
$request
){
$Field
=
[
'user_id'
,
'exchange_id'
];
$collert
=
$request
->
only
(
$Field
);
...
...
@@ -119,14 +119,32 @@ class UserExchangesController extends Controller
if
(
$Record
)
return
$this
->
Export
(
ErrorCode
(
100
,
1
),
'今天已经兑换过来,请明天再来吧'
);
//获取用户红包
$UserInfo
=
$Redis
->
hget
(
'ic_user'
,
$collert
[
'user_id'
]);
$UserInfo
=
json_decode
(
$UserInfo
,
true
);
if
(
empty
(
$UserInfo
[
'integral'
]))
return
$this
->
Export
(
ErrorCode
(
102
,
1
)
,
'红包余额不足'
);
//获取红包配置
$ic_exchange_settings
=
json_decode
(
$Redis
->
hget
(
'ic_exchange_settings'
,
$collert
[
'exchange_id'
])
,
true
);
//判断红包提现设置是否可用
if
(
!
$ic_exchange_settings
||
$ic_exchange_settings
[
'status'
]
!=
1
)
return
$this
->
Export
(
ErrorCode
(
103
,
1
)
,
'当前提现不可用'
);
//判断用余额
if
(
$ic_exchange_settings
[
'amount'
]
>
$UserInfo
[
'integral'
])
return
$this
->
Export
(
ErrorCode
(
102
,
1
)
,
'红包余额不足'
);
//消费名额
$Cahce
=
$Redis
->
rpop
(
'ic_exchange_settings_'
.
$collert
[
'exchange_id'
]);
if
(
!
$Cahce
)
return
$this
->
Export
(
ErrorCode
(
101
,
1
),
'
已经被兑换完
了'
);
return
$this
->
Export
(
ErrorCode
(
101
,
1
),
'
名额被抢光
了'
);
$Cahce
=
json_decode
(
$Cahce
,
true
);
//记录当前消费的名额,自动过期
$Redis
->
hset
(
$Pre
,
$collert
[
'user_id'
]
,
1
);
$Redis
->
hset
(
$Pre
,
$collert
[
'user_id'
]
,
$collert
[
'exchange_id'
]
);
$Redis
->
expire
(
$Pre
,
60
*
60
*
24
);
try
{
...
...
@@ -134,7 +152,7 @@ class UserExchangesController extends Controller
//扣减用户金额
$UserIntrgralModel
=
new
UserIntegral
();
$result
=
$UserIntrgralModel
->
Deduction
(
$collert
[
'user_id'
]
,
$
Cahce
[
'amount'
]);
$result
=
$UserIntrgralModel
->
Deduction
(
$collert
[
'user_id'
]
,
$
ic_exchange_settings
[
'amount'
]);
if
(
!
$result
){
ErrorLog
(
ErrorCode
(
1
,
9
),
'扣减用户红包失败,用户ID:'
.
$collert
[
'user_id'
]);
...
...
@@ -145,8 +163,9 @@ class UserExchangesController extends Controller
$UserExchangeModel
=
new
UserExchange
();
$data
=
[
'user_id'
=>
$collert
[
'user_id'
],
'type'
=>
$Cahce
[
'type'
],
'exchange_id'
=>
$Cahce
[
'id'
],
'type'
=>
$ic_exchange_settings
[
'type'
],
'exchange_id'
=>
$ic_exchange_settings
[
'id'
],
'amount'
=>
$ic_exchange_settings
[
'amount'
]
];
$result
=
$UserExchangeModel
->
addRecord
(
$data
);
...
...
@@ -160,16 +179,18 @@ class UserExchangesController extends Controller
DB
::
commit
();
//扣减缓存里面的红包金额
$UserInfo
=
json_decode
(
$Redis
->
hget
(
'ic_user'
,
$collert
[
'user_id'
]),
true
);
$UserInfo
[
'integral'
]
=
$UserInfo
[
'integral'
]
-
$Cahce
[
'amount'
];
$Redis
->
hset
(
'ic_user'
,
json_encode
(
$UserInfo
));
$UserInfo
[
'integral'
]
=
$UserInfo
[
'integral'
]
-
$ic_exchange_settings
[
'amount'
];
$Redis
->
hset
(
'ic_user'
,
$UserInfo
[
'user_id'
]
,
json_encode
(
$UserInfo
));
//推送一个异步任务(用来提现或者充值),延时10秒,防止主从同步不及时
$Task
=
new
ExchangesTask
(
$data
,
$Cahce
);
//金额小于20元时,推送一个异步任务(用来提现或者充值),延时10秒,防止主从同步不及时
if
(
$data
[
'amount'
]
<
20
){
$Task
=
new
ExchangesTask
(
$data
,
$ic_exchange_settings
);
$Task
->
delay
(
10
);
$result
=
Task
::
deliver
(
$Task
);
if
(
!
$result
)
ErrorLog
(
ErrorCode
(
1
,
9
),
'提现任务推送失败,提现ID:'
.
$data
[
'id'
]);
}
return
$this
->
Export
(
0
,
'ok'
,[
'data'
=>
$data
[
'id'
]]);
}
catch
(
\Exception
$e
){
...
...
@@ -177,6 +198,5 @@ class UserExchangesController extends Controller
SendErrMsg
(
$e
);
return
$this
->
Export
(
ErrorCode
(
100
,
5
),
'提现失败'
);
}
}
}
\ No newline at end of file
app/Models/Recharge.php
View file @
63b85851
...
...
@@ -12,16 +12,19 @@ class Recharge extends Model
//话费充值
public
function
Recharge
(
$mobile
,
$amount
,
$OrderId
){
$Url
=
'http://op.juhe.cn/ofpay/mobile/onlineorder'
;
$amount
=
(
int
)
$amount
;
$sign
=
$this
->
OpenID
.
$this
->
key
.
$mobile
.
$amount
.
$OrderId
;
$data
=
[
'phoneno'
=>
$mobile
,
'cardnum'
=>
$amount
,
'orderid'
=>
$OrderId
,
'key'
=>
$this
->
key
,
'sign'
=>
$this
->
OpenID
.
$this
->
key
.
$mobile
.
$amount
.
$OrderId
'sign'
=>
md5
(
$sign
)
];
$result
=
curl
(
$Url
,
$data
,
true
);
$result
=
json_decode
(
$result
,
true
);
if
(
!
$result
||
!
isset
(
$result
[
'error_code'
])
||
!
$result
[
'error_code'
]
==
10014
){
if
(
!
$result
||
!
isset
(
$result
[
'error_code'
])
||
$result
[
'error_code'
]
==
10014
){
$message
=
'话费充值订单异常,需要联系聚合客服确认'
.
"
\r
"
;
$message
.=
'订单号:'
.
$OrderId
.
"
\r
"
;
$message
.=
json_encode
(
$result
);
...
...
app/helpers.php
View file @
63b85851
...
...
@@ -9,5 +9,5 @@ function SendErrMsg($e){
}
function
SendDingTalk
(
$message
){
return
SendRobot
(
config
(
'
website.RobotUrl'
),
$message
,[
config
(
'website.at'
)],
config
(
'website
.SystemName'
));
return
SendRobot
(
config
(
'
system.RobotUrl'
),
$message
,[
config
(
'system.at'
)],
config
(
'system
.SystemName'
));
}
\ No newline at end of file
config/database.php
View file @
63b85851
...
...
@@ -143,13 +143,13 @@ return [
'host'
=>
env
(
'REDIS_HOST'
,
'127.0.0.1'
),
'password'
=>
env
(
'REDIS_PASSWORD'
,
null
),
'port'
=>
env
(
'REDIS_PORT'
,
6379
),
'database'
=>
2
'database'
=>
0
],
'read'
=>
[
'host'
=>
env
(
'REDIS_READ_HOST'
,
''
),
'password'
=>
env
(
'REDIS_READ_PASSWORD'
,
null
),
'port'
=>
env
(
'REDIS_READ_PORT'
,
6379
),
'database'
=>
2
'database'
=>
0
]
],
...
...
config/laravels.php
View file @
63b85851
...
...
@@ -62,7 +62,7 @@ return [
'dispatch_mode'
=>
2
,
'reactor_num'
=>
function_exists
(
'swoole_cpu_num'
)
?
swoole_cpu_num
()
*
2
:
4
,
'worker_num'
=>
function_exists
(
'swoole_cpu_num'
)
?
swoole_cpu_num
()
*
2
:
8
,
//
'task_worker_num' => function_exists('swoole_cpu_num') ? swoole_cpu_num() * 2 : 8,
'task_worker_num'
=>
function_exists
(
'swoole_cpu_num'
)
?
swoole_cpu_num
()
*
2
:
8
,
'task_ipc_mode'
=>
1
,
'task_max_request'
=>
8000
,
'task_tmpdir'
=>
@
is_writable
(
'/dev/shm/'
)
?
'/dev/shm'
:
'/tmp'
,
...
...
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