订单详情废品信息组装

wxpay
LI-CCONG\李聪聪 7 months ago
parent f2e714b5ba
commit 3f2d0be430

@ -13,6 +13,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.List;
@Api(tags = "首页接口")
@ -28,7 +29,7 @@ public class IndexController {
@ApiOperation("废品类目列表")
@GetMapping("/products")
public CommonResult<List<ProductSimpleVO>> queryProductList() {
List<Product> productList = priceProductService.queryProductList();
List<Product> productList = priceProductService.queryProductList(Collections.emptyList());
List<ProductSimpleVO> productSimpleVOList = BeanUtils.copyList(productList, ProductSimpleVO.class);
return CommonResult.success(productSimpleVOList);
}

@ -8,12 +8,15 @@ import cc.yunxi.common.utils.CollUtils;
import cc.yunxi.common.utils.CommonUtil;
import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.dto.UserDTO;
import cc.yunxi.domain.po.Product;
import cc.yunxi.domain.po.RecycleOrderProduct;
import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO;
import cc.yunxi.domain.vo.recycleorder.*;
import cc.yunxi.domain.po.RecycleOrder;
import cc.yunxi.domain.query.RecycleOrderQuery;
import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO;
import cc.yunxi.enums.UserTypeEnum;
import cc.yunxi.service.IPriceProductService;
import cc.yunxi.service.IRecycleOrderProductService;
import cc.yunxi.service.IRecycleOrderService;
import cc.yunxi.utils.UserContext;
@ -46,6 +49,8 @@ public class RecycleOrderController {
private final IRecycleOrderProductService recycleOrderProductService;
private final IPriceProductService priceProductService;
@ApiOperation("分页查询回收订单")
@PostMapping("/page")
public CommonResult<PageDTO<RecycleOrderRespVO>> queryOrderByPage(@RequestBody RecycleOrderQuery recycleOrderQuery) {
@ -106,6 +111,7 @@ public class RecycleOrderController {
public CommonResult<List<RecycleOrderDetailResponseVO>> OrderProductList(@RequestParam("orderId") String orderId) {
List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(Collections.singletonList(orderId));
List<RecycleOrderDetailResponseVO> recycleOrderDetailVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class);
this.assembleProductInfo(recycleOrderDetailVOList);
// 是否展示最新价格? todo
return CommonResult.success(recycleOrderDetailVOList);
}
@ -162,18 +168,19 @@ public class RecycleOrderController {
}
/**
*
*
* @param orderIds
* @param orderRespVOList
*/
private void computeOrderDetailsInfo(List<String> orderIds, List<RecycleOrderRespVO> orderRespVOList) {
if (CollUtils.isEmpty(orderIds) || CollUtils.isEmpty(orderRespVOList)) return;
// 查询订单下废品信息
List<RecycleOrderProduct> productsInOrders = recycleOrderProductService.getOrderProductsByOrderIds(orderIds);
List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(productsInOrders, RecycleOrderDetailResponseVO.class);
// 查询订单-废品关联信息
List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds);
List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class);
this.assembleProductInfo(detailResponseVOList);
Map<String, List<RecycleOrderDetailResponseVO>> orderProductsMap =
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId));
// 组装数据、计算预估值
// 组装废品重量回收价、计算预估值
for (RecycleOrderRespVO orderRespVO : orderRespVOList) {
List<RecycleOrderDetailResponseVO> orderDetails = orderProductsMap.get(orderRespVO.getId());
orderRespVO.setOrderDetails(orderDetails);
@ -186,4 +193,20 @@ public class RecycleOrderController {
orderRespVO.setExpectedPrice(expectedPrice);
}
}
/**
*
* @param detailVOList
*/
private void assembleProductInfo(List<RecycleOrderDetailResponseVO> detailVOList) {
if (CollUtils.isEmpty(detailVOList)) return;
Set<String> productIds = detailVOList.stream().map(RecycleOrderDetailResponseVO::getProductId).collect(Collectors.toSet());
List<Product> productList = priceProductService.queryProductList(productIds);
Map<String, Product> productMap = productList.stream().collect(Collectors.toMap(Product::getId, p -> p, (k1, k2) -> k1));
for (RecycleOrderDetailResponseVO detailVO : detailVOList) {
String productId = detailVO.getProductId();
Product product = productMap.get(productId);
detailVO.setProduct(BeanUtils.copyBean(product, ProductSimpleVO.class));
}
}
}

@ -44,8 +44,8 @@ public class Product {
private String spec;
@ApiModelProperty("描述")
@TableField("describe")
private String describe;
@TableField("description")
private String description;
@ApiModelProperty("图片")
@TableField("photo")

@ -48,7 +48,7 @@ public class ProductRespVO {
private String spec;
@ApiModelProperty("废品描述")
private String describe;
private String description;
@ApiModelProperty("废品图")
private String photo;

@ -29,7 +29,7 @@ public class ProductSimpleVO {
private String name;
@ApiModelProperty("废品描述")
private String describe;
private String description;
@ApiModelProperty("废品图")
private String photo;

@ -19,16 +19,16 @@ public class RecycleOrderDetailCreateVO {
@ApiModelProperty(value = "订单id", hidden = true, example = "1763827319099719682")
private String recycleOrderId;
@ApiModelProperty(value = "品id", required = true, example = "534658869696135686")
@NotBlank(message = "品id不能为空")
@ApiModelProperty(value = "品id", required = true, example = "534658869696135686")
@NotBlank(message = "品id不能为空")
private String productId;
@ApiModelProperty(value = "商品名称", required = true)
@NotBlank(message = "商品名称不能为空")
private String productName;
// @ApiModelProperty(value = "商品名称", required = true)
// @NotBlank(message = "商品名称不能为空")
// private String productName;
@ApiModelProperty(value = "品预估重量", required = true)
@NotNull(message = "品预估重量不能为空")
@ApiModelProperty(value = "品预估重量", required = true)
@NotNull(message = "品预估重量不能为空")
private ProductWeightEnum productWeight;
@ApiModelProperty(value = "下单时回收单价", required = true)

@ -1,5 +1,6 @@
package cc.yunxi.domain.vo.recycleorderdetail;
import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO;
import cc.yunxi.enums.OrderStatusEnum;
import cc.yunxi.enums.OrderTypeEnum;
import cc.yunxi.enums.ProductWeightEnum;
@ -33,16 +34,16 @@ public class RecycleOrderDetailResponseVO {
@ApiModelProperty("订单id")
private String recycleOrderId;
@ApiModelProperty("品id")
@ApiModelProperty("品id")
private String productId;
@ApiModelProperty("商品名称")
private String productName;
@ApiModelProperty("废品信息")
private ProductSimpleVO product;
@ApiModelProperty("品预估重量")
@ApiModelProperty("品预估重量")
private ProductWeightEnum productWeight;
@ApiModelProperty("品实际重量")
@ApiModelProperty("品实际重量")
private Double productActualWeight;
@ApiModelProperty("下单时回收单价")

@ -19,13 +19,13 @@ public class RecycleOrderDetailUpdateVO {
@NotBlank(message = "id不能为空")
private String id;
@ApiModelProperty(value = "品id", required = true, example = "534658869696135686")
@NotBlank(message = "品id不能为空")
@ApiModelProperty(value = "品id", required = true, example = "534658869696135686")
@NotBlank(message = "品id不能为空")
private String productId;
@ApiModelProperty(value = "品实际重量", required = true, example = "1.08")
@NotNull(message = "品实际重量不能为空")
@DecimalMin(value = "0.00", message = "品实际重量数值错误")
@ApiModelProperty(value = "品实际重量", required = true, example = "1.08")
@NotNull(message = "品实际重量不能为空")
@DecimalMin(value = "0.00", message = "品实际重量数值错误")
private Double productActualWeight;

@ -1,9 +1,11 @@
package cc.yunxi.service;
import cc.yunxi.domain.po.Price;
import cc.yunxi.domain.po.PriceProduct;
import cc.yunxi.domain.po.Product;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
@ -14,12 +16,13 @@ import java.util.List;
* @author ccongli
* @since 2024-03-08 01:37:49
*/
public interface IPriceProductService extends IService<Price> {
public interface IPriceProductService extends IService<PriceProduct> {
/**
*
* @return List<Product>
*/
List<Product> queryProductList();
List<Product> queryProductList(Collection<String> productIds);
}

@ -1,14 +1,20 @@
package cc.yunxi.service.impl;
import cc.yunxi.common.domain.LambdaQueryWrapperX;
import cc.yunxi.common.utils.CollUtils;
import cc.yunxi.domain.po.Price;
import cc.yunxi.domain.po.PriceProduct;
import cc.yunxi.domain.po.Product;
import cc.yunxi.mapper.PriceMapper;
import cc.yunxi.mapper.PriceProductMapper;
import cc.yunxi.mapper.ProductMapper;
import cc.yunxi.service.IPriceProductService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
/**
@ -20,14 +26,18 @@ import java.util.List;
* @since 2024-03-08 01:37:49
*/
@Service
public class PriceProductServiceImpl extends ServiceImpl<PriceMapper, Price> implements IPriceProductService {
public class PriceProductServiceImpl extends ServiceImpl<PriceProductMapper, PriceProduct> implements IPriceProductService {
@Resource
private ProductMapper productMapper;
@Override
public List<Product> queryProductList() {
return productMapper.selectList(null);
public List<Product> queryProductList(Collection<String> productIds) {
LambdaQueryWrapperX<Product> wrapperX = new LambdaQueryWrapperX<>();
if (CollUtils.isNotEmpty(productIds)) {
wrapperX.inIfPresent(Product::getId, productIds);
}
return productMapper.selectList(wrapperX);
}
}

@ -111,7 +111,7 @@ public class RecycleStationServiceImpl extends ServiceImpl<RecycleStationMapper,
.setSpec(product.getSpec())
.setUnit(product.getUnit())
.setPhoto(product.getPhoto())
.setDescribe(product.getDescribe());
.setDescription(product.getDescription());
productRespVOList.add(productRespVO);
}
}

Loading…
Cancel
Save