Commit aaeacf76 by 徐康

下单前校验优惠券

parent 20f33e95
...@@ -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>1.5.17-RELEASE</version> <version>2.0.16-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -16,6 +16,7 @@ public enum CouponReqTypeEnum { ...@@ -16,6 +16,7 @@ public enum CouponReqTypeEnum {
QUERY(0,"查询"), QUERY(0,"查询"),
CANCEL_REDEEM(3,"冲正"), CANCEL_REDEEM(3,"冲正"),
REDEEM(71,"核销"), REDEEM(71,"核销"),
BATCH_QUERY(88,"批量查询"),
LOCK(89,"锁定"), LOCK(89,"锁定"),
UNLOCK(90,"解锁"), UNLOCK(90,"解锁"),
; ;
......
...@@ -19,15 +19,15 @@ import cn.freemud.constant.StoreConstant; ...@@ -19,15 +19,15 @@ import cn.freemud.constant.StoreConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.delivery.MCCafeDeliveryBaseResponse; import cn.freemud.entities.dto.delivery.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.delivery.MCCafeDeliveryGetStoreIdResponse; import cn.freemud.entities.dto.delivery.MCCafeDeliveryGetStoreIdResponse;
import cn.freemud.enums.*;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest; import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.entities.dto.order.BusinessDate; import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto; import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponVo;
import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import cn.freemud.manager.StoreTableNumberManager; import cn.freemud.manager.StoreTableNumberManager;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.mccafe.CouponClientService; import cn.freemud.service.mccafe.CouponClientService;
...@@ -35,6 +35,7 @@ import cn.freemud.service.mccafe.thirdparty.DeliveryFeiginMCCafeClient; ...@@ -35,6 +35,7 @@ import cn.freemud.service.mccafe.thirdparty.DeliveryFeiginMCCafeClient;
import cn.freemud.service.mccafe.thirdparty.DeliveryServiceFeiginMCCafeClient; import cn.freemud.service.mccafe.thirdparty.DeliveryServiceFeiginMCCafeClient;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient; import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
...@@ -53,12 +54,12 @@ import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddress ...@@ -53,12 +54,12 @@ import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddress
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService; import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.ordercenter.constant.ResponseConstant; import com.freemud.application.sdk.api.ordercenter.constant.ResponseConstant;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest; import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse; import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import cn.freemud.enums.CouponReqTypeEnum;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -465,7 +466,7 @@ public class CheckMCCafeOrder { ...@@ -465,7 +466,7 @@ public class CheckMCCafeOrder {
public ShoppingCartGoodsDto getMCCafeShoppingCartGoodsDto(CreateOrderVo createOrderVo) { public ShoppingCartGoodsDto getMCCafeShoppingCartGoodsDto(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto) {
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo = ShoppingCartInfoRequestVo.builder() ShoppingCartInfoRequestVo shoppingCartInfoRequestVo = ShoppingCartInfoRequestVo.builder()
.partnerId(createOrderVo.getPartnerId()) .partnerId(createOrderVo.getPartnerId())
.shopId(createOrderVo.getShopId()) .shopId(createOrderVo.getShopId())
...@@ -506,21 +507,32 @@ public class CheckMCCafeOrder { ...@@ -506,21 +507,32 @@ public class CheckMCCafeOrder {
// } // }
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) { if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
// 校验couponCode // 校验couponCode
CouponQueryResponse couponQueryResponse = couponClientService.query(MCCafeCouponRequest.builder() MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder()
.ver(Integer.valueOf(Version.VERSION_1)) .ver(Integer.valueOf(Version.VERSION_1))
.reqtype(CouponReqTypeEnum.QUERY.getCode()) .reqtype(CouponReqTypeEnum.QUERY.getCode())
.partnerId(Integer.parseInt(createOrderVo.getPartnerId())) .partnerId(Integer.parseInt(createOrderVo.getPartnerId()))
.store_id(createOrderVo.getShopId()) .store_id(createOrderVo.getShopId())
.station_id("1") .station_id("1")
.operator_id(createOrderVo.getUserId()) .operator_id(createOrderVo.getUserId())
.channel(createOrderVo.getChannel()) .channel(UserLoginChannelEnum.ALIPAY.getCode().equals(userLoginInfoDto.getChannel())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName())
.coupon(createOrderVo.getCouponCode()) .couponlist(Arrays.asList(new MCCafeCouponVo(createOrderVo.getCouponCode())))
.sign("skip") .sign("skip")
.build()); .build();
if (couponQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(couponQueryResponse.getStatusCode())) { McdNetBatchQueryResponse mcdNetBatchQueryResponse = couponClientService.batchQuery(mcCafeCouponRequest);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT); if (mcdNetBatchQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
LogUtil.error("该代金券当前不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, "该代金券当前不可用");
} else if(!ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getCouponlist().get(0).getStatusCode())) {
if(mcdNetBatchQueryResponse.getCouponlist().get(0).getCodeInfo() != null) {
LogUtil.error(mcdNetBatchQueryResponse.getCouponlist().get(0).getCodeInfo().getAct_name()+"当前不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, mcdNetBatchQueryResponse.getCouponlist().get(0).getCodeInfo().getAct_name()+"当前不可用");
} else {
LogUtil.error("该代金券暂不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, "该代金券暂不可用");
} }
String activeCode = couponQueryResponse.getCodeInfo().getAct_id(); }
String activeCode = mcdNetBatchQueryResponse.getCouponlist().get(0).getCodeInfo().getAct_id();
// 校验点餐方式,查询购物车接口内部已校验 // 校验点餐方式,查询购物车接口内部已校验
shoppingCartInfoRequestVo.setCouponCode(createOrderVo.getCouponCode()); shoppingCartInfoRequestVo.setCouponCode(createOrderVo.getCouponCode());
// 活动code // 活动code
...@@ -544,6 +556,45 @@ public class CheckMCCafeOrder { ...@@ -544,6 +556,45 @@ public class CheckMCCafeOrder {
if (shoppingCartGoodsDto.getOriginalTotalAmount() == null) { if (shoppingCartGoodsDto.getOriginalTotalAmount() == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD); throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
} }
List<MCCafeCouponVo> mcCafeCouponVos = new ArrayList<>();
if(CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getActivityDiscountsDtos())) {
shoppingCartGoodsDto.getActivityDiscountsDtos().forEach(o-> {
if(ActivityTypeEnum.TYPE_3.getCode().equals(o.getActivityType()) || ActivityTypeEnum.TYPE_32.getCode().equals(o.getActivityType())) {
mcCafeCouponVos.add(new MCCafeCouponVo(o.getActivityCode()));
}
});
}
if(CollectionUtils.isNotEmpty(mcCafeCouponVos)) {
MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder()
.ver(Integer.valueOf(Version.VERSION_1))
.reqtype(CouponReqTypeEnum.BATCH_QUERY.getCode())
.partnerId(Integer.parseInt(createOrderVo.getPartnerId()))
.store_id(createOrderVo.getShopId())
.station_id("1")
.operator_id(createOrderVo.getUserId())
.channel(UserLoginChannelEnum.ALIPAY.getCode().equals(userLoginInfoDto.getChannel())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName())
.couponlist(mcCafeCouponVos)
.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);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, "部分优惠券当前不可用");
} else {
mcdNetBatchQueryResponse.getCouponlist().forEach(o -> {
if(!ResponseCodeConstant.RESPONSE_SUCCESS.equals(o.getStatusCode())) {
if(o.getCodeInfo() != null) {
LogUtil.error(o.getCodeInfo().getAct_name()+"当前不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, o.getCodeInfo().getAct_name()+"当前不可用");
} else {
LogUtil.error("部分优惠券暂时不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, "部分优惠券暂时不可用");
}
}
});
}
}
return shoppingCartGoodsDto; return shoppingCartGoodsDto;
} }
......
...@@ -240,7 +240,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -240,7 +240,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// 查询用户信息,余额购物车校验 // 查询用户信息,余额购物车校验
AssortmentCustomerInfoVo userLoginInfoDto = checkMCCafeOrder.checkOrderByMember(createOrderVo, trackingNo); AssortmentCustomerInfoVo userLoginInfoDto = checkMCCafeOrder.checkOrderByMember(createOrderVo, trackingNo);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数 // 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkMCCafeOrder.getMCCafeShoppingCartGoodsDto(createOrderVo); ShoppingCartGoodsDto shoppingCartGoodsDto = checkMCCafeOrder.getMCCafeShoppingCartGoodsDto(createOrderVo, userLoginInfoDto);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 // 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内
StoreResponse.BizVO storeResponseDto = checkMCCafeOrder.checkOrderByStore(createOrderVo, trackingNo); StoreResponse.BizVO storeResponseDto = checkMCCafeOrder.checkOrderByStore(createOrderVo, trackingNo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件 // 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
......
...@@ -2,6 +2,7 @@ package cn.freemud.service.mccafe; ...@@ -2,6 +2,7 @@ package cn.freemud.service.mccafe;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.QueryOrdersResponseDto; import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
...@@ -26,6 +27,8 @@ public interface CouponClientService { ...@@ -26,6 +27,8 @@ public interface CouponClientService {
CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest); CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest);
McdNetBatchQueryResponse batchQuery(MCCafeCouponRequest mcCafeCouponRequest);
CouponBaseResponse lock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts); CouponBaseResponse lock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
CouponBaseResponse lock(MCCafeCouponLockRequest mcCafeCouponLockRequest); CouponBaseResponse lock(MCCafeCouponLockRequest mcCafeCouponLockRequest);
......
...@@ -14,6 +14,7 @@ import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo; ...@@ -14,6 +14,7 @@ import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo; 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.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;
...@@ -210,6 +211,11 @@ public class CouponClientServiceImpl implements CouponClientService { ...@@ -210,6 +211,11 @@ public class CouponClientServiceImpl implements CouponClientService {
} }
@Override @Override
public McdNetBatchQueryResponse batchQuery(MCCafeCouponRequest mcCafeCouponRequest) {
return couponOfflineMCCafeClient.batchQuery(mcCafeCouponRequest);
}
@Override
public CouponBaseResponse lock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) { public CouponBaseResponse lock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
if (null == orderBean || CollectionUtils.isEmpty(accounts)) { if (null == orderBean || CollectionUtils.isEmpty(accounts)) {
return null; return null;
......
...@@ -2,14 +2,18 @@ package cn.freemud.service; ...@@ -2,14 +2,18 @@ package cn.freemud.service;
import cn.freemud.OrderApplication; import cn.freemud.OrderApplication;
import cn.freemud.base.constant.Version; import cn.freemud.base.constant.Version;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.CancelDeliveryRequest; import cn.freemud.entities.dto.CancelDeliveryRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest; import cn.freemud.enums.MCCafeChannelEnum;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest; import cn.freemud.enums.ResponseResult;
import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo; import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.*;
import cn.freemud.entities.dto.delivery.CancelDeliveryResponseDto; import cn.freemud.entities.dto.delivery.CancelDeliveryResponseDto;
import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient; import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.service.mccafe.thirdparty.DeliveryFeiginMCCafeClient; import cn.freemud.service.mccafe.thirdparty.DeliveryFeiginMCCafeClient;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
...@@ -18,6 +22,7 @@ import cn.freemud.enums.CouponReqTypeEnum; ...@@ -18,6 +22,7 @@ import cn.freemud.enums.CouponReqTypeEnum;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.request.UpdateDownstreamOrderCodeReq; import com.freemud.application.sdk.api.ordercenter.request.UpdateDownstreamOrderCodeReq;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import org.apache.commons.collections4.CollectionUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -25,6 +30,7 @@ import org.springframework.boot.test.context.SpringBootTest; ...@@ -25,6 +30,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
...@@ -133,9 +139,9 @@ public class CouponActivityServiceTest { ...@@ -133,9 +139,9 @@ public class CouponActivityServiceTest {
couponCodeVerificationDto.setPartnerId("1206"); couponCodeVerificationDto.setPartnerId("1206");
couponCodeVerificationDto.setStoreId("99992"); couponCodeVerificationDto.setStoreId("99992");
// 订单号 // 订单号
couponCodeVerificationDto.setTransId("18579931215294931300003"); couponCodeVerificationDto.setTransId("18579931215294931300006");
couponCodeVerificationDto.setOfferId("297933023371288"); couponCodeVerificationDto.setOfferId("224368493682038");
couponCodeVerificationDto.setCoupon("297933023371288"); couponCodeVerificationDto.setCoupon("224368493682038");
couponCodeVerificationDto.setNumber("1"); couponCodeVerificationDto.setNumber("1");
couponCodeVerificationDto.setChannel("mocoffee_wx"); couponCodeVerificationDto.setChannel("mocoffee_wx");
couponCodeVerificationDto.setOperatorId("1"); couponCodeVerificationDto.setOperatorId("1");
...@@ -196,4 +202,41 @@ public class CouponActivityServiceTest { ...@@ -196,4 +202,41 @@ public class CouponActivityServiceTest {
System.out.println(linkedHashMap.get("downstreamThirdOrderCode")); System.out.println(linkedHashMap.get("downstreamThirdOrderCode"));
} }
@Test
public void batchQueryTest() {
MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder()
.ver(Integer.valueOf(Version.VERSION_1))
.reqtype(CouponReqTypeEnum.QUERY.getCode())
.partnerId(1206)
.store_id("khl-12345")
.station_id("1")
.operator_id("1")
.channel("mocoffee_wx")
.couponlist(Arrays.asList(new MCCafeCouponVo("229382080857268"),new MCCafeCouponVo("212791286228799"),new MCCafeCouponVo("224368493682038")))
.sign("skip")
.build();
System.out.println(JSON.toJSONString(mcCafeCouponRequest));
McdNetBatchQueryResponse mcdNetBatchQueryResponse = offlineMCCafeClient.batchQuery(mcCafeCouponRequest);
System.out.println(JSON.toJSONString(mcdNetBatchQueryResponse));
if (mcdNetBatchQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
LogUtil.error("部分优惠券当前不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, "部分优惠券当前不可用");
} else {
mcdNetBatchQueryResponse.getCouponlist().forEach(o -> {
if(!ResponseCodeConstant.RESPONSE_SUCCESS.equals(o.getStatusCode())) {
if(o.getCodeInfo() != null) {
LogUtil.error(o.getCodeInfo().getAct_name()+"当前不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, o.getCodeInfo().getAct_name()+"当前不可用");
} else {
LogUtil.error("部分优惠券暂时不可用", mcCafeCouponRequest, mcdNetBatchQueryResponse);
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT, "部分优惠券暂时不可用");
}
}
});
}
}
} }
\ No newline at end of file
...@@ -104,4 +104,6 @@ public class MCCafeCouponRequest { ...@@ -104,4 +104,6 @@ public class MCCafeCouponRequest {
private Boolean isManual; private Boolean isManual;
private String channel; private String channel;
private List<MCCafeCouponVo> couponlist;
} }
package cn.freemud.management.entities.dto.request.order;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
@Data
@AllArgsConstructor
public class MCCafeCouponVo {
private String coupon;
}
package cn.freemud.management.entities.dto.response.coupon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
public class MccofeBaseResponse implements Serializable {
public Integer statusCode;
public String msg;
public String act_id;
public Integer ver = 1;
public MccofeBaseResponse(Integer statusCode, String msg) {
this.statusCode = statusCode;
this.msg = msg;
}
}
package cn.freemud.management.entities.dto.response.coupon;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@Data
public class McdNetBatchQueryResponse extends MccofeBaseResponse {
private List<Coupon> couponlist;
/**
* 响应描述
*/
private String content;
@AllArgsConstructor
@NoArgsConstructor
@Data
public static class Coupon {
private Integer statusCode;
private String msg;
private Integer couponType;
private String code;
private McdNetCouponInfoRespDto codeInfo;
}
}
package cn.freemud.management.entities.dto.response.coupon;
import lombok.Data;
import java.util.List;
/**
* 麦当劳.net券详情响应对象
* <p>
* 此对象和.net接口保持一致
*
* @author Tony
*/
@Data
public class McdNetCouponInfoRespDto {
/**
* 活动编号
*/
private String act_id;
/**
* 活动名称
*/
private String act_name;
/**
* 活动描述
*/
private String act_desc;
/**
* 优惠券过期时间
*/
private String vdata;
/**
* 优惠券编号
*/
private String code;
private String start_time;
private String end_time;
/**
* 优惠券渠道商编号
*/
private String ebcode;
/**
* 优惠券渠道商名称
*/
private String ebname;
/**
* 最低消费金额,单位是分,代金券或者折扣券返回、
* 满减券满的金额;
* 满免券满的金额;
*/
private Integer minamount;
/**
* 代金券金额,单位是分
* 只有代金券时返回;
* 满减券减的金额;
*/
private Integer amount;
/**
* 满免券最低消费的商品数量
*/
private Integer min_product_amount;
/**
* 折扣编码
*/
private String promotion_type;
/**
* 平台编码
*/
private String platformitemid;
/**
* 可用次数
*/
private Integer availableTimes;
/**
* 当天可用次数
*/
private Integer limitTimes;
/**
* 折扣券折扣百分比,7.5折 = 75
*/
private Integer percent_discount;
/**
* 券状态
*/
private Integer status;
/**
* 只有商品券时返回
*/
private List<McdNetCouponProductRespDto> products;
}
package cn.freemud.management.entities.dto.response.coupon;
import lombok.Data;
/**
* 麦当劳.net支付信息响应对象
* <p>
* 此对象和.net接口保持一致
*
* @author Tony
*/
@Data
public class McdNetCouponPaymentRespDto {
/**
* 线上已付金额,以分为单位
*/
private Integer paid;
/**
* 线下需要收取的金额,以分为单位
*/
private Integer remaining;
}
package cn.freemud.management.entities.dto.response.coupon;
import lombok.Data;
/**
* 麦当劳.net商品信息响应对象
* <p>
* 此对象和.net接口保持一致
*
* @author Tony
*/
@Data
public class McdNetCouponProductRespDto {
/**
* 商户商品编号(或键位编号)
*/
private String pid;
/**
* 商品自增id
*/
private String mcd_productCode;
/**
* 商品名称
*/
private String name;
/**
* 商品数量
*/
private Integer amount;
/**
* 可用商品个数
*/
private Integer number;
/**
* 商品折扣价,以分为单位
*/
private Integer price_act;
/**
* 商品原价
*/
private Integer price_original;
/**
* 支付信息
*/
private McdNetCouponPaymentRespDto payment;
}
...@@ -2,6 +2,7 @@ package cn.freemud.management.thirdparty; ...@@ -2,6 +2,7 @@ package cn.freemud.management.thirdparty;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest; import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest; import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
...@@ -22,6 +23,9 @@ public interface CouponOfflineMCCafeClient { ...@@ -22,6 +23,9 @@ public interface CouponOfflineMCCafeClient {
@PostMapping("/mccafe/query") @PostMapping("/mccafe/query")
CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest); CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/batchQuery")
McdNetBatchQueryResponse batchQuery(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/lock") @PostMapping("/mccafe/lock")
CouponBaseResponse lock(MCCafeCouponLockRequest MCCafeCouponLockRequest); CouponBaseResponse lock(MCCafeCouponLockRequest MCCafeCouponLockRequest);
......
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