package com.java110.api.listener.property; import com.alibaba.fastjson.JSONObject; import com.java110.api.listener.AbstractServiceApiDataFlowListener; import com.java110.utils.constant.ResponseConstant; import com.java110.utils.constant.ServiceCodeConstant; import com.java110.utils.exception.ListenerExecuteException; import com.java110.utils.util.Assert; import com.java110.core.annotation.Java110Listener; import com.java110.core.context.DataFlowContext; import com.java110.entity.center.AppService; import com.java110.event.service.api.ServiceDataFlowEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.*; /** * @author wux * @create 2019-02-10 下午11:11 * @desc 检查员工是否有物业信息 **/ @Java110Listener("checkStaffHasPropertyListener") public class CheckStaffHasPropertyListener extends AbstractServiceApiDataFlowListener { private final static Logger logger = LoggerFactory.getLogger(CheckStaffHasPropertyListener.class); @Override public String getServiceCode() { return ServiceCodeConstant.SERVICE_CODE_CHECK_PROPERTY_STAFFHASPROPERTY; } @Override public HttpMethod getHttpMethod() { return HttpMethod.GET; } @Override public void soService(ServiceDataFlowEvent event) { logger.debug("ServiceDataFlowEvent : {}",event); DataFlowContext dataFlowContext = event.getDataFlowContext(); AppService service = event.getAppService(); String paramIn = dataFlowContext.getReqData(); /* Assert.isJsonObject(paramIn,"用户注册请求参数有误,不是有效的json格式 "+paramIn); Assert.jsonObjectHaveKey(paramIn,"userId","请求报文中未包含userId 节点请检查 " +paramIn); JSONObject paramObj = JSONObject.parseObject(paramIn);*/ ResponseEntity responseEntity= null; HttpHeaders header = new HttpHeaders(); for(String key : dataFlowContext.getRequestCurrentHeaders().keySet()){ header.add(key,dataFlowContext.getRequestCurrentHeaders().get(key)); } HttpEntity httpEntity = new HttpEntity(paramIn, header); super.doRequest(dataFlowContext, service, httpEntity); responseEntity = dataFlowContext.getResponseEntity(); dataFlowContext.setResponseEntity(responseEntity); if(responseEntity.getStatusCode() != HttpStatus.OK){ return ; } String resObj = responseEntity.getBody().toString(); Assert.isJsonObject(resObj,"下游服务返回格式错误,不是有效json格式"+resObj); JSONObject resJson = JSONObject.parseObject(resObj); Assert.jsonObjectHaveKey(resJson,"count","下游服务返回格式错误,返回报文中未包含count"+resObj); long count = resJson.getLongValue("count"); if(count < 1){ throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR,"当前员工没有相关物业信息,数据异常请检查"); } responseEntity = new ResponseEntity("成功",HttpStatus.OK); } @Override public int getOrder() { return 0; } }