用户下单废品预估重量逻辑变更v1

wxpay
LI-CCONG\李聪聪 7 months ago
parent 56c31fd1d7
commit aa3baba1e5

1
.gitignore vendored

@ -4,6 +4,7 @@ target/
!**/src/main/**/target/
!**/src/test/**/target/
logs
upload
### STS ###
.apt_generated

@ -65,7 +65,7 @@ public class RecycleOrderController {
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
});
// 3.数据组装处理
this.computeOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation());
this.assembleOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation());
return CommonResult.success(recycleOrderPageVO);
}
@ -87,7 +87,7 @@ public class RecycleOrderController {
RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class, (s, t) -> {
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
});
this.computeOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location);
this.assembleOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location);
return CommonResult.success(recycleOrderRespVO);
}
@ -154,43 +154,43 @@ public class RecycleOrderController {
}
/**
*
* -
* @param orderRespVOList
* @param locationDTO
*/
private void computeOrderDetailsInfo(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
private void assembleOrderDetailsInfo(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
if (CollUtils.isEmpty(orderRespVOList)) return;
List<String> orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList());
// 查询订单-废品关联信息
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) {
this.computeOrderDistance(orderRespVO, locationDTO);
List<RecycleOrderDetailResponseVO> orderDetails = orderProductsMap.get(orderRespVO.getId());
orderRespVO.setOrderDetails(orderDetails);
if (ObjectUtil.isNotEmpty(locationDTO)) {
String longitude = locationDTO.getLongitude();
String latitude = locationDTO.getLatitude();
String orderLongitude = orderRespVO.getLocation().getLongitude();
String orderLatitude = orderRespVO.getLocation().getLatitude();
BigDecimal distance = CommonUtil.getDistance(longitude, latitude, orderLongitude, orderLatitude);
orderRespVO.setDistance(distance.toString().concat("km"));
}
BigDecimal expectedPrice = new BigDecimal("0");
for (RecycleOrderDetailResponseVO orderDetail : orderDetails) {
BigDecimal bigDecimal = new BigDecimal(orderDetail.getProductWeight().getCode());
BigDecimal recoveryPrice = orderDetail.getRecoveryPrice();
expectedPrice = expectedPrice.add(bigDecimal.multiply(recoveryPrice));
}
orderRespVO.setExpectedPrice(expectedPrice);
}
}
/**
*
*
* @param orderRespVO
* @param locationDTO
*/
private void computeOrderDistance(RecycleOrderRespVO orderRespVO, LocationDTO locationDTO) {
if (ObjectUtil.isNotEmpty(locationDTO)) {
String longitude = locationDTO.getLongitude();
String latitude = locationDTO.getLatitude();
String orderLongitude = orderRespVO.getLocation().getLongitude();
String orderLatitude = orderRespVO.getLocation().getLatitude();
BigDecimal distance = CommonUtil.getDistance(longitude, latitude, orderLongitude, orderLatitude);
orderRespVO.setDistance(distance.toString().concat("km"));
}
}
/**
*
* @param detailVOList
*/
private void assembleProductInfo(List<RecycleOrderDetailResponseVO> detailVOList) {

@ -2,6 +2,7 @@ package cc.yunxi.domain.po;
import cc.yunxi.enums.OrderStatusEnum;
import cc.yunxi.enums.OrderTypeEnum;
import cc.yunxi.enums.ProductWeightEnum;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@ -14,6 +15,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
/**
* <p>
*
@ -60,6 +63,10 @@ public class RecycleOrder {
@TableField("client_name")
private String clientName;
@ApiModelProperty(value = "废品预估重量", required = true)
@TableField("predict_weight")
private ProductWeightEnum predictWeight;
@ApiModelProperty("散户手机号")
@TableField("client_mobile")
private String clientMobile;

@ -43,9 +43,9 @@ public class RecycleOrderProduct {
@TableField("product_name")
private String productName;
@ApiModelProperty("商品预估重量")
@TableField("product_weight")
private ProductWeightEnum productWeight;
// @ApiModelProperty("商品预估重量")
// @TableField("product_weight")
// private ProductWeightEnum productWeight;
@ApiModelProperty("商品实际重量")
@TableField("product_actual_weight")

@ -2,6 +2,7 @@ package cc.yunxi.domain.vo.recycleorder;
import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailCreateVO;
import cc.yunxi.enums.ProductWeightEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -18,6 +19,9 @@ import java.util.List;
@Data
public class RecycleOrderCreateVO {
@ApiModelProperty(value = "散户id", hidden = true, example = "1763507031581421570")
private String clientId;
@ApiModelProperty(value = "回收站id", required = true, example = "521632060801030597")
@NotBlank(message = "关联回收站不能为空")
private String recycleStationId;
@ -26,8 +30,9 @@ public class RecycleOrderCreateVO {
// @NotBlank(message = "订单类型不能为空")
// private String orderType;
@ApiModelProperty(value = "散户id", hidden = true, example = "1763507031581421570")
private String clientId;
@ApiModelProperty(value = "废品预估重量", required = true)
@NotNull(message = "废品预估重量不能为空")
private ProductWeightEnum predictWeight;
@ApiModelProperty(value = "散户地址", required = true, example = "xxx市yyy区")
@NotBlank(message = "散户地址不能为空")

@ -4,6 +4,7 @@ import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO;
import cc.yunxi.enums.OrderStatusEnum;
import cc.yunxi.enums.OrderTypeEnum;
import cc.yunxi.enums.ProductWeightEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -52,8 +53,11 @@ public class RecycleOrderRespVO {
@ApiModelProperty("散户手机号")
private String clientMobile;
@ApiModelProperty("回收地址")
private String recycleAddress;
@ApiModelProperty("散户地址")
private String recycleAddress; // todo
@ApiModelProperty("预估重量")
private ProductWeightEnum predictWeight;
@ApiModelProperty("订单地理位置")
private LocationDTO location;
@ -121,10 +125,6 @@ public class RecycleOrderRespVO {
@ApiModelProperty("订单距离(回收员专用)")
private String distance;
@ApiModelProperty("预估价")
private BigDecimal expectedPrice;
@ApiModelProperty("订单明细详情")
private List<RecycleOrderDetailResponseVO> orderDetails;

@ -27,10 +27,6 @@ public class RecycleOrderDetailCreateVO {
// @NotBlank(message = "商品名称不能为空")
// private String productName;
@ApiModelProperty(value = "废品预估重量", required = true)
@NotNull(message = "废品预估重量不能为空")
private ProductWeightEnum productWeight;
@ApiModelProperty(value = "下单时回收单价", required = true)
@NotNull(message = "下单时回收单价不能为空")
@DecimalMin(value = "0.01", message = "下单时回收单价数值错误")

@ -40,9 +40,6 @@ public class RecycleOrderDetailResponseVO {
@ApiModelProperty("废品信息")
private ProductSimpleVO product;
@ApiModelProperty("废品预估重量")
private ProductWeightEnum productWeight;
@ApiModelProperty("废品实际重量")
private Double productActualWeight;

Loading…
Cancel
Save