28 lines
1.1 KiB
Java
28 lines
1.1 KiB
Java
package com.baiyue.eventbridge.service;
|
|
|
|
import com.baiyue.eventbridge.mapper.BridgeInboxMapper;
|
|
import jakarta.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
@Service
|
|
public class EventReplayService {
|
|
@Resource private BridgeInboxMapper inboxMapper;
|
|
|
|
public void replayDead(String eventId, String operatorId, String reason) {
|
|
if (operatorId == null || operatorId.isBlank()) {
|
|
throw new IllegalArgumentException("人工补投必须提供操作人");
|
|
}
|
|
if (reason == null || reason.isBlank()) {
|
|
throw new IllegalArgumentException("人工补投必须提供原因");
|
|
}
|
|
String auditReason = abbreviate("manual replay by " + operatorId + ": " + reason, 1000);
|
|
if (inboxMapper.replayDead(eventId, auditReason) != 1) {
|
|
throw new IllegalStateException("事件不存在或未处于 DEAD 状态");
|
|
}
|
|
}
|
|
|
|
private static String abbreviate(String value, int maxLength) {
|
|
return value.length() <= maxLength ? value : value.substring(0, maxLength);
|
|
}
|
|
}
|