package com.ydd.app.callback.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydd.api.DeliveryCallbackApi; 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.ApiCallBackShanSong; 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.ShansongCallbackOrderVo; import com.ydd.third.common.vo.callback.ShansongTokenVo; 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 com.ydd.third.waimai.meituan.callback.MTCallBa @Slf4j @RestController @RequestMapping("/app/delivery/shansong/callback") public class ShansongDeliveryCallback { @Autowired private DeliveryCallbackApi callback; @Resource private ApiOrderBackService apiOrderService; @Resource private ApiDeliveryService apiDeliveryService; @Resource private IOrderDeliveryService iOrderDeliveryService; /** * 授权重定向跳转 * * @param * @return */ @RequestMapping("/doOAuth") public String doOAuth(String code, String thirdStoreId, String state) { // String code = params.get("code"); // String state = params.get("state"); if (StringUtils.isNotBlank(code) && StringUtils.isNotBlank(state)) { ResObject res = callback.shansongAuth(code, thirdStoreId, state); log.info("res:" + JSONObject.toJSONString(res)); if (res.getCode() == 0) { ShansongTokenVo tokenVo = res.getData(); String accessToken = tokenVo.getAccessToken(); String refreshToken = tokenVo.getRefreshToken(); Long expiresIn = tokenVo.getExpireIn(); String shopId = tokenVo.getShopId(); //进行业务处理 apiDeliveryService.bindCallBack(tokenVo); return "获取token成功"; } else { return res.getMsg(); } } else { return "非法访问!"; } } @PostMapping("/doOrder") public String doOrder(@RequestBody JSONObject jsonParam) { log.info("闪送回调参数 :" + jsonParam); JSONObject res = new JSONObject(); //@RequestParam Map params //ShansongCallback callback = new ShansongCallback(); CallBackOrderVo vo = new CallBackOrderVo(); vo.setLbClient(DeliveryTypeEnums.SHAN_SONG.getName()); vo.setParams(jsonParam); ResObject callbackRes = (ResObject)callback.doOrder(vo); if (callbackRes.getCode() == 0) { ShansongCallbackOrderVo orderVo = callbackRes.getData(); ApiCallBackContent content = new ApiCallBackContent(new ApiCallBackShanSong(orderVo)); OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper().eq("child_order_sn",orderVo.getOrderNo())); CallBackOrderDto dto = content.createCallBack(); dto.setParentOrderSn(orderDelivery.getOrderSn()); apiOrderService.callBackOrder(dto); res.put("status", 200); //回调成功 res.put("msg", ""); } else { res.put("status", 400); } return res.toJSONString(); } }