手动关闭状态不要自动打开重启同步
This commit is contained in:
@@ -19,6 +19,31 @@ class SplitTicketRuleService
|
||||
$this->ratioDeferredService = $ratioDeferredService ?? new SplitNumberRatioDeferredService();
|
||||
}
|
||||
|
||||
/**
|
||||
* 手动关闭的工单(manual_manage=1):禁止自动同步改写 status,须用户手动开启
|
||||
*/
|
||||
public function isManuallyClosed(Ticket $ticket): bool
|
||||
{
|
||||
return (int) ($ticket['manual_manage'] ?? 0) === 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表/编辑切换状态时同步 manual_manage 标记
|
||||
*
|
||||
* @param array<string, mixed> $values
|
||||
*/
|
||||
public function applyManualManageForStatusChange(array &$values): void
|
||||
{
|
||||
if (!isset($values['status'])) {
|
||||
return;
|
||||
}
|
||||
if ((string) $values['status'] === 'hidden') {
|
||||
$values['manual_manage'] = 1;
|
||||
} elseif ((string) $values['status'] === 'normal') {
|
||||
$values['manual_manage'] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步后应用工单开关规则;号码开关由 applyNumberRules 综合裁决(平台在线 + 单号上限 + 下号比率)
|
||||
*/
|
||||
@@ -190,10 +215,13 @@ class SplitTicketRuleService
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成量、时间窗口决定工单开关(定时与手动同步均适用)
|
||||
* 完成量、时间窗口决定工单开关(定时与手动同步均适用;手动关闭工单除外)
|
||||
*/
|
||||
public function applyTicketStatusRules(Ticket $ticket, int $completeCount): void
|
||||
{
|
||||
if ($this->isManuallyClosed($ticket)) {
|
||||
return;
|
||||
}
|
||||
$status = $this->resolveTicketStatus($ticket, $completeCount);
|
||||
if ($status !== (string) ($ticket['status'] ?? 'hidden')) {
|
||||
Ticket::where('id', (int) $ticket['id'])->update([
|
||||
|
||||
Reference in New Issue
Block a user