package com.shhxzq.fin.lifeapp.biz.impl.mq; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.shhxzq.fin.lifeapp.biz.utils.DateUtils; import com.shhxzq.fin.lifeapp.dao.credit.LaTransMonitorMapper; import com.shhxzq.fin.lifeapp.model.base.BaseUuidLogger; import com.shhxzq.fin.lifeapp.model.constants.CreditConstants; import com.shhxzq.fin.lifeapp.model.credit.vo.LaTransMonitorWithBLOBs; import net.sf.json.JSONObject; /** * 接受la交易监控推送(异步执行) * @author Gxx */ @Service(value = "laTransMonitorListener") public class LaTransMonitorListener implements MessageListener { /** * 日志处理器 */ private Logger logger = Logger.getLogger(LaTransMonitorListener.class); @Autowired private LaTransMonitorMapper laTransMonitorMapper; @Override public void onMessage(Message message) { try { /** * 刷新uuid */ ((BaseUuidLogger)logger).refreshUuid(); logger.info("接受la交易监控推送(异步执行)对象:" + message); /** * 接受消息 */ String receiveMsg; try { receiveMsg = new String(message.getBody(), message.getMessageProperties().getContentEncoding()); } catch (Exception e) { logger.error("接受la交易监控推送(异步执行),字符转换失败", e); return; } /** * 判断消息为空 */ if (StringUtils.isBlank(receiveMsg)) { logger.error("接受la交易监控推送(异步执行)收到消息为空"); return; } else { /** * 获取数据 */ JSONObject jsonObject = JSONObject.fromObject(receiveMsg); String methodType = jsonObject.getString("methodType");//方法类型 String outerSystem = jsonObject.getString("outerSystem");//外部系统代码 String methodRoute = jsonObject.getString("methodRoute");//方法路径 String methodName = jsonObject.getString("methodName");//方法名称 String request = jsonObject.getString("request");//入参 String response = jsonObject.getString("response");//出参 Boolean isException = jsonObject.getBoolean("isException");//是否异常发生 Long beginTime = jsonObject.getLong("beginTime");//开始时间 Long endTime = jsonObject.getLong("endTime");//结束时间 Long usedTime = jsonObject.getLong("usedTime");//耗时(毫秒) String ip = jsonObject.getString("ip");//本地ip String resv1 = jsonObject.getString("resv1");//备注字段1 String resv2 = jsonObject.getString("resv2");//备注字段2 String resv3 = jsonObject.getString("resv3");//备注字段3 /** * 字符串长度处理 */ request = (null != request && request.length() > 1000 ? request.substring(0, 1000) + "..." : request); response = (null != response && response.length() > 1000 ? response.substring(0, 1000) + "..." : response); resv1 = (null != resv1 && resv1.length() > 100 ? resv1.substring(0, 100) : resv1); resv2 = (null != resv2 && resv2.length() > 100 ? resv2.substring(0, 100) : resv2); resv3 = (null != resv3 && resv3.length() > 100 ? resv3.substring(0, 100) : resv3); /** * 交易监控落库 */ LaTransMonitorWithBLOBs laTransMonitorWithBLOBs = new LaTransMonitorWithBLOBs(); laTransMonitorWithBLOBs.setSysDate(DateUtils.getCurrentDate()); laTransMonitorWithBLOBs.setSysTime(DateUtils.getCurrentTime()); laTransMonitorWithBLOBs.setMethodType(methodType); laTransMonitorWithBLOBs.setOuterSystem(outerSystem); laTransMonitorWithBLOBs.setMethodRoute(methodRoute); laTransMonitorWithBLOBs.setMethodName(methodName); laTransMonitorWithBLOBs.setRequest(request); laTransMonitorWithBLOBs.setResponse(response); laTransMonitorWithBLOBs.setIsException(isException ? CreditConstants.IS_EXCEPTION_YES : CreditConstants.IS_EXCEPTION_NO); laTransMonitorWithBLOBs.setBeginTime(DateUtils.getDate(beginTime)); laTransMonitorWithBLOBs.setEndTime(DateUtils.getDate(endTime)); laTransMonitorWithBLOBs.setUsedTime(usedTime); laTransMonitorWithBLOBs.setIp(ip); laTransMonitorWithBLOBs.setResv1(resv1); laTransMonitorWithBLOBs.setResv2(resv2); laTransMonitorWithBLOBs.setResv3(resv3); laTransMonitorWithBLOBs.setIsDelete(CreditConstants.IS_DELETE_NO); laTransMonitorWithBLOBs.setCreatedAt(DateUtils.getNow()); laTransMonitorWithBLOBs.setUpdatedAt(DateUtils.getNow()); laTransMonitorMapper.insert(laTransMonitorWithBLOBs); logger.info("交易监控落库完成!"); } } catch (Exception e) { logger.error("交易监控接受落库异常发生!", e); } } }