diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java index bb763e2e6..130097573 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java @@ -2,6 +2,8 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.ClearingBillDetail; import java.util.List; +import java.util.Map; + public interface ClearingBillDetailService{ @@ -27,6 +29,5 @@ public interface ClearingBillDetailService{ int batchInsert(List list); - ClearingBillDetail selectByOrderCode(String orderCode); - + Map selectByOrderCodeList(List orderCodeList); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java index 804a90811..3339607b2 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java @@ -1,6 +1,7 @@ package com.jsowell.pile.service.impl; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.pile.domain.ClearingBillDetail; @@ -9,11 +10,12 @@ import com.jsowell.pile.service.ClearingBillDetailService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + import javax.annotation.Resource; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.function.Function; import java.util.stream.Collectors; @Service @@ -80,40 +82,49 @@ public class ClearingBillDetailServiceImpl implements ClearingBillDetailService{ return clearingBillDetailMapper.batchInsert(list); } - @Override - public ClearingBillDetail selectByOrderCode(String orderCode) { - String redisKey = CacheConstants.CLEARING_BILL_DETAIL_BY_ORDER_CODE + orderCode; - ClearingBillDetail clearingBillDetail = redisCache.getCacheObject(redisKey); - if (clearingBillDetail == null) { - clearingBillDetail = clearingBillDetailMapper.selectByOrderCode(orderCode); - if (Objects.nonNull(clearingBillDetail)) { - redisCache.setCacheObject(redisKey, clearingBillDetail, CacheConstants.cache_expire_time_10d); - } - } - return clearingBillDetail; - } - /** - * 根据订单编号list查询分账记录 - * @param orderCodes + * 根据订单编号批量查询 + * @param orderCodeList * @return */ - public List selectByOrderCodes(List orderCodes) { - if (CollectionUtils.isEmpty(orderCodes)) { - return Lists.newArrayList(); + @Override + public Map selectByOrderCodeList(List orderCodeList) { + Map resultMap = Maps.newHashMap(); + if (CollectionUtils.isEmpty(orderCodeList)) { + return resultMap; } List redisKeyList = Lists.newArrayList(); - for (String orderCode : orderCodes) { + for (String orderCode : orderCodeList) { redisKeyList.add(CacheConstants.CLEARING_BILL_DETAIL_BY_ORDER_CODE + orderCode); } // 批量从redis获取 List resultList = redisCache.multiGet(redisKeyList); + resultList = resultList.stream().filter(Objects::nonNull).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(resultList)) { - + for (ClearingBillDetail clearingBillDetail : resultList) { + resultMap.put(clearingBillDetail.getOrderCode(), clearingBillDetail); + } + // 剔除已经从缓存中获取到的数据 + Iterator iterator = orderCodeList.iterator(); + while (iterator.hasNext()) { + String orderCode = iterator.next(); + ClearingBillDetail detail = resultMap.get(orderCode); + if (detail != null) { + iterator.remove(); + } + } } - List billDetailList = clearingBillDetailMapper.selectByOrderCodes(orderCodes); - return billDetailList; + + if (CollectionUtils.isNotEmpty(orderCodeList)) { + List detailList = clearingBillDetailMapper.selectByOrderCodes(orderCodeList); + if (CollectionUtils.isNotEmpty(detailList)) { + for (ClearingBillDetail clearingBillDetail : detailList) { + resultMap.put(clearingBillDetail.getOrderCode(), clearingBillDetail); + } + } + } + return resultMap; } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 1d9ca981c..80f1f9fe3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -219,6 +219,11 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { if (CollectionUtils.isEmpty(orderListVOS)) { return orderListVOS; } + + // 批量查手续费 + List orderCodeList = orderListVOS.stream().map(OrderListVO::getOrderCode).collect(Collectors.toList()); + Map billDetailMap = clearingBillDetailService.selectByOrderCodeList(orderCodeList); + for (OrderListVO orderListVO : orderListVOS) { // 如果是微信支付,通过订单号查询微信支付单号 // logger.info("如果是微信支付,通过订单号查询微信支付单号 orderListVO:{}", JSON.toJSONString(orderListVO)); @@ -248,7 +253,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { } // 交易手续费 - ClearingBillDetail clearingBillDetail = clearingBillDetailService.selectByOrderCode(orderListVO.getOrderCode()); + ClearingBillDetail clearingBillDetail = billDetailMap.get(orderListVO.getOrderCode()); if (Objects.nonNull(clearingBillDetail)) { orderListVO.setFeeAmount(clearingBillDetail.getFeeAmt() + ""); }