Skip to content

Commit

Permalink
修复扣款优先级
Browse files Browse the repository at this point in the history
  • Loading branch information
Yurunsoft committed Feb 28, 2024
1 parent 05b9bf6 commit 6ddc2bf
Showing 1 changed file with 21 additions and 11 deletions.
32 changes: 21 additions & 11 deletions server/Module/Card/Service/MemberCardService.php
Original file line number Diff line number Diff line change
Expand Up @@ -225,18 +225,28 @@ public function getMemberCardItems(int $memberId, int $amount, bool $paying = fa
$payingWhere = $paying ? ' AND paying = 1' : '';

return Db::select(<<<SQL
SELECT id, left_amount as leftAmount FROM {$tableName},( SELECT @memberLeftAmount := 0 ) AS _
SELECT `data`.*
FROM
(
SELECT
id,
left_amount AS leftAmount
FROM
{$tableName}
WHERE
member_id = :memberId
AND left_amount > 0
AND (expire_time = 0 OR expire_time > :expireTime)
AND `enable` = 1
{$payingWhere}
ORDER BY
expire_time = 0,
expire_time,
paying ASC
) AS `data`,
(SELECT @memberLeftAmount := 0) AS _
WHERE
member_id = :memberId
AND left_amount > 0
AND ( expire_time = 0 OR expire_time > :expireTime )
AND `enable` = 1
{$payingWhere}
AND ( (@memberLeftAmount := @memberLeftAmount + left_amount) < :amount OR @memberLeftAmount = left_amount )
ORDER BY
paying ASC,
expire_time = 0,
expire_time
(@memberLeftAmount := @memberLeftAmount + leftAmount) < :amount OR @memberLeftAmount = leftAmount
LIMIT :limit
FOR UPDATE
SQL, [
Expand Down

0 comments on commit 6ddc2bf

Please sign in to comment.