package com.xiaopeng.order.utils;
|
|
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpResponse;
|
import cn.hutool.http.HttpUtil;
|
import com.alibaba.fastjson2.JSON;
|
import com.xiaopeng.api.dto.account.UcUserInfo;
|
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
|
import com.xiaopeng.api.feignClient.operation.XpOfficialPartnerClient;
|
import com.xiaopeng.api.model.operation.XpOfficialPartner;
|
import com.xiaopeng.api.model.order.XpOrder;
|
import com.xiaopeng.api.model.order.XpOrderCancel;
|
import com.xiaopeng.api.vo.operation.OfficialPartnerResult;
|
import com.xiaopeng.common.core.domain.R;
|
import com.xiaopeng.common.core.exception.ServiceException;
|
import com.xiaopeng.order.vo.CancelOrderVo;
|
import com.xiaopeng.order.vo.CloseOrderVo;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
|
/**
|
* 合作商工具类
|
*/
|
@Component
|
public class OfficialPartnerUtil {
|
|
@Resource
|
private XpOfficialPartnerClient xpOfficialPartnerClient;
|
|
|
/**
|
* 推送取消订单
|
* @param officialPartnerId
|
* @param orderCancel
|
* @return
|
*/
|
public R<?> pushCancelOrder(Integer officialPartnerId, XpOrderCancel orderCancel, Integer status) {
|
XpOfficialPartner xpOfficialPartner = xpOfficialPartnerClient.getOfficialPartner(officialPartnerId).getData();
|
String cancelOrderUrl = xpOfficialPartner.getCancelOrderUrl();
|
HttpRequest post = HttpUtil.createPost(cancelOrderUrl);
|
CancelOrderVo cancelOrderVo = buildCancelOrder(orderCancel, status);
|
post.body(JSON.toJSONString(cancelOrderVo));
|
HttpResponse execute = post.execute();
|
if(!execute.isOk()){
|
throw new ServiceException("[" + xpOfficialPartner.getName() + "]调用合作商接口失败-取消订单接口");
|
}
|
OfficialPartnerResult officialPartnerResult = JSON.parseObject(execute.body(), OfficialPartnerResult.class);
|
if(0 == officialPartnerResult.getCode()){
|
return R.ok();
|
}
|
throw new ServiceException("[" + xpOfficialPartner.getName() + "]" + officialPartnerResult.getMsg());
|
}
|
|
|
|
private CancelOrderVo buildCancelOrder(XpOrderCancel xpOrder, Integer status){
|
CancelOrderVo vo = new CancelOrderVo();
|
vo.setOrderId(xpOrder.getOrderId());
|
vo.setCancelReason(xpOrder.getCancelReason());
|
vo.setCancelSource(xpOrder.getCancelSource());
|
vo.setCancelTime(xpOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
vo.setStatus(status);
|
return vo;
|
}
|
|
|
/**
|
* 推送结束订单
|
* @param officialPartnerId
|
* @param xpOrder
|
* @param closeReason
|
* @return
|
*/
|
public R<?> pushEndOrder(Integer officialPartnerId, XpOrder xpOrder, String closeReason){
|
XpOfficialPartner xpOfficialPartner = xpOfficialPartnerClient.getOfficialPartner(officialPartnerId).getData();
|
String closeOrderUrl = xpOfficialPartner.getCloseOrderUrl();
|
HttpRequest post = HttpUtil.createPost(closeOrderUrl);
|
CloseOrderVo closeOrderVo = new CloseOrderVo();
|
closeOrderVo.setOrderId(xpOrder.getId());
|
closeOrderVo.setCloseReason("closeReason");
|
closeOrderVo.setCloseTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
closeOrderVo.setStatus(xpOrder.getStatus());
|
post.body(JSON.toJSONString(closeOrderVo));
|
HttpResponse execute = post.execute();
|
if(!execute.isOk()){
|
throw new ServiceException("[" + xpOfficialPartner.getName() + "]调用合作商接口失败-取消订单接口");
|
}
|
OfficialPartnerResult officialPartnerResult = JSON.parseObject(execute.body(), OfficialPartnerResult.class);
|
if(0 == officialPartnerResult.getCode()){
|
return R.ok();
|
}
|
throw new ServiceException("[" + xpOfficialPartner.getName() + "]" + officialPartnerResult.getMsg());
|
}
|
}
|