扫码领取数量限制

This commit is contained in:
2026-02-25 10:40:39 +08:00
parent e829e406e1
commit 1251f78c6b
4 changed files with 26 additions and 1 deletions
@@ -352,6 +352,20 @@ class InvRequisitionService
$applicantId = (int)$user['user']['id'];
$applicantName = (string)$user['user']['name'];
// 检查扫码领取数量限制
if ($item->qr_code_num > 0) {
// 查询该用户已扫码领取该物品的数量
$claimedQty = InvRequisitionItem::whereHas('requisition', function ($q) use ($applicantId) {
$q->where('applicant_id', $applicantId)
->where('claim_type', InvRequisition::CLAIM_TYPE_QR);
})->where('item_id', $itemId)
->sum('approved_qty');
if (($claimedQty + $qty) > $item->qr_code_num) {
throw new BusinessException("扫码领取数量超限,每人最多可领取 {$item->qr_code_num} {$item->unit},已领取 {$claimedQty} {$item->unit}");
}
}
// 检查库存
if ($item->stock_qty < $qty) {
throw new BusinessException('库存不足,当前库存: ' . $item->stock_qty);