Commit 14d629d7 by shuhu.hou

支付成功移除卡包

parent 4b62383d
......@@ -2064,7 +2064,7 @@ public class OrderSdkAdapter {
CouponRequest couponCodeVerificationDto = new CouponRequest();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(71);
couponCodeVerificationDto.setPartnerId(Integer.getInteger(orderBean.getCompanyId()));
couponCodeVerificationDto.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
couponCodeVerificationDto.setChannel(activityChannelEnum.getCode());
couponCodeVerificationDto.setStation_id("-1");
couponCodeVerificationDto.setOperator_id("-1");
......
......@@ -331,6 +331,11 @@
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
</dependency>
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
</dependencies>
<build>
......
......@@ -150,6 +150,7 @@ public enum ResponseResult {
COUPON_SHOP_NOTSUPPORT("46010","优惠券在当前门店不可用"),
COUPON_ORDER_WAY_ERROR("46011", "您选择得优惠券不适用该点餐方式"),
COUPON_VERIFICATION_FAIL("46012","优惠券核销失败"),
COUPON_CALLBACK_FAIL("46013","优惠券移除卡包失败"),
/**
* 加价购商品
*/
......
......@@ -11,20 +11,16 @@ import java.util.List;
public interface CouponActivityService {
/**
* 优惠券核销
* @param couponCode 券码
* @param oid 订单ID
* @param partnerId 商户ID
* @param storeId 门店ID
* @param userId 用户ID
* @return
* 核销优惠券
* @param orderBean
*/
BaseResponse verificationCoupon(ActivityChannelEnum activityChannelEnum, String couponCode, String oid, String partnerId,
String storeId, String userId, List<CouponCodeVerificationProductDto> products, Integer discountPrice);
BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean);
/**
* 核销优惠券
* 移除卡包
* @param orderBean
* @return
*/
BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean);
BaseResponse callbackNotify(QueryOrdersResponseDto.DataBean.OrderBean orderBean) ;
}
......@@ -15,10 +15,14 @@ import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
import com.google.common.base.Throwables;
import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
......@@ -42,28 +46,8 @@ public class CouponActivityServiceImpl implements CouponActivityService {
private CouponOfflineClient couponOfflineClient;
@Autowired
private EmailAlertService emailAlertService;
private static Gson gson = new Gson();
@Override
public BaseResponse verificationCoupon(ActivityChannelEnum activityChannelEnum, String couponCode, String oid, String partnerId,
String storeId, String userId, List<CouponCodeVerificationProductDto> products, Integer discountPrice) {
if (StringUtils.isNotBlank(couponCode)) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, couponCode, oid, partnerId, storeId, userId, products, discountPrice);
try {
//3.券核销
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
LogUtil.info("coupond_verification_info", gson.toJson(couponCodeVerificationDto), gson.toJson(couponCodeResponseDto));
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
LogUtil.info("coupond_verification_error", gson.toJson(couponCodeVerificationDto), gson.toJson(couponCodeResponseDto));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
} catch (Exception e) {
LogUtil.error("verification_error", gson.toJson(couponCodeVerificationDto), "", e);
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
}
return ResponseUtil.success();
}
@Autowired
private OfflineCouponSdkService offlineCouponSdkService;
/**
......@@ -112,7 +96,7 @@ public class CouponActivityServiceImpl implements CouponActivityService {
|| OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue());
try {
//3.券核销
//71.券核销
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
......@@ -128,4 +112,33 @@ public class CouponActivityServiceImpl implements CouponActivityService {
}
return ResponseUtil.success();
}
@Override
public BaseResponse callbackNotify(QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
if (CollectionUtils.isEmpty(orderBean.getAccountList())) {
return ResponseUtil.success();
}
QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean = 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())).findFirst().orElse(null);
if (accountBean == null) {
return ResponseUtil.success();
}
String orderCode = orderBean.getOid();
String partnerId = orderBean.getCompanyId();
String couponCode=accountBean.getAccountId();
try {
//移除卡包失败,邮件报警
com.freemud.application.sdk.api.base.BaseResponse baseResponse = offlineCouponSdkService.callbackNotify(couponCode, orderCode, partnerId);
if (!Objects.equals(baseResponse.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("券码移除卡包失败", String.format("request:%s \r\nresponse:%s","券码号:"+couponCode+"订单号:"+orderCode, JSONObject.toJSONString(baseResponse)));
return ResponseUtil.error(ResponseResult.COUPON_CALLBACK_FAIL);
}
return ResponseUtil.success();
} catch (Exception ex) {
emailAlertService.sendEmailAlert("券码移除卡包异常", String.format("request:%s \r\nexception:%s", "券码号:"+couponCode+"订单号:"+orderCode, Throwables.getStackTraceAsString(ex)));
ErrorLog.printErrorLog("verification_error", "/callbackNotify", orderCode, ex);
return ResponseUtil.error(ResponseResult.COUPON_CALLBACK_FAIL);
}
}
}
......@@ -372,11 +372,8 @@ public class OrderServiceImpl implements Orderservice {
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus()) || !OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return sendPaySuccessNoticeMessage();
}
//核销优惠券,若核销失败直接退款
// if (!ResponseResult.SUCCESS.getCode().equals(couponActivityService.verificationCoupon(orderBean).getCode())){
// orderRefund(orderBean, "核销券异常退款", openid, oid);
// return newSendPayFaileMessage();
// }
//若该订单使用了优惠券,则移除卡包,移除失败也不退款
couponActivityService.callbackNotify(orderBean);
// 订单失败后 发消息重试 待实现
String takeCode;
String daySeq;
......
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