| | |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.common.factory.ApplicationContextFactory; |
| | | import com.java110.common.log.LoggerEngine; |
| | | import com.java110.common.util.DateUtil; |
| | | import com.java110.entity.center.Business; |
| | | import com.java110.entity.center.DataFlowLinksCost; |
| | | import com.java110.entity.center.DataFlowLog; |
| | | |
| | | import java.net.InetAddress; |
| | | import java.net.UnknownHostException; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 数据流上下文 |
| | | * Created by wuxw on 2018/5/18. |
| | | */ |
| | | public abstract class AbstractDataFlowContext implements DataFlowContext,Orders{ |
| | | public abstract class AbstractDataFlowContext extends AbstractTransactionLog implements DataFlowContext,Orders,TransactionLog{ |
| | | |
| | | private String dataFlowId; |
| | | |
| | | private String businessType; |
| | | |
| | | //交易流水 |
| | | private String transactionId; |
| | |
| | | |
| | | private String message; |
| | | |
| | | private String reqData; |
| | | |
| | | private JSONObject reqJson; |
| | | |
| | | private JSONObject resJson; |
| | | |
| | | private String resData; |
| | | |
| | | protected List<Business> businesses; |
| | | |
| | |
| | | |
| | | private List<DataFlowLog> logDatas = new ArrayList<DataFlowLog>(); |
| | | |
| | | protected Map<String,String> headers = new HashMap<String,String>(); |
| | | protected Map<String,String> requestHeaders = new HashMap<String,String>(); |
| | | protected Map<String,String> requestCurrentHeaders = new HashMap<String,String>(); |
| | | protected Map<String,String> responseHeaders = new HashMap<String,String>(); |
| | | protected Map<String,String> responseCurrentHeaders = new HashMap<String,String>(); |
| | | |
| | | //请求开始时间 |
| | | private Date startDate; |
| | |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public abstract DataFlowContext builder(String reqInfo, Map<String,String> headerAll) throws Exception; |
| | | public <T> T builder(String reqInfo, Map<String,String> headerAll) throws Exception{ |
| | | //预处理 |
| | | preBuilder(reqInfo, headerAll); |
| | | //调用builder |
| | | T dataFlowContext = (T)doBuilder(reqInfo, headerAll); |
| | | //后处理 |
| | | afterBuilder((DataFlowContext) dataFlowContext); |
| | | return dataFlowContext; |
| | | } |
| | | |
| | | /** |
| | | * 预处理 |
| | | * @param reqInfo |
| | | * @param headerAll |
| | | */ |
| | | protected void preBuilder(String reqInfo, Map<String,String> headerAll) { |
| | | super.preBuilder(reqInfo,headerAll); |
| | | } |
| | | |
| | | /** |
| | | * 构建对象 |
| | | * @param reqInfo |
| | | * @param headerAll |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public abstract DataFlowContext doBuilder(String reqInfo, Map<String,String> headerAll) throws Exception; |
| | | |
| | | protected void afterBuilder(DataFlowContext dataFlowContext){ |
| | | |
| | | } |
| | | |
| | | public void setTransactionId(String transactionId) { |
| | | this.transactionId = transactionId; |
| | |
| | | this.endDate = endDate; |
| | | } |
| | | |
| | | public Map<String, String> getHeaders() { |
| | | return headers; |
| | | public Map<String, String> getRequestHeaders() { |
| | | return requestHeaders; |
| | | } |
| | | |
| | | public JSONObject getReqJson() { |
| | | return reqJson; |
| | | public Map<String, String> getResponseHeaders() { |
| | | return responseHeaders; |
| | | } |
| | | |
| | | public void setReqJson(JSONObject reqJson) { |
| | | this.reqJson = reqJson; |
| | | public Map<String, String> getRequestCurrentHeaders() { |
| | | return requestHeaders; |
| | | } |
| | | |
| | | public Map<String, String> getResponseCurrentHeaders() { |
| | | return responseHeaders; |
| | | } |
| | | |
| | | public String getReqData() { |
| | | return reqData; |
| | | } |
| | | |
| | | public void setReqData(String reqData) { |
| | | this.reqData = reqData; |
| | | } |
| | | |
| | | public JSONObject getResJson() { |
| | | return resJson; |
| | |
| | | |
| | | public void setResJson(JSONObject resJson) { |
| | | this.resJson = resJson; |
| | | this.setResData(resJson.toJSONString()); |
| | | } |
| | | |
| | | public List<DataFlowLinksCost> getLinksCostDates() { |
| | |
| | | |
| | | public String getUserId(){return null;}; |
| | | |
| | | @Override |
| | | public void setAppId(String appId) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void setUserId(String userId) { |
| | | |
| | | } |
| | | |
| | | public String getRemark(){return null;}; |
| | | |
| | | public String getReqSign(){return null;}; |
| | |
| | | public JSONArray getAttrs(){return null;}; |
| | | |
| | | public String getBusinessType() { |
| | | return null; |
| | | return businessType; |
| | | } |
| | | |
| | | public void setBusinessType(String businessType) { |
| | | this.businessType = businessType; |
| | | } |
| | | |
| | | public Map<String, Object> getParamOut() { |
| | | return null; |
| | | } |
| | | |
| | | public void addParamOut(String key,Object value) { |
| | | public String getResData() { |
| | | return resData; |
| | | } |
| | | |
| | | public void setResData(String resData) { |
| | | this.resData = resData; |
| | | } |
| | | |
| | | public JSONObject getReqJson() { |
| | | return reqJson; |
| | | } |
| | | |
| | | public void setReqJson(JSONObject reqJson) { |
| | | this.reqJson = reqJson; |
| | | } |
| | | |
| | | public void addParamOut(String key, Object value) { |
| | | |
| | | } |
| | | |
| | | public void setPort(String port) { |
| | | this.port = port; |
| | | } |
| | | |
| | | public String getbId(){ |
| | | return null; |
| | | } |
| | | |
| | | public String getLogId(){ |
| | | return getbId(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 业务编码 当前需要处理的业务编码,可以写将要请求服务提供方的方法名 |
| | | * 主要用于 日志端展示 |
| | | * @return 当前服务编码 |
| | | */ |
| | | public String getServiceCode(){ |
| | | if(this.currentBusiness != null){ |
| | | return currentBusiness.getServiceCode(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 业务名称 当前需要处理的业务名称,可以当前调用的业务名称 如 商品购买 等 |
| | | * 主要用于 日志端展示 |
| | | * @return 当前服务名称 |
| | | */ |
| | | public String getServiceName(){ |
| | | if(this.currentBusiness != null){ |
| | | return currentBusiness.getServiceName(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | |
| | | public abstract Orders getOrder(); |
| | | |
| | | protected AbstractDataFlowContext(Date startDate, String code){ |