Commit 6dd43341 by huiyang.chen

Merge branch 'master' into develop

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	assortment-ordercenter-sdk/readme.md
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/OldOrderAccountType.java
#	order-application-service/pom.xml
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
#	order-application-service/src/main/java/cn/freemud/service/mccafe/impl/CouponClientServiceImpl.java
#	order-management/pom.xml
#	ordercenter-sdk/pom.xml
#	shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
#	shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartGoodsResponseVo.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
parents bbf44f9d 5cf282d9
......@@ -492,6 +492,7 @@ public class OrderSdkAdapter {
orderCostCreateReq.setProductSeq(accountRequest.getSequence());
//1=订单,2=订单商品,3=售后单
orderCostCreateReq.setBillType(1);
orderCostCreateReq.setProductId(accountRequest.getProductId());
orderCostCreateReqs.add(orderCostCreateReq);
} else {
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
......
......@@ -41,6 +41,7 @@ public enum QueryOrderAccountType {
OFFLINE_PAY("OFFLINE_PAY", "线下支付"),
MEMBER_PRICE_DISCOUNT("MEMBER_PRICE_DISCOUNT","会员价优惠"),
MCCAFE_MONTH_CARD("MCCAFE_MONTH_CARD","麦咖啡月卡"),
WITH_ORDER_BUY_COUPON_FEE("WITH_ORDER_BUY_COUPON_FEE", "随单买月卡"),
;
private String code;
......
......@@ -4,6 +4,7 @@ public enum SaveCouponType {
COUPON(1, "代金券"),
FREIGHT_COUPON(2, "运费券"),
MON_COUPON(3, "随单购月卡"),
;
private Integer code;
......
......@@ -298,6 +298,19 @@ public class DeliveryAdapter {
createDeliveryPreferentialVo.setPreferentialContent(accountBean.getName());
createDeliveryPreferentialVo.setPreferentialPrice(0-accountBean.getPrice());
createDeliveryPreferentialVos.add(createDeliveryPreferentialVo);
} else if (OldOrderAccountType.WITH_ORDER_BUY_COUPON_FEE.getCode().equals(accountBean.getType())) {
ProductInfo productInfo = new ProductInfo();
productInfo.setProductCode(accountBean.getAccountId());
productInfo.setProductName(accountBean.getName());
productInfo.setProductNumber(1);
productInfo.setProductPrice(accountBean.getPrice().intValue());
//餐道使用
productInfo.setCumulatedTotal(accountBean.getPrice().intValue());
productInfo.setTaxId("10");
productInfo.setTaxRate(6d);
productInfo.setParentCode(-1l);
productInfos.add(productInfo);
}
});
deliveryOrderRequestDto.setPreferentials(createDeliveryPreferentialVos);
......
......@@ -272,13 +272,14 @@ public class OrderAdapter {
.build();
orderAccountDtos.add(createOrderAccountDto);
}
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee()) {
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee() && StringUtils.isNotBlank(createOrderVo.getCardKeyCode())) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("啡常月享卡")
.price(shoppingCartGoodsDto.getPayCardFee())
.accountType(QueryOrderAccountType.MCCAFE_MONTH_CARD)
.sequence(orderAccountIndex++)
.productId(createOrderVo.getCardKeyCode())
.build();
orderAccountDtos.add(createOrderAccountDto);
}
......@@ -1267,12 +1268,13 @@ public class OrderAdapter {
responseVo.setAfterRefundInterval(false);
}
//商品信息转换
convent2ProductVos(ordersBean.getProductList(), responseVo);
convent2ProductVos(ordersBean.getProductList(), responseVo,ordersBean.getCompanyId());
responseVo.setOrderAccounts(convent2OrderAccountVo(ordersBean.getApportionDetails()));
if(CollectionUtils.isNotEmpty(ordersBean.getOrderCostDetailList())) {
ordersBean.getOrderCostDetailList().forEach(o -> {
if(o.getCostType() == 10 && o.getBillType() == 1) {
ProductVo productVo = new ProductVo();
productVo.setQty(1);
productVo.setName(o.getCostName());
productVo.setSpuName(o.getCostName());
productVo.setFinalPrice(o.getCostAmount().longValue());
......@@ -1937,7 +1939,7 @@ public class OrderAdapter {
return orderAccountVos;
}
public void convent2ProductVos(List<QueryOrdersResponse.DataBean.OrderBean.ProductBean> productBeans, QueryOrderResponseVo responseVo) {
public void convent2ProductVos(List<QueryOrdersResponse.DataBean.OrderBean.ProductBean> productBeans, QueryOrderResponseVo responseVo,String partnerId) {
if (CollectionUtils.isEmpty(productBeans)) {
return;
}
......@@ -1972,16 +1974,28 @@ public class OrderAdapter {
}
if (ObjectUtils.equals(ProductTypeEnum.MATERIAL_PRODUCT.getCode(), productBean.getProductType())) {
List<ProductVo> setMaterialProducts = new ArrayList<>();
productBean.getMaterialProduct().forEach(product -> {
ProductVo material = convent2ProductVo(product);
material.setOriginalTotalAmount(new BigDecimal(material.getOriginalPrice()).multiply(new BigDecimal(productVo.getQty())).longValue());
material.setSaleTotalAmount(new BigDecimal(material.getFinalPrice()).multiply(new BigDecimal(productVo.getQty())).longValue());
setMaterialProducts.add(material);
productVo.setOriginalPrice(new BigDecimal(productVo.getOriginalPrice()).add(new BigDecimal(material.getOriginalPrice())).longValue());
productVo.setFinalPrice(new BigDecimal(productVo.getFinalPrice()).add(new BigDecimal(material.getFinalPrice())).longValue());
productVo.setOriginalTotalAmount(new BigDecimal(productVo.getOriginalTotalAmount()).add(new BigDecimal(material.getOriginalTotalAmount())).longValue());
productVo.setSaleTotalAmount(new BigDecimal(productVo.getSaleTotalAmount()).add(new BigDecimal(material.getSaleTotalAmount())).longValue());
});
if(mcCafePartnerId.equals(partnerId)) {
productBean.getMaterialProduct().forEach(product -> {
ProductVo material = convent2ProductVo(product);
setMaterialProducts.add(material);
material.setOriginalTotalAmount(new BigDecimal(material.getOriginalPrice()).multiply(new BigDecimal(productVo.getQty())).longValue());
material.setSaleTotalAmount(new BigDecimal(material.getFinalPrice()).multiply(new BigDecimal(productVo.getQty())).longValue());
productVo.setOriginalPrice(new BigDecimal(productVo.getOriginalPrice()).add(new BigDecimal(material.getOriginalPrice())).longValue());
productVo.setFinalPrice(new BigDecimal(productVo.getFinalPrice()).add(new BigDecimal(material.getFinalPrice())).longValue());
productVo.setOriginalTotalAmount(new BigDecimal(productVo.getOriginalTotalAmount()).add(new BigDecimal(material.getOriginalTotalAmount())).longValue());
productVo.setSaleTotalAmount(new BigDecimal(productVo.getSaleTotalAmount()).add(new BigDecimal(material.getSaleTotalAmount())).longValue());
});
}
else {
productBean.getMaterialProduct().forEach(product -> {
ProductVo material = convent2ProductVo(product);
setMaterialProducts.add(material);
productVo.setOriginalPrice(new BigDecimal(productVo.getOriginalPrice()).subtract(new BigDecimal(material.getOriginalPrice())).longValue());
productVo.setFinalPrice(new BigDecimal(productVo.getFinalPrice()).subtract(new BigDecimal(material.getFinalPrice())).longValue());
productVo.setOriginalTotalAmount(new BigDecimal(productVo.getOriginalTotalAmount()).subtract(new BigDecimal(material.getOriginalTotalAmount())).longValue());
productVo.setSaleTotalAmount(new BigDecimal(productVo.getSaleTotalAmount()).subtract(new BigDecimal(product.getSettlementPrice())).longValue());
});
}
productVo.setSetMaterialProducts(setMaterialProducts);
}
productVos.add(productVo);
......@@ -2070,7 +2084,7 @@ public class OrderAdapter {
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
hasProductCoupon = true;
Integer extendType = StringUtils.isBlank(productDiscount.getAddInfo())?null:JSON.parseObject(productDiscount.getAddInfo()).getInteger("extendType");
if(null != extendType && (4 == extendType || 5 == extendType)) {
if(null != extendType && (3 == extendType || 4 == extendType || 5 == extendType)) {
productVo.setCouponName(productDiscount.getDiscountDesc());
} else {
productVo.setName(productDiscount.getDiscountDesc());
......
package cn.freemud.entities.dto.user;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: SendCouponForqujiaRequestDto
* @Package cn.freemud.entities.dto.user
* @Description:
* @author: ping1.wu
* @date: 2020/10/10 17:35
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class QujiaForbiddenCardCodeRequestDto {
private String memberId;
private String partnerId;
private String thirdPartMemberId;
private List<SendCouponForqujiaDtoResponseDto.Card> cardInfo;
}
......@@ -24,16 +24,26 @@ public class SendCouponForqujiaDtoResponseDto {
private String message;
private Integer ver;
private List<Result> data;
private Result data;
@Data
public final static class Result {
private List<Card> card_list;
}
@Data
public final static class Card {
private String card_code;
private String card_id;
private String end_datetime;
private String card_type;
private String card_type_code;
private String outer_str;
private String received_id;
private String received_time;
private String start_datetime;
private String user_id;
}
......
......@@ -19,8 +19,10 @@ import java.util.List;
@Data
public class SendCouponForqujiaRequestDto {
private String mobile;
private String receivedId;
private List<String> cardId;
private String thirdPartyMemberId;
private List<String> cardIds;
}
......@@ -204,6 +204,11 @@ public class CreateOrderVo {
*/
private String faceCode;
/**
* 随单购啡常月享卡键位
*/
private String cardKeyCode;
@ApiModelProperty(hidden = true)
private String sessionKey; // 存储sessionKey,异常补退使用
@ApiModelProperty(hidden = true)
......
......@@ -42,8 +42,6 @@ public class ProductVo {
* 商品spu名称
*/
private String spuName;
private String couponName;
/**
* 商品的规格信息加属性信息
*/
......
......@@ -830,7 +830,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// }
//麦咖啡随单购咖啡月卡
withOrderBuyCoupon(orderBean);
withOrderBuyCoupon(orderBean,sessionId);
// 如果是到店,则冻结优惠券
// 如果是外卖,则核销优惠券
......@@ -1433,8 +1433,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
* 随单购月卡调会员发券与更新订单使用的优惠券与买的优惠券
* @param orderBean
*/
private void withOrderBuyCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean){
private void withOrderBuyCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean,String sessionId){
AssortmentCustomerInfoVo assortmentCustomerInfoVo = customerInfoManager.getCustomerInfoByObject(sessionId);
try{
boolean isWithOrderBuyCoupon = false;
......@@ -1452,12 +1452,20 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
String notBuyCouponCode = withOrderBuyCouponCode;
String cardId = withOrderBuyCardId;
// SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
// request.setMobile(orderBean.getPhone());
// request.setCardId(Arrays.asList(cardId));
// SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request);
SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
request.setReceivedId(orderBean.getOid());
request.setCardIds(Arrays.asList(cardId));
request.setThirdPartyMemberId(assortmentCustomerInfoVo.getThirdPartyMemberID());
SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request);
if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())){
LogUtil.error("sendCouponForqujia", JSON.toJSONString(request), JSON.toJSONString(responseDto),null);
return;
}
String buyCouponCode = "999999";
if(responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){
return;
}
String buyCouponCode = responseDto.getData().getCard_list().get(0).getCard_code();
boolean useDiscount = false;
if(CollectionUtils.isNotEmpty(orderBean.getProductList())){
......@@ -1481,8 +1489,16 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
req.setOrderCode(orderBean.getOid());
orderSdkService.updateCostCouponCode(req,LogTreadLocal.getTrackingNo());
List<OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (withOrderBuyCouponCode.equals(account.getAccountId()))
).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(accountList)) {
accountList.forEach(o -> o.setAccountId(buyCouponCode));
}
} catch (Exception e){
LogUtil.error("getProducts_exception", null, null, e);
LogUtil.error("买券异常", null, null, e);
}
}
......
......@@ -143,10 +143,10 @@ public class CouponClientServiceImpl implements CouponClientService {
return null;
}
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON))
).collect(Collectors.toList());
account -> (OldOrderAccountType.PRODUCT_COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
|| OldOrderAccountType.COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
|| OldOrderAccountType.DISCOUNT_COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
) && account.getPrice() != 0l).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
}
......
......@@ -15,6 +15,8 @@ package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.GetMemberCouponListRequestDto;
import cn.freemud.entities.dto.GetMemberCouponListResponseDto;
import cn.freemud.entities.dto.user.QujiaForbiddenCardCodeRequestDto;
import cn.freemud.entities.dto.user.SendCouponForqujiaDtoResponseDto;
import cn.freemud.entities.dto.user.SendCouponForqujiaRequestDto;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -30,6 +32,6 @@ public interface CustomerExtendClient {
@PostMapping(value = "/customerextendservice/coupon/getCoupons")
GetMemberCouponListResponseDto getMemberCouponListRequestDto(@RequestBody GetMemberCouponListRequestDto getMemberCouponListRequestDto);
@PostMapping(value = "/customerextendservice/qujia/b2breceiveCard")
GetMemberCouponListResponseDto sendCouponForqujia(@RequestBody SendCouponForqujiaRequestDto request);
@PostMapping(value = "/customerextendservice/qujia/receiveCard")
SendCouponForqujiaDtoResponseDto sendCouponForqujia(@RequestBody SendCouponForqujiaRequestDto request);
}
......@@ -128,8 +128,6 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
saasOrderHandle.mcCafeOrderReject(orderManagerRequest, refundResponse, orderBean);
//冲正库存
stockHandle.revert(orderManagerRequest, orderBean);
// 券码解冻
couponHandle.unlock(orderBean);
}
return ResponseUtil.success();
}
......
......@@ -28,4 +28,5 @@
| 1.3.15.RELEASE | 停车场订单撤单 | 张志恒 | 2020-09-28 |
| 1.3.16.RELEASE | 麦咖啡多规格 | 徐康 | 2020-10-09 |
| 1.3.17.RELEASE | 集点推送改造 | 梁崇福 | 2020-10-28 |
| 1.3.18.RELEASE | 麦咖啡加料 | 徐康 | 2020-10-30 |
......@@ -267,7 +267,7 @@ public class ShoppingCartConvertAdapter {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto();
cartGoodsDetailDto.setTaxId(cartGoods.getTaxId());
cartGoodsDetailDto.setTax(cartGoods.getTax());
cartGoodsDetailDto.setSpuId(comboxGoods.getGoodsId());
cartGoodsDetailDto.setSpuId(comboxGoods.getSpuId());
cartGoodsDetailDto.setSpuName(comboxGoods.getSpuName());
cartGoodsDetailDto.setSkuId(comboxGoods.getGoodsId());
cartGoodsDetailDto.setSkuName(StringUtils.isEmpty(comboxGoods.getSkuName()) ? comboxGoods.getSpuName() : comboxGoods.getSkuName());
......@@ -687,6 +687,7 @@ public class ShoppingCartConvertAdapter {
Long finalPrice = isComboxGoods ? productComboType.getFinalPrice().longValue() : groupDetailType.getMarkUpPrice().longValue();
// 设置商品详情
Map<String, String> attributes = getAttributesNew(comboxGoods.getExtra());
comboxGoods.setSpuId(comboxGoods.getSpuId());
comboxGoods.setName(isComboxGoods ? productComboType.getProductName() : groupDetailType.getProductName());
comboxGoods.setSpuName(comboxGoods.getName());
comboxGoods.setSpecProductId(attributes.get(ATTRIBUTEID));
......@@ -928,10 +929,10 @@ public class ShoppingCartConvertAdapter {
for (ProductBeanDTO.ProductGroupType.GroupDetailType groupDetailType : groupDetail){
if(groupDetailType.getProductId().equals(productMaterial.getSpuId())){
productMaterial.setSpuId(groupDetailType.getProductId());
productMaterial.setAmount(groupDetailType.getProductPrice().longValue());
productMaterial.setAmount(groupDetailType.getProductFinalPrice().longValue());
productMaterial.setFinalPrice(groupDetailType.getProductFinalPrice().longValue());
productMaterial.setOriginalAmount(groupDetailType.getProductPrice().longValue());
productMaterial.setOriginalPrice(groupDetailType.getProductPrice().longValue());
productMaterial.setOriginalAmount(groupDetailType.getProductFinalPrice().longValue());
productMaterial.setOriginalPrice(groupDetailType.getProductFinalPrice().longValue());
productMaterial.setSpuName(groupDetailType.getProductName());
}
}
......
......@@ -830,7 +830,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsDto.setThresholdAmount(shoppingCartGoodsResponseVo.getThresholdAmount());
shoppingCartGoodsDto.setIsDiscountDelivery(shoppingCartGoodsResponseVo.getIsDiscountDelivery());
shoppingCartGoodsDto.setDiscountDeliveryActivityCode(shoppingCartGoodsResponseVo.getDiscountDeliveryActivityCode());
shoppingCartGoodsDto.setSendPoint(calculationDiscountResult.getSendPointVo());
if (calculationDiscountResult != null){
shoppingCartGoodsDto.setSendPoint(calculationDiscountResult.getSendPointVo());
}
}
return ResponseUtil.success(shoppingCartGoodsDto);
}
......
......@@ -92,23 +92,29 @@ public class CalculationSharingEquallyService {
* 活动库存
* 过滤出加价购
*/
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> addMoneyDiscounts = discountResult.getDiscounts()
.stream()
.filter(discount -> ActivityTypeEnum.TYPE_81.getCode().equals(discount.getType()))
.collect(Collectors.toList());
if (null != discountResult) {
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> addMoneyDiscounts = discountResult.getDiscounts()
.stream()
.filter(discount -> ActivityTypeEnum.TYPE_81.getCode().equals(discount.getType()))
.collect(Collectors.toList());
List<SubtractStockVO> stocks = filterSendGoodsStocks(discountResult.getStocks(), shoppingCartInfoRequestVo, addMoneyDiscounts);
if (CollectionUtils.isNotEmpty(stocks)) shoppingCartGoodsDto.setStocks(stocks);
}
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods = discountResult.getGoods();
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods = null;
if (discountResult !=null) {
goods = discountResult.getGoods();
}
/**
* 利用促销赋值totalDiscountAmount
*/
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods find = null;
for (CartGoods product : shoppingCartGoodsResponseVo.getProducts()) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods find = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst().get();
if (goods!=null) {
find = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst().get();
}
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = calculationCommonService.convertCartGoods2DetailGoodsList(find, product);
cartGoodsDetailDtoList.add(cartGoodsDetailDto);
}
......@@ -135,8 +141,9 @@ public class CalculationSharingEquallyService {
calculationCommonService.setAddAndUpdateResponse(cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, ShoppingCartConstant.QUERY_INFO);
calculationCommonService.addNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo);
shoppingCartGoodsDto.setSendPoint(discountResult.getSendPointVo());
if (discountResult!=null && discountResult.getSendPointVo()!=null) {
shoppingCartGoodsDto.setSendPoint(discountResult.getSendPointVo());
}
shoppingCartGoodsDto.setDeliveryAmount(shoppingCartGoodsResponseVo.getDeliveryAmount());
shoppingCartGoodsDto.setDiscountDeliveryAmount(shoppingCartGoodsResponseVo.getDiscountDeliveryAmount());
shoppingCartGoodsDto.setThresholdAmount(shoppingCartGoodsResponseVo.getThresholdAmount());
......
......@@ -68,6 +68,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
......@@ -312,7 +313,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String freightCouponCode = assortmentSdkService.getShoppingCartCoupon(partnerId, storeId, userId, shoppingCartBaseService, SaveCouponType.FREIGHT_COUPON.getCode());
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,freightCouponCode, null);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,freightCouponCode,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, couponCode,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo,null);
......@@ -401,6 +402,7 @@ public class ShoppingCartMCoffeeServiceImpl {
code = mcCafeUniversalCouponCode;
payCardPrice = Long.valueOf(payCardFee);
}
assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, code, shoppingCartBaseService, SaveCouponType.MON_COUPON.getCode());
}
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode(), code);
......@@ -447,23 +449,26 @@ public class ShoppingCartMCoffeeServiceImpl {
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
// 获取用户信息
CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(requestVo.getSessionId());
// 获取购物车商品?
// 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), "", shoppingCartBaseService);
String buyMonthlyCard = assortmentSdkService.getShoppingCartCoupon(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), shoppingCartBaseService, SaveCouponType.MON_COUPON.getCode());
Long payCardPrice = null;
if (StringUtils.isNotEmpty(buyMonthlyCard)){
payCardPrice = Long.valueOf(payCardFee);
}
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,null, null);
// List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,null);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,null,buyMonthlyCard);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), requestVo.getAppId(), requestVo.getOrderType(), assortmentCustomerInfoVo.isMemberPaid(), requestVo.getMenuType(), requestVo.getReceiveId(), null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo, null);
// String moneyCoupon = assortmentSdkService.getShoppingCartCoupon(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), shoppingCartBaseService, SaveCouponType.COUPON.getCode());
// cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo,payCardPrice);
String moneyCoupon = assortmentSdkService.getShoppingCartCoupon(requestVo.getPartnerId(),
requestVo.getStoreId(), requestVo.getUserId(), shoppingCartBaseService,SaveCouponType.COUPON.getCode());
String deliveryFeeCoupon = assortmentSdkService.getShoppingCartCoupon(requestVo.getPartnerId(),requestVo.getStoreId(),requestVo.getUserId(),shoppingCartBaseService,SaveCouponType.FREIGHT_COUPON.getCode());
List<String> couponCodes = new ArrayList<>();
couponCodes.add(deliveryFeeCoupon);
couponCodes.add(moneyCoupon);
List<CouponAvailableReqByCart> resList = couponDiscountCalculation.buildAvailableCoupons(requestVo,cartGoodsList,couponCodes);
List<CouponAvailableReqByCart> resList = couponDiscountCalculation.buildAvailableCoupons(requestVo,cartGoodsList,
couponCodes);
return ResponseUtil.success(resList);
}
......@@ -687,8 +692,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//清空商品券商品
clearCartCouponGoods(partnerId, toStoreId, userId, sessionId, cartGoodsList);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null, null);
// List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, toStoreId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
......@@ -705,7 +709,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//清空商品券商品
clearCartCouponGoods(partnerId, toStoreId, userId, sessionId, cartGoodsList);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null, null);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, toStoreId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
......@@ -762,7 +766,6 @@ public class ShoppingCartMCoffeeServiceImpl {
if(!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(storeCheckResponse.getCode())) {
shoppingCartGoodsResponseVo.setChanged(true);
shoppingCartGoodsResponseVo.setToastMsg(storeCheckResponse.getMessage());
// return storeCheckResponse;
}
List<CartGoods> cartGoodsList = getOrderGoods(orderInfo.getResult());
......@@ -782,7 +785,9 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoodsList, new ArrayList<>(), new ArrayList<>(), shoppingCartGoodsResponseVo,null);
//设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.ADD_AND_UPDATE, null);
//再来一单清除配送费
shoppingCartGoodsResponseVo.setDeliveryAmount(0L);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(0L);
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
......@@ -829,7 +834,10 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setQty(orderItem.getProductQuantity());
cartGoods.setSpuId(orderItem.getProductId());
cartGoods.setSkuId(orderItem.getProductSpec());
cartGoods.setOriginalPrice(orderItem.getProductPrice().longValue());
cartGoods.setFinalPrice(orderItem.getProductPrice().longValue());
cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty());
cartGoods.setAmount(cartGoods.getFinalPrice() * cartGoods.getQty());
cartGoods.setPic(orderItem.getProductPicUrl());
if(6 == orderItem.getProductType()) {
cartGoods.setGoodsType(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType());
......@@ -860,7 +868,26 @@ public class ShoppingCartMCoffeeServiceImpl {
comboProducts.forEach(combo -> {
getComboxGoods(cartGoods, combo, orderItemList);
});
//取所有固定套餐的价格计算套餐总价
Long originalPrice = comboProducts.stream().filter(orderItemResp -> null != orderItemResp.getProductPrice()).mapToLong(orderItemResp ->orderItemResp.getProductPrice().longValue()).sum();
cartGoods.setOriginalPrice(originalPrice);
}
//特制
if (StringUtils.isNotEmpty(orderItem.getExtInfo())){
JSONObject extJson = JSONObject.parseObject(orderItem.getExtInfo());
if (extJson.containsKey("specialAttrs")) {
CartGoods.SpecialExtra specialExtra = new CartGoods.SpecialExtra();
JSONArray specialAttrs = JSONArray.parseArray(extJson.getString("specialAttrs"));
for (Object specialAttr : specialAttrs) {
JSONObject object = JSONObject.parseObject(specialAttr.toString());
specialExtra.setAttributeId(object.containsKey("attributeId") ? object.getString("attributeId") : "");
specialExtra.setAttributeName(object.containsKey("attributeName") ? object.getString("attributeName") : "");
specialExtra.setSpecialCode(object.containsKey("specialCode") ? object.getString("specialCode") : "");
}
cartGoods.setSpecialExtra(Arrays.asList(specialExtra));
}
}
if (ObjectUtils.equals(88, orderItem.getProductType())) {
// 获取套餐子商品列表
cartGoods.setProductMaterialList(new ArrayList<>());
......@@ -887,7 +914,9 @@ public class ShoppingCartMCoffeeServiceImpl {
comboxGoods.setSpuName(StringUtils.isNotEmpty(orderItemResp.getProductName()) ? orderItemResp.getProductName() :"");
comboxGoods.setSkuName(StringUtils.isNotEmpty(orderItemResp.getProductSpecName()) ? orderItemResp.getProductSpecName() :"");
comboxGoods.setSubName(StringUtils.isNotEmpty(orderItemResp.getProductSpecName()) ? orderItemResp.getProductSpecName() : "");
if (!"".equals(orderItemResp.getProductProperty())) {
comboxGoods.setOriginalAmount(comboxGoods.getOriginalPrice() * comboxGoods.getQty());
comboxGoods.setAmount(comboxGoods.getFinalPrice() * comboxGoods.getQty());
if (StringUtils.isNotBlank(orderItemResp.getProductProperty())) {
List<CartGoods.CartGoodsExtra> extra = new ArrayList<>();
String[] split = orderItemResp.getProductProperty().split("/");
for (int i = 0; i < split.length; i++) {
......@@ -897,11 +926,28 @@ public class ShoppingCartMCoffeeServiceImpl {
}
comboxGoods.setExtra(extra);
}
for (OrderItemResp itemResp : orderItemList) {
//特制
if (StringUtils.isNotEmpty(itemResp.getExtInfo())){
JSONObject extJson = JSONObject.parseObject(itemResp.getExtInfo());
if (extJson.containsKey("specialAttrs")) {
CartGoods.SpecialExtra specialExtra = new CartGoods.SpecialExtra();
JSONArray specialAttrs = JSONArray.parseArray(extJson.getString("specialAttrs"));
for (Object specialAttr : specialAttrs) {
JSONObject object = JSONObject.parseObject(specialAttr.toString());
specialExtra.setAttributeId(object.containsKey("attributeId") ? object.getString("attributeId") : "");
specialExtra.setAttributeName(object.containsKey("attributeName") ? object.getString("attributeName") : "");
specialExtra.setSpecialCode(object.containsKey("specialCode") ? object.getString("specialCode") : "");
}
comboxGoods.setSpecialExtra(Arrays.asList(specialExtra));
}
}
}
Map<String, Object> map = JSONObject.parseObject(orderItemResp.getExtInfo(), Map.class);
if (map.containsKey("isFixedProduct") && (boolean) map.get("isFixedProduct")) {
cartGoods.getProductComboList().add(comboxGoods);
cartGoods.setFinalPrice(comboxGoods.getFinalPrice());
cartGoods.setOriginalPrice(comboxGoods.getOriginalPrice());
}
if (map.containsKey("isFixedProduct") && !(boolean) map.get("isFixedProduct")) {
cartGoods.getProductGroupList().add(comboxGoods);
......@@ -922,6 +968,8 @@ public class ShoppingCartMCoffeeServiceImpl {
materialGoods.setCustomerCode(orderItemResp.getThirdProductId());
materialGoods.setFinalPrice(orderItemResp.getSalePrice().longValue());
materialGoods.setOriginalPrice(orderItemResp.getProductPrice().longValue());
materialGoods.setOriginalAmount(materialGoods.getOriginalPrice());
materialGoods.setAmount(materialGoods.getFinalPrice());
materialGoods.setSpuName(orderItemResp.getProductName());
cartGoods.getProductMaterialList().add(materialGoods);
return materialGoods;
......@@ -934,6 +982,8 @@ public class ShoppingCartMCoffeeServiceImpl {
materialGoods.setCustomerCode(orderItemResp.getThirdProductId());
materialGoods.setFinalPrice(orderItemResp.getSalePrice().longValue());
materialGoods.setOriginalPrice(orderItemResp.getProductPrice().longValue());
materialGoods.setOriginalAmount(materialGoods.getOriginalPrice());
materialGoods.setAmount(materialGoods.getFinalPrice());
materialGoods.setSpuName(orderItemResp.getProductName());
comboGoods.getProductMaterialList().add(materialGoods);
return materialGoods;
......@@ -1347,7 +1397,6 @@ public class ShoppingCartMCoffeeServiceImpl {
}
private List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> getCoupon(String couponCode, String activityCode, List<CartGoods> cartGoodsList,String freightCouponCode,String buyMonthlyCard) {
// private List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> getCoupon(String couponCode, String activityCode, List<CartGoods> cartGoodsList,String freightCouponCode) {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if (StringUtils.isNotEmpty(couponCode)) {
......@@ -1356,15 +1405,15 @@ public class ShoppingCartMCoffeeServiceImpl {
coupon.setActivityCode(activityCode);
coupons.add(coupon);
}
if (StringUtils.isNotEmpty(freightCouponCode)) {
if (StringUtils.isNotEmpty(buyMonthlyCard) ) {
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(freightCouponCode);
coupon.setActivityCode(activityCode);
coupon.setCode(buyMonthlyCard);
coupons.add(coupon);
}
if (StringUtils.isNotEmpty(buyMonthlyCard) ) {
if (StringUtils.isNotEmpty(freightCouponCode)) {
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(buyMonthlyCard);
coupon.setCode(freightCouponCode);
coupon.setActivityCode(activityCode);
coupons.add(coupon);
}
......@@ -1604,11 +1653,11 @@ public class ShoppingCartMCoffeeServiceImpl {
}
}
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null, null);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo, null);
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo,null);
//设置更新响应信息
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo =new ShoppingCartInfoRequestVo();
BeanUtil.convertBean(cardAddVo,shoppingCartInfoRequestVo);
......
......@@ -423,10 +423,13 @@ public class CalculationServiceImpl {
//加料
if (CollectionUtils.isNotEmpty(materialGoods.getProductMaterialList())) {
for (CartGoods.MaterialGoods materialGoods2 : materialGoods.getProductMaterialList()) {
if (StringUtils.isEmpty(materialGoods2.getSpuId())) {
continue;
}
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material material = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material();
material.setType(1);
material.setGoodsId(materialGoods2.getSpuId());
material.setGoodsQuantity(cartGoods.getQty());
material.setGoodsQuantity(1);
material.setOriginalPrice(materialGoods2.getFinalPrice());
materials.add(material);
}
......@@ -440,7 +443,7 @@ public class CalculationServiceImpl {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material material = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material();
material.setType(1);
material.setGoodsId(materialGoods.getSpuId());
material.setGoodsQuantity(cartGoods.getQty());
material.setGoodsQuantity(1);
material.setOriginalPrice(materialGoods.getOriginalPrice());
material.setNowPrice(materialGoods.getFinalPrice().intValue());
materials.add(material);
......@@ -467,9 +470,9 @@ public class CalculationServiceImpl {
long totalPackgeAmount = 0L;
for (CartGoods cartGoods : cartGoodsList) {
// 设置商品原价与商品现价的初始值
long originalAmount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() : 0;
long amount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() : 0;
long packAmount = null != cartGoods.getPackPrice() ? cartGoods.getPackPrice() : 0;
long originalAmount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice()* cartGoods.getQty() : 0;
long amount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice()* cartGoods.getQty() : 0;
long packAmount = null != cartGoods.getPackPrice() ? cartGoods.getPackPrice()* cartGoods.getQty() : 0;
totalOriginalAmount += originalAmount;
totalAmount += amount;
totalPackgeAmount += packAmount;
......
......@@ -64,7 +64,8 @@ public class CouponDiscountCalculation {
// private CardBinClient cardBinClient;
@Value("${coupon.app.id}")
private String appid;
@Value("${mccafe.universal.coupon.code}")
private String mccafeUniversalCouponCode;
private static final String mcafe = "mccafe";
......@@ -85,12 +86,26 @@ public class CouponDiscountCalculation {
return;
}
//订单级别券优惠
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult.getDiscounts();
if (CollectionUtils.isEmpty(discounts)) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = discounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(couponDiscounts)) {
return;
}
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
// 匹配随单购悦享卡
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discountMon = couponDiscounts.stream().filter(t -> (ActivityTypeEnum.TYPE_32.getCode().equals(t.getType())
&& mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null);
for (CartGoods cartGoods : cartGoodsList) {
//商品券商品
if (StringUtils.isNotBlank(cartGoods.getCouponCode())) {
if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || discountMon != null) {
// String couponCode = cartGoods.getCouponCode();
// // 计算优惠信息时,已将券校验过,放在map中
// Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult.getValidCouponMap();
......@@ -109,9 +124,9 @@ public class CouponDiscountCalculation {
continue;
}
cartGoods.setAmount(goodsMap.get(cartGoods.getCartGoodsUid()).getRealAmount());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = goodsMap.get(cartGoods.getCartGoodsUid()).getDiscounts();
if (CollectionUtils.isNotEmpty(discounts)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = discounts.stream().filter(t -> ActivityTypeEnum.TYPE_32.getCode().equals(t.getType())).findFirst().get();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountsNew = goodsMap.get(cartGoods.getCartGoodsUid()).getDiscounts();
if (CollectionUtils.isNotEmpty(discountsNew)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = discountsNew.stream().filter(t -> ActivityTypeEnum.TYPE_32.getCode().equals(t.getType())).findFirst().get();
cartGoods.setCouponName(goodsDiscount.getActivityName());
}
}
......@@ -119,9 +134,6 @@ public class CouponDiscountCalculation {
// 当couponCode不为空时,需计算优惠价格
long couponDiscount = 0;
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult.getDiscounts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = discounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(couponDiscounts)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponResults : couponDiscounts) {
couponDiscount = couponDiscount + (couponResults.getDiscount() == null ? 0 : couponResults.getDiscount());
......@@ -147,6 +159,9 @@ public class CouponDiscountCalculation {
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = couponDiscounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(discounts)) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
if (CollectionUtils.isEmpty(goodsList)) {
......@@ -156,13 +171,14 @@ public class CouponDiscountCalculation {
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
// 匹配随单购悦享卡
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discount = discounts.stream().filter(t -> (ActivityTypeEnum.TYPE_32.getCode().equals(t.getType()) && mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null);
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
//商品券商品
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) {
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
if (StringUtils.isNotEmpty(cartGoods.getCouponCode()) ) {
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(discounts)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponDiscount : discounts) {
......@@ -182,8 +198,25 @@ public class CouponDiscountCalculation {
}
}
}
cartGoods.setCustomerCode(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
}
cartGoods.setCustomerCode(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> list = goodsMap.get(cartGoods.getCartGoodsUid()).getDiscounts();
if (CollectionUtils.isNotEmpty(list) && discount != null) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = list.stream().filter(t -> (ActivityTypeEnum.TYPE_32.getCode().equals(t.getType()) && mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null);
if (goodsDiscount != null){
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
activityDiscountsDto.setActivityType(goodsDiscount.getType());
activityDiscountsDto.setDiscountAmount(0 - goodsDiscount.getDiscount().intValue());
activityDiscountsDto.setExtendType(discount.getExtendType());
activityDiscountsDto.setTenderId(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
productActivityDiscountsDtos.add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
cartGoods.setSalePrice(0L);
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
}
}
}
......
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