package cn.axzo.msg.center.notices.client.task.compensation;

import cn.axzo.msg.center.notices.client.task.LoggerJobHandler;
import cn.azxo.framework.common.model.JobPageRequest;
import cn.azxo.framework.common.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 实时批量消息拆分补偿任务
 *
 * @author zhaoyong
 * @see RealBatchMessageSplitCompensation
 * @since 2021-08-24 13:00
 */
@Slf4j
@Component
public class RealBatchMessageSplitCompensation extends LoggerJobHandler {

  @Override
  @XxlJob(value = "realBatchMessageSplitCompensation")
  public ReturnT<String> execute(String param) {
    return jobLoggerTemplate.execute(() -> {
      log.info("RealBatchMessageSplitCompensation.execute task Start ......");
      try {
        JobPageRequest request = jobParamResolver.resolver(param);
        log.info("RealBatchMessageSplitCompensation.execute task request is {}", JSON.toJSONString(request));
        taskService.realBatchMessageSplitCompensation(request);
      } catch (Exception e) {
        LogUtil.error("RealBatchMessageSplitCompensation.execute is error", e);
        return ReturnT.FAIL;
      }
      log.info("RealBatchMessageSplitCompensation.execute task End ......");
      return ReturnT.SUCCESS;
    });
  }

}
