package com.java110.api.listener; import com.alibaba.fastjson.JSONObject; import com.java110.core.context.DataFlowContext; import com.java110.core.event.service.api.ServiceDataFlowEvent; import com.java110.core.log.LoggerFactory; import org.slf4j.Logger; import java.text.ParseException; /** * 主要目的将soService 方法拆分为校验部分 和业务处理部分 * Created by wuxw on 2018/11/15. */ public abstract class AbstractServiceApiListener extends AbstractServiceApiDataFlowListener { private static Logger logger = LoggerFactory.getLogger(AbstractServiceApiListener.class); /** * 业务处理 * @param event */ public final void soService(ServiceDataFlowEvent event) throws ParseException { DataFlowContext dataFlowContext = event.getDataFlowContext(); //获取请求数据 JSONObject reqJson = dataFlowContext.getReqJson(); logger.debug("API服务 --- 请求参数为:{}", reqJson.toJSONString()); validate(event, reqJson); doSoService(event, dataFlowContext, reqJson); logger.debug("API服务 --- 返回报文信息:{}", dataFlowContext.getResponseEntity()); } /** * 数据格式校验方法 * @param event 事件对象 * @param reqJson 请求报文数据 */ protected abstract void validate(ServiceDataFlowEvent event, JSONObject reqJson); /** * 业务处理类 * @param event 事件对象 * @param context 数据上文对象 * @param reqJson 请求报文 */ protected abstract void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) throws ParseException; @Override public int getOrder() { return 0; } }