Commit b3e6f2ac by 周晓航

前置处理 会员服务校验 以及券作废校验

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent f32e91f7
...@@ -13,6 +13,11 @@ import java.util.List; ...@@ -13,6 +13,11 @@ import java.util.List;
*/ */
@Data @Data
public class CheckAndCancelResponseDTO { public class CheckAndCancelResponseDTO {
public static int SUCCESS = 1;
public static int PROTION_FAIL = 2;
public static int FAIL = 3;
@ApiModelProperty(value = "作废结果,1:已全部作废,2:部分作废失败,3:不可作废", required = true) @ApiModelProperty(value = "作废结果,1:已全部作废,2:部分作废失败,3:不可作废", required = true)
private Integer resultCode; private Integer resultCode;
......
package cn.freemud.entities.dto.user;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/6 上午11:36
* @description :
*/
@Data
public class UserBaseResponsDTO<T> {
private String code;
private String message;
private T data;
}
package cn.freemud.entities.dto.user;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/6 上午11:35
* @description :
*/
@Data
public class UserCouponCheckRequest {
@ApiModelProperty(value = "商户号", required = true)
private String partnerId;
@ApiModelProperty(value = "会员id", required = true)
private String memberId;
@ApiModelProperty(value = "券号列表", required = true)
private List<String> couponCodes;
}
...@@ -24,6 +24,9 @@ import cn.freemud.entities.dto.*; ...@@ -24,6 +24,9 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto; import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.coupon.CheckAndCancelRequest;
import cn.freemud.entities.dto.coupon.CheckAndCancelResponseDTO;
import cn.freemud.entities.dto.coupon.CouponResponseDTO;
import cn.freemud.entities.dto.delivery.*; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.SendMessageRequest; import cn.freemud.entities.dto.ecology.SendMessageRequest;
import cn.freemud.entities.dto.openplatform.QueryInvoiceConfigRequest; import cn.freemud.entities.dto.openplatform.QueryInvoiceConfigRequest;
...@@ -38,6 +41,8 @@ import cn.freemud.entities.dto.shoppingCart.CollageOrderDto; ...@@ -38,6 +41,8 @@ import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto; import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.store.StoreMixResponseDto; import cn.freemud.entities.dto.store.StoreMixResponseDto;
import cn.freemud.entities.dto.user.UserBaseResponsDTO;
import cn.freemud.entities.dto.user.UserCouponCheckRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.*; import cn.freemud.entities.vo.order.*;
import cn.freemud.enums.OrderType; import cn.freemud.enums.OrderType;
...@@ -265,6 +270,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -265,6 +270,10 @@ public class OrderServiceImpl implements Orderservice {
@Autowired @Autowired
private WeChatLiveMsgHandle weChatLiveMsgHandle; private WeChatLiveMsgHandle weChatLiveMsgHandle;
@Autowired
private CouponOnlineClient couponOnlineClient;
@Autowired
private CustomerExtendClient customerExtendClient;
// @Override // @Override
// public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) { // public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
// String trackingNo = LogThreadLocal.getTrackingNo(); // String trackingNo = LogThreadLocal.getTrackingNo();
...@@ -3353,6 +3362,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3353,6 +3362,10 @@ public class OrderServiceImpl implements Orderservice {
return checkResult; return checkResult;
} }
// fisherman 调用会员获取券的有效性,是否有转赠状态 // fisherman 调用会员获取券的有效性,是否有转赠状态
checkResult = this.customerExtendHandle(orderBean);
if (!Objects.equals(checkResult.getCode(), ResponseResult.SUCCESS.getCode())) {
return checkResult;
}
// fisherman 券作废 // fisherman 券作废
checkResult = this.couponOnLineHandle(orderBean); checkResult = this.couponOnLineHandle(orderBean);
...@@ -3360,8 +3373,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3360,8 +3373,6 @@ public class OrderServiceImpl implements Orderservice {
return checkResult; return checkResult;
} }
// 走正常退款订单逻辑 这里是否可以丢MQ 异步操作 // 走正常退款订单逻辑 这里是否可以丢MQ 异步操作
try { try {
this.doCouponOrderRefund(orderBean, orderRefundVo); this.doCouponOrderRefund(orderBean, orderRefundVo);
...@@ -3378,6 +3389,34 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3378,6 +3389,34 @@ public class OrderServiceImpl implements Orderservice {
} }
/** /**
*
* @param orderBean
* @return
*/
private BaseResponse customerExtendHandle(OrderBeanV1 orderBean) {
BaseResponse<List<String>> baseResponse = this.couponOrderCommomCheck(orderBean);
if (baseResponse.getCode().compareTo(ResponseResult.SUCCESS.getCode()) != 0) {
return baseResponse;
}
// 获取优惠券
List<String> couponCodeList = baseResponse.getResult();
UserCouponCheckRequest request = new UserCouponCheckRequest();
request.setPartnerId(orderBean.getCompanyId());
request.setMemberId(orderBean.getUserId());
request.setCouponCodes(couponCodeList);
UserBaseResponsDTO<List<String>> responsDTO = customerExtendClient.getMemberCouponCodes(request);
if (responsDTO == null || !Objects.equals(responsDTO.getCode(), ResponseResult.SUCCESS.getCode())) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT, "会员服务调用失败");
}
List<String> responsDTOData = responsDTO.getData();
if (responsDTOData.retainAll(couponCodeList)) {
return ResponseUtil.success();
}
// fisherman 文案让产品提供
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT, "用户优惠券发生变动,无法退款");
}
/**
* 调用券码作废操作 * 调用券码作废操作
* @param orderBean * @param orderBean
* @return * @return
...@@ -3386,6 +3425,35 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3386,6 +3425,35 @@ public class OrderServiceImpl implements Orderservice {
if (orderBean.getBizType().compareTo(BizTypeEnum.SALE_COUPON.getBizType()) != 0) { if (orderBean.getBizType().compareTo(BizTypeEnum.SALE_COUPON.getBizType()) != 0) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT);
} }
BaseResponse<List<String>> baseResponse = this.couponOrderCommomCheck(orderBean);
if (baseResponse.getCode().compareTo(ResponseResult.SUCCESS.getCode()) != 0) {
return baseResponse;
}
// 获取优惠券
List<String> couponCodeList = baseResponse.getResult();
CheckAndCancelRequest request = new CheckAndCancelRequest();
request.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
request.setMemberId(orderBean.getUserId());
request.setCouponCodeList(couponCodeList);
CouponResponseDTO<CheckAndCancelResponseDTO> responseDTO = couponOnlineClient.checkandcancel(request);
if (responseDTO == null
|| !Objects.equals(responseDTO.getStatusCode(),100)) {
// 直接接口调用失败,
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "操作失败,请稍后重试");
}
CheckAndCancelResponseDTO result = responseDTO.getResult();
// 作废成功
if (result.getResultCode().compareTo(CheckAndCancelResponseDTO.SUCCESS) == 0) {
return ResponseUtil.success();
}
String memo = result.getMemo();
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), memo);
}
private BaseResponse<List<String>> couponOrderCommomCheck(OrderBeanV1 orderBean) {
List<OrderSettlementResp> orderSettlementDetailList = orderBean.getOrderSettlementDetailList(); List<OrderSettlementResp> orderSettlementDetailList = orderBean.getOrderSettlementDetailList();
if (CollectionUtils.isEmpty(orderSettlementDetailList)) { if (CollectionUtils.isEmpty(orderSettlementDetailList)) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "没有优惠券信息"); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "没有优惠券信息");
...@@ -3396,10 +3464,13 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3396,10 +3464,13 @@ public class OrderServiceImpl implements Orderservice {
.map(OrderSettlementResp::getExternalObjectId).collect(Collectors.toList()); .map(OrderSettlementResp::getExternalObjectId).collect(Collectors.toList());
// fisherman 核销券失败的逻辑处理 // fisherman 核销券失败的逻辑处理
if (CollectionUtils.isEmpty(couponCodeList)) {
return ResponseUtil.success(); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "没有优惠券信息");
}
return ResponseUtil.success(couponCodeList);
} }
/** /**
* 订单退款操作 * 订单退款操作
* 1.调用支付 进行退款 * 1.调用支付 进行退款
...@@ -3408,7 +3479,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3408,7 +3479,7 @@ public class OrderServiceImpl implements Orderservice {
* @param orderBean * @param orderBean
* @return * @return
*/ */
private BaseResponse doCouponOrderRefund(OrderBeanV1 orderBean, OrderRefundVo orderRefundVo) { private void doCouponOrderRefund(OrderBeanV1 orderBean, OrderRefundVo orderRefundVo) {
// 支付金额 大于0 调用支付 进行退款 // 支付金额 大于0 调用支付 进行退款
Long refundId = System.currentTimeMillis(); Long refundId = System.currentTimeMillis();
int state = PayRefundStatus.SUCCESS.getCode(); int state = PayRefundStatus.SUCCESS.getCode();
...@@ -3444,6 +3515,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3444,6 +3515,9 @@ public class OrderServiceImpl implements Orderservice {
} else if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) { } else if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) {
//退款成功 //退款成功
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent()); cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent());
}else {
// 退款失败,直接给基础服务null 用于后续补偿操作
cancelOrderRequest.setCreateEvent(null);
} }
cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks()); cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks());
cancelOrderRequest.setRefundDeliveryAmount(false); cancelOrderRequest.setRefundDeliveryAmount(false);
...@@ -3457,7 +3531,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3457,7 +3531,6 @@ public class OrderServiceImpl implements Orderservice {
} }
// 删除订单 通知活动添加商品库存 status 需要老订单的 ordercode // 删除订单 通知活动添加商品库存 status 需要老订单的 ordercode
// orderQueueService.backOrdersStatusChange(orderBean.getOrderCode(), orderBean.getOrderState(), orderBean.getPayState()); // orderQueueService.backOrdersStatusChange(orderBean.getOrderCode(), orderBean.getOrderState(), orderBean.getPayState());
return ResponseUtil.success();
} }
/** /**
......
...@@ -22,6 +22,8 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -22,6 +22,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@FeignClient(name = "customer-extend-service", url = "${saas.customerextendclient.feign.url}") @FeignClient(name = "customer-extend-service", url = "${saas.customerextendclient.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"}) @RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CustomerExtendClient { public interface CustomerExtendClient {
...@@ -39,4 +41,15 @@ public interface CustomerExtendClient { ...@@ -39,4 +41,15 @@ public interface CustomerExtendClient {
@LogIgnoreFeign(logMessage="b2bReceiveCard") @LogIgnoreFeign(logMessage="b2bReceiveCard")
@PostMapping(value = "/customerextendservice/qujia/b2breceiveCard") @PostMapping(value = "/customerextendservice/qujia/b2breceiveCard")
B2bReceiveCardResponseDto b2bReceiveCard(@RequestBody B2bReceiveCardRequestDto request); B2bReceiveCardResponseDto b2bReceiveCard(@RequestBody B2bReceiveCardRequestDto request);
/**
* 校验request里面的券 是否正常
* @param request
* @return 如果和request 返回券一致 表示正常
* 这个接口 无力吐槽
*/
@LogIgnoreFeign(logMessage="getMemberCouponCodes")
@PostMapping(value = "/customerextendservice/coupon/getMemberCouponCodes")
UserBaseResponsDTO<List<String>> getMemberCouponCodes(@RequestBody UserCouponCheckRequest request);
} }
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