Commit 269f0958 by 缪晖

Merge branch 'feature/2.0.1-collageOrder-刘鹏飞' into qa

# Conflicts:
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/CreateOrderProductRequest.java
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
parents 6bd458fd f3a6f275
......@@ -936,6 +936,7 @@ public class OrderSdkAdapter {
productBean.setOpenId(orderItemResp.getOpenId());
productBean.setNickName(orderItemResp.getNickName());
productBean.setPhotoUrl(orderItemResp.getPhotoUrl());
productBean.setPackPrice(orderItemResp.getPackPrice());
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount> discountList = new ArrayList<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount>();
List<OrderSettlementResp> orderSettlementResps1 = orderSettlementResps == null ? new ArrayList<>() : orderSettlementResps;
......@@ -2859,6 +2860,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setOpenId(product.getOpenId());
orderItemCreateReq.setNickName(product.getNickName());
orderItemCreateReq.setPhotoUrl(product.getPhotoUrl());
orderItemCreateReq.setPackPrice(product.getPackPrice());
// 拼单加购人信息 add by miaohui 2020.10.12 end
orderItemList.add(orderItemCreateReq);
......
......@@ -191,6 +191,11 @@ public class CreateOrderProductRequest extends BaseConfig {
*/
private String photoUrl;
/**
* 加购人包装费
*/
private Long packPrice;
/** 商品统计分类编号**/
private String classificationId;
......
......@@ -589,6 +589,11 @@ public class QueryOrdersResponse {
private String photoUrl;
/**
* 加购人包装费
*/
private Long packPrice;
/**
* 套餐子商品
*/
public List<ProductBean> comboProduct;
......
......@@ -2476,6 +2476,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setOpenId(cartGoodsDetailDto.getOpenId());
createOrderProductDemoDto.setNickName(cartGoodsDetailDto.getUserName());
createOrderProductDemoDto.setPhotoUrl(cartGoodsDetailDto.getPhotoUrl());
createOrderProductDemoDto.setPackPrice(cartGoodsDetailDto.getPackPrice());
if(CollectionUtils.isNotEmpty(cartGoodsDetailDto.getSpecialExtra())) {
createOrderProductDemoDto.setSpecialAttrs(new ArrayList<>());
cartGoodsDetailDto.getSpecialExtra().stream().forEach(o -> {
......
......@@ -239,6 +239,11 @@ public class ShoppingCartGoodsDto {
private String photoUrl;
/**
* 加购人包装费
*/
private Long packPrice;
/**
* 购物车行id
*/
private String cartGoodsUid;
......
......@@ -22,6 +22,7 @@ public class GroupBuyDetailResp {
private int payerNum;
private Long totalAmount;
private Long orderAmount;
private List<GroupBuyDto> payerList;
}
......@@ -64,6 +64,11 @@ public class ProductVo {
private String photoUrl;
/**
* 加购人包装费
*/
private Long packPrice;
/**
* 商品的规格信息加属性信息
*/
private String extras;
......
......@@ -555,11 +555,27 @@ public class CheckOrder {
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
// 若为拼单类型,购物车信息从新的拼单购物车获取 update by miaohui for 【ID1010972】 多人拼单
cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse;
if (createOrderVo.getMarketingType() != null && OrderMarketType.COLLAGE.getIndex() == createOrderVo.getMarketingType()) {
if (this.isCollageOrder(createOrderVo)) {
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);
if (null == createUserGood) {
......@@ -586,13 +602,7 @@ public class CheckOrder {
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;
}
......@@ -851,4 +861,14 @@ public class CheckOrder {
// throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
// }
}
/**
* 判断是否为拼单订单
* @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;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.wechat.*;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.QueryOrderVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.inteceptor.CommonServiceException;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.ShoppingCartClient;
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.manager.customer.AssortmentCustomerInfoManager;
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.GroupBuyRequest;
import com.freemud.sdk.api.assortment.order.response.order.GroupBuyResponse;
......@@ -46,6 +42,7 @@ import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
......@@ -124,6 +121,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
groupBuyDetailResp.setOrderCode(order.getOid());
groupBuyDetailResp.setPartnerId(order.getCompanyId());
groupBuyDetailResp.setShopId(order.getShopId());
groupBuyDetailResp.setOrderAmount(order.getActualPayAmount());
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean> productList = order.getProductList();
......@@ -134,7 +132,18 @@ public class CollageOrderServiceImpl implements CollageOrderService {
for (String payerUserId : payerUserIdList) {
groupBuyDto = new GroupBuyDto();
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.setPhotoUrl(productList.stream().filter(product -> payerUserId.equals(product.getUserId())).findFirst().get().getPhotoUrl());
list.add(groupBuyDto);
......@@ -192,8 +201,18 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 组装群收款付款人列表
GroupBuyRequest.UserInfo groupBuyUserInfo;
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.setOpenid(payerOpenId);
groupBuyUserInfo.setAmount(Integer.parseInt(String.valueOf(amount)));
......
......@@ -143,4 +143,9 @@ public class OrderItemCreateReq {
*/
private String photoUrl;
/**
* 加购人包装费
*/
private Long packPrice;
}
......@@ -118,4 +118,7 @@ public class OrderItemResp {
//加购人头像
private String photoUrl;
//加购人包装费
private Long packPrice;
}
......@@ -194,6 +194,10 @@ public class ShoppingCartGoodsDto {
*/
private String photoUrl;
/**
* 购买人包装费
*/
private Long packPrice;
/**
* 商品的数量
......
......@@ -693,9 +693,29 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
shoppingCartGoodsDto.setIsDiscountDelivery(shoppingCartGoodsResponseVo.getIsDiscountDelivery());
shoppingCartGoodsDto.setDiscountDeliveryActivityCode(shoppingCartGoodsResponseVo.getDiscountDeliveryActivityCode());
// 购物车购买人包装费计算
updatePackPrice(shoppingCartGoodsResponseVo, 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
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);
......
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