Commit 1d43b0e1 by 徐康

麦咖啡多条优惠购买和使用

parent d9e48f75
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.2.31-SNAPSHOT</version> <version>2.2.32-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.2.31-SNAPSHOT</version> <version>2.2.32-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -172,6 +172,15 @@ public class OrderAdapter { ...@@ -172,6 +172,15 @@ public class OrderAdapter {
List<ActivityDiscountsDto> activityDiscountsDtos = shoppingCartGoodsDto.getActivityDiscountsDtos(); List<ActivityDiscountsDto> activityDiscountsDtos = shoppingCartGoodsDto.getActivityDiscountsDtos();
List<CreateOrderProductRequest> products = new ArrayList<>(); List<CreateOrderProductRequest> products = new ArrayList<>();
//随单购商品
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee() && StringUtils.isNotBlank(createOrderVo.getCardKeyCode())) {
products.add(getMcCafeWithOrderVirtualProduct(shoppingCartGoodsDto, createOrderVo));
}
// Set<String> withOrderBuyCouponCodeSet = new HashSet<>();
// withOrderBuyCouponCodeSet.add(withOrderBuyCouponCode);
// cartGoodsDetailDtos.stream().filter(o -> ProductTypeEnum.getVirtualProductType().contains(o.getProductType())).map(o -> withOrderBuyCouponCodeSet.add(o.getMonthCardInfo().getCardCode()));
// 根据购物车商品信息获取优惠信息 // 根据购物车商品信息获取优惠信息
int orderAccountIndex = 0; int orderAccountIndex = 0;
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto : cartGoodsDetailDtos) { for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto : cartGoodsDetailDtos) {
...@@ -196,34 +205,6 @@ public class OrderAdapter { ...@@ -196,34 +205,6 @@ public class OrderAdapter {
} }
} }
} }
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee() && StringUtils.isNotBlank(createOrderVo.getCardKeyCode())) {
CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest();
createOrderProductDemoDto.setProductId(mccafeMonthCardGoodsId);
createOrderProductDemoDto.setProductName("啡常月享卡");
createOrderProductDemoDto.setSpecification(mccafeMonthCardGoodsId);
createOrderProductDemoDto.setSpecificationName("啡常月享卡");
createOrderProductDemoDto.setPrice(shoppingCartGoodsDto.getPayCardFee());
createOrderProductDemoDto.setSalePrice(shoppingCartGoodsDto.getPayCardFee());
createOrderProductDemoDto.setTotalDiscountAmount(0l);
createOrderProductDemoDto.setNumber(1);
createOrderProductDemoDto.setProductType(ProductTypeEnum.WITH_ORDER_VIRTUAL_PRODUCT.getCode());
createOrderProductDemoDto.setParentProductId("0");
createOrderProductDemoDto.setIsFixedProduct(null);
createOrderProductDemoDto.setCustomerCode(createOrderVo.getCardKeyCode());
createOrderProductDemoDto.setProductCode(createOrderVo.getCardKeyCode());
createOrderProductDemoDto.setHasStockProudct(false);
createOrderProductDemoDto.setWeight(0d);
createOrderProductDemoDto.setStapleFood(0);
createOrderProductDemoDto.setTax(0d);
createOrderProductDemoDto.setTaxId("");
createOrderProductDemoDto.setCardId(withOrderBuyCardId);
createOrderProductDemoDto.setCardCode(withOrderBuyCouponCode);
if(ProductTypeEnum.TABLEWARE_PRODUCT.getCode().equals(products.get(products.size()-1).getProductType())) {
products.add(products.size()-1, createOrderProductDemoDto);
} else {
products.add(createOrderProductDemoDto);
}
}
createOrderDto.setProducts(products); createOrderDto.setProducts(products);
boolean hasDeliveryMonthCard = false; boolean hasDeliveryMonthCard = false;
...@@ -2551,6 +2532,31 @@ public class OrderAdapter { ...@@ -2551,6 +2532,31 @@ public class OrderAdapter {
return createOrderProductDemoDto; return createOrderProductDemoDto;
} }
public CreateOrderProductRequest getMcCafeWithOrderVirtualProduct(ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo createOrderVo) {
CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest();
createOrderProductDemoDto.setProductId(mccafeMonthCardGoodsId);
createOrderProductDemoDto.setProductName("啡常月享卡");
createOrderProductDemoDto.setSpecification(mccafeMonthCardGoodsId);
createOrderProductDemoDto.setSpecificationName("啡常月享卡");
createOrderProductDemoDto.setPrice(shoppingCartGoodsDto.getPayCardFee());
createOrderProductDemoDto.setSalePrice(shoppingCartGoodsDto.getPayCardFee());
createOrderProductDemoDto.setTotalDiscountAmount(0l);
createOrderProductDemoDto.setNumber(1);
createOrderProductDemoDto.setProductType(ProductTypeEnum.WITH_ORDER_VIRTUAL_PRODUCT.getCode());
createOrderProductDemoDto.setParentProductId("0");
createOrderProductDemoDto.setIsFixedProduct(null);
createOrderProductDemoDto.setCustomerCode(createOrderVo.getCardKeyCode());
createOrderProductDemoDto.setProductCode(createOrderVo.getCardKeyCode());
createOrderProductDemoDto.setHasStockProudct(false);
createOrderProductDemoDto.setWeight(0d);
createOrderProductDemoDto.setStapleFood(0);
createOrderProductDemoDto.setTax(0d);
createOrderProductDemoDto.setTaxId("");
createOrderProductDemoDto.setCardId(withOrderBuyCardId);
createOrderProductDemoDto.setCardCode(withOrderBuyCouponCode);
return createOrderProductDemoDto;
}
/** /**
* 将促销的枚举 ActivityTypeEnum 和orderAccountType 关联映射 * 将促销的枚举 ActivityTypeEnum 和orderAccountType 关联映射
*/ */
......
...@@ -486,7 +486,7 @@ public class CheckMCCafeOrder { ...@@ -486,7 +486,7 @@ public class CheckMCCafeOrder {
if("remove".equals(createOrderVo.getCouponCode())) { if("remove".equals(createOrderVo.getCouponCode())) {
createOrderVo.setCouponCode(""); createOrderVo.setCouponCode("");
} }
if("remove".equals(createOrderVo.getFreightCouponCode())) { if("recardNomove".equals(createOrderVo.getFreightCouponCode())) {
createOrderVo.setFreightCouponCode(""); createOrderVo.setFreightCouponCode("");
} }
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) { if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
......
...@@ -119,6 +119,7 @@ import com.google.common.collect.Maps; ...@@ -119,6 +119,7 @@ import com.google.common.collect.Maps;
import com.google.gson.Gson; import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -162,7 +163,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -162,7 +163,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired @Autowired
private FMAssistantCloudPrintClient fmAssistantCloudPrintClient; private FMAssistantCloudPrintClient fmAssistantCloudPrintClient;
@Autowired @Autowired
private MessageCenterClient messageNoticeClient; private OrderServiceImpl orderService;
@Autowired @Autowired
private PromotionActivityClient promotionActivityClient; private PromotionActivityClient promotionActivityClient;
@Autowired @Autowired
...@@ -844,7 +845,9 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -844,7 +845,9 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// } // }
//麦咖啡随单购咖啡月卡 //麦咖啡随单购咖啡月卡
withOrderBuyCoupon(orderBean,orderExtInfoDto.getThirdPartyMemberId()); if(withOrderBuyCoupon(orderBean, orderExtInfoDto.getThirdPartyMemberId())) {
orderBean = getOrderBean(confirmOrderDto);
}
// 如果是到店,则冻结优惠券 // 如果是到店,则冻结优惠券
// 如果是外卖,则核销优惠券 // 如果是外卖,则核销优惠券
...@@ -1005,6 +1008,12 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -1005,6 +1008,12 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return sendPaySuccessNoticeMessage(); return sendPaySuccessNoticeMessage();
} }
private QueryOrdersResponseDto.DataBean.OrderBean getOrderBean(ConfirmOrderDto confirmOrderDto) {
Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans = orderService.getOrderBeanByOrderId(confirmOrderDto.getOrderId());
log.info("从缓存重新获取数据:", confirmOrderDto.getOrderId(), orderBeans);
return orderBeans.get(OrderBeanType.SAASORDER.getCode());
}
/** /**
* 创建配送单一车 -> 更新订单为异常单 * 创建配送单一车 -> 更新订单为异常单
* *
...@@ -1526,21 +1535,22 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -1526,21 +1535,22 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
* 随单购月卡调会员发券与更新订单使用的优惠券与买的优惠券 * 随单购月卡调会员发券与更新订单使用的优惠券与买的优惠券
* @param orderBean * @param orderBean
*/ */
private void withOrderBuyCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean,String thirdPartyMemberId){ private boolean withOrderBuyCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean,String thirdPartyMemberId){
try{ try{
List<String> cardIds = new ArrayList<>(); List<String> cardIds = new ArrayList<>();
List<String> defaultCardCodes = new ArrayList<>(); List<String> defaultCardCodes = new ArrayList<>();
for (OrderBean.ProductBean productBean : orderBean.getProductList()){ for (OrderBean.ProductBean productBean : orderBean.getProductList()){
if(ProductTypeEnum.VIRTUAL_PRODUCT.getCode().equals(productBean.getProductType()) if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
|| ProductTypeEnum.WITH_ORDER_VIRTUAL_PRODUCT.getCode().equals(productBean.getProductType())) {
OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class); OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
cardIds.add(extInfo.getCardId()); for(int i=0;i<productBean.getNumber();i++) {
cardIds.add(extInfo.getCardId());
}
defaultCardCodes.add(extInfo.getCardCode()); defaultCardCodes.add(extInfo.getCardCode());
} }
} }
if(CollectionUtils.isEmpty(cardIds)){ if(CollectionUtils.isEmpty(cardIds)){
return; return false;
} }
SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto(); SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
...@@ -1550,54 +1560,72 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -1550,54 +1560,72 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request); SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request);
if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())){ if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())){
LogUtil.error("sendCouponForqujia", JSON.toJSONString(request), JSON.toJSONString(responseDto)); LogUtil.error("sendCouponForqujia", JSON.toJSONString(request), JSON.toJSONString(responseDto));
return; return false;
} }
if(responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){ if(responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){
return; return false;
} }
//目前只有月享卡,所以只发一张
SendCouponForqujiaDtoResponseDto.Card card = responseDto.getData().getCard_list().get(0); List<SendCouponForqujiaDtoResponseDto.Card> cardList = responseDto.getData().getCard_list();
Map<String, List<SendCouponForqujiaDtoResponseDto.Card>> cardMap = new HashMap<>();
UpdateCouponCodeReq req = new UpdateCouponCodeReq(); UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setOrderCode(orderBean.getOid()); req.setOrderCode(orderBean.getOid());
req.setCouponReceiveInfoList(new ArrayList<>()); req.setCouponReceiveInfoList(new ArrayList<>());
req.setCouponUpdateInfoList(new ArrayList<>()); req.setCouponUpdateInfoList(new ArrayList<>());
log.info("准备开始生成参数:", orderBean);
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : orderBean.getProductList()) { for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : orderBean.getProductList()) {
if(ProductTypeEnum.VIRTUAL_PRODUCT.getCode().equals(productBean.getProductType()) if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
|| ProductTypeEnum.WITH_ORDER_VIRTUAL_PRODUCT.getCode().equals(productBean.getProductType())) {
UpdateCouponCodeReq.CouponReceiveInfo couponReceiveInfo = new UpdateCouponCodeReq.CouponReceiveInfo(); UpdateCouponCodeReq.CouponReceiveInfo couponReceiveInfo = new UpdateCouponCodeReq.CouponReceiveInfo();
couponReceiveInfo.setGoodsId(productBean.getSpecification()); couponReceiveInfo.setGoodsId(productBean.getSpecification());
// OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class); couponReceiveInfo.setProductSeq(productBean.getSequence());
//暂时写死为发的唯一的券 OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
couponReceiveInfo.setCouponCode(card.getCard_code()); String cardCodeStr = "";
for(int j=0;j<productBean.getNumber();j++) {
for(int i=0;i<cardList.size();i++) {
if(cardList.get(i).getCard_id().equals(extInfo.getCardId())) {
cardCodeStr += cardList.get(i).getCard_code()+"/";
if(CollectionUtils.isEmpty(cardMap.get(extInfo.getCardCode()))) {
cardMap.put(extInfo.getCardCode(), Arrays.asList(cardList.get(i)));
} else {
cardMap.get(extInfo.getCardCode()).add(cardList.get(i));
}
cardList.remove(i);
break;
}
}
}
couponReceiveInfo.setCouponCode(cardCodeStr.substring(0, cardCodeStr.length()-1));
req.getCouponReceiveInfoList().add(couponReceiveInfo); req.getCouponReceiveInfoList().add(couponReceiveInfo);
} else if(CollectionUtils.isNotEmpty(productBean.getDiscountList())) { } else if(CollectionUtils.isNotEmpty(productBean.getDiscountList())) {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount discount : productBean.getDiscountList()) { for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount discount : productBean.getDiscountList()) {
if(defaultCardCodes.contains(discount.getDiscountId())) { if(defaultCardCodes.contains(discount.getDiscountId())) {
UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo(); UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo();
//暂时写死为唯一发的券 couponUpdateInfo.setProductSeq(productBean.getSequence());
couponUpdateInfo.setCouponCode(card.getCard_code()); List<SendCouponForqujiaDtoResponseDto.Card> list = cardMap.get(discount.getDiscountId());
if(CollectionUtils.isEmpty(list)) {
continue;
}
//暂时默认使用第一个,后续改成查询有效的那个再使用
couponUpdateInfo.setCouponCode(list.get(0).getCard_code());
list.remove(0);
couponUpdateInfo.setOldCouponCode(discount.getDiscountId()); couponUpdateInfo.setOldCouponCode(discount.getDiscountId());
req.getCouponUpdateInfoList().add(couponUpdateInfo); req.getCouponUpdateInfoList().add(couponUpdateInfo);
discount.setDiscountId(card.getCard_code());
} }
} }
} }
} }
log.info("生成参数完成:", req);
orderSdkService.updateCostCouponCode(req, LogTreadLocal.getTrackingNo()); orderSdkService.updateCostCouponCode(req, LogTreadLocal.getTrackingNo());
//暂时统一写死为唯一发的券 return true;
List<OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (defaultCardCodes.equals(account.getAccountId()))
).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(accountList)) {
accountList.forEach(o -> o.setAccountId(card.getCard_id()));
}
} catch (Exception e){ } catch (Exception e){
LogUtil.error("买券异常", null, null, e); LogUtil.error("买券异常", null, null, e);
} }
return true;
} }
} }
...@@ -1582,8 +1582,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1582,8 +1582,7 @@ public class OrderServiceImpl implements Orderservice {
.map(McCafeOrderTypeGather::getDesc).orElse("")); .map(McCafeOrderTypeGather::getDesc).orElse(""));
queryOrderResponseVo.setIsCouponOrder(queryOrderResponseVo.getProducts().stream() queryOrderResponseVo.setIsCouponOrder(queryOrderResponseVo.getProducts().stream()
.filter(o -> !ProductTypeEnum.VIRTUAL_PRODUCT.getCode().equals(o.getProductType()) .filter(o -> !ProductTypeEnum.getVirtualProductType().contains(o.getProductType())).findAny().isPresent()?0:1);
&& !ProductTypeEnum.WITH_ORDER_VIRTUAL_PRODUCT.getCode().equals(o.getProductType())).findAny().isPresent()?0:1);
//48小时自动退款描述 //48小时自动退款描述
if (storeInfo != null && storeInfo.getBizVO() != null && storeInfo.getBizVO().getStoreConfig() != null if (storeInfo != null && storeInfo.getBizVO() != null && storeInfo.getBizVO().getStoreConfig() != null
......
package com.freemud.application.sdk.api.ordercenter.enums; package com.freemud.application.sdk.api.ordercenter.enums;
import java.util.Arrays;
import java.util.List;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* *
...@@ -11,7 +14,7 @@ package com.freemud.application.sdk.api.ordercenter.enums; ...@@ -11,7 +14,7 @@ package com.freemud.application.sdk.api.ordercenter.enums;
* @Copyright: ${DATE.YARE} www.freemud.cn Inc. All rights reserved. * @Copyright: ${DATE.YARE} www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目 * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/ */
public enum ProductTypeEnum { public enum ProductTypeEnum {
GENERAL_PRODUCT(1,"普通商品"), GENERAL_PRODUCT(1,"普通商品"),
...@@ -29,8 +32,12 @@ public enum ProductTypeEnum { ...@@ -29,8 +32,12 @@ public enum ProductTypeEnum {
; ;
public static List<Integer> getVirtualProductType() {
return Arrays.asList(VIRTUAL_PRODUCT.getCode(), WITH_ORDER_VIRTUAL_PRODUCT.getCode());
}
private Integer code; private Integer code;
private String msg; private String msg;
public Integer getCode() { public Integer getCode() {
...@@ -49,9 +56,6 @@ public enum ProductTypeEnum { ...@@ -49,9 +56,6 @@ public enum ProductTypeEnum {
this.msg = msg; this.msg = msg;
} }
ProductTypeEnum() {
}
ProductTypeEnum(Integer code, String msg) { ProductTypeEnum(Integer code, String msg) {
this.code = code; this.code = code;
this.msg = msg; this.msg = msg;
......
...@@ -32,6 +32,8 @@ public class UpdateCouponCodeReq { ...@@ -32,6 +32,8 @@ public class UpdateCouponCodeReq {
//发券券号 //发券券号
private String couponCode; private String couponCode;
private Integer productSeq;
} }
@Data @Data
...@@ -41,6 +43,8 @@ public class UpdateCouponCodeReq { ...@@ -41,6 +43,8 @@ public class UpdateCouponCodeReq {
//配置券号 //配置券号
private String oldCouponCode; private String oldCouponCode;
private Integer productSeq;
} }
} }
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