Commit 586e82f6 by 徐康

万能券核销

parent 497bb1b5
...@@ -655,7 +655,7 @@ public class CouponAdapter { ...@@ -655,7 +655,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())))) {
...@@ -675,6 +675,9 @@ public class CouponAdapter { ...@@ -675,6 +675,9 @@ public class CouponAdapter {
mcCafeProductRedeemVo.setCustomer_code(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(CollectionUtils.isNotEmpty(coupon.getCodeInfo().getGroups())) {
mcCafeProductRedeemVo.setGid(coupon.getCodeInfo().getGroups().get(0).getGid());
}
products.add(mcCafeProductRedeemVo); products.add(mcCafeProductRedeemVo);
} }
} }
...@@ -692,36 +695,13 @@ public class CouponAdapter { ...@@ -692,36 +695,13 @@ 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() McdNetCouponProductRespDto mcdNetCouponProductRespDto = coupon.getCodeInfo().getProducts().get(0);
.ver(88) MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
.reqtype(CouponReqTypeEnum.BATCH_QUERY.getCode()) mcCafeProductRedeemVo.setKeyProductCode(mcdNetCouponProductRespDto.getPid());
.partnerId(Integer.parseInt(orderBean.getCompanyId())) mcCafeProductRedeemVo.setCustomer_code(mcdNetCouponProductRespDto.getPid());
.store_id(orderBean.getShopId()) mcCafeProductRedeemVo.setConsume_num(mcdNetCouponProductRespDto.getNumber());
.station_id("1") mcCafeProductRedeemVo.setSeq(1);
.operator_id(orderBean.getUserId()) products.add(mcCafeProductRedeemVo);
.channel(OrderSource.ALIPAY.getSource().equals(orderBean.getSource())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName())
.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();
mcCafeCouponRequest.setVer(Integer.valueOf(Version.VERSION_1)); mcCafeCouponRequest.setVer(Integer.valueOf(Version.VERSION_1));
......
...@@ -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.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 +49,32 @@ public class McCafeCouponAdapter { ...@@ -39,12 +49,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())))) {
...@@ -64,6 +94,9 @@ public class McCafeCouponAdapter { ...@@ -64,6 +94,9 @@ public class McCafeCouponAdapter {
mcCafeProductRedeemVo.setCustomer_code(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(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;
}
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