Commit f3a6f275 by 缪晖

拼单加购人包装费

parent bd9db432
...@@ -809,6 +809,7 @@ public class OrderSdkAdapter { ...@@ -809,6 +809,7 @@ public class OrderSdkAdapter {
productBean.setOpenId(orderItemResp.getOpenId()); productBean.setOpenId(orderItemResp.getOpenId());
productBean.setNickName(orderItemResp.getNickName()); productBean.setNickName(orderItemResp.getNickName());
productBean.setPhotoUrl(orderItemResp.getPhotoUrl()); productBean.setPhotoUrl(orderItemResp.getPhotoUrl());
productBean.setPackPrice(orderItemResp.getPackPrice());
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount> discountList = new ArrayList<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount>(); List<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount> discountList = new ArrayList<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount>();
List<OrderSettlementResp> orderSettlementResps1 = orderSettlementResps == null ? new ArrayList<>() : orderSettlementResps; List<OrderSettlementResp> orderSettlementResps1 = orderSettlementResps == null ? new ArrayList<>() : orderSettlementResps;
...@@ -1069,6 +1070,8 @@ public class OrderSdkAdapter { ...@@ -1069,6 +1070,8 @@ public class OrderSdkAdapter {
data.setMarketingType(ClassUtils.toByte(orderInfoReqs.getMarketingType())); data.setMarketingType(ClassUtils.toByte(orderInfoReqs.getMarketingType()));
} }
return data; return data;
} }
...@@ -2642,6 +2645,7 @@ public class OrderSdkAdapter { ...@@ -2642,6 +2645,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setOpenId(product.getOpenId()); orderItemCreateReq.setOpenId(product.getOpenId());
orderItemCreateReq.setNickName(product.getNickName()); orderItemCreateReq.setNickName(product.getNickName());
orderItemCreateReq.setPhotoUrl(product.getPhotoUrl()); orderItemCreateReq.setPhotoUrl(product.getPhotoUrl());
orderItemCreateReq.setPackPrice(product.getPackPrice());
// 拼单加购人信息 add by miaohui 2020.10.12 end // 拼单加购人信息 add by miaohui 2020.10.12 end
orderItemList.add(orderItemCreateReq); orderItemList.add(orderItemCreateReq);
......
...@@ -196,4 +196,9 @@ public class CreateOrderProductRequest extends BaseConfig { ...@@ -196,4 +196,9 @@ public class CreateOrderProductRequest extends BaseConfig {
* 加购人头像 * 加购人头像
*/ */
private String photoUrl; private String photoUrl;
/**
* 加购人包装费
*/
private Long packPrice;
} }
...@@ -542,6 +542,11 @@ public class QueryOrdersResponse { ...@@ -542,6 +542,11 @@ public class QueryOrdersResponse {
private String photoUrl; private String photoUrl;
/** /**
* 加购人包装费
*/
private Long packPrice;
/**
* 套餐子商品 * 套餐子商品
*/ */
public List<ProductBean> comboProduct; public List<ProductBean> comboProduct;
......
...@@ -2187,6 +2187,7 @@ public class OrderAdapter { ...@@ -2187,6 +2187,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setOpenId(cartGoodsDetailDto.getOpenId()); createOrderProductDemoDto.setOpenId(cartGoodsDetailDto.getOpenId());
createOrderProductDemoDto.setNickName(cartGoodsDetailDto.getUserName()); createOrderProductDemoDto.setNickName(cartGoodsDetailDto.getUserName());
createOrderProductDemoDto.setPhotoUrl(cartGoodsDetailDto.getPhotoUrl()); createOrderProductDemoDto.setPhotoUrl(cartGoodsDetailDto.getPhotoUrl());
createOrderProductDemoDto.setPackPrice(cartGoodsDetailDto.getPackPrice());
return createOrderProductDemoDto; return createOrderProductDemoDto;
} }
......
...@@ -227,6 +227,11 @@ public class ShoppingCartGoodsDto { ...@@ -227,6 +227,11 @@ public class ShoppingCartGoodsDto {
private String photoUrl; private String photoUrl;
/** /**
* 加购人包装费
*/
private Long packPrice;
/**
* 购物车行id * 购物车行id
*/ */
private String cartGoodsUid; private String cartGoodsUid;
......
...@@ -22,6 +22,7 @@ public class GroupBuyDetailResp { ...@@ -22,6 +22,7 @@ public class GroupBuyDetailResp {
private int payerNum; private int payerNum;
private Long totalAmount; private Long totalAmount;
private Long orderAmount;
private List<GroupBuyDto> payerList; private List<GroupBuyDto> payerList;
} }
...@@ -64,6 +64,11 @@ public class ProductVo { ...@@ -64,6 +64,11 @@ public class ProductVo {
private String photoUrl; private String photoUrl;
/** /**
* 加购人包装费
*/
private Long packPrice;
/**
* 商品的规格信息加属性信息 * 商品的规格信息加属性信息
*/ */
private String extras; private String extras;
......
...@@ -507,11 +507,27 @@ public class CheckOrder { ...@@ -507,11 +507,27 @@ public class CheckOrder {
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity()); requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
// 若为拼单类型,购物车信息从新的拼单购物车获取 update by miaohui for 【ID1010972】 多人拼单 // 若为拼单类型,购物车信息从新的拼单购物车获取 update by miaohui for 【ID1010972】 多人拼单
cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse; cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse;
if (createOrderVo.getMarketingType() != null && OrderMarketType.COLLAGE.getIndex() == createOrderVo.getMarketingType()) { if (this.isCollageOrder(createOrderVo)) {
apportionResponse = shoppingCartClient.getCollageShoppingCartGoodsApportion(requestDto); apportionResponse = shoppingCartClient.getCollageShoppingCartGoodsApportion(requestDto);
} else {
apportionResponse = shoppingCartClient.getShoppingCartGoodsApportionNew(requestDto);
}
if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, apportionResponse.getCode())) {
ResponseResult responseResult = ResponseResult.getResponseResult(apportionResponse.getCode());
throw new ServiceException(responseResult != null ? responseResult : ResponseResult.SHOPPING_CART_GETINFO_ERROR);
}
if (apportionResponse.getResult() == null || CollectionUtils.isEmpty(apportionResponse.getResult().getProducts())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
}
ShoppingCartGoodsDto shoppingCartGoodsDto = apportionResponse.getResult();
if (shoppingCartGoodsDto.getOriginalTotalAmount() == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
}
// 拼单处理
if (this.isCollageOrder(createOrderVo)) {
// 处理拼单加购人信息 // 处理拼单加购人信息
List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = apportionResponse.getResult().getProducts(); List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = shoppingCartGoodsDto.getProducts();
ShoppingCartGoodsDto.CartGoodsDetailDto createUserGood = products.stream().filter(good -> createOrderVo.getUserId().equals(good.getUserId())).findFirst().orElse(null); ShoppingCartGoodsDto.CartGoodsDetailDto createUserGood = products.stream().filter(good -> createOrderVo.getUserId().equals(good.getUserId())).findFirst().orElse(null);
if (null == createUserGood) { if (null == createUserGood) {
...@@ -531,20 +547,8 @@ public class CheckOrder { ...@@ -531,20 +547,8 @@ public class CheckOrder {
cartGoodsNullUser.setPhotoUrl(createUserGood.getPhotoUrl()); cartGoodsNullUser.setPhotoUrl(createUserGood.getPhotoUrl());
}); });
} }
} else {
apportionResponse = shoppingCartClient.getShoppingCartGoodsApportionNew(requestDto);
}
if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, apportionResponse.getCode())) {
ResponseResult responseResult = ResponseResult.getResponseResult(apportionResponse.getCode());
throw new ServiceException(responseResult != null ? responseResult : ResponseResult.SHOPPING_CART_GETINFO_ERROR);
}
if (apportionResponse.getResult() == null || CollectionUtils.isEmpty(apportionResponse.getResult().getProducts())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
}
ShoppingCartGoodsDto shoppingCartGoodsDto = apportionResponse.getResult();
if (shoppingCartGoodsDto.getOriginalTotalAmount() == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
} }
return shoppingCartGoodsDto; return shoppingCartGoodsDto;
} }
...@@ -774,4 +778,13 @@ public class CheckOrder { ...@@ -774,4 +778,13 @@ public class CheckOrder {
// } // }
} }
/**
* 判断是否为拼单订单
* @param createOrderVo
* @return
*/
private boolean isCollageOrder(CreateOrderVo createOrderVo) {
return createOrderVo.getMarketingType() != null && OrderMarketType.COLLAGE.getIndex() == createOrderVo.getMarketingType();
}
} }
...@@ -16,20 +16,16 @@ package cn.freemud.service.impl; ...@@ -16,20 +16,16 @@ package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.wechat.*; import cn.freemud.entities.dto.wechat.*;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.QueryOrderVo; import cn.freemud.entities.vo.QueryOrderVo;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.inteceptor.CommonServiceException;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient; import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.WeChatClient; import cn.freemud.service.thirdparty.WeChatClient;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.ordercenter.enums.ResponseResultEnum; import com.freemud.application.sdk.api.ordercenter.enums.ResponseResultEnum;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.GroupBuyRequest; import com.freemud.sdk.api.assortment.order.request.order.GroupBuyRequest;
import com.freemud.sdk.api.assortment.order.response.order.GroupBuyResponse; import com.freemud.sdk.api.assortment.order.response.order.GroupBuyResponse;
...@@ -46,6 +42,7 @@ import org.checkerframework.checker.units.qual.A; ...@@ -46,6 +42,7 @@ import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
...@@ -124,6 +121,7 @@ public class CollageOrderServiceImpl implements CollageOrderService { ...@@ -124,6 +121,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
groupBuyDetailResp.setOrderCode(order.getOid()); groupBuyDetailResp.setOrderCode(order.getOid());
groupBuyDetailResp.setPartnerId(order.getCompanyId()); groupBuyDetailResp.setPartnerId(order.getCompanyId());
groupBuyDetailResp.setShopId(order.getShopId()); groupBuyDetailResp.setShopId(order.getShopId());
groupBuyDetailResp.setOrderAmount(order.getActualPayAmount());
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean> productList = order.getProductList(); List<QueryOrdersResponse.DataBean.OrderBean.ProductBean> productList = order.getProductList();
...@@ -134,7 +132,18 @@ public class CollageOrderServiceImpl implements CollageOrderService { ...@@ -134,7 +132,18 @@ public class CollageOrderServiceImpl implements CollageOrderService {
for (String payerUserId : payerUserIdList) { for (String payerUserId : payerUserIdList) {
groupBuyDto = new GroupBuyDto(); groupBuyDto = new GroupBuyDto();
groupBuyDto.setUserId(payerUserId); groupBuyDto.setUserId(payerUserId);
groupBuyDto.setAmount(productList.stream().filter(product -> payerUserId.equals(product.getUserId())).map(QueryOrdersResponse.DataBean.OrderBean.ProductBean::getSalePrice).reduce(Long::sum).get()); // 商品费用
Long itemAmount = productList.stream().filter(product -> (payerUserId.equals(product.getUserId()) && null != product.getSalePrice())).map(QueryOrdersResponse.DataBean.OrderBean.ProductBean::getSalePrice).reduce(Long::sum).orElse(0L);
// 包装费用
Long packAmount = productList.stream().filter(product -> (payerUserId.equals(product.getUserId()) && null != product.getPackPrice())).map(QueryOrdersResponse.DataBean.OrderBean.ProductBean::getPackPrice).reduce(Long::sum).orElse(0L);
// 运费分摊
Long deliveryAmount = 0L;
if (order.getOrderCostDetailList() != null) {
OrderCostResp orderCostResp = order.getOrderCostDetailList().stream().filter(detail -> (detail.getCostType().equals(2) && detail.getBillType().equals(1))).findFirst().orElse(new OrderCostResp());
BigDecimal deliveryPrice = orderCostResp.getActualCostAmount() == null ? new BigDecimal(0) : orderCostResp.getActualCostAmount();
deliveryAmount = Math.floorDiv(deliveryPrice.longValue(), payerUserIdList.size());
}
groupBuyDto.setAmount(itemAmount + packAmount + deliveryAmount);
groupBuyDto.setNickName(productList.stream().filter(product -> payerUserId.equals(product.getUserId())).findFirst().get().getNickName()); groupBuyDto.setNickName(productList.stream().filter(product -> payerUserId.equals(product.getUserId())).findFirst().get().getNickName());
groupBuyDto.setPhotoUrl(productList.stream().filter(product -> payerUserId.equals(product.getUserId())).findFirst().get().getPhotoUrl()); groupBuyDto.setPhotoUrl(productList.stream().filter(product -> payerUserId.equals(product.getUserId())).findFirst().get().getPhotoUrl());
list.add(groupBuyDto); list.add(groupBuyDto);
...@@ -192,8 +201,18 @@ public class CollageOrderServiceImpl implements CollageOrderService { ...@@ -192,8 +201,18 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 组装群收款付款人列表 // 组装群收款付款人列表
GroupBuyRequest.UserInfo groupBuyUserInfo; GroupBuyRequest.UserInfo groupBuyUserInfo;
for (String payerOpenId : payerOpenIdList) { for (String payerOpenId : payerOpenIdList) {
Long amount = productList.stream().filter(product -> payerOpenId.equals(product.getOpenId())).map(QueryOrdersResponse.DataBean.OrderBean.ProductBean::getSalePrice).reduce(Long::sum).get(); // 商品费用
Long itemAmount = productList.stream().filter(product -> (payerOpenId.equals(product.getOpenId()) && null != product.getSalePrice())).map(QueryOrdersResponse.DataBean.OrderBean.ProductBean::getSalePrice).reduce(Long::sum).orElse(0L);
// 包装费用
Long packAmount = productList.stream().filter(product -> (payerOpenId.equals(product.getOpenId()) && null != product.getPackPrice())).map(QueryOrdersResponse.DataBean.OrderBean.ProductBean::getPackPrice).reduce(Long::sum).orElse(0L);
// 运费分摊
Long deliveryAmount = 0L;
if (order.getOrderCostDetailList() != null) {
OrderCostResp orderCostResp = order.getOrderCostDetailList().stream().filter(detail -> (detail.getCostType().equals(2) && detail.getBillType().equals(1))).findFirst().orElse(new OrderCostResp());
BigDecimal deliveryPrice = orderCostResp.getActualCostAmount() == null ? new BigDecimal(0) : orderCostResp.getActualCostAmount();
deliveryAmount = Math.floorDiv(deliveryPrice.longValue(), payerOpenIdList.size());
}
Long amount = itemAmount + packAmount + deliveryAmount;
groupBuyUserInfo = new GroupBuyRequest.UserInfo(); groupBuyUserInfo = new GroupBuyRequest.UserInfo();
groupBuyUserInfo.setOpenid(payerOpenId); groupBuyUserInfo.setOpenid(payerOpenId);
groupBuyUserInfo.setAmount(Integer.parseInt(String.valueOf(amount))); groupBuyUserInfo.setAmount(Integer.parseInt(String.valueOf(amount)));
......
...@@ -143,4 +143,9 @@ public class OrderItemCreateReq { ...@@ -143,4 +143,9 @@ public class OrderItemCreateReq {
*/ */
private String photoUrl; private String photoUrl;
/**
* 加购人包装费
*/
private Long packPrice;
} }
...@@ -118,4 +118,7 @@ public class OrderItemResp { ...@@ -118,4 +118,7 @@ public class OrderItemResp {
//加购人头像 //加购人头像
private String photoUrl; private String photoUrl;
//加购人包装费
private Long packPrice;
} }
...@@ -178,6 +178,10 @@ public class ShoppingCartGoodsDto { ...@@ -178,6 +178,10 @@ public class ShoppingCartGoodsDto {
*/ */
private String photoUrl; private String photoUrl;
/**
* 购买人包装费
*/
private Long packPrice;
/** /**
* 商品的数量 * 商品的数量
......
...@@ -693,9 +693,29 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -693,9 +693,29 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
shoppingCartGoodsDto.setIsDiscountDelivery(shoppingCartGoodsResponseVo.getIsDiscountDelivery()); shoppingCartGoodsDto.setIsDiscountDelivery(shoppingCartGoodsResponseVo.getIsDiscountDelivery());
shoppingCartGoodsDto.setDiscountDeliveryActivityCode(shoppingCartGoodsResponseVo.getDiscountDeliveryActivityCode()); shoppingCartGoodsDto.setDiscountDeliveryActivityCode(shoppingCartGoodsResponseVo.getDiscountDeliveryActivityCode());
// 购物车购买人包装费计算
updatePackPrice(shoppingCartGoodsResponseVo, shoppingCartGoodsDto);
return ResponseUtil.success(shoppingCartGoodsDto); return ResponseUtil.success(shoppingCartGoodsDto);
} }
/**
* 拼单订单商品绑定包装费透传
* @param shoppingCartGoodsResponseVo
* @param shoppingCartGoodsDto
*/
private void updatePackPrice(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
if (shoppingCartGoodsResponseVo != null && shoppingCartGoodsResponseVo.getProducts() != null && shoppingCartGoodsDto != null && shoppingCartGoodsDto.getProducts() != null) {
shoppingCartGoodsResponseVo.getProducts().stream().forEach(product -> {
shoppingCartGoodsDto.getProducts().stream().forEach(goods -> {
if (goods.getCartGoodsUid().equals(product.getCartGoodsUid()) && goods.getOriginalPrice().equals(product.getOriginalAmount())) {
goods.setPackPrice(product.getPackPrice());
}
});
});
}
}
@Override @Override
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee) { public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment