package com.ydd.app.callback.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.fasterxml.jackson.databind.ObjectMapper; import com.ydd.api.DeliveryCallbackApi; import com.ydd.api.DeliveryService; import com.ydd.app.service.ApiDeliveryService; import com.ydd.app.service.ApiOrderBackService; import com.ydd.app.service.impl.ApiCallBackContent; import com.ydd.app.service.impl.ApiCallBackHuoLaLa; import com.ydd.common.enums.DeliveryTypeEnums; import com.ydd.module.domain.DspDelivery; import com.ydd.module.domain.OrderDelivery; import com.ydd.module.dto.CallBackOrderDto; import com.ydd.module.service.IDspDeliveryService; import com.ydd.module.service.IOrderDeliveryService; import com.ydd.module.service.IOrderService; import com.ydd.module.service.IShopDeliveryService; import com.ydd.third.common.huolalaresponse.TokenResponse; import com.ydd.third.common.vo.ResObject; import com.ydd.third.common.vo.callback.CallBackOrderVo; import com.ydd.third.common.vo.callback.FengniaoV3CallbackOrderVo; import com.ydd.third.common.vo.callback.HuolalaCallbackOrderVo; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * @author xsx * @version 1.0 * @date 2021/6/8 17:40 */ @Slf4j @RestController @RequestMapping("/app/delivery/huolala/callback") public class HuoLaLaDeliveryCallback { @Resource private DeliveryCallbackApi huolalaCallback; @Resource private DeliveryService huolalaClient; @Resource private ApiDeliveryService apiDeliveryService; @Resource private IOrderDeliveryService iOrderDeliveryService; @Resource private ApiOrderBackService apiOrderService; @Resource private IOrderService iorderService; @Resource private IDspDeliveryService iDspDeliveryService; @Resource private IShopDeliveryService iShopDeliveryService; /** * 授权 * @return */ @RequestMapping("/doAuth") public void doAuth(String code){ if (code==null) { return; } log.info("收到货拉拉用户绑定"+code); String result = huolalaCallback.huolalaAuth(code); JSONObject parseObject = JSONObject.parseObject(result); if ("0".equals(parseObject.getString("ret"))){ String data = parseObject.getString("data"); JSONObject jsonObject = JSONObject.parseObject(data); TokenResponse tokenResponse = jsonObject.toJavaObject(TokenResponse.class); tokenResponse.setExpires(jsonObject.getDate("auth_end_time")); // apiDeliveryService.bindHuoLaLa(tokenResponse); DspDelivery delivery = new DspDelivery(); delivery.setAuthToken(tokenResponse.getAccessToken()); delivery.setRefreshToken(tokenResponse.getRefreshToken()); delivery.setExpiresIn(tokenResponse.getExpires().getTime()); iDspDeliveryService.update(delivery,new UpdateWrapper().eq("shop_id",tokenResponse.getAuthMobile())); } } /** * 订单回调 * @param jsonParam * @return */ @RequestMapping("/doOrder") public String doOrder(@RequestBody JSONObject jsonParam){ JSONObject res = new JSONObject(); log.info("收到货拉拉回调"+jsonParam); res.put("serial_no",jsonParam.getString("serial_no")); //订单类型回调 if ("order_update".equals(jsonParam.getString("action"))) { String order_display_id = JSONObject.parseObject(JSONObject.toJSONString(jsonParam.get("data"))).getString("order_display_id"); Integer orderStatus = JSONObject.parseObject(JSONObject.toJSONString(jsonParam.get("data"))).getInteger("order_status"); OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper().eq("out_trade_no",order_display_id)); orderDelivery.setHllStatus(orderStatus); iOrderDeliveryService.updateById(orderDelivery); log.info("货拉拉订单delevery订单==="+JSONObject.toJSONString(orderDelivery)); // Order order = iorderService.getOne(new QueryWrapper().eq("order_sn", orderDelivery.getOrderSn()).eq("deleted", IsDeleteEnum.NORMAL.status)); // if (order.getPaymentType()==5){ DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.HUO_LA_LA.getType()); String token=delivery.getAuthToken(); // }else { // ShopDelivery shopDelivery = iShopDeliveryService.getOne(new QueryWrapper().eq("merchant_id", order.getMemberId()) // .eq("deleted", IsDeleteEnum.NORMAL.status).isNull("shop_id").eq("bind_status",1)); // token=shopDelivery.getAuthToken(); // } CallBackOrderVo vo = new CallBackOrderVo(); vo.setLbClient(DeliveryTypeEnums.HUO_LA_LA.getName()); vo.setParams(jsonParam); vo.setToken(token); Object result = huolalaCallback.doOrder(vo); ObjectMapper objectMapper = new ObjectMapper(); ResObject callbackRes = objectMapper.convertValue(result, ResObject.class); if (callbackRes.getCode()==0){ HuolalaCallbackOrderVo orderVo = objectMapper.convertValue(callbackRes.getData(), HuolalaCallbackOrderVo.class); ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackHuoLaLa(orderVo)); CallBackOrderDto dto = content.createCallBack(); dto.setParentOrderSn(orderDelivery.getOrderSn()); dto.setOrderSn(orderDelivery.getChildOrderSn()); apiOrderService.callBackOrder(dto); } } return res.toString(); } }