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

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

1
.gitignore vendored

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

@ -65,7 +65,7 @@ public class RecycleOrderController {
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude())); t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
}); });
// 3.数据组装处理 // 3.数据组装处理
this.computeOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation()); this.assembleOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation());
return CommonResult.success(recycleOrderPageVO); return CommonResult.success(recycleOrderPageVO);
} }
@ -87,7 +87,7 @@ public class RecycleOrderController {
RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class, (s, t) -> { RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class, (s, t) -> {
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude())); t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
}); });
this.computeOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location); this.assembleOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location);
return CommonResult.success(recycleOrderRespVO); return CommonResult.success(recycleOrderRespVO);
} }
@ -154,43 +154,43 @@ public class RecycleOrderController {
} }
/** /**
* * -
* @param orderRespVOList * @param orderRespVOList
* @param locationDTO * @param locationDTO
*/ */
private void computeOrderDetailsInfo(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) { private void assembleOrderDetailsInfo(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
if (CollUtils.isEmpty(orderRespVOList)) return; if (CollUtils.isEmpty(orderRespVOList)) return;
List<String> orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList()); List<String> orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList());
// 查询订单-废品关联信息
List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds); List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds);
List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class); List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class);
this.assembleProductInfo(detailResponseVOList); 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) {
this.computeOrderDistance(orderRespVO, locationDTO);
List<RecycleOrderDetailResponseVO> orderDetails = orderProductsMap.get(orderRespVO.getId()); List<RecycleOrderDetailResponseVO> orderDetails = orderProductsMap.get(orderRespVO.getId());
orderRespVO.setOrderDetails(orderDetails); 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 * @param detailVOList
*/ */
private void assembleProductInfo(List<RecycleOrderDetailResponseVO> 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.OrderStatusEnum;
import cc.yunxi.enums.OrderTypeEnum; import cc.yunxi.enums.OrderTypeEnum;
import cc.yunxi.enums.ProductWeightEnum;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -14,6 +15,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
/** /**
* <p> * <p>
* *
@ -60,6 +63,10 @@ public class RecycleOrder {
@TableField("client_name") @TableField("client_name")
private String clientName; private String clientName;
@ApiModelProperty(value = "废品预估重量", required = true)
@TableField("predict_weight")
private ProductWeightEnum predictWeight;
@ApiModelProperty("散户手机号") @ApiModelProperty("散户手机号")
@TableField("client_mobile") @TableField("client_mobile")
private String clientMobile; private String clientMobile;

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

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

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

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

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

Loading…
Cancel
Save