Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
纵之格
ShopXO
提交
4160f7c7
ShopXO
项目概览
纵之格
/
ShopXO
通知
394
Star
16
Fork
11
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4160f7c7
编写于
5月 08, 2019
作者:
G
gongfuxiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
钱包充值
上级
2ce1a309
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
111 addition
and
41 deletion
+111
-41
application/plugins/wallet/Common.php
application/plugins/wallet/Common.php
+1
-1
application/plugins/wallet/service/PayService.php
application/plugins/wallet/service/PayService.php
+93
-20
application/plugins/wallet/service/WalletService.php
application/plugins/wallet/service/WalletService.php
+17
-20
未找到文件。
application/plugins/wallet/Common.php
浏览文件 @
4160f7c7
...
@@ -57,7 +57,7 @@ class Common extends Controller
...
@@ -57,7 +57,7 @@ class Common extends Controller
$this
->
assign
(
'buy_payment_list'
,
PaymentService
::
BuyPaymentList
([
'is_enable'
=>
1
,
'is_open_user'
=>
1
]));
$this
->
assign
(
'buy_payment_list'
,
PaymentService
::
BuyPaymentList
([
'is_enable'
=>
1
,
'is_open_user'
=>
1
]));
// 用户钱包
// 用户钱包
$user_wallet
=
WalletService
::
UserWallet
(
[
'user'
=>
$this
->
user
]);
$user_wallet
=
WalletService
::
UserWallet
(
$this
->
user
[
'id'
]);
// 用户钱包状态
// 用户钱包状态
$wallet_error
=
''
;
$wallet_error
=
''
;
...
...
application/plugins/wallet/service/PayService.php
浏览文件 @
4160f7c7
...
@@ -14,6 +14,7 @@ use think\Db;
...
@@ -14,6 +14,7 @@ use think\Db;
use
app\service\PaymentService
;
use
app\service\PaymentService
;
use
app\service\PayLogService
;
use
app\service\PayLogService
;
use
app\service\MessageService
;
use
app\service\MessageService
;
use
app\service\PluginsService
;
use
app\plugins\wallet\service\WalletService
;
use
app\plugins\wallet\service\WalletService
;
/**
/**
...
@@ -326,13 +327,21 @@ class PayService
...
@@ -326,13 +327,21 @@ class PayService
];
];
PayLogService
::
PayLogInsert
(
$pay_log_data
);
PayLogService
::
PayLogInsert
(
$pay_log_data
);
// 获取用户钱包校验
$user_wallet
=
WalletService
::
UserWallet
(
$params
[
'recharge'
][
'user_id'
]);
if
(
$user_wallet
[
'code'
]
!=
0
)
{
return
$user_wallet
;
}
else
{
if
(
$user_wallet
[
'data'
][
'id'
]
!=
$params
[
'recharge'
][
'wallet_id'
])
{
return
DataReturn
(
'用户钱包不匹配'
,
-
1
);
}
}
// 开启事务
// 开启事务
Db
::
startTrans
();
Db
::
startTrans
();
// 消息通知
$detail
=
'账户充值成功,金额'
.
PriceBeautify
(
$params
[
'recharge'
][
'money'
])
.
'元'
;
MessageService
::
MessageAdd
(
$params
[
'recharge'
][
'user_id'
],
'账户充值'
,
$detail
,
2
,
$params
[
'recharge'
][
'id'
]);
// 更新充值状态
// 更新充值状态
$upd_data
=
array
(
$upd_data
=
array
(
'status'
=>
1
,
'status'
=>
1
,
...
@@ -345,23 +354,57 @@ class PayService
...
@@ -345,23 +354,57 @@ class PayService
);
);
if
(
Db
::
name
(
'PluginsWalletRecharge'
)
->
where
([
'id'
=>
$params
[
'recharge'
][
'id'
]])
->
update
(
$upd_data
))
if
(
Db
::
name
(
'PluginsWalletRecharge'
)
->
where
([
'id'
=>
$params
[
'recharge'
][
'id'
]])
->
update
(
$upd_data
))
{
{
/*$log_data = [
// 字段名称 金额类型
'user_id' => $wallet['user_id'],
$money_field
=
[
'wallet_id' => $wallet['id'],
[
'field'
=>
'normal_money'
,
'money_type'
=>
0
,
'msg'
=>
' [ '
.
$pay_price
.
'元 ]'
],
'business_type' => 0,
];
'operation_type' => ($wallet[$v['field']] < $data[$v['field']]) ? 1 : 0,
'money_type' => $v['money_type'],
// 是否有赠送金额
'operation_money' => ($wallet[$v['field']] < $data[$v['field']]) ? PriceNumberFormat($data[$v['field']]-$wallet[$v['field']]) : PriceNumberFormat($wallet[$v['field']]-$data[$v['field']]),
$give_money
=
self
::
RechargeGiveMoneyHandle
(
$pay_price
);
'original_money' => $wallet[$v['field']],
if
(
$give_money
>
0
)
'latest_money' => $data[$v['field']],
{
'msg' => '管理员操作'.$operation_msg,
$money_field
[]
=
[
'field'
=>
'give_money'
,
'money_type'
=>
2
,
'msg'
=>
' [ 赠送'
.
$give_money
.
'元 ]'
];
];
}
if(!self::WalletLogInsert($log_data))
// 钱包更新数据
$data
=
[
'normal_money'
=>
PriceNumberFormat
(
$user_wallet
[
'data'
][
'normal_money'
]
+
$pay_price
+
$give_money
),
'give_money'
=>
PriceNumberFormat
(
$user_wallet
[
'data'
][
'give_money'
]
+
$give_money
),
'upd_time'
=>
time
(),
];
if
(
!
Db
::
name
(
'PluginsWallet'
)
->
where
([
'id'
=>
$user_wallet
[
'data'
][
'id'
]])
->
update
(
$data
))
{
Db
::
rollback
();
return
DataReturn
(
'钱包更新失败'
,
-
10
);
}
foreach
(
$money_field
as
$v
)
{
// 有效金额
if
(
$user_wallet
[
'data'
][
$v
[
'field'
]]
!=
$data
[
$v
[
'field'
]])
{
{
Db::rollback();
$log_data
=
[
return DataReturn('日志添加失败', -101);
'user_id'
=>
$user_wallet
[
'data'
][
'user_id'
],
}*/
'wallet_id'
=>
$user_wallet
[
'data'
][
'id'
],
'business_type'
=>
1
,
'operation_type'
=>
1
,
'money_type'
=>
$v
[
'money_type'
],
'operation_money'
=>
(
$user_wallet
[
'data'
][
$v
[
'field'
]]
<
$data
[
$v
[
'field'
]])
?
PriceNumberFormat
(
$data
[
$v
[
'field'
]]
-
$user_wallet
[
'data'
][
$v
[
'field'
]])
:
PriceNumberFormat
(
$user_wallet
[
'data'
][
$v
[
'field'
]]
-
$data
[
$v
[
'field'
]]),
'original_money'
=>
$user_wallet
[
'data'
][
$v
[
'field'
]],
'latest_money'
=>
$data
[
$v
[
'field'
]],
'msg'
=>
'账户充值'
.
$v
[
'msg'
],
];
if
(
!
self
::
WalletLogInsert
(
$log_data
))
{
Db
::
rollback
();
return
DataReturn
(
'日志添加失败'
,
-
101
);
}
// 消息通知
MessageService
::
MessageAdd
(
$params
[
'recharge'
][
'user_id'
],
'账户充值'
,
$log_data
[
'msg'
],
2
,
$params
[
'recharge'
][
'id'
]);
}
}
// 提交事务
// 提交事务
Db
::
commit
();
Db
::
commit
();
return
DataReturn
(
'支付成功'
,
0
);
return
DataReturn
(
'支付成功'
,
0
);
...
@@ -371,5 +414,35 @@ class PayService
...
@@ -371,5 +414,35 @@ class PayService
Db
::
rollback
();
Db
::
rollback
();
return
DataReturn
(
'处理失败'
,
-
100
);
return
DataReturn
(
'处理失败'
,
-
100
);
}
}
/**
* 充值赠送金额计算
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-05-08T00:12:48+0800
* @param [float] $pay_price [支付金额]
*/
private
static
function
RechargeGiveMoneyHandle
(
$pay_price
)
{
$give_money
=
0
;
$ret
=
PluginsService
::
PluginsData
(
'wallet'
,
''
,
false
);
if
(
!
empty
(
$ret
[
'data'
][
'recharge_give_value'
])
&&
isset
(
$ret
[
'data'
][
'recharge_give_type'
]))
{
switch
(
$ret
[
'data'
][
'recharge_give_type'
])
{
// 固定金额
case
0
:
$give_money
=
PriceNumberFormat
(
$ret
[
'data'
][
'recharge_give_value'
]);
break
;
// 比例
case
1
:
$give_money
=
(
$ret
[
'data'
][
'recharge_give_value'
]
/
100
)
*
$pay_price
;
break
;
}
}
return
$give_money
;
}
}
}
?>
?>
\ No newline at end of file
application/plugins/wallet/service/WalletService.php
浏览文件 @
4160f7c7
...
@@ -14,6 +14,7 @@ use think\Db;
...
@@ -14,6 +14,7 @@ use think\Db;
use
app\service\PluginsService
;
use
app\service\PluginsService
;
use
app\service\ResourcesService
;
use
app\service\ResourcesService
;
use
app\service\PaymentService
;
use
app\service\PaymentService
;
use
app\service\MessageService
;
/**
/**
* 钱包服务层
* 钱包服务层
...
@@ -184,30 +185,22 @@ class WalletService
...
@@ -184,30 +185,22 @@ class WalletService
* @version 1.0.0
* @version 1.0.0
* @date 2019-04-30
* @date 2019-04-30
* @desc description
* @desc description
* @param [
array] $params [输入参数
]
* @param [
int] $user_id [用户id
]
*/
*/
public
static
function
UserWallet
(
$
params
=
[]
)
public
static
function
UserWallet
(
$
user_id
)
{
{
// 请求参数
// 请求参数
$p
=
[
if
(
empty
(
$user_id
))
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'user'
,
'error_msg'
=>
'用户信息有误'
,
],
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
{
return
DataReturn
(
$ret
,
-
1
);
return
DataReturn
(
'用户id有误'
,
-
1
);
}
}
// 获取钱包, 不存在则创建
// 获取钱包, 不存在则创建
$wallet
=
Db
::
name
(
'PluginsWallet'
)
->
where
([
'user_id'
=>
$
params
[
'user'
][
'id'
]
])
->
find
();
$wallet
=
Db
::
name
(
'PluginsWallet'
)
->
where
([
'user_id'
=>
$
user_id
])
->
find
();
if
(
empty
(
$wallet
))
if
(
empty
(
$wallet
))
{
{
$data
=
[
$data
=
[
'user_id'
=>
$
params
[
'user'
][
'id'
]
,
'user_id'
=>
$
user_id
,
'status'
=>
0
,
'status'
=>
0
,
'add_time'
=>
time
(),
'add_time'
=>
time
(),
];
];
...
@@ -322,15 +315,15 @@ class WalletService
...
@@ -322,15 +315,15 @@ class WalletService
if
(
!
Db
::
name
(
'PluginsWallet'
)
->
where
([
'id'
=>
$wallet
[
'id'
]])
->
update
(
$data
))
if
(
!
Db
::
name
(
'PluginsWallet'
)
->
where
([
'id'
=>
$wallet
[
'id'
]])
->
update
(
$data
))
{
{
Db
::
rollback
();
Db
::
rollback
();
return
DataReturn
(
'
编辑
失败'
,
-
100
);
return
DataReturn
(
'
操作
失败'
,
-
100
);
}
}
// 日志
// 日志
// 字段名称 金额类型
// 字段名称 金额类型
$money_field
=
[
$money_field
=
[
[
'field'
=>
'normal_money'
,
'money_type'
=>
0
],
[
'field'
=>
'normal_money'
,
'money_type'
=>
0
,
'name'
=>
'有效金额'
],
[
'field'
=>
'frozen_money'
,
'money_type'
=>
1
],
[
'field'
=>
'frozen_money'
,
'money_type'
=>
1
,
'name'
=>
'冻结金额'
],
[
'field'
=>
'give_money'
,
'money_type'
=>
2
],
[
'field'
=>
'give_money'
,
'money_type'
=>
2
,
'name'
=>
'赠送金额'
],
];
];
// 操作原因
// 操作原因
...
@@ -349,19 +342,23 @@ class WalletService
...
@@ -349,19 +342,23 @@ class WalletService
'operation_money'
=>
(
$wallet
[
$v
[
'field'
]]
<
$data
[
$v
[
'field'
]])
?
PriceNumberFormat
(
$data
[
$v
[
'field'
]]
-
$wallet
[
$v
[
'field'
]])
:
PriceNumberFormat
(
$wallet
[
$v
[
'field'
]]
-
$data
[
$v
[
'field'
]]),
'operation_money'
=>
(
$wallet
[
$v
[
'field'
]]
<
$data
[
$v
[
'field'
]])
?
PriceNumberFormat
(
$data
[
$v
[
'field'
]]
-
$wallet
[
$v
[
'field'
]])
:
PriceNumberFormat
(
$wallet
[
$v
[
'field'
]]
-
$data
[
$v
[
'field'
]]),
'original_money'
=>
$wallet
[
$v
[
'field'
]],
'original_money'
=>
$wallet
[
$v
[
'field'
]],
'latest_money'
=>
$data
[
$v
[
'field'
]],
'latest_money'
=>
$data
[
$v
[
'field'
]],
'msg'
=>
'管理员操作'
.
$operation_msg
,
];
];
$operation_type_text
=
(
$log_data
[
'operation_type'
]
==
1
)
?
'增加'
:
'减少'
;
$log_data
[
'msg'
]
=
'管理员操作[ '
.
$v
[
'name'
]
.
$operation_type_text
.
$log_data
[
'operation_money'
]
.
'元 ]'
.
$operation_msg
;
if
(
!
self
::
WalletLogInsert
(
$log_data
))
if
(
!
self
::
WalletLogInsert
(
$log_data
))
{
{
Db
::
rollback
();
Db
::
rollback
();
return
DataReturn
(
'日志添加失败'
,
-
101
);
return
DataReturn
(
'日志添加失败'
,
-
101
);
}
}
// 消息通知
MessageService
::
MessageAdd
(
$wallet
[
'user_id'
],
'账户余额变动'
,
$log_data
[
'msg'
],
0
,
$wallet
[
'id'
]);
}
}
}
}
// 处理成功
// 处理成功
Db
::
commit
();
Db
::
commit
();
return
DataReturn
(
'
编辑
成功'
,
0
);
return
DataReturn
(
'
操作
成功'
,
0
);
}
}
}
}
?>
?>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录