1、接口
package com.sxc.trade.biz.workflow;
import lombok.Data;
import lombok.ToString;
import java.util.Date;
public interface CallbackHandler {
void callback(CallbackParam callbackParam);
}
2、接口实现类
package com.sxc.trade.biz.workflow.impl;
import com.sxc.component.util.JsonUtil;
import com.sxc.trade.biz.workflow.CallbackHandler;
import com.sxc.trade.client.common.OperationRecordClient;
import com.sxc.trade.constants.common.TradeModuleCodeEnum;
import com.sxc.trade.constants.common.TradeOptTypeEnum;
import com.sxc.trade.constants.common.WorkflowStateEnum;
import com.sxc.trade.enums.order.AppOrderStateEnum;
import com.sxc.trade.enums.order.TradeOrderStateEnum;
import com.sxc.trade.exception.TradeApiException;
import com.sxc.trade.repository.entity.TradeOrder;
import com.sxc.trade.repository.entity.WorkflowRecord;
import com.sxc.trade.repository.service.ITradeOrderService;
import com.sxc.trade.repository.service.WorkflowRecordService;
import com.sxc.trade.request.common.TradeOperationRecordRequestDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
@Slf4j
public class SaleOrderCallbackHandler implements CallbackHandler {
@Autowired
private WorkflowRecordService workflowRecordService;
@Autowired
private ITradeOrderService iTradeOrderService;
@Autowired
private OperationRecordClient operationRecordClient;
@Override
public void callback(CallbackParam callbackParam) {
}
}
3、动态注入yml值
package com.sxc.trade.biz.workflow.impl;
import com.google.common.collect.Maps;
import com.sxc.trade.biz.workflow.CallbackHandler;
import com.sxc.trade.biz.workflow.WorkflowCallbackHandlerFacade;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.Map;
import static com.sxc.trade.common.util.SpringBeanUtil.getBeanByClass;
@Service
@Slf4j
@DependsOn("springBeanUtil")
public class WorkflowCallbackHandlerFacadeImpl implements WorkflowCallbackHandlerFacade {
private Map<String, CallbackHandler> callBackDingDingMap = Maps.newHashMap();
@Value("${workflow.saleOrder.processKey}")
private String saleOrderProcessKey;
@PostConstruct
public void init() {
registerCallbackHandler(saleOrderProcessKey,
getBeanByClass(SaleOrderCallbackHandler.class));
}
private CallbackHandler registerCallbackHandler(String processCode, CallbackHandler callbackHandler) {
return callBackDingDingMap.put(processCode, callbackHandler);
}
@Override
public void callback(CallbackParam callbackParam) {
log.info("流程中心审批回调处理 callbackParam:{}", callbackParam);
CallbackHandler callbackHandler = callBackDingDingMap.get(callbackParam.getProcessKey());
if (callbackHandler == null) {
log.warn("流程中心审批回调处理 callbackHandler is null");
return;
}
log.info("流程中心审批回调处理 callbackHandler:{}", callbackHandler.getClass().getName());
callbackHandler.callback(callbackParam);
}
}