123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package com.ydd.app.callback.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.ydd.api.DeliveryCallbackApi;
- import com.ydd.app.service.ApiDeliveryBindService;
- import com.ydd.app.service.ApiOrderBackService;
- import com.ydd.app.service.impl.ApiCallBackContent;
- import com.ydd.app.service.impl.ApiCallBackShunFeng;
- import com.ydd.common.enums.DeliveryTypeEnums;
- import com.ydd.module.domain.OrderDelivery;
- import com.ydd.module.dto.CallBackOrderDto;
- import com.ydd.module.service.IOrderDeliveryService;
- import com.ydd.third.common.utils.StringUtils;
- import com.ydd.third.common.vo.ResObject;
- import com.ydd.third.common.vo.callback.CallBackOrderVo;
- import com.ydd.third.common.vo.callback.MeituanCallbackOrderVo;
- import com.ydd.third.common.vo.callback.ShunfengCallbackOrderVo;
- import com.ydd.third.common.vo.callback.ShunfengCallbackShopVo;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PostMapping;
- 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;
- import javax.servlet.http.HttpServletRequest;
- @Slf4j
- @RestController
- @RequestMapping("/app/delivery/shunfeng/callback")
- public class ShunfengDeliveryCallback {
- @Autowired
- private DeliveryCallbackApi callback;
- @Resource
- private ApiOrderBackService apiOrderService;
- @Resource
- private IOrderDeliveryService iOrderDeliveryService;
- @Resource
- private ApiDeliveryBindService apiDeliveryBindService;
- @PostMapping("/doOrder")
- public String doOrder(HttpServletRequest request, @RequestBody JSONObject jsonParam){
- log.info("顺丰回调参数:"+jsonParam.toJSONString());
- JSONObject res = new JSONObject();
- String sign = request.getParameter("sign");
- if (StringUtils.isBlank(sign)) {
- res.put("error_code",1);
- res.put("error_msg","fail");
- log.error("sign签名为空");
- return res.toJSONString();
- }
- if (null == jsonParam) {
- res.put("error_code",1);
- res.put("error_msg","fail");
- log.error("json参数为空");
- return res.toJSONString();
- }
- //@RequestParam Map<String, String> params
- CallBackOrderVo vo = new CallBackOrderVo();
- vo.setLbClient(DeliveryTypeEnums.SHUN_FENG.getName());
- vo.setParams(jsonParam);
- vo.setSign(sign);
- Object result = callback.doOrder(vo);
- ObjectMapper objectMapper = new ObjectMapper();
- ResObject callbackRes = objectMapper.convertValue(result, ResObject.class);
- if (callbackRes.getCode() == 0) {
- ShunfengCallbackOrderVo orderVo = objectMapper.convertValue(callbackRes.getData(), ShunfengCallbackOrderVo.class);
- log.info(JSONObject.toJSONString(orderVo));
- String urlIndex = orderVo.getUrlIndex();
- if (StringUtils.isNotBlank(urlIndex)) {
- if (urlIndex.equals("rider_status")) { //配送状态更改回调
- ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
- OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
- CallBackOrderDto dto = content.createCallBack();
- dto.setParentOrderSn(orderDelivery.getOrderSn());
- apiOrderService.callBackOrder(dto);
- // apiOrderService.callBackOrder(content.createCallBack());
- } else if (urlIndex.equals("order_complete")) { //订单完成回调
- /**
- * 对返回的数据作处理
- */
- ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
- OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
- CallBackOrderDto dto = content.createCallBack();
- dto.setParentOrderSn(orderDelivery.getOrderSn());
- apiOrderService.callBackOrder(dto);
- // apiOrderService.callBackOrder(content.createCallBack());
- } else if (urlIndex.equals("sf_cancel")) { //顺丰原因订单取消回调
- /**
- * 对返回的数据作处理
- */
- ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
- OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
- CallBackOrderDto dto = content.createCallBack();
- dto.setParentOrderSn(orderDelivery.getOrderSn());
- apiOrderService.callBackOrder(dto);
- // apiOrderService.callBackOrder(content.createCallBack());
- } else if (urlIndex.equals("rider_exception")) { //订单发生异常回调
- /**
- * 对返回的数据作处理
- */
- ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
- // apiOrderService.callBackOrder(content.createCallBack());
- OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
- CallBackOrderDto dto = content.createCallBack();
- dto.setParentOrderSn(orderDelivery.getOrderSn());
- apiOrderService.callBackOrder(dto);
- }if (urlIndex.equals("rider_recall")) { //骑士撤单状态回调 转单
- ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShunFeng(orderVo));
- OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn",orderVo.getShopOrderId()));
- CallBackOrderDto dto = content.createCallBack();
- dto.setParentOrderSn(orderDelivery.getOrderSn());
- apiOrderService.callBackOrder(dto);
- // apiOrderService.callBackOrder(content.createCallBack());
- }
- }
- // Integer status = data.getInteger("order_status")
- /**
- * 对返数的数据作处理
- */
- res.put ("error_code",0);
- res.put("error_msg","success");
- } else {
- res.put("error_code",1);
- res.put("error_msg","fail");
- log.error(callbackRes.getMsg());
- }
- return res.toJSONString();
- }
- /**
- * 顺丰异步通知建店回调
- * @param jsonParam
- */
- @RequestMapping("/doAuth")
- public String doAuth(HttpServletRequest request, @RequestBody JSONObject jsonParam) {
- log.info("顺丰建店回调参数----->>>>>>" + jsonParam.toJSONString());
- JSONObject res = new JSONObject();
- String sign = request.getParameter("sign");
- if (StringUtils.isBlank(sign)) {
- res.put("error_code",1);
- res.put("error_msg","fail");
- log.error("sign签名为空");
- return res.toJSONString();
- }
- if (null == jsonParam) {
- res.put("error_code",1);
- res.put("error_msg","fail");
- log.error("json参数为空");
- return res.toJSONString();
- }
- ResObject<ShunfengCallbackShopVo> callbackRes = callback.sfAuth(sign, jsonParam);
- if (callbackRes.getCode() == 0) {
- ShunfengCallbackShopVo shopVo = callbackRes.getData();
- apiDeliveryBindService.bindShunfeng(shopVo.getOutShopId(), shopVo.getShopId(), DeliveryTypeEnums.SHUN_FENG.getType());
- /**
- * 对返数的数据作处理
- */
- res.put ("error_code",0);
- res.put("error_msg","success");
- }else {
- res.put("error_code",1);
- res.put("error_msg","fail");
- String failReason = jsonParam.getString("fail_reason");
- log.error(failReason);
- }
- return res.toJSONString();
- }
- }
|