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); } }