package com.java110.comment.smo.impl;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.comment.smo.ICommentServiceSMO;
|
import com.java110.utils.cache.MappingCache;
|
import com.java110.utils.constant.KafkaConstant;
|
import com.java110.utils.constant.MappingConstant;
|
import com.java110.utils.constant.ResponseConstant;
|
import com.java110.utils.exception.SMOException;
|
import com.java110.utils.kafka.KafkaFactory;
|
import com.java110.utils.util.Assert;
|
import com.java110.utils.util.DateUtil;
|
import com.java110.core.base.smo.BaseServiceSMO;
|
import com.java110.core.context.BusinessServiceDataFlow;
|
import com.java110.core.factory.DataFlowFactory;
|
import com.java110.entity.center.DataFlowLinksCost;
|
import com.java110.entity.center.DataFlowLog;
|
import com.java110.event.service.BusinessServiceDataFlowEventPublishing;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 用户服务信息管理业务信息实现
|
* Created by wuxw on 2017/4/5.
|
*/
|
@Service("shopServiceSMOImpl")
|
@Transactional
|
public class CommentServiceSMOImpl extends BaseServiceSMO implements ICommentServiceSMO {
|
|
private final static Logger logger = LoggerFactory.getLogger(CommentServiceSMOImpl.class);
|
|
@Override
|
public JSONObject service(BusinessServiceDataFlow businessServiceDataFlow) throws SMOException {
|
try {
|
Assert.hasLength(businessServiceDataFlow.getbId(),"bId 不能为空");
|
|
BusinessServiceDataFlowEventPublishing.multicastEvent(businessServiceDataFlow);
|
Assert.notEmpty(businessServiceDataFlow.getResJson(),"评论服务["+businessServiceDataFlow.getCurrentBusiness().getServiceCode()+"]没有返回内容");
|
} catch (Exception e) {
|
logger.error("评论信息处理异常",e);
|
throw new SMOException(ResponseConstant.RESULT_PARAM_ERROR,"评论信息处理异常"+e.getMessage());
|
}finally {
|
if(businessServiceDataFlow == null){
|
return null;
|
}
|
|
//这里记录日志
|
Date endDate = DateUtil.getCurrentDate();
|
|
businessServiceDataFlow.setEndDate(endDate);
|
//添加耗时
|
DataFlowFactory.addCostTime(businessServiceDataFlow, "service", "业务处理总耗时",
|
businessServiceDataFlow.getStartDate(), businessServiceDataFlow.getEndDate());
|
//保存耗时
|
saveCostTimeLogMessage(businessServiceDataFlow);
|
//保存日志
|
saveLogMessage(businessServiceDataFlow);
|
}
|
return businessServiceDataFlow.getResJson();
|
}
|
|
/**
|
* 保存日志信息
|
* @param businessServiceDataFlow
|
*/
|
private void saveLogMessage(BusinessServiceDataFlow businessServiceDataFlow){
|
|
try{
|
if(MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_LOG_ON_OFF))){
|
for(DataFlowLog dataFlowLog :businessServiceDataFlow.getLogDatas()) {
|
KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_LOG_NAME, "", JSONObject.toJSONString(dataFlowLog));
|
}
|
}
|
}catch (Exception e){
|
logger.error("报错日志出错了,",e);
|
}
|
}
|
|
/**
|
* 保存耗时信息
|
* @param businessServiceDataFlow
|
*/
|
private void saveCostTimeLogMessage(BusinessServiceDataFlow businessServiceDataFlow){
|
try{
|
if(MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_COST_TIME_ON_OFF))){
|
List<DataFlowLinksCost> dataFlowLinksCosts = businessServiceDataFlow.getLinksCostDates();
|
JSONObject costDate = new JSONObject();
|
JSONArray costDates = new JSONArray();
|
JSONObject newObj = null;
|
for(DataFlowLinksCost dataFlowLinksCost : dataFlowLinksCosts){
|
newObj = JSONObject.parseObject(JSONObject.toJSONString(dataFlowLinksCost));
|
newObj.put("dataFlowId",businessServiceDataFlow.getDataFlowId());
|
newObj.put("transactionId",businessServiceDataFlow.getTransactionId());
|
costDates.add(newObj);
|
}
|
costDate.put("costDates",costDates);
|
|
KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_COST_TIME_LOG_NAME,"",costDate.toJSONString());
|
}
|
}catch (Exception e){
|
logger.error("报错日志出错了,",e);
|
}
|
}
|
}
|