Commit 52bc5641 by ping.wu

Merge branches 'feature/20220622_退款失败记录到订单_wuping' and 'qa' of…

Merge branches 'feature/20220622_退款失败记录到订单_wuping' and 'qa' of http://gitlab.freemud.com/order-group-application/order-group into qa
parents 3e149c72 af8037ef
......@@ -78,4 +78,13 @@ public class CombPayRequest {
* 下单所用小程序类型:1微信,2支付宝,3抖音")
*/
private Integer applicationType;
/**
* 小程序appid
*/
private String subAppid;
/**
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
private String payTypeCode;
}
......@@ -80,4 +80,13 @@ public class MultiPayRequest {
//储值卡支付列表
private List<String> cardItems;
/**
* 小程序appid
*/
private String subAppid;
/**
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
private String payTypeCode;
}
......@@ -145,8 +145,8 @@ public class OrderCallBackMQService {
OrderCallBackConfig.QUEUE_ROUTING_KEY, OrderCallBackConfig.QUEUE_NAME);
MQMessage<WechatReportOrderDto> message = new MQMessage<>(header, wechatReportOrderDto);
mqService.convertAndSend(OrderCallBackConfig.TOPIC_EXCHANGE_NAME, OrderCallBackConfig.WECHAT_ORDER_REPORT_QUEUE_ROUTING_KEY, message);
ApiLog.infoMessage("sendWechatReportMQ end orderCode:{}", JSONObject.toJSONString(wechatReportOrderDto));
}
ApiLog.infoMessage("sendWechatReportMQ end orderCode:{}", body.getOrderCode());
} catch (Exception e) {
ApiLog.infoMessage("sendWechatReportMQ Error orderCode:{} e:{}", body.getOrderCode(), ExceptionUtils.getFullStackTrace(e));
}
......
......@@ -3472,6 +3472,8 @@ public class OrderAdapter {
orderPayDto.setOut_order_no(orderBean.getOid());
orderPayDto.setCardCode(cardNo);
orderPayDto.setApplicationType(getPayApplicationType(orderBean.getOrderClient()));
orderPayDto.setSubAppid(orderBean.getAppId());
orderPayDto.setPayTypeCode(convertPayTypeCode(orderBean.getOrderClient()));
return orderPayDto;
}
......@@ -3864,6 +3866,24 @@ public class OrderAdapter {
}
/**
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
public String convertPayTypeCode(String orderClient) {
String payTypeCode = "";
switch (orderClient) {
case "2":
payTypeCode = "TWX";
break;
case "3":
payTypeCode = "TZFB";
break;
default:
break;
}
return payTypeCode;
}
/**
* 礼品卡支付参数转化
*/
public Integer getPayApplicationType(String orderClient) {
......@@ -4092,6 +4112,8 @@ public class OrderAdapter {
orderPayDto.setOut_order_no(orderBean.getOid());
orderPayDto.setCardItems(cardCodes);//多卡支付
orderPayDto.setApplicationType(getPayApplicationType(orderBean.getOrderClient()));
orderPayDto.setSubAppid(orderBean.getAppId());
orderPayDto.setPayTypeCode(convertPayTypeCode(orderBean.getOrderClient()));
return orderPayDto;
}
......
......@@ -16,6 +16,7 @@ import cn.freemud.entities.vo.CreateOrderResponseVo;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
......@@ -30,10 +31,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
@Component
public class PointsMallOrderAdapter {
......@@ -233,10 +231,31 @@ public class PointsMallOrderAdapter {
}
requestDto.setProducts(productBeans);
requestDto.setBody(payProductName);
requestDto.setSubAppid(orderInfo.getAppId());
requestDto.setPayTypeCode(convertPayTypeCode(orderInfo.getOrderClient().toString()));
return requestDto;
}
/**
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
public String convertPayTypeCode(String orderClient) {
String payTypeCode = "";
switch (orderClient) {
case "2":
payTypeCode = "TWX";
break;
case "3":
payTypeCode = "TZFB";
break;
default:
break;
}
return payTypeCode;
}
/**
* 预支付接口获取类型
*
* @return
......
......@@ -43,4 +43,13 @@ public class UnifiedOrderRequestDto {
private String payTimeOutTime;
private Long merchantDiscount;
/**
* 小程序appid
*/
private String subAppid;
/**
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
private String payTypeCode;
}
......@@ -63,6 +63,7 @@ import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddress
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
......@@ -1548,10 +1549,31 @@ public class CheckOrder {
}
requestDto.setProducts(productBeans);
requestDto.setBody(payProductName);
requestDto.setSubAppid(orderInfo.getAppId());
//支付类型编码 TWX:微信 TZFB:支付宝
requestDto.setPayTypeCode(convertPayTypeCode(orderInfo.getOrderClient().toString()));
return requestDto;
}
/**
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
public String convertPayTypeCode(String orderClient) {
String payTypeCode = "";
switch (orderClient) {
case "2":
payTypeCode = "TWX";
break;
case "3":
payTypeCode = "TZFB";
break;
default:
break;
}
return payTypeCode;
}
/**
* 预支付接口获取类型
* @return
*/
......
......@@ -18,7 +18,7 @@ import cn.freemud.entities.vo.order.PaymentConfigVo;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo;
import cn.freemud.management.service.handle.PaymentHandle;
import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.manager.OpenPlatformOrderConfigManager;
......@@ -169,6 +169,8 @@ public class OrderAdapterServiceImpl {
private EcologyProgramApplicationClient ecologyProgramApplicationClient;
@Autowired
private EmailAlertService emailAlertService;
@Autowired
private PaymentHandle paymentHandle;
//获取下单实现对象
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo, CreateOrderVo createOrderVo) {
......@@ -327,10 +329,17 @@ public class OrderAdapterServiceImpl {
return orderAdapter.sendPaySuccessNoticeMessage();
}
Integer client = Integer.parseInt(orderBean.getOrderClient());
//若是app订单超时回调了 订单已取消则做退款处理
if (NewOrderStatus.CLOSED.getIndex().equals(orderBean.getStatusV2()) && Arrays.asList(autoRefundClient.split(",")).contains(client.toString())
//若是订单超时回调了 订单已取消则做退款处理
if (NewOrderStatus.CLOSED.getIndex().equals(orderBean.getStatusV2())
&& Arrays.asList(autoRefundClient.split(",")).contains(client.toString())
&& Arrays.asList(autoRefundPartnerId.split(",")).contains(orderBean.getCompanyId())) {
orderServiceImpl.timeOutRefund(orderBean);
cn.freemud.management.entities.dto.request.order.OrderManagerRequest request = new cn.freemud.management.entities.dto.request.order.OrderManagerRequest();
request.setOrderId(orderBean.getOid());
request.setPartnerId(orderBean.getCompanyId());
request.setReason("处理订单已关闭,支付未及时回调");
request.setOperator("order-application-service");
// 直接退款就行, 其他的资产已经被退回
paymentHandle.getCommonPayRefundResponse(request,orderBean);
return orderAdapter.sendPaySuccessNoticeMessage();
}
// 支付成功处理
......@@ -486,6 +495,7 @@ public class OrderAdapterServiceImpl {
}
/**
* 微信低碳活动上报,活动结束即可删除
* @param message
......@@ -573,5 +583,4 @@ public class OrderAdapterServiceImpl {
}
return false;
}
}
......@@ -25,7 +25,6 @@ import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.blacklist.BlacklistDto;
import cn.freemud.entities.dto.blacklist.OrderBlacklistResp;
import cn.freemud.entities.dto.coupon.CheckAndCancelRequest;
import cn.freemud.entities.dto.coupon.CheckAndCancelResponseDTO;
import cn.freemud.entities.dto.coupon.CouponResponseDTO;
......@@ -96,7 +95,6 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.common.OrderAndShoppingCommonRedisKey;
......@@ -104,8 +102,6 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.RefundBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.*;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
import com.freemud.application.sdk.api.ordercenter.request.*;
......@@ -2324,7 +2320,7 @@ public class OrderServiceImpl implements Orderservice {
messageTemplateRequest.setMessageEventType(messageEventType);
com.freemud.application.sdk.api.base.BaseResponse baseResponse = this.messageTemplatePushService.sendTemplateMsg(messageTemplateRequest);
if (!Objects.equals(baseResponse.getCode(), ResponseResultEnum.SUCCESS.getCode())) {
AppLogUtil.errorLog("发送支付成功模板消息 失败", orderBean.getOid(), JSON.toJSONString(baseResponse), null);
AppLogUtil.printLog("发送支付成功模板消息 失败", orderBean.getOid(), JSON.toJSONString(baseResponse));
}
} catch (Exception e) {
AppLogUtil.errorLog("sendTemplateMsg_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(messageTemplateRequest), e);
......@@ -2815,30 +2811,23 @@ public class OrderServiceImpl implements Orderservice {
if (abState.equals(orderBean.getAbnormalState())) {
return;
}
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> response = null;
Long refundId = System.currentTimeMillis();
OrderExtInfoDto orderExtInfoDTO = gson.fromJson(orderBean.getExtInfo(), OrderExtInfoDto.class);
if (orderExtInfoDTO == null || StringUtils.isBlank(orderExtInfoDTO.getFmId())) {
return;
}
Integer state = PayRefundStatus.SUCCESS.getCode();
orderBean.setPayVoucher(orderExtInfoDTO.getFmId());
OrderManagerRequest request = new OrderManagerRequest();
request.setReason("订单已关闭,支付未及时回调");
Integer state = com.freemud.sdk.api.assortment.order.enums.PayRefundStatus.SUCCESS.getCode();
PayRefundResponse commonPayRefundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean);
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus payRefundStatus = commonPayRefundResponse.getPayRefundStatus();
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
String desc = "支付未及时回调";
PayRefundRequestDto orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderBean.getOid());
// TODO: 22-6-23 待联调修改
response = payServiceImpl.orderRefund(orderPayRefundRequest);
// OrderManagerRequest request = new OrderManagerRequest();
// request.setReason(desc);
// PayRefundResponse response = payServiceImpl.payRefundCommon(request, orderBean);
if (response != null && noPay.equals(response.getCode())) {
return;
}
if (response != null || state.equals(response.getData().getRefundStatus())) {
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款成功");
} else {
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款失败");
switch (payRefundStatus){
case SUCCESS:
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款成功");
break;
case FAIL:
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款失败");
break;
default:
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",等待支付回调中");
}
sdkUpdateAbnormalState.setPartnerId(orderBean.getCompanyId());
sdkUpdateAbnormalState.setAbnormalState(4);
......
......@@ -1276,7 +1276,8 @@ public class PayServiceImpl {
}
orderPayDto.setFoodOrderType(orderAdapter.getFoodOrderType(orderBean.getOrderType()));
// orderPayDto.setMerchantDiscount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount());
orderPayDto.setSubAppid(orderBean.getAppId());
orderPayDto.setPayTypeCode(convertPayTypeCode(orderBean.getOrderClient()));
return orderPayDto;
}
......@@ -1635,6 +1636,24 @@ public class PayServiceImpl {
return orderPayResponse;
}
/**
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
public String convertPayTypeCode(String orderClient) {
String payTypeCode = "";
switch (orderClient) {
case "2":
payTypeCode = "TWX";
break;
case "3":
payTypeCode = "TZFB";
break;
default:
break;
}
return payTypeCode;
}
......
......@@ -18,7 +18,7 @@ public enum OperateType {
* 该操作无校验, 直接退款, 如果使用 请联系SE 进行报备,
* 该类型不给外部人员使用, 不对外部暴露接口
*/
ORDER_DEVELOPER_AGREE_REFUND("orderDeveloperAgreeRefund","售后人员同意退款");
ORDER_DEVELOPER_AGREE_REFUND("orderDeveloperAgreeRefund","重试售后单退款"),;
/**
* 操作类型
......
......@@ -398,6 +398,10 @@ public class OrderManagerAdapter {
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
// 是否是卖券订单 卖券订单有自己的逻辑补偿,不走支付回调
if (orderBean.getBizType().compareTo(BizTypeEnum.SALE_COUPON.getBizType()) == 0) {
return ResponseUtil.success();
}
// step 2 检查订单状态
//已取消的订单不能操作
if (ObjectUtils.equals(OrderStatusV1.CANCEL.getV2Code(), orderBean.getStatusV2())) {
......
......@@ -731,7 +731,6 @@ public class ShoppingCartConvertAdapter {
Long newOrigOriginalPrice = 0L;
if (isSetMealProduct) {
newOrigOriginalPrice += cartGoods.getProductComboList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
newOrigOriginalPrice += cartGoods.getProductGroupList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
} else {
newOrigOriginalPrice = isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice();
}
......
......@@ -359,7 +359,7 @@ public class CouponServiceImpl implements CouponService {
if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_1.getCode())) {
activityCouponBean.setDiscountAmount(couponStateVo.getOriginalPrice() + "");
} else if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_3.getCode())) {
// TODO 折扣券 百分值10 乘以10 前端统一除以100作为操作依据
// TODO 折扣券 百分值10 乘以10 前端统一除以100作为操作依据 _> 废弃, 现在默认 不乘10
activityCouponBean.setDiscountAmount(couponStateVo.getDiscount() != null ? couponStateVo.getDiscount() * 10 + "" : "0");
}else if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_5.getCode())) {
// 这里需要加入 配送券逻辑 如果为null 表示 配送券金额 全免, 否则就是部分减免
......
......@@ -1833,6 +1833,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid());
calculationDiscountGoods.setAddCartTime(cartGoods.getAddCartTime() == null ? 0 : cartGoods.getAddCartTime());
calculationDiscountGoods.setGoodsQuantity(cartGoods.getQty());
// fisherman --> 老算价套餐子商品总价遗漏
calculationDiscountGoods.setOriginalPrice(cartGoods.getFinalPrice());
calculationDiscountGoods.setMemberDiscount(cartGoods.getMemberDiscount());
calculationDiscountGoods.setSpuId(cartGoods.getSpuId());
......
......@@ -479,8 +479,17 @@ public class CalculationCommonService {
activityDiscountsDto.setActivityCode(discount.getActivityCode());
activityDiscountsDto.setActivityName(this.convertName(discount.getType(), discount.getActivityName()));
activityDiscountsDto.setActivityType(this.convertType(discount.getType()));
activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue());
activityDiscountsDto.setActualActivityGoodsNumber(discount.getActualGoodsNumber());
if (cartGoodsDetailDto.getIsSendGoods()) {
// 这里不直接取促销返回的discount是因为如果是赠品的情况下, 如果赠品有属性,会进行拆行
// 例如:赠品*2, 会被拆为 2个 赠品*1, 每个赠品都可以选不同属性, 这样赠品的优惠信息需要将优惠金额也要拆到每一行上去
activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue() / discount.getActualGoodsNumber() * cartGoods.getQty());
activityDiscountsDto.setActualActivityGoodsNumber(1);
} else {
// 这里不直接取促销返回的discount是因为如果是赠品的情况下, 如果赠品有属性,会进行拆行
// 例如:赠品*2, 会被拆为 2个 赠品*1, 每个赠品都可以选不同属性, 这样赠品的优惠信息需要将优惠金额也要拆到每一行上去
activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue());
activityDiscountsDto.setActualActivityGoodsNumber(discount.getActualGoodsNumber());
}
activityDiscountsDtoList.add(activityDiscountsDto);
}
} else if (CollectionUtils.isNotEmpty(calculationGoods.getSmallMaterial())) {
......
......@@ -121,7 +121,7 @@ public class CalculationSharingEquallyService {
Goods find = null;
for (CartGoods product : shoppingCartGoodsResponseVo.getProducts()) {
if (goods!=null) {
find = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst().get();
find = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst().orElseGet(null);
}
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = calculationCommonService.convertCartGoods2DetailGoodsList(find, product,shoppingCartInfoRequestVo.getPartnerId());
cartGoodsDetailDtoList.add(cartGoodsDetailDto);
......
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