Commit b2b45322 by 徐康

Merge branch 'feature/20200915_麦咖啡p2v3活动入机增加TENDERID字段' into develop

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
parents 3c80650d 1826014d
...@@ -805,7 +805,7 @@ public class OrderSdkAdapter { ...@@ -805,7 +805,7 @@ public class OrderSdkAdapter {
} }
accountBean.setSequence(orderSettlementResp.getProductSeq()); accountBean.setSequence(orderSettlementResp.getProductSeq());
accountBean.setType(getOldOrderAccountType(orderSettlementResp.getSettlementType())); accountBean.setType(getOldOrderAccountType(orderSettlementResp.getSettlementType()));
accountBean.setAddInfo(""); accountBean.setAddInfo(orderSettlementResp.getExtInfo());
accountBean.setPlatformDiscountAmount(orderSettlementResp.getPlatformDiscountAmount()); accountBean.setPlatformDiscountAmount(orderSettlementResp.getPlatformDiscountAmount());
accountBean.setShopDiscountAmount(orderSettlementResp.getShopDiscountAmount()); accountBean.setShopDiscountAmount(orderSettlementResp.getShopDiscountAmount());
accountList.add(accountBean); accountList.add(accountBean);
...@@ -2828,6 +2828,7 @@ public class OrderSdkAdapter { ...@@ -2828,6 +2828,7 @@ public class OrderSdkAdapter {
orderSettlementCreateReq.setIsOnline(true); orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setSettlementType(getDiscountType(accountRequest.getAccountType())); orderSettlementCreateReq.setSettlementType(getDiscountType(accountRequest.getAccountType()));
orderSettlementCreateReq.setNote(accountRequest.getName()); orderSettlementCreateReq.setNote(accountRequest.getName());
orderSettlementCreateReq.setExtInfo(accountRequest.getAddInfo());
orderSettlementCreateReqList.add(orderSettlementCreateReq); orderSettlementCreateReqList.add(orderSettlementCreateReq);
} }
......
...@@ -32,6 +32,7 @@ import cn.freemud.management.enums.OrderSource; ...@@ -32,6 +32,7 @@ import cn.freemud.management.enums.OrderSource;
import cn.freemud.service.mccafe.CouponClientService; import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.utils.BeanUtil; import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo; import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType; import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
...@@ -655,7 +656,7 @@ public class CouponAdapter { ...@@ -655,7 +656,7 @@ public class CouponAdapter {
return mcCafeCouponRequest; return mcCafeCouponRequest;
} }
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean) { public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean, McdNetBatchQueryResponse.Coupon coupon) {
List<MCCafeProductRedeemVo> products = new ArrayList<>(); List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数 //商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) { if (QueryOrderAccountType.PRODUCT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
...@@ -671,10 +672,19 @@ public class CouponAdapter { ...@@ -671,10 +672,19 @@ public class CouponAdapter {
} }
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo(); MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid); mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode()); Integer extendType = StringUtils.isBlank(accountBean.getAddInfo())?null: JSON.parseObject(accountBean.getAddInfo()).getInteger("extendType");
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode()); if(extendType != null && extendType == 4) {
mcCafeProductRedeemVo.setKeyProductCode(JSON.parseObject(accountBean.getAddInfo()).getString("tenderId"));
mcCafeProductRedeemVo.setCustomer_code(JSON.parseObject(accountBean.getAddInfo()).getString("tenderId"));
} else {
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
}
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty()); mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1); mcCafeProductRedeemVo.setSeq(i + 1);
if(null != coupon && CollectionUtils.isNotEmpty(coupon.getCodeInfo().getGroups())) {
mcCafeProductRedeemVo.setGid(coupon.getCodeInfo().getGroups().get(0).getGid());
}
products.add(mcCafeProductRedeemVo); products.add(mcCafeProductRedeemVo);
} }
} }
...@@ -692,35 +702,14 @@ public class CouponAdapter { ...@@ -692,35 +702,14 @@ public class CouponAdapter {
products.add(mcCafeProductRedeemVo); products.add(mcCafeProductRedeemVo);
} }
} else if (QueryOrderAccountType.FREIGHT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) { } else if (QueryOrderAccountType.FREIGHT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder() if(null != coupon) {
.ver(88) McdNetCouponProductRespDto mcdNetCouponProductRespDto = coupon.getCodeInfo().getProducts().get(0);
.reqtype(CouponReqTypeEnum.BATCH_QUERY.getCode()) MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
.partnerId(Integer.parseInt(orderBean.getCompanyId())) mcCafeProductRedeemVo.setKeyProductCode(mcdNetCouponProductRespDto.getPid());
.store_id(orderBean.getShopId()) mcCafeProductRedeemVo.setCustomer_code(mcdNetCouponProductRespDto.getPid());
.station_id("1") mcCafeProductRedeemVo.setConsume_num(mcdNetCouponProductRespDto.getNumber());
.operator_id(orderBean.getUserId()) mcCafeProductRedeemVo.setSeq(1);
.channel(OrderSource.ALIPAY.getSource().equals(orderBean.getSource())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName()) products.add(mcCafeProductRedeemVo);
.couponlist(Arrays.asList(new MCCafeCouponVo(accountBean.getAccountId())))
.sign("skip")
.build();
McdNetBatchQueryResponse mcdNetBatchQueryResponse = couponClientService.batchQuery(mcCafeCouponRequest);
if (mcdNetBatchQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
LogUtil.error("获取运费券绑定商品异常,无法核销", mcCafeCouponRequest, mcdNetBatchQueryResponse);
return null;
} else {
try {
McdNetCouponProductRespDto mcdNetCouponProductRespDto = mcdNetBatchQueryResponse.getCouponlist().get(0).getCodeInfo().getProducts().get(0);
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setKeyProductCode(mcdNetCouponProductRespDto.getPid());
mcCafeProductRedeemVo.setCustomer_code(mcdNetCouponProductRespDto.getPid());
mcCafeProductRedeemVo.setConsume_num(mcdNetCouponProductRespDto.getNumber());
mcCafeProductRedeemVo.setSeq(1);
products.add(mcCafeProductRedeemVo);
} catch (Exception e) {
LogUtil.error("获取运费券绑定商品异常,无法核销", mcCafeCouponRequest, mcdNetBatchQueryResponse);
return null;
}
} }
} }
MCCafeCouponRequest mcCafeCouponRequest = new MCCafeCouponRequest(); MCCafeCouponRequest mcCafeCouponRequest = new MCCafeCouponRequest();
......
...@@ -256,7 +256,8 @@ public class DeliveryAdapter { ...@@ -256,7 +256,8 @@ public class DeliveryAdapter {
|| OldOrderAccountType.BUY_DISCOUNT.getCode().equals(accountBean.getType()) || OldOrderAccountType.BUY_DISCOUNT.getCode().equals(accountBean.getType())
|| OldOrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType()) || OldOrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
|| OldOrderAccountType.SUPER_PURCHASE.getCode().equals(accountBean.getType()) || OldOrderAccountType.SUPER_PURCHASE.getCode().equals(accountBean.getType())
|| OldOrderAccountType.DISCOUNT_AMOUNT.getCode().equals(accountBean.getType())) { || OldOrderAccountType.DISCOUNT_AMOUNT.getCode().equals(accountBean.getType())
|| OldOrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())) {
CreateDeliveryPreferentialVo createDeliveryPreferentialVo = new CreateDeliveryPreferentialVo(); CreateDeliveryPreferentialVo createDeliveryPreferentialVo = new CreateDeliveryPreferentialVo();
createDeliveryPreferentialVo.setPreferentialContent(accountBean.getName()); createDeliveryPreferentialVo.setPreferentialContent(accountBean.getName());
createDeliveryPreferentialVo.setPreferentialPrice(0-accountBean.getPrice()); createDeliveryPreferentialVo.setPreferentialPrice(0-accountBean.getPrice());
......
...@@ -199,11 +199,15 @@ public class OrderAdapter { ...@@ -199,11 +199,15 @@ public class OrderAdapter {
if(mcCafePartnerId.equals(createOrderDto.getCompanyId())) { if(mcCafePartnerId.equals(createOrderDto.getCompanyId())) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
if(ActivityTypeEnum.TYPE_11.getCode().equals(activityDiscountsDto.getActivityType()) if(ActivityTypeEnum.TYPE_11.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_12.getCode().equals(activityDiscountsDto.getActivityType())) { || ActivityTypeEnum.TYPE_12.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId()); jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
} else if(ActivityTypeEnum.TYPE_34.getCode().equals(activityDiscountsDto.getActivityType())) { } else if(ActivityTypeEnum.TYPE_34.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("customerCode", activityDiscountsDto.getTenderId()); jsonObject.put("customerCode", activityDiscountsDto.getTenderId());
} }
if(null != activityDiscountsDto.getExtendType()) {
jsonObject.put("extendType", activityDiscountsDto.getExtendType());
}
createOrderAccountDto.setAddInfo(jsonObject.toJSONString()); createOrderAccountDto.setAddInfo(jsonObject.toJSONString());
} }
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
...@@ -381,6 +385,14 @@ public class OrderAdapter { ...@@ -381,6 +385,14 @@ public class OrderAdapter {
.discountQty((activityDiscountsDto.getActualActivityGoodsNumber()==null||activityDiscountsDto.getActualActivityGoodsNumber()==0) .discountQty((activityDiscountsDto.getActualActivityGoodsNumber()==null||activityDiscountsDto.getActualActivityGoodsNumber()==0)
?createOrderProductDto.getNumber():activityDiscountsDto.getActualActivityGoodsNumber()) ?createOrderProductDto.getNumber():activityDiscountsDto.getActualActivityGoodsNumber())
.build(); .build();
JSONObject jsonObject = new JSONObject();
if(ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
}
if(null != activityDiscountsDto.getExtendType()) {
jsonObject.put("extendType", activityDiscountsDto.getExtendType());
}
createOrderAccountDto.setAddInfo(jsonObject.toJSONString());
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
} }
return orderAccountDtos; return orderAccountDtos;
......
...@@ -23,4 +23,8 @@ public class ActivityDiscountsDto { ...@@ -23,4 +23,8 @@ public class ActivityDiscountsDto {
private Integer activityType; private Integer activityType;
private Integer actualActivityGoodsNumber; private Integer actualActivityGoodsNumber;
private String tenderId; private String tenderId;
/**
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券
*/
private Integer extendType;
} }
...@@ -483,6 +483,12 @@ public class CheckMCCafeOrder { ...@@ -483,6 +483,12 @@ public class CheckMCCafeOrder {
.monthlyCardCode(createOrderVo.getMonthlyCardCode()) .monthlyCardCode(createOrderVo.getMonthlyCardCode())
.build(); .build();
List<MCCafeCouponVo> couponCodeList = new ArrayList<>(); List<MCCafeCouponVo> couponCodeList = new ArrayList<>();
if("remove".equals(createOrderVo.getCouponCode())) {
createOrderVo.setCouponCode("");
}
if("remove".equals(createOrderVo.getFreightCouponCode())) {
createOrderVo.setFreightCouponCode("");
}
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) { if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
couponCodeList.add(new MCCafeCouponVo(createOrderVo.getCouponCode())); couponCodeList.add(new MCCafeCouponVo(createOrderVo.getCouponCode()));
} }
......
...@@ -221,7 +221,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -221,7 +221,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return sellCouponOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans); return sellCouponOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
} }
//麦咖啡订单处理 //麦咖啡订单处理
if(mcCafePartnerId.equals(orderBean.getOid())) { if(mcCafePartnerId.equals(orderBean.getCompanyId())) {
return mcCafeOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans); return mcCafeOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
} }
/* /*
......
...@@ -8,13 +8,13 @@ import cn.freemud.base.log.LogTreadLocal; ...@@ -8,13 +8,13 @@ import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.QueryOrdersResponseDto; import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest; import cn.freemud.management.entities.dto.request.order.*;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo;
import cn.freemud.enums.CouponReqTypeEnum; import cn.freemud.enums.CouponReqTypeEnum;
import cn.freemud.enums.MCCafeChannelEnum; import cn.freemud.enums.MCCafeChannelEnum;
import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse; import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import cn.freemud.management.entities.dto.response.coupon.McdNetCouponInfoRespDto;
import cn.freemud.management.entities.dto.response.coupon.McdNetCouponProductRespDto;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient; import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.service.mccafe.CouponClientService; import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
...@@ -27,6 +27,7 @@ import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedee ...@@ -27,6 +27,7 @@ import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedee
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService; import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryByIdsResponse;
import com.freemud.application.sdk.api.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest; import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
...@@ -38,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -38,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
...@@ -173,8 +175,29 @@ public class CouponClientServiceImpl implements CouponClientService { ...@@ -173,8 +175,29 @@ public class CouponClientServiceImpl implements CouponClientService {
return null; return null;
} }
MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder()
.ver(88)
.reqtype(CouponReqTypeEnum.BATCH_QUERY.getCode())
.partnerId(Integer.parseInt(orderBean.getCompanyId()))
.store_id(orderBean.getShopId())
.station_id("1")
.operator_id(orderBean.getUserId())
.channel(OrderSource.ALIPAY.getSource().equals(orderBean.getSource())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName())
.couponlist(accountList.stream().map(o -> new MCCafeCouponVo(o.getAccountId())).collect(Collectors.toList()))
.sign("skip")
.build();
McdNetBatchQueryResponse mcdNetBatchQueryResponse = batchQuery(mcCafeCouponRequest);
if (mcdNetBatchQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
LogUtil.error("获取优惠券详情失败,无法核销", mcCafeCouponRequest, mcdNetBatchQueryResponse);
return null;
}
Map<String, McdNetBatchQueryResponse.Coupon> couponMap = mcdNetBatchQueryResponse.getCouponlist().stream()
.collect(Collectors.toMap(McdNetBatchQueryResponse.Coupon::getCode, Function.identity(), (k1, k2) -> k1));
List<MCCafeCouponRequest> list = List<MCCafeCouponRequest> list =
accountList.stream().map(accountBean -> couponAdapter.convert2MCCafeCouponRequest(orderBean, accountBean)).filter(o -> o!=null).collect(Collectors.toList()); accountList.stream().map(accountBean -> couponAdapter.convert2MCCafeCouponRequest(orderBean, accountBean, couponMap.get(accountBean.getAccountId()))).filter(o -> o!=null).collect(Collectors.toList());
List<CouponRedeemResponse> couponRedeemResponseList = new ArrayList<>(); List<CouponRedeemResponse> couponRedeemResponseList = new ArrayList<>();
List<CouponRedeemResponse> couponRedeemResponseListAll = new ArrayList<>(); List<CouponRedeemResponse> couponRedeemResponseListAll = new ArrayList<>();
......
package cn.freemud.management.adapter; package cn.freemud.management.adapter;
import cn.freemud.base.constant.Version; import cn.freemud.base.constant.Version;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest; import cn.freemud.management.entities.dto.request.order.*;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest; import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo;
import cn.freemud.management.enums.ActivityTypeEnum; import cn.freemud.management.enums.ActivityTypeEnum;
import cn.freemud.management.enums.CouponReqTypeEnum; import cn.freemud.management.enums.CouponReqTypeEnum;
import cn.freemud.management.enums.MCCafeChannelEnum; import cn.freemud.management.enums.MCCafeChannelEnum;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType; import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType; import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType; import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest; import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
@Slf4j
public class McCafeCouponAdapter { public class McCafeCouponAdapter {
@Autowired
private CouponOfflineMCCafeClient couponOfflineMCCafeClient;
private Integer SUCCESS = 100;
public List<MCCafeCouponRequest> convertOrderBean2CouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean) { public List<MCCafeCouponRequest> convertOrderBean2CouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean) {
if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) { if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) {
return null; return null;
...@@ -39,12 +50,32 @@ public class McCafeCouponAdapter { ...@@ -39,12 +50,32 @@ public class McCafeCouponAdapter {
if (CollectionUtils.isEmpty(accountList) ) { if (CollectionUtils.isEmpty(accountList) ) {
return null; return null;
} }
MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder()
.ver(88)
.reqtype(88)
.partnerId(Integer.parseInt(orderBean.getCompanyId()))
.store_id(orderBean.getShopId())
.station_id("1")
.operator_id(orderBean.getUserId())
.channel(OrderSource.ALIPAY.getSource().equals(orderBean.getSource())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName())
.couponlist(accountList.stream().map(o -> new MCCafeCouponVo(o.getAccountId())).collect(Collectors.toList()))
.sign("skip")
.build();
McdNetBatchQueryResponse mcdNetBatchQueryResponse = couponOfflineMCCafeClient.batchQuery(mcCafeCouponRequest);
if (mcdNetBatchQueryResponse == null || !SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
log.error("获取优惠券详情失败,无法核销", mcCafeCouponRequest, mcdNetBatchQueryResponse);
return null;
}
Map<String, McdNetBatchQueryResponse.Coupon> couponMap = mcdNetBatchQueryResponse.getCouponlist().stream()
.collect(Collectors.toMap(McdNetBatchQueryResponse.Coupon::getCode, Function.identity(), (k1, k2) -> k1));
List<MCCafeCouponRequest> list = new ArrayList<>(); List<MCCafeCouponRequest> list = new ArrayList<>();
accountList.forEach(accountBean -> list.add(convert2MCCafeCouponRequest(orderBean, accountBean))); accountList.forEach(accountBean -> list.add(convert2MCCafeCouponRequest(orderBean, accountBean, couponMap.get(accountBean.getAccountId()))));
return list; return list;
} }
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, QueryOrdersResponse.DataBean.OrderBean.AccountBean accountBean) { public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, QueryOrdersResponse.DataBean.OrderBean.AccountBean accountBean, McdNetBatchQueryResponse.Coupon coupon) {
List<MCCafeProductRedeemVo> products = new ArrayList<>(); List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数 //商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) { if (QueryOrderAccountType.PRODUCT_COUPON.equals(getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
...@@ -60,10 +91,19 @@ public class McCafeCouponAdapter { ...@@ -60,10 +91,19 @@ public class McCafeCouponAdapter {
} }
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo(); MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid); mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode()); Integer extendType = StringUtils.isBlank(accountBean.getAddInfo())?null: JSON.parseObject(accountBean.getAddInfo()).getInteger("extendType");
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode()); if(extendType != null && extendType == 4) {
mcCafeProductRedeemVo.setKeyProductCode(JSON.parseObject(accountBean.getAddInfo()).getString("tenderId"));
mcCafeProductRedeemVo.setCustomer_code(JSON.parseObject(accountBean.getAddInfo()).getString("tenderId"));
} else {
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
}
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty()); mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1); mcCafeProductRedeemVo.setSeq(i + 1);
if(null != coupon && CollectionUtils.isNotEmpty(coupon.getCodeInfo().getGroups())) {
mcCafeProductRedeemVo.setGid(coupon.getCodeInfo().getGroups().get(0).getGid());
}
products.add(mcCafeProductRedeemVo); products.add(mcCafeProductRedeemVo);
} }
} }
......
...@@ -100,6 +100,11 @@ public class McdNetCouponInfoRespDto { ...@@ -100,6 +100,11 @@ public class McdNetCouponInfoRespDto {
private Integer status; private Integer status;
private Integer extend_type; private Integer extend_type;
/**
* 商品组信息
*/
private List<McdNetCouponProductGroupRespDto> groups;
/** /**
* 只有商品券时返回 * 只有商品券时返回
*/ */
......
package cn.freemud.management.entities.dto.response.coupon;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
public class McdNetCouponProductGroupRespDto implements Serializable {
private Integer gid;
private Integer gmax;
private List<McdNetCouponProductRespDto> products;
}
...@@ -394,7 +394,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -394,7 +394,7 @@ public class ShoppingCartMCoffeeServiceImpl {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode(), code); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode(), code);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo, payCardPrice); cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo, payCardPrice);
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
...@@ -405,14 +405,22 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -405,14 +405,22 @@ public class ShoppingCartMCoffeeServiceImpl {
if(StringUtils.isNotEmpty(couponCode) || StringUtils.isNotEmpty(freightCouponCode)) { if(StringUtils.isNotEmpty(couponCode) || StringUtils.isNotEmpty(freightCouponCode)) {
String finalCouponCode = couponCode; String finalCouponCode = couponCode;
String finalFreightCouponCode = freightCouponCode; String finalFreightCouponCode = freightCouponCode;
shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().forEach(o -> { if(null != calculationDiscountResult && CollectionUtils.isNotEmpty(calculationDiscountResult.getDiscounts())) {
if(o.getCouponCode().equals(finalCouponCode)) { calculationDiscountResult.getDiscounts().stream().forEach(o -> {
shoppingCartGoodsResponseVo.setCouponCode(finalCouponCode); if(o.getActivityCode().equals(finalCouponCode)) {
} shoppingCartGoodsResponseVo.setCouponCode(finalCouponCode);
if(o.getCouponCode().equals(finalFreightCouponCode)) { }
shoppingCartGoodsResponseVo.setFreightCouponCode(finalFreightCouponCode); if(o.getActivityCode().equals(finalFreightCouponCode)) {
} shoppingCartGoodsResponseVo.setFreightCouponCode(finalFreightCouponCode);
}); }
});
}
}
if(ObjectUtils.notEqual(shoppingCartGoodsResponseVo.getCouponCode(), couponCode)) {
assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, shoppingCartGoodsResponseVo.getCouponCode(), shoppingCartBaseService, SaveCouponType.COUPON.getCode());
}
if(ObjectUtils.notEqual(shoppingCartGoodsResponseVo.getFreightCouponCode(), freightCouponCode)) {
assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, shoppingCartGoodsResponseVo.getFreightCouponCode(), shoppingCartBaseService, SaveCouponType.FREIGHT_COUPON.getCode());
} }
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
......
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.CouponCodeResponseDto;
import cn.freemud.entities.dto.CouponCodeVerificationMCCafeDto;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@FeignClient(name = "COUPONMCCafe",url="http://coupon-api-gateway-koderover-dev-coupon.api-ingress.sandload.cn")
public interface CouponOfflineMCCafeClient {
@PostMapping("/mccafe/redeem")
CouponRedeemResponse redeem(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/cancelRedeem")
CouponRedeemResponse cancelRedeem(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/query")
CouponRedeemResponse query(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/lock")
CouponRedeemResponse lock(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/unlock")
CouponRedeemResponse unlock(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
}
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