浏览代码

优化小程序全部订单部分明细没有图片问题

liyuan 7 月之前
父节点
当前提交
2735f5d42e

+ 41 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -36,6 +36,7 @@ import org.springblade.client.entity.Message;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.jackson.JsonUtil;
@@ -4724,8 +4725,47 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (itemsList.isEmpty()) {
 			return pages;
 		}
+		BladeUser user = AuthUtil.getUser();
+		// 从商品中获取图片
+		List<Long> goodsIds = itemsList.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+		List<PjGoodsFiles> pjGoodsFiles = goodsFilesService.list(new LambdaQueryWrapper<PjGoodsFiles>()
+			.eq(PjGoodsFiles::getTenantId, user.getTenantId())
+			.eq(PjGoodsFiles::getIsDeleted, 0)
+			.in(PjGoodsFiles::getPid, goodsIds)
+			.eq(PjGoodsFiles::getMainImage, 0));
+		// 从品牌中获取图片
+		List<Long> brandIds = itemsList.stream().map(PjOrderItems::getBrandId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+		List<PjBrandFiles> brandFilesList = null;
+		if (!brandIds.isEmpty()) {
+			brandFilesList = brandFilesService.list(new LambdaQueryWrapper<PjBrandFiles>()
+				.eq(PjBrandFiles::getMainImage, 0)
+				.eq(PjBrandFiles::getTenantId, user.getTenantId())
+				.eq(PjBrandFiles::getIsDeleted, 0)
+				.in(PjBrandFiles::getPid, brandIds)
+			);
+		}
 		for (PjOrder e : pages.getRecords()) {
-			e.setOrderItemsList(itemsList.stream().filter(e1 -> e1.getPid().equals(e.getId())).collect(Collectors.toList()));
+			List<PjOrderItems> nowOrderItems = itemsList.stream().filter(e1 -> e1.getPid().equals(e.getId())).collect(Collectors.toList());
+			e.setOrderItemsList(nowOrderItems);
+			for (PjOrderItems item : nowOrderItems) {
+				// TODO: 与别的地方代码重复,需要优化
+				if (!org.springframework.util.StringUtils.isEmpty(item.getUrl())) {
+					continue;
+				}
+				PjGoodsFiles goodsFiles = pjGoodsFiles.stream().filter(goods -> goods.getPid().equals(item.getGoodsId())).findFirst().orElse(null);
+				if (goodsFiles != null) {
+					item.setUrl(goodsFiles.getUrl());
+					continue;
+				}
+				if (brandFilesList == null) {
+					continue;
+				}
+				PjBrandFiles brandFiles = brandFilesList.stream().filter(brand -> brand.getPid().equals(item.getBrandId())).findFirst().orElse(null);
+				if (brandFiles == null) {
+					continue;
+				}
+				item.setUrl(brandFiles.getUrl());
+			}
 		}
 		return pages;
 	}