t;String,Object>> mergeOrderItemMap(Map<String, Map<String,String>> itemIndexMap) {
if (itemIndexMap == null || itemIndexMap.isEmpty()) {
return new HashMap<>();
}
// Map[oldItemId, newItemId]
Map<String,String> old2newItemIdMap = new HashMap<>();
Map<String,String> new2oldItemIdMap = new HashMap<>();
Set<Map.Entry<String,Map<String,String>>> entries = itemIndexMap.entrySet();
String orderNo = "";
String sID = "";
for (Map.Entry<String,Map<String,String>> entry: entries) {
String indexKey = entry.getKey();
Map<String,String> value = entry.getValue();
if (indexKey.startsWith("item:")) {
old2newItemIdMap.put(indexKey, value.get("item:item_core_id"));
new2oldItemIdMap.put(value.get("item:item_core_id"), indexKey);
orderNo = value.get("item:order_no");
sID = value.get("item:s_id");
}
}
Map<String, Map<String,Object>> newItemIndexMap = new HashMap<>();
for (Map.Entry<String,Map<String,String>> entry: entries) {
String indexKey = entry.getKey();
Map<String,String> value = entry.getValue();
if (indexKey.startsWith("item:")) {
if (newItemIndexMap.get(indexKey) == null) {
newItemIndexMap.put(indexKey, new HashMap<>());
}
newItemIndexMap.get(indexKey).putAll(value);
}
else if (indexKey.startsWith("item_core:")) {
String itemCoreId = indexKey.split(":")[1];
String oldItemId = new2oldItemIdMap.get(itemCoreId);
if (newItemIndexMap.get(oldItemId) == null) {
newItemIndexMap.put(oldItemId, new HashMap<>());
}
newItemIndexMap.get(oldItemId).putAll(value);
}
else if (indexKey.startsWith("item_price:")) {
// item_price 与 item_id 一对一关系
String itemCoreId = itemIndexMap.get(indexKey).get("item_price:item_id");
String oldItemId = new2oldItemIdMap.get(itemCoreId);
if (newItemIndexMap.get(oldItemId) == null) {
newItemIndexMap.put(oldItemId, new HashMap<>());
}
newItemIndexMap.get(oldItemId).putAll(value);
}
else if (indexKey.startsWith("item_price_change_log:")) {
// item_price_change_log 与 item_id 多对一关系
String itemCoreId = itemIndexMap.get(indexKey).get("item_price_change_log:item_id");
String oldItemId = new2oldItemIdMap.get(itemCoreId);
if (newItemIndexMap.get(oldItemId) == null) {
newItemIndexMap.put(oldItemId, new HashMap<>());
}
Map<String,Object> srcMap = newItemIndexMap.get(oldItemId);
newItemIndexMap.get(oldItemId).putAll(merge(srcMap, value));
}
}
return buildFinalOrderItemMap(newItemIndexMap, old2newItemIdMap, orderNo, sID);
}
/**
* 构建最终的订单商品信息
* @param itemIndexMap 商品信息
* @param old2newItemIdMap 新老itemId映射
* @param orderNo 订单号
* @param sID 店铺号
* @return 订单商品扩展信息
*/
private static Map<String, Map<String,Object>> buildFinalOrderItemMap(Map<String, Map<String,Object>> itemIndexMap,
Map<String,String> old2newItemIdMap,
String orderNo, String sID) {
Map<String, Map<String,Object>> finalResult = new HashMap |