Commit b4641bc1 by 徐康

Merge branch 'feature/20200727_麦咖啡p1v2支付券码路由' into develop

parents 5aef4d8d bdef753f
......@@ -849,7 +849,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
//若该订单使用了优惠券,则移除卡包,移除失败也不退款
couponActivityService.callbackNotify(orderBean);
// couponActivityService.callbackNotify(orderBean);
BaseResponse couponBaseResponse = couponClientService.callbackNotify(orderBean);
// 订单失败后 发消息重试 待实现
String takeCode;
String daySeq;
......
package cn.freemud.service.mccafe;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
......@@ -34,4 +35,11 @@ public interface CouponClientService {
List<CouponBaseResponse> lockBatch(QueryOrdersResponseDto.DataBean.OrderBean orderBean);
CouponBaseResponse unlock(MCCafeCouponLockRequest mcCafeCouponLockRequest);
/**
* 移除卡包
* @param orderBean
* @return
*/
BaseResponse callbackNotify(QueryOrdersResponseDto.DataBean.OrderBean orderBean) ;
}
......@@ -3,9 +3,11 @@ package cn.freemud.service.mccafe.impl;
import cn.freemud.adapter.CouponAdapter;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.constant.Version;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.enums.ResponseResult;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
......@@ -15,14 +17,20 @@ import cn.freemud.enums.MCCafeChannelEnum;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.service.EmailAlertService;
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.response.order.QueryOrdersResponse;
import com.google.common.base.Throwables;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -43,6 +51,12 @@ public class CouponClientServiceImpl implements CouponClientService {
@Autowired
private OrderAdapter orderAdapter;
@Autowired
private OfflineCouponSdkService offlineCouponSdkService;
@Autowired
private EmailAlertService emailAlertService;
@Override
public CouponRedeemResponse redeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
if (null == orderBean || CollectionUtils.isEmpty(accounts)) {
......@@ -308,4 +322,40 @@ public class CouponClientServiceImpl implements CouponClientService {
public CouponBaseResponse unlock(MCCafeCouponLockRequest mcCafeCouponLockRequest) {
return couponOfflineMCCafeClient.unlock(mcCafeCouponLockRequest);
}
@Override
public BaseResponse callbackNotify(QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
if (CollectionUtils.isEmpty(orderBean.getAccountList())) {
return ResponseUtil.success();
}
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountBeanList = orderBean.getAccountList().stream().filter(account -> account.getType().equals(OldOrderAccountType.COUPON.getCode()) || account.getType().equals(OldOrderAccountType.PRODUCT_COUPON.getCode())
|| account.getType().equals(OldOrderAccountType.DISCOUNT_COUPON.getCode())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountBeanList)) {
return ResponseUtil.success();
}
String orderCode = orderBean.getOid();
String partnerId = orderBean.getCompanyId();
List<String> failedList = new ArrayList<>();
for(QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountBeanList) {
String couponCode = accountBean.getAccountId();
try {
//移除卡包失败,邮件报警
com.freemud.application.sdk.api.base.BaseResponse baseResponse = offlineCouponSdkService.callbackNotify(couponCode, orderCode, partnerId,"");
if (!Objects.equals(baseResponse.getCode(), cn.freemud.enums.ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("券码移除卡包失败", String.format("request:%s \r\nresponse:%s","券码号:"+couponCode+"订单号:"+orderCode, JSONObject.toJSONString(baseResponse)));
failedList.add(couponCode);
}
} catch (Exception ex) {
emailAlertService.sendEmailAlert("券码移除卡包异常", String.format("request:%s \r\nexception:%s", "券码号:"+couponCode+"订单号:"+orderCode, Throwables.getStackTraceAsString(ex)));
ErrorLog.printErrorLog("verification_error", "/callbackNotify", orderCode, ex);
failedList.add(couponCode);
}
}
if(CollectionUtils.isNotEmpty(failedList)) {
return ResponseUtil.error(cn.freemud.enums.ResponseResult.COUPON_CALLBACK_FAIL.getCode(), "优惠券移除卡包失败:"+failedList.toString());
}
return ResponseUtil.success();
}
}
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