content: package com.aizuda.snailjob.server.common.convert;
  
  import cn.hutool.core.util.StrUtil;
  import com.aizuda.snailjob.common.core.util.JsonUtil;
  import com.aizuda.snailjob.server.common.dto.JobAlarmInfo;
  import com.aizuda.snailjob.server.common.dto.NotifyConfigInfo;
  import com.aizuda.snailjob.server.common.dto.RetryAlarmInfo;
  import com.aizuda.snailjob.server.common.dto.WorkflowAlarmInfo;
  import com.aizuda.snailjob.template.datasource.persistence.dataobject.JobBatchResponseDO;
  import com.aizuda.snailjob.template.datasource.persistence.dataobject.WorkflowBatchResponseDO;
  import com.aizuda.snailjob.template.datasource.persistence.po.NotifyConfig;
  import com.aizuda.snailjob.template.datasource.persistence.po.RetryDeadLetter;
  import org.mapstruct.Mapper;
  import org.mapstruct.Mapping;
  import org.mapstruct.Mappings;
  import org.mapstruct.factory.Mappers;
  
  import java.util.HashSet;
  import java.util.List;
  import java.util.Set;
  
  /**
   * @author xiaowoniu
   * @date 2023-12-03 10:58:53
   * @since 2.5.0
   */
  @Mapper
  public interface AlarmInfoConverter {
  
      AlarmInfoConverter INSTANCE = Mappers.getMapper(AlarmInfoConverter.class);
  
      List<NotifyConfigInfo> retryToNotifyConfigInfos(List<NotifyConfig> notifyConfigs);
  
      @Mappings({
              @Mapping(target = "recipientIds", expression = "java(AlarmInfoConverter.toNotifyRecipientIds(notifyConfig.getRecipientIds()))")
      })
      NotifyConfigInfo retryToNotifyConfigInfos(NotifyConfig notifyConfig);
  
      static Set<Long> toNotifyRecipientIds(String notifyRecipientIdsStr) {
          if (StrUtil.isBlank(notifyRecipientIdsStr)) {
              return new HashSet<>();
          }
  
          return new HashSet<>(JsonUtil.parseList(notifyRecipientIdsStr, Long.class));
      }
  
      JobAlarmInfo toJobAlarmInfo(JobBatchResponseDO jobBatchResponseDO);
  
      WorkflowAlarmInfo toWorkflowAlarmInfo(WorkflowBatchResponseDO workflowBatchResponseDO);
  
  }
  