Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
loveisland
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
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
刘小敏
loveisland
Commits
effd2fcf
Commit
effd2fcf
authored
May 27, 2026
by
刘小敏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
积分+余额混合支付逻辑优化;
parent
e9a63461
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
6 deletions
+18
-6
OrderCreate.php
addons/shopro/service/order/OrderCreate.php
+10
-0
Aftersale.php
application/admin/controller/shopro/order/Aftersale.php
+8
-6
No files found.
addons/shopro/service/order/OrderCreate.php
View file @
effd2fcf
...
@@ -1164,7 +1164,17 @@ class OrderCreate
...
@@ -1164,7 +1164,17 @@ class OrderCreate
// 重新获取订单
// 重新获取订单
$order
=
Order
::
with
(
'items'
)
->
where
(
'id'
,
$order
->
id
)
->
find
();
$order
=
Order
::
with
(
'items'
)
->
where
(
'id'
,
$order
->
id
)
->
find
();
// 计算需要余额支付的金额
// 如果用户选择了积分抵扣,余额支付金额 = 积分抵扣后的剩余金额
// 如果用户没有选择积分抵扣,余额支付金额 = 用户传入的金额
$pay_money
=
floatval
(
$result
[
'money'
]);
$pay_money
=
floatval
(
$result
[
'money'
]);
// 如果使用了积分抵扣,余额支付应该支付积分抵扣后的剩余金额
if
(
$this
->
is_deduct_score
==
1
&&
$this
->
orderData
[
'pay_fee'
]
>
0
)
{
// 积分抵扣后剩余的金额需要用余额支付
$pay_money
=
$this
->
orderData
[
'pay_fee'
];
}
if
(
$order
->
status
==
Order
::
STATUS_UNPAID
&&
$pay_money
>
0
)
{
if
(
$order
->
status
==
Order
::
STATUS_UNPAID
&&
$pay_money
>
0
)
{
// 如果订单未支付,并且使用了余额混合支付 (支付失败,不影响订单状态)
// 如果订单未支付,并且使用了余额混合支付 (支付失败,不影响订单状态)
$order
=
Db
::
transaction
(
function
()
use
(
$order
,
$pay_money
)
{
$order
=
Db
::
transaction
(
function
()
use
(
$order
,
$pay_money
)
{
...
...
application/admin/controller/shopro/order/Aftersale.php
View file @
effd2fcf
...
@@ -10,6 +10,7 @@ use app\admin\model\shopro\order\Order as OrderModel;
...
@@ -10,6 +10,7 @@ use app\admin\model\shopro\order\Order as OrderModel;
use
app\admin\model\shopro\order\OrderItem
as
OrderItemModel
;
use
app\admin\model\shopro\order\OrderItem
as
OrderItemModel
;
use
app\admin\model\shopro\order\Action
as
OrderActionModel
;
use
app\admin\model\shopro\order\Action
as
OrderActionModel
;
use
addons\shopro\service\order\OrderRefund
;
use
addons\shopro\service\order\OrderRefund
;
use
addons\shopro\service\pay\PayOper
;
use
addons\shopro\library\Operator
;
use
addons\shopro\library\Operator
;
class
Aftersale
extends
Common
class
Aftersale
extends
Common
...
@@ -241,12 +242,13 @@ class Aftersale extends Common
...
@@ -241,12 +242,13 @@ class Aftersale extends Common
$items
=
$order
->
items
;
$items
=
$order
->
items
;
$items
=
array_column
(
$items
,
null
,
'id'
);
$items
=
array_column
(
$items
,
null
,
'id'
);
// 当前订单已退款总金额
// 使用与 OrderRefund 相同的逻辑计算剩余可退款金额(不包含积分)
$refunded_money
=
array_sum
(
array_column
(
$items
,
'refund_fee'
));
$payOper
=
new
PayOper
(
$order
->
user_id
);
// 剩余可退款金额
$pays
=
$payOper
->
getCanRefundPays
(
$order
->
id
);
$refund_surplus_money
=
bcsub
(
$order
->
pay_fee
,
(
string
)
$refunded_money
,
2
);
$remain_max_refund_money
=
$payOper
->
getRemainRefundMoney
(
$pays
);
// 如果退款金额大于订单支付总金额
if
(
bccomp
((
string
)
$refund_money
,
$refund_surplus_money
,
2
)
===
1
)
{
// 如果退款金额大于剩余可退款金额
if
(
bccomp
((
string
)
$refund_money
,
$remain_max_refund_money
,
2
)
===
1
)
{
$this
->
error
(
'退款总金额不能大于实际支付金额'
);
$this
->
error
(
'退款总金额不能大于实际支付金额'
);
}
}
...
...
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