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()); } }