Commit 917c9981 by 徐康

Merge branch 'feature/xukang_20210609_麦咖啡p7v2' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/impl/MCCafeOrderServiceImpl.java
parents 0e087ded d8845837
......@@ -108,6 +108,14 @@ public class OrderProductAddInfoDto extends BaseConfig {
* 虚拟商品种子券号
*/
private String cardCode;
/**
* 是否是月享卡商品
*/
private Integer isMonthCard = 0;
/**
* 是否是买3赠1券商品
*/
private Integer isB3S1Coupon = 0;
/**
* 是否赠品
......
......@@ -784,8 +784,13 @@ public class CreateOrderAdapter {
});
createOrderProductDemoDto.setComboProduct(comboProducts);
} else if (ProductTypeEnum.VIRTUAL_PRODUCT.getCode().equals(cartGoodsDetailDto.getProductType())) {
if(cartGoodsDetailDto.getIsMonthCard() == 1) {
createOrderProductDemoDto.setCardId(cartGoodsDetailDto.getMonthCardInfo().getCardNo());
createOrderProductDemoDto.setCardCode(cartGoodsDetailDto.getMonthCardInfo().getCardCode());
} else if(cartGoodsDetailDto.getIsB3S1Coupon() == 1) {
createOrderProductDemoDto.setCardId(cartGoodsDetailDto.getB3S1CouponGoodsInfo().getCardNo());
createOrderProductDemoDto.setCardCode(cartGoodsDetailDto.getB3S1CouponGoodsInfo().getCardCode());
}
}
}
if (CollectionUtils.isNotEmpty(cartGoodsDetailDto.getMaterialList())) {
......
......@@ -2400,6 +2400,9 @@ public class OrderAdapter {
if (OrderAccountType.BUY_DISCOUNT.getCode().equals(productDiscount.getDiscountType())) {
fullReduction = productDiscount.getDiscountAmount();
}
if (OldOrderAccountType.B3S1_COUPON.getCode().equals(productDiscount.getDiscountType())) {
productVo.setIsB3S1CouponGoods(1);
}
}
}
//优惠券满减总优惠
......@@ -2659,8 +2662,13 @@ public class OrderAdapter {
});
createOrderProductDemoDto.setComboProduct(comboProducts);
} else if(ProductTypeEnum.VIRTUAL_PRODUCT.getCode().equals(cartGoodsDetailDto.getProductType())) {
if(cartGoodsDetailDto.getIsMonthCard() == 1) {
createOrderProductDemoDto.setCardId(cartGoodsDetailDto.getMonthCardInfo().getCardNo());
createOrderProductDemoDto.setCardCode(cartGoodsDetailDto.getMonthCardInfo().getCardCode());
} else if(cartGoodsDetailDto.getIsB3S1Coupon() == 1) {
createOrderProductDemoDto.setCardId(cartGoodsDetailDto.getB3S1CouponGoodsInfo().getCardNo());
createOrderProductDemoDto.setCardCode(cartGoodsDetailDto.getB3S1CouponGoodsInfo().getCardCode());
}
}
}
if(CollectionUtils.isNotEmpty(cartGoodsDetailDto.getMaterialList())) {
......
......@@ -5,11 +5,13 @@ import cn.freemud.entities.vo.SubtractStockVO;
import com.alibaba.fastjson.JSON;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -265,12 +267,28 @@ public class ShoppingCartGoodsDto {
* 购物车行id
*/
private String cartGoodsUid;
/**
* 是否是月享卡商品
*/
private int isMonthCard = 0;
/**
* 月享卡加购信息
*/
private MonthCardVo monthCardInfo;
/**
* 是否是买3赠1券商品
*/
private int isB3S1Coupon = 0;
/**
* 是否使用了买3赠1券
*/
private int isB3S1CouponGoods = 0;
/**
* 买3赠1券信息
*/
private B3S1CouponGoodsInfoVo b3S1CouponGoodsInfo;
/**
* 是否赠品
*/
private Boolean isSendGoods;
......@@ -386,4 +404,25 @@ public class ShoppingCartGoodsDto {
private String discountDesc;
}
@Data
@NoArgsConstructor
public static class B3S1CouponGoodsInfoVo {
/**
* 卡号
*/
private String cardNo;
/**
* 券号
*/
private String cardCode;
/**
* 券号
*/
private Set<String> cardCodeSet;
private Integer useTimes;
private int isUseB3S1Coupon = 1;
}
}
......@@ -191,6 +191,10 @@ public class ProductVo {
* 优惠券名称
*/
private String couponName;
/**
* 是否使用了买3赠1券
*/
private int isB3S1CouponGoods = 0;
/**
* 1.5.5版本添加
......
......@@ -559,13 +559,17 @@ public class CheckMCCafeOrder {
List<String> seedCardList = new ArrayList<>();
shoppingCartGoodsDto.getProducts().stream().filter(o -> ProductTypeEnum.getVirtualProductType().contains(o.getProductType()))
.forEach(o -> {
if(o.getMonthCardInfo() == null) {
if(o.getIsMonthCard() == 0 && o.getMonthCardInfo() == null) {
ShoppingCartGoodsDto.MonthCardVo monthCardVo = new ShoppingCartGoodsDto.MonthCardVo();
monthCardVo.setCardCode(withOrderBuyCouponCode);
monthCardVo.setCardNo(withOrderBuyCardId);
o.setMonthCardInfo(monthCardVo);
}
if(o.getIsMonthCard() == 1) {
seedCardList.add(o.getMonthCardInfo().getCardCode());
} else if(o.getIsB3S1Coupon() == 1) {
seedCardList.add(o.getB3S1CouponGoodsInfo().getCardCode());
}
});
seedCardList.add(withOrderBuyCouponCode);
if(CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getActivityDiscountsDtos())) {
......
......@@ -896,7 +896,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// }
//麦咖啡随单购咖啡月卡
if(withOrderBuyCoupon2(orderBean, orderExtInfoDto.getThirdPartyMemberId())) {
if(withOrderBuyCoupon3(orderBean, orderExtInfoDto.getThirdPartyMemberId())) {
orderBean = getOrderBean(confirmOrderDto);
}
......@@ -2008,10 +2008,10 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
/**
* 随单购月卡调会员发券与更新订单使用的优惠券与买的优惠
* 月享卡2.0发
* @param orderBean
*/
public boolean withOrderBuyCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
public boolean withOrderBuyCoupon2(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
LogUtil.info("发券入参:", thirdPartyMemberId, JSON.toJSONString(orderBean));
try{
List<String> cardIds = new ArrayList<>();
......@@ -2066,7 +2066,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
Map<String, Integer> cardStatusMap = mcdNetBatchQueryResponse.getCouponlist().stream()
.collect(Collectors.toMap(McdNetBatchQueryResponse.Coupon::getCode, McdNetBatchQueryResponse.Coupon::getStatusCode, (k1, k2) -> k1));
Map<String, List<SendCouponForqujiaDtoResponseDto.Card>> cardMap = new HashMap<>();
Map<String, String> cardMap = new HashMap<>();
UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setOrderCode(orderBean.getOid());
......@@ -2086,11 +2086,16 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
cardFor:
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(), new ArrayList<>(Arrays.asList(cardList.get(i))));
} else {
cardMap.get(extInfo.getCardCode()).add(cardList.get(i));
String couponCode = cardList.get(i).getCard_code();
cardCodeStr += couponCode+"/";
if(ResponseCodeConstant.RESPONSE_SUCCESS.equals(cardStatusMap.get(couponCode))) {
if(cardMap.get(extInfo.getCardCode()) == null) {
UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo();
couponUpdateInfo.setOldCouponCode(extInfo.getCardCode());
couponUpdateInfo.setCouponCode(couponCode);
req.getCouponUpdateInfoList().add(couponUpdateInfo);
cardMap.put(extInfo.getCardCode(), couponCode);
}
}
cardList.remove(i);
break cardFor;
......@@ -2102,39 +2107,9 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
}
for(QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : orderBean.getProductList()) {
if(!ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType()) && CollectionUtils.isNotEmpty(productBean.getDiscountList())) {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount discount : productBean.getDiscountList()) {
if(null != discount.getDiscountType() && OldOrderAccountType.SEED_PRODUCT_COUPON.getCode().equals(discount.getDiscountType())
&& defaultCardCodes.contains(discount.getDiscountId())) {
UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo();
couponUpdateInfo.setProductSeq(productBean.getSequence());
couponUpdateInfo.setOldCouponCode(discount.getDiscountId());
List<SendCouponForqujiaDtoResponseDto.Card> list = new ArrayList<>(cardMap.get(discount.getDiscountId()));
if(CollectionUtils.isEmpty(list)) {
continue;
}
cardFor:
for(int i=0;i<list.size();i++) {
if(ResponseCodeConstant.RESPONSE_SUCCESS.equals(cardStatusMap.get(list.get(i).getCard_code()))) {
couponUpdateInfo.setCouponCode(list.get(i).getCard_code());
list.remove(i);
cardMap.put(discount.getDiscountId(), list);
break cardFor;
}
}
if(StringUtils.isBlank(couponUpdateInfo.getCouponCode())) {
continue;
}
req.getCouponUpdateInfoList().add(couponUpdateInfo);
}
}
}
}
LogUtil.info("生成参数完成:", req, null);
orderSdkService.updateCostCouponCode(req, LogTreadLocal.getTrackingNo());
orderSdkService.updateCostCouponCodeNew(req, LogTreadLocal.getTrackingNo());
return true;
} catch (Exception e){
......@@ -2147,23 +2122,26 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
* 月享卡2.0发券
* @param orderBean
*/
public boolean withOrderBuyCoupon2(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
public boolean withOrderBuyCoupon3(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
LogUtil.info("发券入参:", thirdPartyMemberId, JSON.toJSONString(orderBean));
try{
List<String> cardIds = new ArrayList<>();
List<String> defaultCardCodes = new ArrayList<>();
for (OrderBean.ProductBean productBean : orderBean.getProductList()){
UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setOrderCode(orderBean.getOid());
req.setPartnerId(orderBean.getCompanyId());
req.setCouponReceiveInfoList(new ArrayList<>());
req.setCouponUpdateInfoList(new ArrayList<>());
for (OrderBean.ProductBean productBean : orderBean.getProductList()) {
if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
List<String> cardIds = new ArrayList<>();
OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
for(int i=0;i<productBean.getNumber();i++) {
cardIds.add(extInfo.getCardId());
}
defaultCardCodes.add(extInfo.getCardCode());
}
}
if(CollectionUtils.isEmpty(cardIds)){
return false;
continue;
}
SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
......@@ -2171,13 +2149,10 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
request.setCardIds(cardIds);
request.setThirdPartyMemberId(thirdPartyMemberId);
SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request);
if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())){
LogUtil.error("sendCouponForqujia", JSON.toJSONString(request), JSON.toJSONString(responseDto));
return false;
}
if(responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){
return false;
if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())
|| responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){
log.error("发券异常 :" + JSON.toJSONString(request) + JSON.toJSONString(responseDto));
continue;
}
List<SendCouponForqujiaDtoResponseDto.Card> cardList = responseDto.getData().getCard_list();
......@@ -2196,54 +2171,50 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
McdNetBatchQueryResponse mcdNetBatchQueryResponse = couponClientService.batchQuery(mcCafeCouponRequest);
if (mcdNetBatchQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
LogUtil.error("获取优惠券详情失败,发券失败", mcCafeCouponRequest, mcdNetBatchQueryResponse);
log.error("获取优惠券详情失败,发券失败" + JSON.toJSONString(mcCafeCouponRequest) + JSON.toJSONString(mcdNetBatchQueryResponse));
return false;
}
Map<String, Integer> cardStatusMap = mcdNetBatchQueryResponse.getCouponlist().stream()
.collect(Collectors.toMap(McdNetBatchQueryResponse.Coupon::getCode, McdNetBatchQueryResponse.Coupon::getStatusCode, (k1, k2) -> k1));
Map<String, String> cardMap = new HashMap<>();
UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setOrderCode(orderBean.getOid());
req.setPartnerId(orderBean.getCompanyId());
req.setCouponReceiveInfoList(new ArrayList<>());
req.setCouponUpdateInfoList(new ArrayList<>());
LogUtil.info("准备开始生成参数:", orderBean, null);
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : orderBean.getProductList()) {
if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
UpdateCouponCodeReq.CouponReceiveInfo couponReceiveInfo = new UpdateCouponCodeReq.CouponReceiveInfo();
couponReceiveInfo.setGoodsId(productBean.getSpecification());
couponReceiveInfo.setProductSeq(productBean.getSequence());
OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
String cardCodeStr = "";
numberFor:
for(int j=0;j<productBean.getNumber();j++) {
cardFor:
for(int i=0;i<cardList.size();i++) {
if(cardList.get(i).getCard_id().equals(extInfo.getCardId())) {
String couponCode = cardList.get(i).getCard_code();
cardCodeStr += couponCode+"/";
if(ResponseCodeConstant.RESPONSE_SUCCESS.equals(cardStatusMap.get(couponCode))) {
if(cardMap.get(extInfo.getCardCode()) == null) {
UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo();
couponUpdateInfo.setOldCouponCode(extInfo.getCardCode());
couponUpdateInfo.setCouponCode(couponCode);
req.getCouponUpdateInfoList().add(couponUpdateInfo);
cardMap.put(extInfo.getCardCode(), couponCode);
}
}
cardList.remove(i);
break cardFor;
couponReceiveInfo.setCouponCode(mcdNetBatchQueryResponse.getCouponlist().stream()
.map(o -> o.getCode()).collect(Collectors.joining("/")));
req.getCouponReceiveInfoList().add(couponReceiveInfo);
String couponCode = "";
if(extInfo.getIsMonthCard() != null && extInfo.getIsMonthCard() == 1) {
Optional<McdNetBatchQueryResponse.Coupon> couponOptional = mcdNetBatchQueryResponse.getCouponlist().stream()
.filter(o -> ResponseCodeConstant.RESPONSE_SUCCESS.equals(o.getStatusCode())).findFirst();
if(!couponOptional.isPresent()) {
log.error("没有有效的优惠券,更新失败 " + JSON.toJSONString(mcCafeCouponRequest) + JSON.toJSONString(mcdNetBatchQueryResponse));
continue;
} else {
couponCode = couponOptional.get().getCode();
}
} else if(extInfo.getIsB3S1Coupon() != null && extInfo.getIsB3S1Coupon() == 1) {
Optional<McdNetBatchQueryResponse.Coupon> couponOptional = mcdNetBatchQueryResponse.getCouponlist().stream()
.filter(o -> ResponseCodeConstant.RESPONSE_SUCCESS.equals(o.getStatusCode())).findFirst();
if(!couponOptional.isPresent()) {
log.error("没有有效的优惠券,更新失败 " + JSON.toJSONString(mcCafeCouponRequest) + JSON.toJSONString(mcdNetBatchQueryResponse));
continue;
} else {
couponCode = couponOptional.get().getCode();
}
}
couponReceiveInfo.setCouponCode(cardCodeStr.substring(0, cardCodeStr.length()-1));
req.getCouponReceiveInfoList().add(couponReceiveInfo);
if(StringUtils.isBlank(couponCode)) {
log.error("没有匹配的优惠券,更新失败 " + JSON.toJSONString(mcCafeCouponRequest) + JSON.toJSONString(mcdNetBatchQueryResponse));
continue;
}
UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo();
couponUpdateInfo.setOldCouponCode(extInfo.getCardCode());
couponUpdateInfo.setCouponCode(couponCode);
req.getCouponUpdateInfoList().add(couponUpdateInfo);
}
LogUtil.info("生成参数完成:", req, null);
}
orderSdkService.updateCostCouponCodeNew(req, LogTreadLocal.getTrackingNo());
......
......@@ -171,6 +171,9 @@ public class ShoppingCartMccafeAdapter {
//菜单购月享卡信息
cartGoodsDetailDto.setIsMonthCard(cartGoods.getIsMonthCard());
cartGoodsDetailDto.setMonthCardInfo(cartGoods.getMonthCardInfo());
cartGoodsDetailDto.setIsB3S1Coupon(cartGoods.getIsB3S1Coupon());
cartGoodsDetailDto.setB3S1CouponGoodsInfo(cartGoods.getB3S1CouponGoodsInfo());
cartGoodsDetailDto.setIsB3S1CouponGoods(cartGoods.getIsB3S1CouponGoods());
if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode());
} else if(GoodsTypeEnum.VIRTUAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())){
......
......@@ -275,10 +275,6 @@ public class ShoppingCartGoodsDto {
*/
private int isMonthCard;
/**
* 是否是买3赠1券商品
*/
private int isB3S1Coupon = 0;
/**
* 是否为种子券商品 1:是;0:否
*/
private int isSeedCouponGoods;
......@@ -287,6 +283,14 @@ public class ShoppingCartGoodsDto {
*/
private MonthCardVo monthCardInfo;
/**
* 是否是买3赠1券商品
*/
private int isB3S1Coupon = 0;
/**
* 是否使用了买3赠1券
*/
private int isB3S1CouponGoods = 0;
/**
* 买3赠1券信息
*/
private B3S1CouponGoodsInfoVo b3S1CouponGoodsInfo;
......
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