Files
saasshop/app/Support/BatchDispatchLock.php

32 lines
858 B
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Support;
use Illuminate\Support\Facades\Cache;
class BatchDispatchLock
{
/**
* 最小幂等/防抖锁(短 TTL避免运营短时间内重复点击导致重复投递同一批次。
*
* key 口径与现有实现保持一致scope + filters(summary) + ids + limit。
*
* @param int[] $orderIds
*/
public static function acquire(
string $namespace,
string $scope,
string $filterSummary,
array $orderIds,
int $limit,
int $ttlSeconds = 60,
string $value = '1',
): bool {
$orderIds = array_values(array_map('intval', $orderIds));
$lockKey = $namespace . ':' . md5($scope . '|' . $filterSummary . '|' . implode(',', $orderIds) . '|' . $limit);
return Cache::add($lockKey, $value, $ttlSeconds);
}
}