Browse Source

优化订单查询速度

sj
1304317391@qq.com 2 years ago
parent
commit
2350df80a3
  1. 156
      zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java

156
zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java

@ -2465,25 +2465,165 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
List<YxStoreOrderDto> storeOrderDTOS = new ArrayList<>();
for (YxStoreOrder yxStoreOrder : page.getList()) {
this.orderList(storeOrderDTOS, yxStoreOrder);
}
// List<YxStoreOrderDto> list=this.newAssemble(page.getList());
Map<String, Object> map = new LinkedHashMap<>(2);
map.put("content", storeOrderDTOS);
// map.put("content", list);
map.put("totalElements", page.getTotal());
return map;
}
/**
* @param orderList 订单列表
* @return 组装后的订单列表
*/
private List<YxStoreOrderDto> newAssemble(List<YxStoreOrder> orderList){
//返回的数据List
List<YxStoreOrderDto> dtoList = new ArrayList<>();
if (!orderList.isEmpty()){
//店铺名id
List<Integer> storeIdList = orderList.stream().filter(item -> item.getStoreId() > 0)
.map(YxStoreOrder::getStoreId).collect(Collectors.toList());
List<YxSystemStore> systemStoreList = storeIdList.isEmpty() ? new ArrayList<>() : systemStoreService.listByIds(storeIdList);
//购物车
List<Long> orderIdList = orderList.stream().map(YxStoreOrder::getId).collect(Collectors.toList());
List<YxStoreOrderCartInfo> cartInfoList = orderIdList.isEmpty() ? new ArrayList<>() :
storeOrderCartInfoService.list(
new LambdaQueryWrapper<YxStoreOrderCartInfo>().in(YxStoreOrderCartInfo::getOid, orderIdList));
//用户id
List<Long> uidList = orderList.stream().map(YxStoreOrder::getUid).collect(Collectors.toList());
List<YxUser> userList = uidList.isEmpty() ? new ArrayList<>() : userService.listByIds(uidList);
dtoList = generator.convert(orderList, YxStoreOrderDto.class);
//订单类型处理
Map<Long, String> orderTypeMap = this.assembleOrderType(dtoList);
//返回的数据List
for (YxStoreOrderDto yxStoreOrderDto : dtoList) {
Integer _status = OrderUtil.orderStatus(yxStoreOrderDto.getPaid(), yxStoreOrderDto.getStatus(),
yxStoreOrderDto.getRefundStatus());
//订单状态
String orderStatusStr = OrderUtil.orderStatusStr(yxStoreOrderDto.getPaid()
, yxStoreOrderDto.getStatus(), yxStoreOrderDto.getShippingType()
, yxStoreOrderDto.getRefundStatus());
//订单匹配店铺名
systemStoreList.stream().filter(item -> item.getId() == yxStoreOrderDto.getStoreId()).findAny()
.ifPresent(store -> {
yxStoreOrderDto.setStoreName(store.getName());
});
if (_status == 3) {
String refundTime = DateUtil.formatDateTime(yxStoreOrderDto.getRefundReasonTime());
String str = "<b style='color:#f124c7'>申请退款</b><br/>" +
"<span>退款原因:" + yxStoreOrderDto.getRefundReasonWap() + "</span><br/>" +
"<span>备注说明:" + yxStoreOrderDto.getRefundReasonWapExplain() + "</span><br/>" +
"<span>退款时间:" + refundTime + "</span><br/>";
orderStatusStr = str;
}
yxStoreOrderDto.setStatusName(orderStatusStr);
yxStoreOrderDto.set_status(_status);
//支付类型
String payTypeName = OrderUtil.payTypeName(yxStoreOrderDto.getPayType(), yxStoreOrderDto.getPaid());
yxStoreOrderDto.setPayTypeName(payTypeName);
//订单类型处理
yxStoreOrderDto.setPinkName(orderTypeMap.get(yxStoreOrderDto.getId()).isEmpty() ?
this.orderType(yxStoreOrderDto.getId()
, yxStoreOrderDto.getPinkId(), yxStoreOrderDto.getCombinationId()
, yxStoreOrderDto.getSeckillId(), yxStoreOrderDto.getBargainId(),
yxStoreOrderDto.getShippingType(), yxStoreOrderDto.getPayIntegral())
: orderTypeMap.get(yxStoreOrderDto.getId()));
//购物车
List<YxStoreOrderCartInfo> orderCartList = cartInfoList.stream().filter(item -> item.getOid().equals(yxStoreOrderDto.getId())).collect(Collectors.toList());
List<StoreOrderCartInfoDto> cartInfoDTOS = new ArrayList<>();
for (YxStoreOrderCartInfo cartInfo : orderCartList) {
StoreOrderCartInfoDto cartInfoDTO = new StoreOrderCartInfoDto();
cartInfoDTO.setCartInfoMap(JSON.parseObject(cartInfo.getCartInfo()));
cartInfoDTOS.add(cartInfoDTO);
}
yxStoreOrderDto.setCartInfoList(cartInfoDTOS);
//用户信息
userList.stream().filter(item -> item.getUid().equals(yxStoreOrderDto.getUid())).findFirst()
.ifPresent(user ->{
yxStoreOrderDto.setUserDTO(generator.convert(user, YxUserDto.class));
});
if (yxStoreOrderDto.getUserDTO() == null) {
yxStoreOrderDto.setUserDTO(new YxUserDto());
}
}
}
return dtoList;
}
private Map<Long, String> assembleOrderType(List<YxStoreOrderDto> dtoList) {
Map<Long, String> map = new HashMap<>();
List<YxStoreOrderDto> storePinkIdList = dtoList.stream().filter(item -> item.getPinkId() > 0 || item.getCombinationId() > 0).collect(Collectors.toList());
List<YxStorePink> storePinkList = storePinkIdList.isEmpty() ? new ArrayList<>() :
storePinkService.list(Wrappers.<YxStorePink>lambdaQuery().in(YxStorePink::getOrderIdKey, storePinkIdList));
for (YxStoreOrderDto dto : dtoList) {
String str = "[普通订单]";
if (dto.getPinkId() > 0 || dto.getCombinationId() > 0) {
Optional<YxStorePink> pink = storePinkList.stream().filter(item -> item.getOrderIdKey().equals(dto.getId())).findFirst();
if (pink.isPresent()){
YxStorePink storePink = pink.get();
if (OrderInfoEnum.PINK_STATUS_1.getValue().equals(storePink.getStatus())) {
str = "[拼团订单]拼团进行中";
} else if (OrderInfoEnum.PINK_STATUS_2.getValue().equals(storePink.getStatus())) {
str = "[拼团订单]拼团完成";
} else if (OrderInfoEnum.PINK_STATUS_3.getValue().equals(storePink.getStatus())) {
str = "[拼团订单]拼团失败";
} else {
str = "[拼团订单]历史订单";
}
}else {
str = "[拼团订单]";
}
}else if (dto.getSeckillId() > 0) {
str = "[秒杀订单]";
} else if (dto.getBargainId() > 0) {
str = "[砍价订单]";
}
if (OrderInfoEnum.SHIPPIING_TYPE_2.getValue().equals(dto.getShippingType())) {
str = "[核销订单]";
}
if (dto.getPayIntegral().compareTo(new BigDecimal("0.00")) == 1) {
str = "[积分兑换]";
}
map.put(dto.getId(), str);
}
return map;
}
@Override
public Map<String, Object> queryAll(YxStoreOrderQueryCriteria criteria, Pageable pageable) {
getPage(pageable);
PageInfo<YxStoreOrder> page = new PageInfo<>(queryAll(criteria));
List<YxStoreOrderDto> storeOrderDTOS = new ArrayList<>();
for (YxStoreOrder yxStoreOrder : page.getList()) {
this.orderList(storeOrderDTOS, yxStoreOrder);
}
// List<YxStoreOrderDto> storeOrderDTOS = new ArrayList<>();
// for (YxStoreOrder yxStoreOrder : page.getList()) {
// this.orderList(storeOrderDTOS, yxStoreOrder);
//
// }
List<YxStoreOrderDto> list=this.newAssemble(page.getList());
Map<String, Object> map = new LinkedHashMap<>(2);
map.put("content", storeOrderDTOS);
// map.put("content", storeOrderDTOS);
map.put("content",list);
map.put("totalElements", page.getTotal());
return map;
}
@ -2536,7 +2676,7 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
pBrand.append(yxStoreBrandService.getById(yxStoreProduct.getBrandId()).getBrandName());
}
if (ObjectUtil.isNotNull(yxStoreCategoryService.getById(yxStoreProduct.getCateId()))){
YxStoreCategory yxStoreCategory=yxStoreCategoryService.getById(yxStoreProduct.getCateId());
// YxStoreCategory yxStoreCategory=yxStoreCategoryService.getById(yxStoreProduct.getCateId());
pCate.append(yxStoreCategoryService.getById(yxStoreProduct.getCateId()).getCateName());
}
});

Loading…
Cancel
Save