From c77e5fd5f264c2e134e1f5af2f21ee887d98a9aa Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 13 九月 2021 11:47:50 +0800
Subject: [PATCH] 优化data bus
---
java110-utils/src/main/java/com/java110/utils/util/StringUtil.java | 80 ++++++++++------
service-order/src/main/java/com/java110/order/smo/impl/AsynNotifySubServiceImpl.java | 122 ++++++++++++++++++++++++
service-order/src/main/java/com/java110/order/smo/IAsynNotifySubService.java | 11 ++
service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java | 36 ++++++
service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java | 8
5 files changed, 218 insertions(+), 39 deletions(-)
diff --git a/java110-utils/src/main/java/com/java110/utils/util/StringUtil.java b/java110-utils/src/main/java/com/java110/utils/util/StringUtil.java
index 092f8a9..fdb29c6 100755
--- a/java110-utils/src/main/java/com/java110/utils/util/StringUtil.java
+++ b/java110-utils/src/main/java/com/java110/utils/util/StringUtil.java
@@ -24,6 +24,8 @@
*/
public class StringUtil {
+
+
/**
* Description: 鏍煎紡鍖栧瓧绗︿覆(鐢ㄦ埛缁勫缓琛ㄤ娇鐢�) <br>
*
@@ -551,38 +553,31 @@
return false;
}
}
- public static String delHtmlTag(String str){
+
+ public static String delHtmlTag(String str) {
String newstr = "";
- newstr = str.replaceAll("<[.[^>]]*>","");
+ newstr = str.replaceAll("<[.[^>]]*>", "");
newstr = newstr.replaceAll(" ", "");
newstr = newstr.replaceAll(" ", "");
return newstr;
}
-
- public static String encodeEmoji(String orgStr)
- {
- if (StringUtil.isEmpty(orgStr))
- {
+ public static String encodeEmoji(String orgStr) {
+ if (StringUtil.isEmpty(orgStr)) {
return orgStr;
}
String temp = orgStr;
Pattern pattern = Pattern.compile("[^\u0000-\uffff]", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(orgStr);
- while (matcher.find())
- {
+ while (matcher.find()) {
StringBuilder sb = new StringBuilder("[em:");
String mStr = matcher.group();
- for (int i = 0; i < mStr.length(); i++)
- {
+ for (int i = 0; i < mStr.length(); i++) {
int emoji = mStr.charAt(i);
- if (i < mStr.length() - 1)
- {
+ if (i < mStr.length() - 1) {
sb.append(emoji).append('-');
- }
- else
- {
+ } else {
sb.append(emoji).append(']');
}
}
@@ -591,31 +586,24 @@
return temp;
}
- public static String decodeEmoji(String orgStr)
- {
- if (StringUtil.isEmpty(orgStr))
- {
+ public static String decodeEmoji(String orgStr) {
+ if (StringUtil.isEmpty(orgStr)) {
return orgStr;
}
String temp = orgStr;
Pattern pattern = Pattern.compile("\\[em:[\\d\\-]+\\]", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(orgStr);
- while (matcher.find())
- {
+ while (matcher.find()) {
StringBuilder sb = new StringBuilder("\\[em:");
StringBuilder emojiSb = new StringBuilder();
String mStr = matcher.group();
String[] emojis = mStr.substring(4, mStr.length() - 1).split("-");
- for (int i = 0; i < emojis.length; i++)
- {
+ for (int i = 0; i < emojis.length; i++) {
int emoji = Integer.parseInt(emojis[i]);
- emojiSb.append((char)emoji);
- if (i < emojis.length - 1)
- {
+ emojiSb.append((char) emoji);
+ if (i < emojis.length - 1) {
sb.append(emoji).append("\\-");
- }
- else
- {
+ } else {
sb.append(emoji).append("\\]");
}
}
@@ -624,4 +612,36 @@
return temp;
}
+ /**
+ * 涓嬪垝绾胯浆椹煎嘲
+ */
+ public static void lineToHump(JSONObject json) {
+ Pattern linePattern = Pattern.compile("_(\\w)");
+ for(String str : json.keySet()) {
+ str = str.toLowerCase();
+ Matcher matcher = linePattern.matcher(str);
+ StringBuffer sb = new StringBuffer();
+ while (matcher.find()) {
+ matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
+ }
+ matcher.appendTail(sb);
+ json.put(sb.toString(),json.getString(str));
+ }
+ }
+
+ /**
+ * 涓嬪垝绾胯浆椹煎嘲
+ */
+ public static String lineToHump(String str) {
+ Pattern linePattern = Pattern.compile("_(\\w)");
+ str = str.toLowerCase();
+ Matcher matcher = linePattern.matcher(str);
+ StringBuffer sb = new StringBuffer();
+ while (matcher.find()) {
+ matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
+ }
+ matcher.appendTail(sb);
+ return sb.toString();
+ }
+
}
\ No newline at end of file
diff --git a/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java b/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java
index 79d5bd6..53773bc 100755
--- a/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java
+++ b/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java
@@ -199,10 +199,10 @@
public void updateBusiness(Map order) throws DAOException {
logger.debug("----銆怌enterServiceDAOImpl.updateBusiness銆戜繚瀛樻暟鎹叆鍙� : " + JSONObject.toJSONString(order));
- int saveFlag = sqlSessionTemplate.update("centerServiceDAOImpl.updateBusiness", order);
- if (saveFlag < 1) {
- throw new DAOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "鏇存柊璁㈠崟椤逛俊鎭け璐ワ細" + JSONObject.toJSONString(order));
- }
+ sqlSessionTemplate.update("centerServiceDAOImpl.updateBusiness", order);
+// if (saveFlag < 1) {
+// throw new DAOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "鏇存柊璁㈠崟椤逛俊鎭け璐ワ細" + JSONObject.toJSONString(order));
+// }
}
/**
diff --git a/service-order/src/main/java/com/java110/order/smo/IAsynNotifySubService.java b/service-order/src/main/java/com/java110/order/smo/IAsynNotifySubService.java
index 61cc494..c04f07e 100644
--- a/service-order/src/main/java/com/java110/order/smo/IAsynNotifySubService.java
+++ b/service-order/src/main/java/com/java110/order/smo/IAsynNotifySubService.java
@@ -1,7 +1,11 @@
package com.java110.order.smo;
import com.java110.dto.businessTableHis.BusinessTableHisDto;
+import com.java110.dto.order.OrderDto;
import com.java110.dto.order.OrderItemDto;
+
+import java.util.List;
+import java.util.Map;
/**
* 寮傛閫氱煡瀛愭湇鍔$敓鎴恇usiness 琛�
@@ -9,4 +13,11 @@
public interface IAsynNotifySubService {
void notifySubService(OrderItemDto orderItemDto, BusinessTableHisDto businessTableHisDto);
+
+ /**
+ * 閫氱煡databus
+ * @param orderItemMaps
+ * @param orderDto
+ */
+ void notifyDatabus(List<Map> orderItemMaps, OrderDto orderDto);
}
diff --git a/service-order/src/main/java/com/java110/order/smo/impl/AsynNotifySubServiceImpl.java b/service-order/src/main/java/com/java110/order/smo/impl/AsynNotifySubServiceImpl.java
index 7708266..5bc4fb7 100644
--- a/service-order/src/main/java/com/java110/order/smo/impl/AsynNotifySubServiceImpl.java
+++ b/service-order/src/main/java/com/java110/order/smo/impl/AsynNotifySubServiceImpl.java
@@ -3,9 +3,19 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.client.RestTemplate;
+import com.java110.dto.businessDatabus.BusinessDatabusDto;
import com.java110.dto.businessTableHis.BusinessTableHisDto;
+import com.java110.dto.order.OrderDto;
import com.java110.dto.order.OrderItemDto;
+import com.java110.entity.order.Business;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
+import com.java110.order.dao.ICenterServiceDAO;
import com.java110.order.smo.IAsynNotifySubService;
+import com.java110.utils.cache.DatabusCache;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.DomainContant;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,12 +25,26 @@
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
@Service
public class AsynNotifySubServiceImpl implements IAsynNotifySubService {
private static Logger logger = LoggerFactory.getLogger(AsynNotifySubServiceImpl.class);
-
+ //databus 涓氬姟绫诲瀷
+ private static final String DATABUS_SWITCH = "DATABUS_SWITCH";
+ private static final String DATABUS_SWITCH_ON = "ON"; // 寮�鍏虫墦寮�
@Autowired
private RestTemplate restTemplate;
+
+
+ @Autowired
+ private ICenterServiceDAO centerServiceDAOImpl;
+
+ @Autowired
+ private IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl;
public static final String FALLBACK_URL = "http://SERVICE_NAME/businessApi/fallBack";
@@ -42,6 +66,102 @@
}
}
+ @Override
+ public void notifyDatabus(List<Map> orderItemMaps, OrderDto orderDto) {
+
+
+ if (orderItemMaps == null || orderItemMaps.size() < 1) {
+ return ;
+ }
+ //瑙﹀彂databug
+ //鏌ヨ 浜嬪姟椤�
+ Map orderItem = new HashMap();
+ orderItem.put("oId", orderDto.getoId());
+ List<Map> businesses = centerServiceDAOImpl.getBusinessByOId(orderItem);
+ if (businesses == null || businesses.size() < 1) {
+ return;
+ }
+
+ String databusSwitch = MappingCache.getValue(DomainContant.COMMON_DOMAIN, DATABUS_SWITCH);
+
+ if (!DATABUS_SWITCH_ON.equals(databusSwitch)) {
+ return ;
+ }
+ List<BusinessDatabusDto> databusDtos = DatabusCache.getDatabuss();
+
+ if (!hasTypeCd(databusDtos, businesses)) {
+ return ;
+ }
+
+ try {
+ //鍚屾databus
+ dataBusInnerServiceSMOImpl.exchange(freshBusesses(businesses, orderItemMaps));
+ } catch (Exception e) {
+ logger.error("浼犺緭databus 澶辫触", e);
+ }
+ }
+
+ /**
+ * @param businesses
+ * @param orderItemMaps
+ * @return
+ */
+ private List<Business> freshBusesses(List<Map> businesses, List<Map> orderItemMaps) {
+ List<Business> businessObjs = new ArrayList<>();
+ Business businessObj = null;
+ /**
+ * select t.b_id bId,t.o_id oId,t.create_time createTime,t.action,t.action_obj actionObj,
+ * t.finish_time finishTime,t.remark,ul.service_name serviceName,ul.log_text logText
+ * from c_order_item t
+ * LEFT JOIN unitem_log ul on t.b_id = ul.b_id and t.o_id = ul.o_id and ul.status_cd = '0'
+ * where 1=1
+ *
+ * {"afterValue":[{"share_id":"'502021080429730002'","start_time":"'2021-08-01 00:00:35'","ad_type":"'10000'",
+ * "advert_type":"'3'","ads_id":"'782021080454590009'","ad_name":"'骞垮憡'","end_time":"'2022-02-03 02:10:35'",
+ * "state":"'2000'","seq":"'1'","url":"'img/20210804/01a629f9-a267-43b8-8d74-9c83b00ed2a7.png'"}],"preValue":[]}
+ */
+ JSONObject data = null;
+ for (Map business : businesses) {
+ for (Map orderItem : orderItemMaps) {
+ if (!business.get("b_id").equals(orderItem.get("bId"))) {
+ continue;
+ }
+ businessObj = new Business();
+ businessObj.setoId(business.get("o_id").toString());
+ businessObj.setbId(business.get("b_id").toString());
+ businessObj.setBusinessTypeCd(business.get("business_type_cd").toString());
+ JSONObject logText = JSONObject.parseObject(orderItem.get("logText").toString());
+ if ("ADD".equals(orderItem.get("action")) || "MOD".equals(orderItem.get("action"))) {
+ data = logText.getJSONArray("afterValue").getJSONObject(0);
+ StringUtil.lineToHump(data);
+ businessObj.setData(data);
+ }
+ if ("DEL".equals(orderItem.get("action"))) {
+ data = logText.getJSONArray("preValue").getJSONObject(0);
+ StringUtil.lineToHump(data);
+ businessObj.setData(data);
+ }
+ businessObjs.add(businessObj);
+ }
+ }
+
+ return businessObjs;
+ }
+
+
+ private boolean hasTypeCd(List<BusinessDatabusDto> databusDtos, List<Map> businesses) {
+
+ for (BusinessDatabusDto databusDto : databusDtos) {
+ for (Map business : businesses) {
+ if (databusDto.getBusinessTypeCd().equals(business.get("business_type_cd"))) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
/**
* 鐢熸垚鍥炴粴sql
*
diff --git a/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java b/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java
index b1eda7f..5dfb8fb 100755
--- a/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java
+++ b/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java
@@ -4,13 +4,19 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.client.RestTemplate;
import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.businessDatabus.BusinessDatabusDto;
import com.java110.dto.businessTableHis.BusinessTableHisDto;
import com.java110.dto.order.OrderDto;
import com.java110.dto.order.OrderItemDto;
+import com.java110.entity.order.Business;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
import com.java110.order.dao.ICenterServiceDAO;
import com.java110.order.smo.IAsynNotifySubService;
import com.java110.order.smo.IOIdServiceSMO;
import com.java110.utils.cache.BusinessTableHisCache;
+import com.java110.utils.cache.DatabusCache;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.DomainContant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.DateUtil;
@@ -43,6 +49,7 @@
public static final String SERVICE_NAME = "SERVICE_NAME";
+
@Autowired
private ICenterServiceDAO centerServiceDAOImpl;
@@ -51,6 +58,8 @@
@Autowired
private IAsynNotifySubService asynNotifySubServiceImpl;
+
+
@Override
@@ -340,7 +349,7 @@
}
private void doNoticeServiceGeneratorBusiness(OrderItemDto orderItemDto, BusinessTableHisDto businessTableHisDto) {
- asynNotifySubServiceImpl.notifySubService(orderItemDto,businessTableHisDto);
+ asynNotifySubServiceImpl.notifySubService(orderItemDto, businessTableHisDto);
}
/**
@@ -362,9 +371,6 @@
info.put("oId", orderDto.getoId());
centerServiceDAOImpl.updateOrderItem(info);
- //鍒犻櫎 浜嬪姟鏃ュ織
- //centerServiceDAOImpl.deleteUnItemLog(info);
-
//瀹屾垚璁㈠崟
info = new HashMap();
info.put("finishTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
@@ -372,6 +378,28 @@
info.put("oId", orderDto.getoId());
centerServiceDAOImpl.updateOrder(info);
+ //灏哻_business 淇敼涓哄畬鎴�
+ //瀹屾垚璁㈠崟椤�
+ info = new HashMap();
+ info.put("finishTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ info.put("statusCd", "C");
+ info.put("oId", orderDto.getoId());
+ centerServiceDAOImpl.updateBusiness(info);
+
+ //瑙﹀彂databug
+ //鏌ヨ 浜嬪姟椤�
+ Map orderItem = new HashMap();
+ orderItem.put("oId", orderDto.getoId());
+ List<Map> orderItemMaps = centerServiceDAOImpl.getOrderItems(orderItem);
+
+ //鍒犻櫎 浜嬪姟鏃ュ織
+ //centerServiceDAOImpl.deleteUnItemLog(info);
+
+ asynNotifySubServiceImpl.notifyDatabus(orderItemMaps,orderDto);
+
return ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
}
+
+
+
}
--
Gitblit v1.8.0