ShunfengDeliveryCallback.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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.fasterxml.jackson.databind.ObjectMapper;
  5. import com.ydd.api.DeliveryCallbackApi;
  6. import com.ydd.app.service.ApiDeliveryBindService;
  7. import com.ydd.app.service.ApiOrderBackService;
  8. import com.ydd.app.service.impl.ApiCallBackContent;
  9. import com.ydd.app.service.impl.ApiCallBackShunFeng;
  10. import com.ydd.common.enums.DeliveryTypeEnums;
  11. import com.ydd.module.domain.OrderDelivery;
  12. import com.ydd.module.dto.CallBackOrderDto;
  13. import com.ydd.module.service.IOrderDeliveryService;
  14. import com.ydd.third.common.utils.StringUtils;
  15. import com.ydd.third.common.vo.ResObject;
  16. import com.ydd.third.common.vo.callback.CallBackOrderVo;
  17. import com.ydd.third.common.vo.callback.MeituanCallbackOrderVo;
  18. import com.ydd.third.common.vo.callback.ShunfengCallbackOrderVo;
  19. import com.ydd.third.common.vo.callback.ShunfengCallbackShopVo;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.web.bind.annotation.PostMapping;
  23. import org.springframework.web.bind.annotation.RequestBody;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RestController;
  26. import javax.annotation.Resource;
  27. import javax.servlet.http.HttpServletRequest;
  28. @Slf4j
  29. @RestController
  30. @RequestMapping("/app/delivery/shunfeng/callback")
  31. public class ShunfengDeliveryCallback {
  32. @Autowired
  33. private DeliveryCallbackApi callback;
  34. @Resource
  35. private ApiOrderBackService apiOrderService;
  36. @Resource
  37. private IOrderDeliveryService iOrderDeliveryService;
  38. @Resource
  39. private ApiDeliveryBindService apiDeliveryBindService;
  40. @PostMapping("/doOrder")
  41. public String doOrder(HttpServletRequest request, @RequestBody JSONObject jsonParam){
  42. log.info("顺丰回调参数:"+jsonParam.toJSONString());
  43. JSONObject res = new JSONObject();
  44. String sign = request.getParameter("sign");
  45. if (StringUtils.isBlank(sign)) {
  46. res.put("error_code",1);
  47. res.put("error_msg","fail");
  48. log.error("sign签名为空");
  49. return res.toJSONString();
  50. }
  51. if (null == jsonParam) {
  52. res.put("error_code",1);
  53. res.put("error_msg","fail");
  54. log.error("json参数为空");
  55. return res.toJSONString();
  56. }
  57. //@RequestParam Map<String, String> params
  58. CallBackOrderVo vo = new CallBackOrderVo();
  59. vo.setLbClient(DeliveryTypeEnums.SHUN_FENG.getName());
  60. vo.setParams(jsonParam);
  61. vo.setSign(sign);
  62. Object result = callback.doOrder(vo);
  63. ObjectMapper objectMapper = new ObjectMapper();
  64. ResObject callbackRes = objectMapper.convertValue(result, ResObject.class);
  65. if (callbackRes.getCode() == 0) {
  66. ShunfengCallbackOrderVo orderVo = objectMapper.convertValue(callbackRes.getData(), ShunfengCallbackOrderVo.class);
  67. log.info(JSONObject.toJSONString(orderVo));
  68. String urlIndex = orderVo.getUrlIndex();
  69. if (StringUtils.isNotBlank(urlIndex)) {
  70. if (urlIndex.equals("rider_status")) { //配送状态更改回调
  71. ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
  72. OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
  73. CallBackOrderDto dto = content.createCallBack();
  74. dto.setParentOrderSn(orderDelivery.getOrderSn());
  75. apiOrderService.callBackOrder(dto);
  76. // apiOrderService.callBackOrder(content.createCallBack());
  77. } else if (urlIndex.equals("order_complete")) { //订单完成回调
  78. /**
  79. * 对返回的数据作处理
  80. */
  81. ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
  82. OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
  83. CallBackOrderDto dto = content.createCallBack();
  84. dto.setParentOrderSn(orderDelivery.getOrderSn());
  85. apiOrderService.callBackOrder(dto);
  86. // apiOrderService.callBackOrder(content.createCallBack());
  87. } else if (urlIndex.equals("sf_cancel")) { //顺丰原因订单取消回调
  88. /**
  89. * 对返回的数据作处理
  90. */
  91. ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
  92. OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
  93. CallBackOrderDto dto = content.createCallBack();
  94. dto.setParentOrderSn(orderDelivery.getOrderSn());
  95. apiOrderService.callBackOrder(dto);
  96. // apiOrderService.callBackOrder(content.createCallBack());
  97. } else if (urlIndex.equals("rider_exception")) { //订单发生异常回调
  98. /**
  99. * 对返回的数据作处理
  100. */
  101. ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
  102. // apiOrderService.callBackOrder(content.createCallBack());
  103. OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
  104. CallBackOrderDto dto = content.createCallBack();
  105. dto.setParentOrderSn(orderDelivery.getOrderSn());
  106. apiOrderService.callBackOrder(dto);
  107. }if (urlIndex.equals("rider_recall")) { //骑士撤单状态回调 转单
  108. ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
  109. OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
  110. CallBackOrderDto dto = content.createCallBack();
  111. dto.setParentOrderSn(orderDelivery.getOrderSn());
  112. apiOrderService.callBackOrder(dto);
  113. // apiOrderService.callBackOrder(content.createCallBack());
  114. }
  115. }
  116. // Integer status = data.getInteger("order_status")
  117. /**
  118. * 对返数的数据作处理
  119. */
  120. res.put ("error_code",0);
  121. res.put("error_msg","success");
  122. } else {
  123. res.put("error_code",1);
  124. res.put("error_msg","fail");
  125. log.error(callbackRes.getMsg());
  126. }
  127. return res.toJSONString();
  128. }
  129. /**
  130. * 顺丰异步通知建店回调
  131. * @param jsonParam
  132. */
  133. @RequestMapping("/doAuth")
  134. public String doAuth(HttpServletRequest request, @RequestBody JSONObject jsonParam) {
  135. log.info("顺丰建店回调参数----->>>>>>" + jsonParam.toJSONString());
  136. JSONObject res = new JSONObject();
  137. String sign = request.getParameter("sign");
  138. if (StringUtils.isBlank(sign)) {
  139. res.put("error_code",1);
  140. res.put("error_msg","fail");
  141. log.error("sign签名为空");
  142. return res.toJSONString();
  143. }
  144. if (null == jsonParam) {
  145. res.put("error_code",1);
  146. res.put("error_msg","fail");
  147. log.error("json参数为空");
  148. return res.toJSONString();
  149. }
  150. ResObject<ShunfengCallbackShopVo> callbackRes = callback.sfAuth(sign, jsonParam);
  151. if (callbackRes.getCode() == 0) {
  152. ShunfengCallbackShopVo shopVo = callbackRes.getData();
  153. apiDeliveryBindService.bindShunfeng(shopVo.getOutShopId(), shopVo.getShopId(), DeliveryTypeEnums.SHUN_FENG.getType());
  154. /**
  155. * 对返数的数据作处理
  156. */
  157. res.put ("error_code",0);
  158. res.put("error_msg","success");
  159. }else {
  160. res.put("error_code",1);
  161. res.put("error_msg","fail");
  162. String failReason = jsonParam.getString("fail_reason");
  163. log.error(failReason);
  164. }
  165. return res.toJSONString();
  166. }
  167. }