CommunityServiceSMOImpl.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.java110.community.smo.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.java110.utils.cache.MappingCache;
  5. import com.java110.utils.constant.KafkaConstant;
  6. import com.java110.utils.constant.MappingConstant;
  7. import com.java110.utils.constant.ResponseConstant;
  8. import com.java110.utils.exception.SMOException;
  9. import com.java110.utils.kafka.KafkaFactory;
  10. import com.java110.utils.util.Assert;
  11. import com.java110.utils.util.DateUtil;
  12. import com.java110.core.base.smo.BaseServiceSMO;
  13. import com.java110.core.context.BusinessServiceDataFlow;
  14. import com.java110.core.factory.DataFlowFactory;
  15. import com.java110.entity.center.DataFlowLinksCost;
  16. import com.java110.entity.center.DataFlowLog;
  17. import com.java110.core.event.service.BusinessServiceDataFlowEventPublishing;
  18. import com.java110.community.smo.ICommunityServiceSMO;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import java.util.Date;
  24. import java.util.List;
  25. /**
  26. * 用户服务信息管理业务信息实现
  27. * Created by wuxw on 2017/4/5.
  28. */
  29. @Service("communityServiceSMOImpl")
  30. @Transactional
  31. public class CommunityServiceSMOImpl extends BaseServiceSMO implements ICommunityServiceSMO {
  32. private static Logger logger = LoggerFactory.getLogger(CommunityServiceSMOImpl.class);
  33. @Override
  34. public JSONObject service(BusinessServiceDataFlow businessServiceDataFlow) throws SMOException {
  35. try {
  36. Assert.hasLength(businessServiceDataFlow.getbId(), "bId 不能为空");
  37. BusinessServiceDataFlowEventPublishing.multicastEvent(businessServiceDataFlow);
  38. Assert.notEmpty(businessServiceDataFlow.getResJson(), "用户服务[" + businessServiceDataFlow.getCurrentBusiness().getServiceCode() + "]没有返回内容");
  39. } catch (Exception e) {
  40. logger.error("用户信息处理异常", e);
  41. throw new SMOException(ResponseConstant.RESULT_PARAM_ERROR, "用户信息处理异常" + e.getMessage());
  42. } finally {
  43. if (businessServiceDataFlow == null) {
  44. return null;
  45. }
  46. //这里记录日志
  47. Date endDate = DateUtil.getCurrentDate();
  48. businessServiceDataFlow.setEndDate(endDate);
  49. //添加耗时
  50. DataFlowFactory.addCostTime(businessServiceDataFlow, "service", "业务处理总耗时",
  51. businessServiceDataFlow.getStartDate(), businessServiceDataFlow.getEndDate());
  52. //保存耗时
  53. saveCostTimeLogMessage(businessServiceDataFlow);
  54. //保存日志
  55. saveLogMessage(businessServiceDataFlow);
  56. }
  57. return businessServiceDataFlow.getResJson();
  58. }
  59. /**
  60. * 保存日志信息
  61. *
  62. * @param businessServiceDataFlow
  63. */
  64. private void saveLogMessage(BusinessServiceDataFlow businessServiceDataFlow) {
  65. try {
  66. if (MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_LOG_ON_OFF))) {
  67. for (DataFlowLog dataFlowLog : businessServiceDataFlow.getLogDatas()) {
  68. KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_LOG_NAME, "", JSONObject.toJSONString(dataFlowLog));
  69. }
  70. }
  71. } catch (Exception e) {
  72. logger.error("报错日志出错了,", e);
  73. }
  74. }
  75. /**
  76. * 保存耗时信息
  77. *
  78. * @param businessServiceDataFlow
  79. */
  80. private void saveCostTimeLogMessage(BusinessServiceDataFlow businessServiceDataFlow) {
  81. try {
  82. if (MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_COST_TIME_ON_OFF))) {
  83. List<DataFlowLinksCost> dataFlowLinksCosts = businessServiceDataFlow.getLinksCostDates();
  84. JSONObject costDate = new JSONObject();
  85. JSONArray costDates = new JSONArray();
  86. JSONObject newObj = null;
  87. for (DataFlowLinksCost dataFlowLinksCost : dataFlowLinksCosts) {
  88. newObj = JSONObject.parseObject(JSONObject.toJSONString(dataFlowLinksCost));
  89. newObj.put("dataFlowId", businessServiceDataFlow.getDataFlowId());
  90. newObj.put("transactionId", businessServiceDataFlow.getTransactionId());
  91. costDates.add(newObj);
  92. }
  93. costDate.put("costDates", costDates);
  94. KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_COST_TIME_LOG_NAME, "", costDate.toJSONString());
  95. }
  96. } catch (Exception e) {
  97. logger.error("报错日志出错了,", e);
  98. }
  99. }
  100. }