package com.xiaopeng.operation.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.model.operation.XpOfficialPartner;
|
import com.xiaopeng.api.model.order.XpOrder;
|
import com.xiaopeng.api.vo.operation.OfficialPartnerResult;
|
import com.xiaopeng.common.core.domain.R;
|
import com.xiaopeng.common.core.exception.ServiceException;
|
import com.xiaopeng.operation.service.IXpOfficialPartnerService;
|
import com.xiaopeng.operation.vo.PushNewOrderVo;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.time.format.DateTimeFormatter;
|
|
/**
|
* 合作商工具类
|
*/
|
@Component
|
public class OfficialPartnerUtil {
|
|
@Resource
|
private IXpOfficialPartnerService xpOfficialPartnerService;
|
|
@Resource
|
private UserResourcesClient userResourcesClient;
|
|
|
|
|
/**
|
* 推送新的订单给合作商
|
* @param officialPartnerId
|
* @return
|
*/
|
public R<?> pushNewOrder(Integer officialPartnerId, XpOrder xpOrder) {
|
XpOfficialPartner xpOfficialPartner = xpOfficialPartnerService.getById(officialPartnerId);
|
String createOrderUrl = xpOfficialPartner.getCreateOrderUrl();
|
PushNewOrderVo pushNewOrderVo = buildNewOrder(xpOrder);
|
HttpRequest post = HttpUtil.createPost(createOrderUrl);
|
post.body(JSON.toJSONString(pushNewOrderVo));
|
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());
|
}
|
|
|
/**
|
* 构建推送订单数据
|
* @param xpOrder
|
* @return
|
*/
|
private PushNewOrderVo buildNewOrder(XpOrder xpOrder){
|
PushNewOrderVo vo = new PushNewOrderVo();
|
vo.setOrderNum(xpOrder.getOrderNumber());
|
vo.setVehicleModelId(null);
|
vo.setVehicleModelName("");
|
vo.setPlacementLongitude(xpOrder.getPlacementLon());
|
vo.setPlacementLatitude(xpOrder.getPlacementLat());
|
vo.setPlacementAddress(xpOrder.getPlacementAddress());
|
vo.setStartLongitude(xpOrder.getStartLon());
|
vo.setStartLatitude(xpOrder.getStartLat());
|
vo.setStartAddress(xpOrder.getStartAddress());
|
vo.setEndLongitude(xpOrder.getEndLon());
|
vo.setEndLatitude(xpOrder.getEndLat());
|
vo.setEndAddress(xpOrder.getEndAddress());
|
vo.setUserId(xpOrder.getAppUserId());
|
UcUserInfo ucUserInfo = userResourcesClient.getBaseUserByUid(xpOrder.getAppUserId().toString());
|
if(ucUserInfo != null){
|
vo.setUserPhone(ucUserInfo.getMobile());
|
}
|
vo.setCreateTime(xpOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
return vo;
|
|
}
|
|
}
|