Commit 4faa71f8 by dingkai

围餐

parent b9e3d252
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId> <artifactId>ordercenter-sdk</artifactId>
<version>1.2.2.RELEASE</version> <version>1.2.3.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -2406,6 +2406,8 @@ public class OrderSdkAdapter { ...@@ -2406,6 +2406,8 @@ public class OrderSdkAdapter {
originalAmount = updateOrderItemsAndSettlements(orderItemList, orderSettlementCreateReqList, orderCostCreateReqs, products, requestVO.getAccounts(), requestVO.getCompanyId()); originalAmount = updateOrderItemsAndSettlements(orderItemList, orderSettlementCreateReqList, orderCostCreateReqs, products, requestVO.getAccounts(), requestVO.getCompanyId());
//订单原始金额,单位分 //订单原始金额,单位分
request.setOriginalAmount(originalAmount); request.setOriginalAmount(originalAmount);
//商品优惠信息赋值
request.setOrderSettlementDetailList(orderSettlementCreateReqList);
//如果是围餐订单,本次上线将用户的实际支付金额,用户界面上看到的实际现金金额更新为订单原始计算金额 //如果是围餐订单,本次上线将用户的实际支付金额,用户界面上看到的实际现金金额更新为订单原始计算金额
if (OrderClientType.WAI_MEAL.getIndex().equals(requestVO.getOrderClient())) { if (OrderClientType.WAI_MEAL.getIndex().equals(requestVO.getOrderClient())) {
/*Long tempAmount = originalAmount/100; /*Long tempAmount = originalAmount/100;
...@@ -2666,6 +2668,8 @@ public class OrderSdkAdapter { ...@@ -2666,6 +2668,8 @@ public class OrderSdkAdapter {
assortmentGroupUpdateOrderRequest.setUserId(updateOrderProductInfoRequest.getUserId()); assortmentGroupUpdateOrderRequest.setUserId(updateOrderProductInfoRequest.getUserId());
assortmentGroupUpdateOrderRequest.setUserName(updateOrderProductInfoRequest.getUserName()); assortmentGroupUpdateOrderRequest.setUserName(updateOrderProductInfoRequest.getUserName());
assortmentGroupUpdateOrderRequest.setOperator(updateOrderProductInfoRequest.getUserName()); assortmentGroupUpdateOrderRequest.setOperator(updateOrderProductInfoRequest.getUserName());
assortmentGroupUpdateOrderRequest.setAccounts(updateOrderProductInfoRequest.getAccounts());
assortmentGroupUpdateOrderRequest.setUpdateAccounts(updateOrderProductInfoRequest.isUpdateAccounts());
return assortmentGroupUpdateOrderRequest; return assortmentGroupUpdateOrderRequest;
} }
...@@ -2678,6 +2682,8 @@ public class OrderSdkAdapter { ...@@ -2678,6 +2682,8 @@ public class OrderSdkAdapter {
createOrderProductRequest.setTrackingNo(trackingNo); createOrderProductRequest.setTrackingNo(trackingNo);
createOrderProductRequest.setAddInfo(productBean.getAddInfo()); createOrderProductRequest.setAddInfo(productBean.getAddInfo());
createOrderProductRequest.setProductId(productBean.getProductId()); createOrderProductRequest.setProductId(productBean.getProductId());
createOrderProductRequest.setSpecification(productBean.getSpecification());
createOrderProductRequest.setSpecificationName(productBean.getSpecificationName());
createOrderProductRequest.setCustomerCode(productBean.getCustomerCode()); createOrderProductRequest.setCustomerCode(productBean.getCustomerCode());
createOrderProductRequest.setSequence(productBean.getSequence()); createOrderProductRequest.setSequence(productBean.getSequence());
createOrderProductRequest.setPrice(productBean.getPrice()); createOrderProductRequest.setPrice(productBean.getPrice());
......
...@@ -58,5 +58,10 @@ public class AssortmentGroupUpdateOrderRequest extends AssortmentGroupCreateOrde ...@@ -58,5 +58,10 @@ public class AssortmentGroupUpdateOrderRequest extends AssortmentGroupCreateOrde
//操作人 //操作人
private String operator; private String operator;
/**
* 是否更新结算
*/
private boolean updateAccounts;
} }
...@@ -102,4 +102,9 @@ public class AssortmentSdkUpdateOrderProductInfoRequest extends BaseConfig { ...@@ -102,4 +102,9 @@ public class AssortmentSdkUpdateOrderProductInfoRequest extends BaseConfig {
public ActivityUpdateStockRequest activityUpdateStockRequest; public ActivityUpdateStockRequest activityUpdateStockRequest;
private String menuType ; private String menuType ;
/**
* 是否更新结算信息
*/
private boolean updateAccounts;
} }
...@@ -2459,7 +2459,7 @@ public class OrderAdapter { ...@@ -2459,7 +2459,7 @@ public class OrderAdapter {
* 购物车信息转换 * 购物车信息转换
*/ */
public AssortmentSdkUpdateOrderProductInfoRequest conventShoppingCartGoodsDtoByUpdate(ShoppingCartGoodsDto shoppingCartGoodsDto, public AssortmentSdkUpdateOrderProductInfoRequest conventShoppingCartGoodsDtoByUpdate(ShoppingCartGoodsDto shoppingCartGoodsDto,
AssortmentCustomerInfoVo assortmentCustomerInfoVo, String orderId, Integer dinersNumber,String nickName) { AssortmentCustomerInfoVo assortmentCustomerInfoVo, String orderId, Integer dinersNumber,String nickName, boolean isUpdateAccounts) {
AssortmentSdkUpdateOrderProductInfoRequest orderProductInfoRequest = new AssortmentSdkUpdateOrderProductInfoRequest(); AssortmentSdkUpdateOrderProductInfoRequest orderProductInfoRequest = new AssortmentSdkUpdateOrderProductInfoRequest();
orderProductInfoRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId()); orderProductInfoRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
orderProductInfoRequest.setStoreId(assortmentCustomerInfoVo.getStoreId()); orderProductInfoRequest.setStoreId(assortmentCustomerInfoVo.getStoreId());
...@@ -2480,6 +2480,7 @@ public class OrderAdapter { ...@@ -2480,6 +2480,7 @@ public class OrderAdapter {
orderProductInfoRequest.setOrderItemList(createOrderProductRequests); orderProductInfoRequest.setOrderItemList(createOrderProductRequests);
orderProductInfoRequest.setOperator(nickName); orderProductInfoRequest.setOperator(nickName);
orderProductInfoRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); orderProductInfoRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
orderProductInfoRequest.setUpdateAccounts(isUpdateAccounts);
return orderProductInfoRequest; return orderProductInfoRequest;
} }
...@@ -2490,7 +2491,8 @@ public class OrderAdapter { ...@@ -2490,7 +2491,8 @@ public class OrderAdapter {
* @param queryOrderByIdResponse * @param queryOrderByIdResponse
* @return * @return
*/ */
public AssortmentSdkUpdateOrderProductInfoRequest conventShoppingPromotionInfo(ShoppingCartGoodsResponse shoppingCartGoodsResponse, QueryOrderByIdResponse queryOrderByIdResponse, AssortmentCustomerInfoVo assortmentCustomerInfoVo) { public AssortmentSdkUpdateOrderProductInfoRequest conventShoppingPromotionInfo(ShoppingCartGoodsResponse shoppingCartGoodsResponse, QueryOrderByIdResponse queryOrderByIdResponse,
AssortmentCustomerInfoVo assortmentCustomerInfoVo, boolean isUpdateAccounts) {
AssortmentSdkUpdateOrderProductInfoRequest sdkUpdateOrderProductInfoRequest = new AssortmentSdkUpdateOrderProductInfoRequest(); AssortmentSdkUpdateOrderProductInfoRequest sdkUpdateOrderProductInfoRequest = new AssortmentSdkUpdateOrderProductInfoRequest();
sdkUpdateOrderProductInfoRequest.setStoreId(queryOrderByIdResponse.getData().getShopId()); sdkUpdateOrderProductInfoRequest.setStoreId(queryOrderByIdResponse.getData().getShopId());
sdkUpdateOrderProductInfoRequest.setPartnerId(queryOrderByIdResponse.getData().getCompanyId()); sdkUpdateOrderProductInfoRequest.setPartnerId(queryOrderByIdResponse.getData().getCompanyId());
...@@ -2505,6 +2507,7 @@ public class OrderAdapter { ...@@ -2505,6 +2507,7 @@ public class OrderAdapter {
sdkUpdateOrderProductInfoRequest.setUserName(assortmentCustomerInfoVo.getNickName()); sdkUpdateOrderProductInfoRequest.setUserName(assortmentCustomerInfoVo.getNickName());
sdkUpdateOrderProductInfoRequest.setOperator(assortmentCustomerInfoVo.getNickName()); sdkUpdateOrderProductInfoRequest.setOperator(assortmentCustomerInfoVo.getNickName());
sdkUpdateOrderProductInfoRequest.setAccounts(new ArrayList<>()); sdkUpdateOrderProductInfoRequest.setAccounts(new ArrayList<>());
sdkUpdateOrderProductInfoRequest.setUpdateAccounts(isUpdateAccounts);
sdkUpdateOrderProductInfoRequest.setMenuType(BusinessTypeEnum.SAAS_WC.getCode()); sdkUpdateOrderProductInfoRequest.setMenuType(BusinessTypeEnum.SAAS_WC.getCode());
MqMessageRequest mqMessageRequest = new MqMessageRequest(); MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange); mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
...@@ -2534,7 +2537,7 @@ public class OrderAdapter { ...@@ -2534,7 +2537,7 @@ public class OrderAdapter {
for (ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoodsDetailDto : cartGoodsDetailDtos) { for (ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoodsDetailDto : cartGoodsDetailDtos) {
Integer qty = cartGoodsDetailDto.getQty(); Integer qty = cartGoodsDetailDto.getQty();
if (qty > 0) { if (qty > 0) {
CreateOrderProductRequest createOrderProductRequest = createOrderProductRequests.stream().filter(t -> Objects.equals(t.getId(), cartGoodsDetailDto.getProductId()) && Objects.equals(t.getSequence(), cartGoodsDetailDto.getSequence())).findFirst().orElse(null); CreateOrderProductRequest createOrderProductRequest = createOrderProductRequests.stream().filter(t -> Objects.equals(t.getProductId(), cartGoodsDetailDto.getProductId()) && Objects.equals(t.getSequence(), cartGoodsDetailDto.getSequence())).findFirst().orElse(null);
if (createOrderProductRequest != null) { if (createOrderProductRequest != null) {
createOrderProductRequest.setIgnoreProductPrice(1); createOrderProductRequest.setIgnoreProductPrice(1);
} }
...@@ -2623,7 +2626,12 @@ public class OrderAdapter { ...@@ -2623,7 +2626,12 @@ public class OrderAdapter {
private CreateOrderProductRequest conventOrderInfoAndCarInfoByUpdate(QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean, ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoodsDetailDto) { private CreateOrderProductRequest conventOrderInfoAndCarInfoByUpdate(QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean, ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoodsDetailDto) {
CreateOrderProductRequest createOrderProductRequest = new CreateOrderProductRequest(); CreateOrderProductRequest createOrderProductRequest = new CreateOrderProductRequest();
createOrderProductRequest.setId(productBean.getId()); createOrderProductRequest.setId(productBean.getId());
createOrderProductRequest.setProductId(productBean.getProductId());
createOrderProductRequest.setProductName(productBean.getProductName());
createOrderProductRequest.setSpecification(productBean.getSpecification());
createOrderProductRequest.setSequence(productBean.getSequence()); createOrderProductRequest.setSequence(productBean.getSequence());
createOrderProductRequest.setSpecificationName(productBean.getSpecificationName());
createOrderProductRequest.setNumber(productBean.getNumber());
createOrderProductRequest.setTotalDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount().longValue()); createOrderProductRequest.setTotalDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount().longValue());
createOrderProductRequest.setSalePrice((productBean.getPrice() * productBean.getNumber()) - cartGoodsDetailDto.getTotalDiscountAmount()); createOrderProductRequest.setSalePrice((productBean.getPrice() * productBean.getNumber()) - cartGoodsDetailDto.getTotalDiscountAmount());
if (CollectionUtils.isNotEmpty(productBean.getComboProduct()) && CollectionUtils.isNotEmpty(cartGoodsDetailDto.getComboList())) { if (CollectionUtils.isNotEmpty(productBean.getComboProduct()) && CollectionUtils.isNotEmpty(cartGoodsDetailDto.getComboList())) {
......
...@@ -128,6 +128,16 @@ public class PromotionAdapter { ...@@ -128,6 +128,16 @@ public class PromotionAdapter {
return cartGoodsDetailDto; return cartGoodsDetailDto;
} }
public static void updateCartGoodsDetail(ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoodsDetailDto, int totalDiscountAmount) {
cartGoodsDetailDto.setTotalDiscountAmount(totalDiscountAmount);
cartGoodsDetailDto.setSettlementPrice(cartGoodsDetailDto.getOriginalTotalAmount() - totalDiscountAmount);
if(Objects.equals(cartGoodsDetailDto.getProductType(), ProductTypeEnum.WEIGHT_PRODUCT.getCode())) {
cartGoodsDetailDto.setFinalPrice(cartGoodsDetailDto.getSettlementPrice());
} else {
cartGoodsDetailDto.setFinalPrice(cartGoodsDetailDto.getSettlementPrice() / cartGoodsDetailDto.getQty());
}
}
private static void setActivityDiscounts(List<CalculationApportionGoodsDto> apportionGoodsList, ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoodsDetailDto) { private static void setActivityDiscounts(List<CalculationApportionGoodsDto> apportionGoodsList, ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoodsDetailDto) {
if(CollectionUtils.isEmpty(apportionGoodsList)) { if(CollectionUtils.isEmpty(apportionGoodsList)) {
return; return;
...@@ -176,12 +186,12 @@ public class PromotionAdapter { ...@@ -176,12 +186,12 @@ public class PromotionAdapter {
//activityCalculationDiscountRequestDto.setIsShowGoodsActivity(1); //activityCalculationDiscountRequestDto.setIsShowGoodsActivity(1);
activityCalculationDiscountRequestDto.setUserId(userId); activityCalculationDiscountRequestDto.setUserId(userId);
activityCalculationDiscountRequestDto.setVer(1); activityCalculationDiscountRequestDto.setVer(1);
//activityCalculationDiscountRequestDto.setAppId(appId); activityCalculationDiscountRequestDto.setAppId(appId);
activityCalculationDiscountRequestDto.setApplication("isaas"); activityCalculationDiscountRequestDto.setApplication("isaas");
ActivityChannelEnum activityChannelEnum = orderTypeConvert2ActivityChannel(orderType); // ActivityChannelEnum activityChannelEnum = orderTypeConvert2ActivityChannel(orderType);
if (!Objects.isNull(activityChannelEnum)) { // if (!Objects.isNull(activityChannelEnum)) {
activityCalculationDiscountRequestDto.setChannel(activityChannelEnum.getCode()); // activityCalculationDiscountRequestDto.setChannel(activityChannelEnum.getCode());
} // }
return activityCalculationDiscountRequestDto; return activityCalculationDiscountRequestDto;
} }
......
...@@ -77,6 +77,10 @@ public class ShoppingCartGoodsResponse { ...@@ -77,6 +77,10 @@ public class ShoppingCartGoodsResponse {
* 满减折扣 * 满减折扣
*/ */
private Long fullDiscount; private Long fullDiscount;
/**
* 前端用来提示的信息
*/
private String toastMsg;
@Data @Data
......
...@@ -107,5 +107,9 @@ public class PreviewOrderInfoVo { ...@@ -107,5 +107,9 @@ public class PreviewOrderInfoVo {
* 优惠券折扣 * 优惠券折扣
*/ */
private Long couponDiscount; private Long couponDiscount;
/**
* 前端用来提示的信息
*/
private String toastMsg;
} }
...@@ -42,6 +42,8 @@ import java.util.Objects; ...@@ -42,6 +42,8 @@ import java.util.Objects;
@Service @Service
public class ActivityCalculationDiscountService { public class ActivityCalculationDiscountService {
private final static String RESPONSE_SUCCESS_STR = "100";
@Autowired @Autowired
private PromotionDiscountClient promotionDiscountClient; private PromotionDiscountClient promotionDiscountClient;
@Autowired @Autowired
...@@ -54,7 +56,8 @@ public class ActivityCalculationDiscountService { ...@@ -54,7 +56,8 @@ public class ActivityCalculationDiscountService {
private CouponPromotionService couponPromotionService; private CouponPromotionService couponPromotionService;
@Autowired @Autowired
private FullPromotionService fullPromotionService; private FullPromotionService fullPromotionService;
private final static String RESPONSE_SUCCESS_STR = "100"; @Autowired
private TimeSalePromotionService timeSalePromotionService;
public ShoppingCartGoodsResponse updateDiscountApportion(OrderBeanRequest request, CouponPromotionDto couponPromotionDto) { public ShoppingCartGoodsResponse updateDiscountApportion(OrderBeanRequest request, CouponPromotionDto couponPromotionDto) {
...@@ -77,6 +80,8 @@ public class ActivityCalculationDiscountService { ...@@ -77,6 +80,8 @@ public class ActivityCalculationDiscountService {
couponPromotionService.updateDiscountApportion(shoppingCartGoodsResponse, request, calculationDiscountResultDto, couponPromotionDto); couponPromotionService.updateDiscountApportion(shoppingCartGoodsResponse, request, calculationDiscountResultDto, couponPromotionDto);
// 满减 // 满减
fullPromotionService.updateDiscountApportion(shoppingCartGoodsResponse, request, calculationDiscountResultDto, couponPromotionDto); fullPromotionService.updateDiscountApportion(shoppingCartGoodsResponse, request, calculationDiscountResultDto, couponPromotionDto);
// 限时特价
timeSalePromotionService.updateDiscountApportion(shoppingCartGoodsResponse, request, calculationDiscountResultDto, couponPromotionDto);
return shoppingCartGoodsResponse; return shoppingCartGoodsResponse;
} }
...@@ -86,7 +91,7 @@ public class ActivityCalculationDiscountService { ...@@ -86,7 +91,7 @@ public class ActivityCalculationDiscountService {
List<CalculationDiscountGoodsDto> calculationDiscountGoodsList = new ArrayList<>(); List<CalculationDiscountGoodsDto> calculationDiscountGoodsList = new ArrayList<>();
for(OrderBeanRequest.ProductBean orderProductBean : request.getProductList()) { for(OrderBeanRequest.ProductBean orderProductBean : request.getProductList()) {
if(isWeightProductNoWeight(orderProductBean)) { if(isWeightProduct(orderProductBean)) {
continue; continue;
} }
if (ProductTypeEnum.SETMEAL_PRODUCT.getCode().equals(orderProductBean.getProductType()) || ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().equals(orderProductBean.getProductType())) { if (ProductTypeEnum.SETMEAL_PRODUCT.getCode().equals(orderProductBean.getProductType()) || ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().equals(orderProductBean.getProductType())) {
...@@ -147,6 +152,22 @@ public class ActivityCalculationDiscountService { ...@@ -147,6 +152,22 @@ public class ActivityCalculationDiscountService {
return false; return false;
} }
private boolean isWeightProduct(OrderBeanRequest.ProductBean orderProductBean) {
if(Objects.equals(orderProductBean.getProductType(), ProductTypeEnum.WEIGHT_PRODUCT.getCode())) {
return true;
}
if(Objects.equals(orderProductBean.getProductType(), ProductTypeEnum.SETMEAL_PRODUCT.getCode()) || Objects.equals(orderProductBean.getProductType(), ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode())) {
if(CollectionUtils.isNotEmpty(orderProductBean.getComboProduct())) {
for (OrderBeanRequest.ProductBean productBean : orderProductBean.getComboProduct()) {
if(Objects.equals(productBean.getProductType(), ProductTypeEnum.WEIGHT_PRODUCT.getCode())) {
return true;
}
}
}
}
return false;
}
public void updatePreviewOrderInfoVo(PreviewOrderInfoVo previewOrderInfoVo, ShoppingCartGoodsResponse shoppingCartGoodsResponse) { public void updatePreviewOrderInfoVo(PreviewOrderInfoVo previewOrderInfoVo, ShoppingCartGoodsResponse shoppingCartGoodsResponse) {
if(shoppingCartGoodsResponse == null) { if(shoppingCartGoodsResponse == null) {
return; return;
...@@ -157,6 +178,7 @@ public class ActivityCalculationDiscountService { ...@@ -157,6 +178,7 @@ public class ActivityCalculationDiscountService {
previewOrderInfoVo.setAvailableCoupon(shoppingCartGoodsResponse.getAvailableCoupon()); previewOrderInfoVo.setAvailableCoupon(shoppingCartGoodsResponse.getAvailableCoupon());
previewOrderInfoVo.setFullDiscount(shoppingCartGoodsResponse.getFullDiscount()); previewOrderInfoVo.setFullDiscount(shoppingCartGoodsResponse.getFullDiscount());
previewOrderInfoVo.setCouponDiscount(shoppingCartGoodsResponse.getCouponDiscount()); previewOrderInfoVo.setCouponDiscount(shoppingCartGoodsResponse.getCouponDiscount());
previewOrderInfoVo.setToastMsg(shoppingCartGoodsResponse.getToastMsg());
//循环促销计算商品信息,保存订单金额信息 //循环促销计算商品信息,保存订单金额信息
if(CollectionUtils.isNotEmpty(previewOrderInfoVo.getProducts())){ if(CollectionUtils.isNotEmpty(previewOrderInfoVo.getProducts())){
for (ProductVo productVo : previewOrderInfoVo.getProducts()) { for (ProductVo productVo : previewOrderInfoVo.getProducts()) {
......
...@@ -54,7 +54,7 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -54,7 +54,7 @@ public class DefaultPromotionService implements IPromotionService {
List<OrderBeanRequest.ProductBean> productBeanList = request.getProductList().stream().filter(productBean -> { List<OrderBeanRequest.ProductBean> productBeanList = request.getProductList().stream().filter(productBean -> {
if (ProductTypeEnum.WEIGHT_PRODUCT.getCode().equals(productBean.getProductType()) && new BigDecimal("0").compareTo(productBean.getWeight()) >= 0) { if (ProductTypeEnum.WEIGHT_PRODUCT.getCode().equals(productBean.getProductType())) {
return false; return false;
} }
if (ProductTypeEnum.SETMEAL_PRODUCT.getCode().equals(productBean.getProductType()) || ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().equals(productBean.getProductType())) { if (ProductTypeEnum.SETMEAL_PRODUCT.getCode().equals(productBean.getProductType()) || ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().equals(productBean.getProductType())) {
......
...@@ -312,7 +312,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -312,7 +312,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
} }
ShoppingCartGoodsDto shoppingCartGoodsDto = apportionResponse.getResult(); ShoppingCartGoodsDto shoppingCartGoodsDto = apportionResponse.getResult();
AssortmentSdkUpdateOrderProductInfoRequest request = orderAdapter.conventShoppingCartGoodsDtoByUpdate(shoppingCartGoodsDto, assortmentCustomerInfoVo, orderId, AssortmentSdkUpdateOrderProductInfoRequest request = orderAdapter.conventShoppingCartGoodsDtoByUpdate(shoppingCartGoodsDto, assortmentCustomerInfoVo, orderId,
createReserveOrderVo.getRepastNumber(), assortmentCustomerInfoVo.getNickName()); createReserveOrderVo.getRepastNumber(), assortmentCustomerInfoVo.getNickName(), false);
//修改订单信息 //修改订单信息
OrderDetailResponse baseOrderResponse = orderCenterSdkService.updateOrderItem(request); OrderDetailResponse baseOrderResponse = orderCenterSdkService.updateOrderItem(request);
//根据购物车version调用购物车sdk删除购物车版本缓存信息 //根据购物车version调用购物车sdk删除购物车版本缓存信息
...@@ -439,7 +439,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -439,7 +439,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
CouponPromotionDto couponPromotionDto = couponAdapter.getCouponPromotionDto(orderBeanRequest, createReserveOrderVo.getCouponCode(), createReserveOrderVo.getActivityCode(), CouponFlag.YES.getCode()); CouponPromotionDto couponPromotionDto = couponAdapter.getCouponPromotionDto(orderBeanRequest, createReserveOrderVo.getCouponCode(), createReserveOrderVo.getActivityCode(), CouponFlag.YES.getCode());
shoppingCartGoodsResponse = calculationDiscountService.updateDiscountApportion(orderBeanRequest, couponPromotionDto); shoppingCartGoodsResponse = calculationDiscountService.updateDiscountApportion(orderBeanRequest, couponPromotionDto);
} }
AssortmentSdkUpdateOrderProductInfoRequest request = orderAdapter.conventShoppingPromotionInfo(shoppingCartGoodsResponse, queryOrderByIdResponse, assortmentCustomerInfoVo); boolean isUpdateAccounts = CollectionUtils.isEmpty(queryOrderByIdResponse.getData().getAccountList());
AssortmentSdkUpdateOrderProductInfoRequest request = orderAdapter.conventShoppingPromotionInfo(shoppingCartGoodsResponse, queryOrderByIdResponse, assortmentCustomerInfoVo, isUpdateAccounts);
//修改订单信息 //修改订单信息
OrderDetailResponse baseOrderResponse = orderCenterSdkService.updateOrderItem(request); OrderDetailResponse baseOrderResponse = orderCenterSdkService.updateOrderItem(request);
if(baseOrderResponse == null || ObjectUtils.notEqual(baseOrderResponse.getErrcode(),RESPONSE_SUCCESS_CODE)){ if(baseOrderResponse == null || ObjectUtils.notEqual(baseOrderResponse.getErrcode(),RESPONSE_SUCCESS_CODE)){
......
package cn.freemud.service.impl;
import cn.freemud.adapter.PromotionAdapter;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.promotion.*;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: TimeSalePromotionService
* @Package cn.freemud.service.impl
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/18 10:58
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
public class TimeSalePromotionService implements IPromotionService {
@Override
public void updateDiscountApportion(ShoppingCartGoodsResponse shoppingCartGoodsResponse, OrderBeanRequest request, CalculationDiscountResultDto calculationDiscountResult, CouponPromotionDto couponPromotionDto) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| CollectionUtils.isEmpty(shoppingCartGoodsResponse.getProducts())
|| !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> ActivityTypeEnum.TYPE_2.getCode().equals(discount.getType()))) {
return;
}
List<CalculationDiscountGoodsDto> goodsList = calculationDiscountResult.getGoods();
if (CollectionUtils.isEmpty(goodsList)) {
return;
}
Map<String, CalculationDiscountGoodsDto> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(CalculationDiscountGoodsDto::getGoodsId, Function.identity(), (k1, k2) -> k1));
// 存储当前享受限时特价折扣的商品数量,key:goodsId; value:可享受数量
Map<String, Integer> numberMap = new HashMap<>();
List<ShoppingCartGoodsResponse.CartGoodsDetailDto> products = shoppingCartGoodsResponse.getProducts();
this.setToastMsg(shoppingCartGoodsResponse, products, goodsMap);
for (ShoppingCartGoodsResponse.CartGoodsDetailDto product : products) {
CalculationDiscountGoodsDto goods;
if ((goods = goodsMap.get(product.getProductId())) == null) {
continue;
}
CalculationGoodsActivityDto goodsDiscount = getGoodsDiscount(goods.getDiscounts(), ActivityTypeEnum.TYPE_2);
if (goodsDiscount == null) {
continue;
}
if (numberMap.get(product.getProductId()) == null) {
numberMap.put(product.getProductId(), goods.getActualGoodsNumber());
}
Integer actualGoodsNumber = numberMap.get(product.getProductId());
if (actualGoodsNumber > 0) {
Integer totalDiscountAmount = product.getQty() > actualGoodsNumber ? goods.getDiscountAmount() * actualGoodsNumber / goods.getActualGoodsNumber() : goods.getDiscountAmount() * product.getQty() / goods.getActualGoodsNumber();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_2.getCode());
activityDiscountsDto.setDiscountAmount(totalDiscountAmount);
product.getActivityDiscountsDtos().add(activityDiscountsDto);
PromotionAdapter.updateCartGoodsDetail(product, product.getTotalDiscountAmount() + totalDiscountAmount);
numberMap.put(product.getProductId(), actualGoodsNumber - product.getQty());
}
}
}
public void setToastMsg(ShoppingCartGoodsResponse shoppingCartGoodsResponse, List<ShoppingCartGoodsResponse.CartGoodsDetailDto> products, Map<String, CalculationDiscountGoodsDto> goodsMap) {
String toastMsg = null;
// 存储当前享受限时特价折扣的商品数量,key:goodsId; value:可享受数量
Map<String, Integer> numberMap = new HashMap<>();
for (ShoppingCartGoodsResponse.CartGoodsDetailDto cartGoods : products) {
CalculationDiscountGoodsDto goods;
if ((goods = goodsMap.get(cartGoods.getProductId())) == null) {
continue;
}
CalculationGoodsActivityDto goodsDiscount = getGoodsDiscount(goods.getDiscounts(), ActivityTypeEnum.TYPE_2);
if (goodsDiscount == null) {
continue;
}
if(goodsDiscount.getActualGoodsNumber() < cartGoods.getQty()) {
if (StringUtils.isEmpty(toastMsg)) {
toastMsg = "该商品限" + goodsDiscount.getActualGoodsNumber() + "份优惠 超出按照原价计算哦";
}
}
}
if (StringUtils.isNotBlank(toastMsg)) {
shoppingCartGoodsResponse.setToastMsg(toastMsg);
}
}
/**
* 获取指定促销类型的GoodsDiscount
*
* @param goodsDiscountList
* @param type
* @return
*/
private CalculationGoodsActivityDto getGoodsDiscount(List<CalculationGoodsActivityDto> goodsDiscountList, ActivityTypeEnum type) {
if (CollectionUtils.isEmpty(goodsDiscountList)) {
return null;
}
for (CalculationGoodsActivityDto goodsDiscount : goodsDiscountList) {
if (Objects.equals(goodsDiscount.getType(), type.getCode())) {
return goodsDiscount;
}
}
return null;
}
}
package com.freemud.application.sdk.api.ordercenter.request; package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -90,4 +91,6 @@ public class GroupOrderUpdateReq { ...@@ -90,4 +91,6 @@ public class GroupOrderUpdateReq {
//操作人 //操作人
private String operator; private String operator;
List<OrderSettlementCreateReq> orderSettlementDetailList;
} }
package cn.freemud.service.impl;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartGoodsMealResponseVo;
import cn.freemud.enums.ActivityTypeEnum;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
public class TimeSalePromotionForWcService {
public void updateShoppingCartGoodsDiscount(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsMealResponseVo shoppingCartGoodsResponseVo) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()) || !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> ActivityTypeEnum.TYPE_2.getCode().equals(discount.getType()))) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
if (CollectionUtils.isEmpty(goodsList)) {
return;
}
String toastMsg = null;
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1));
// 存储当前享受限时特价折扣的商品数量,key:goodsId; value:可享受数量
Map<String, Integer> numberMap = new HashMap<>();
for (CartGoods cartGoods : cartGoodsList) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods;
if ((goods = goodsMap.get(cartGoods.getGoodsId())) == null) {
continue;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), ActivityTypeEnum.TYPE_2);
if (goodsDiscount == null) {
continue;
}
// 享受限时特价折扣的商品数量
Integer specialActualGoodsNumber = null;
// 商品现价
Long goodsNowPrice = cartGoods.getOriginalPrice() - goodsDiscount.getDiscount() / goodsDiscount.getActualGoodsNumber();
// numberMap用于暂存当前商品行可享受限时特价折扣的商品数量
if ((specialActualGoodsNumber = numberMap.get(goods.getGoodsId())) == null) {
numberMap.put(goods.getGoodsId(), specialActualGoodsNumber=goodsDiscount.getActualGoodsNumber());
}
//若可享受数量>=当前商品行的商品数量
if (specialActualGoodsNumber - cartGoods.getQty() >= 0) {
cartGoods.setAmount(goodsNowPrice * cartGoods.getQty());
} else {
//总价=可享受数量*优惠后单价+(当前商品行的商品数量-可享受数量)*商品原价
cartGoods.setAmount(specialActualGoodsNumber > 0 ? specialActualGoodsNumber * goodsNowPrice + (cartGoods.getQty() - specialActualGoodsNumber) * cartGoods.getOriginalPrice()
: goods.getOriginalPrice() * cartGoods.getQty());
if (StringUtils.isEmpty(toastMsg)) {
toastMsg = "该商品限" + goodsDiscount.getActualGoodsNumber() + "份优惠 超出按照原价计算哦";
}
}
numberMap.put(goods.getGoodsId(), specialActualGoodsNumber - cartGoods.getQty());
}
if (StringUtils.isNotBlank(toastMsg)) {
shoppingCartGoodsResponseVo.setToastMsg(toastMsg);
}
}
/**
* 获取指定促销类型的GoodsDiscount
*
* @param goodsDiscountList
* @param type
* @return
*/
private ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount getGoodsDiscount(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscountList, ActivityTypeEnum type) {
if (CollectionUtils.isEmpty(goodsDiscountList)) {
return null;
}
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount : goodsDiscountList) {
if (Objects.equals(goodsDiscount.getType(), type.getCode())) {
return goodsDiscount;
}
}
return null;
}
}
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