HuoLaLaDeliveryCallback.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package com.ydd.app.callback.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import com.ydd.api.DeliveryCallbackApi;
  7. import com.ydd.api.DeliveryService;
  8. import com.ydd.app.service.ApiDeliveryService;
  9. import com.ydd.app.service.ApiOrderBackService;
  10. import com.ydd.app.service.impl.ApiCallBackContent;
  11. import com.ydd.app.service.impl.ApiCallBackHuoLaLa;
  12. import com.ydd.common.enums.DeliveryTypeEnums;
  13. import com.ydd.module.domain.DspDelivery;
  14. import com.ydd.module.domain.OrderDelivery;
  15. import com.ydd.module.dto.CallBackOrderDto;
  16. import com.ydd.module.service.IDspDeliveryService;
  17. import com.ydd.module.service.IOrderDeliveryService;
  18. import com.ydd.module.service.IOrderService;
  19. import com.ydd.module.service.IShopDeliveryService;
  20. import com.ydd.third.common.huolalaresponse.TokenResponse;
  21. import com.ydd.third.common.vo.ResObject;
  22. import com.ydd.third.common.vo.callback.CallBackOrderVo;
  23. import com.ydd.third.common.vo.callback.FengniaoV3CallbackOrderVo;
  24. import com.ydd.third.common.vo.callback.HuolalaCallbackOrderVo;
  25. import lombok.extern.slf4j.Slf4j;
  26. import org.springframework.web.bind.annotation.RequestBody;
  27. import org.springframework.web.bind.annotation.RequestMapping;
  28. import org.springframework.web.bind.annotation.RestController;
  29. import javax.annotation.Resource;
  30. /**
  31. * @author xsx
  32. * @version 1.0
  33. * @date 2021/6/8 17:40
  34. */
  35. @Slf4j
  36. @RestController
  37. @RequestMapping("/app/delivery/huolala/callback")
  38. public class HuoLaLaDeliveryCallback {
  39. @Resource
  40. private DeliveryCallbackApi huolalaCallback;
  41. @Resource
  42. private DeliveryService huolalaClient;
  43. @Resource
  44. private ApiDeliveryService apiDeliveryService;
  45. @Resource
  46. private IOrderDeliveryService iOrderDeliveryService;
  47. @Resource
  48. private ApiOrderBackService apiOrderService;
  49. @Resource
  50. private IOrderService iorderService;
  51. @Resource
  52. private IDspDeliveryService iDspDeliveryService;
  53. @Resource
  54. private IShopDeliveryService iShopDeliveryService;
  55. /**
  56. * 授权
  57. * @return
  58. */
  59. @RequestMapping("/doAuth")
  60. public void doAuth(String code){
  61. if (code==null) {
  62. return;
  63. }
  64. log.info("收到货拉拉用户绑定"+code);
  65. String result = huolalaCallback.huolalaAuth(code);
  66. JSONObject parseObject = JSONObject.parseObject(result);
  67. if ("0".equals(parseObject.getString("ret"))){
  68. String data = parseObject.getString("data");
  69. JSONObject jsonObject = JSONObject.parseObject(data);
  70. TokenResponse tokenResponse = jsonObject.toJavaObject(TokenResponse.class);
  71. tokenResponse.setExpires(jsonObject.getDate("auth_end_time"));
  72. // apiDeliveryService.bindHuoLaLa(tokenResponse);
  73. DspDelivery delivery = new DspDelivery();
  74. delivery.setAuthToken(tokenResponse.getAccessToken());
  75. delivery.setRefreshToken(tokenResponse.getRefreshToken());
  76. delivery.setExpiresIn(tokenResponse.getExpires().getTime());
  77. iDspDeliveryService.update(delivery,new UpdateWrapper<DspDelivery>().eq("shop_id",tokenResponse.getAuthMobile()));
  78. }
  79. }
  80. /**
  81. * 订单回调
  82. * @param jsonParam
  83. * @return
  84. */
  85. @RequestMapping("/doOrder")
  86. public String doOrder(@RequestBody JSONObject jsonParam){
  87. JSONObject res = new JSONObject();
  88. log.info("收到货拉拉回调"+jsonParam);
  89. res.put("serial_no",jsonParam.getString("serial_no"));
  90. //订单类型回调
  91. if ("order_update".equals(jsonParam.getString("action"))) {
  92. String order_display_id = JSONObject.parseObject(JSONObject.toJSONString(jsonParam.get("data"))).getString("order_display_id");
  93. Integer orderStatus = JSONObject.parseObject(JSONObject.toJSONString(jsonParam.get("data"))).getInteger("order_status");
  94. OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("out_trade_no",order_display_id));
  95. orderDelivery.setHllStatus(orderStatus);
  96. iOrderDeliveryService.updateById(orderDelivery);
  97. log.info("货拉拉订单delevery订单==="+JSONObject.toJSONString(orderDelivery));
  98. // Order order = iorderService.getOne(new QueryWrapper<Order>().eq("order_sn", orderDelivery.getOrderSn()).eq("deleted", IsDeleteEnum.NORMAL.status));
  99. // if (order.getPaymentType()==5){
  100. DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.HUO_LA_LA.getType());
  101. String token=delivery.getAuthToken();
  102. // }else {
  103. // ShopDelivery shopDelivery = iShopDeliveryService.getOne(new QueryWrapper<ShopDelivery>().eq("merchant_id", order.getMemberId())
  104. // .eq("deleted", IsDeleteEnum.NORMAL.status).isNull("shop_id").eq("bind_status",1));
  105. // token=shopDelivery.getAuthToken();
  106. // }
  107. CallBackOrderVo vo = new CallBackOrderVo();
  108. vo.setLbClient(DeliveryTypeEnums.HUO_LA_LA.getName());
  109. vo.setParams(jsonParam);
  110. vo.setToken(token);
  111. Object result = huolalaCallback.doOrder(vo);
  112. ObjectMapper objectMapper = new ObjectMapper();
  113. ResObject callbackRes = objectMapper.convertValue(result, ResObject.class);
  114. if (callbackRes.getCode()==0){
  115. HuolalaCallbackOrderVo orderVo = objectMapper.convertValue(callbackRes.getData(), HuolalaCallbackOrderVo.class);
  116. ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackHuoLaLa(orderVo));
  117. CallBackOrderDto dto = content.createCallBack();
  118. dto.setParentOrderSn(orderDelivery.getOrderSn());
  119. dto.setOrderSn(orderDelivery.getChildOrderSn());
  120. apiOrderService.callBackOrder(dto);
  121. }
  122. }
  123. return res.toString();
  124. }
  125. }