订单详情废品信息组装

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

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

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

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

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

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

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

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

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

@ -1,14 +1,20 @@
package cc.yunxi.service.impl; 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.Price;
import cc.yunxi.domain.po.PriceProduct;
import cc.yunxi.domain.po.Product; import cc.yunxi.domain.po.Product;
import cc.yunxi.mapper.PriceMapper; import cc.yunxi.mapper.PriceMapper;
import cc.yunxi.mapper.PriceProductMapper;
import cc.yunxi.mapper.ProductMapper; import cc.yunxi.mapper.ProductMapper;
import cc.yunxi.service.IPriceProductService; import cc.yunxi.service.IPriceProductService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@ -20,14 +26,18 @@ import java.util.List;
* @since 2024-03-08 01:37:49 * @since 2024-03-08 01:37:49
*/ */
@Service @Service
public class PriceProductServiceImpl extends ServiceImpl<PriceMapper, Price> implements IPriceProductService { public class PriceProductServiceImpl extends ServiceImpl<PriceProductMapper, PriceProduct> implements IPriceProductService {
@Resource @Resource
private ProductMapper productMapper; private ProductMapper productMapper;
@Override @Override
public List<Product> queryProductList() { public List<Product> queryProductList(Collection<String> productIds) {
return productMapper.selectList(null); 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()) .setSpec(product.getSpec())
.setUnit(product.getUnit()) .setUnit(product.getUnit())
.setPhoto(product.getPhoto()) .setPhoto(product.getPhoto())
.setDescribe(product.getDescribe()); .setDescription(product.getDescription());
productRespVOList.add(productRespVO); productRespVOList.add(productRespVO);
} }
} }

Loading…
Cancel
Save