package com.ydd.app.callback.controller; import com.alibaba.fastjson.JSONObject; import com.ydd.api.MeiTuanApi; import com.ydd.api.MeiTuanSgApi; import com.ydd.app.service.ApiWaimaiPlatformService; import com.ydd.app.service.ApiWaimaiService; import com.ydd.module.enums.DeliveryStatusEnum; import com.ydd.module.service.IDspWaimaiService; import com.ydd.module.service.IShopService; import com.ydd.third.common.utils.JSONUtil; import com.ydd.third.common.utils.StringUtils; import com.ydd.third.common.vo.ResObject; import com.ydd.third.common.vo.waimai.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.io.UnsupportedEncodingException; import java.util.Map; @Slf4j @RestController @RequestMapping("/app/waimai/meituan/sg/callback") public class MeituanWaiMaiSgCallback { @Autowired private MeiTuanSgApi callback; // @Autowired // private MeituanCallback meituanCallback; @Resource private ApiWaimaiService apiWaimaiService; @Autowired private IShopService iShopService; @Autowired MeiTuanApi meituanClient; @Autowired private IDspWaimaiService iDspWaimaiService; @Autowired ApiWaimaiPlatformService apiWaimaiPlatformService; /** * 门店映射回调 * * @param params * @return */ @RequestMapping("/doAuth") public String doStoreMap(@RequestParam Map params) throws UnsupportedEncodingException { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购门店映射回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doStoreMap(params); if (callbackRes.getCode() == 0) { MeituanSgShopMappingResultVo shopMappingVo = callbackRes.getData(); if ("1".equals(callbackRes.getData().getOpType())) { // 推送门店绑定 apiWaimaiPlatformService.sgBindCallBack(shopMappingVo); // res.put("data", "success"); return res.toJSONString(); }else if ("2".equals(callbackRes.getData().getOpType())) { // 推送门店解绑 apiWaimaiPlatformService.sgShopUnbound(shopMappingVo); // res.put("data", "success"); return res.toJSONString(); } } else { log.error(callbackRes.getMsg()); } return res.toJSONString(); } /** * 推送已支付订单回调 * * @param params * @return */ @RequestMapping("/paidOrder") public String doNewOrder(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购推送新订单回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doNewOrder(params); // JSONObject json = callBack.doNewOrder(params); if (callbackRes.getCode() == 0) { MeituanSgOrderResultVo orderVo = callbackRes.getData(); apiWaimaiService.sgDoNewOrder(orderVo); //服务商接收后需立即返回{“data”.“ok”} // res.put("data", "ok"); return res.toJSONString(); } else { log.error(callbackRes.getMsg()); } return res.toJSONString(); } /** * 商家已确认订单的回调 * * @param params * @return */ @RequestMapping("/merchantConfirmOrder") public String doConfirmOrder(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购商家已确认订单的回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doNewOrder(params); if (callbackRes.getCode() == 0) { MeituanSgOrderResultVo orderVo = callbackRes.getData(); apiWaimaiService.sgConfirmOrder(orderVo); //服务商接收后需立即返回{“data”.“ok”} // res.put("data", "ok"); return res.toJSONString(); } else { log.error(callbackRes.getMsg()); } return res.toJSONString(); } /** * 订单完成的回调 * * @param params * @return */ @RequestMapping("/sgFinishOrder") public String doFinishOrder(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购订单完成后的回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doFinishOrder(params); if (callbackRes.getCode() == 0) { MeituanSgOrderResultVo orderVo = callbackRes.getData(); apiWaimaiService.updateWaimaiOrderStatus(orderVo.getOrderId(), DeliveryStatusEnum.FINISH.status); /** * 此时对返回的订单完成数据作处理 */ //服务商接收后需立即返回{“data”.“ok”} // res.put("data", "ok"); return res.toJSONString(); } else { log.error(callbackRes.getMsg()); } return res.toJSONString(); } /** * 订单取消的回调 * * @param params * @return */ @RequestMapping("/sgCancelOrder") public String doCancelOrder(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购订单被取消回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doCancelOrder(params); if (callbackRes.getCode() == 0) { MeituanSgOrderCancelResultVo orderVo = callbackRes.getData(); apiWaimaiService.sgDoCancelOrder(orderVo); // res.put("data", "ok"); return res.toJSONString(); } else { log.error(callbackRes.getMsg()); } return res.toJSONString(); } /** * 订单退款回调 * * @param params * @return */ @RequestMapping("/sgOrderRefund") public String doOrderRefund(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购订单退款回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doOrderRefund(params); // JSONObject json = callBack.doNewOrder(params); if (callbackRes.getCode() == 0) { MeituanSgOrderRefundResultVo orderRefundVo = callbackRes.getData(); /** * 退款消息类型 * apply-发起退款 * agree-确认退款 * reject-驳回退款 * cancelRefund-用户取消退款申请 * cancelRefundComplaint-取消退款申诉 */ String notifyType = orderRefundVo.getNotifyType(); //退款消息类型 if (StringUtils.isNotBlank(notifyType)) { if (notifyType.equals("apply")) { //发起退款 //用户发起退款,对返回的数据作处理 } else if (notifyType.equals("agree")) { //商家确认退款 //商家确认退款,对返回的数据作处理 } else if (notifyType.equals("reject")) { //商家驳回退款 //商家驳回退款,对返回的数据作处理 } else if (notifyType.equals("cancelRefund")) { //用户取消退款申请 //用户取消退款申请,对返回的数据作处理 } else if (notifyType.equals("cancelRefundComplaint")) { //取消退款申诉 //取消退款申诉,对返回的数据作处理 } } //服务商接收后需立即返回{“data”.“ok”} // res.put("data", "ok"); return res.toJSONString(); } return res.toJSONString(); } /** * 订单部分退款的回调 * * @param params * @return */ @RequestMapping("/sgOrderPartRefund") public String doOrderPartRefund(@RequestParam Map params) throws UnsupportedEncodingException { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购订单部分退款的回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doOrderPartRefund(params); // JSONObject json = callBack.doNewOrder(params); if (callbackRes.getCode() == 0) { MeituanSgOrderPartRefundResultVo orderPartRefundVo = callbackRes.getData(); // * 消息类型 // *part-商家/用户发起部分退款 // * agree-商家同意部分退款 // * reject-商家拒绝部分退款 // */ String notifyType = orderPartRefundVo.getNotifyType(); //退款消息类型 if (StringUtils.isNotBlank(notifyType)) { if (notifyType.equals("part")) { //商家/用户发起部分退款 //商家/用户发起部分退款,对返回的数据作处理 } else if (notifyType.equals("agree")) { //商家同意部分退款 //商家同意部分退款,对返回的数据作处理 } else if (notifyType.equals("reject")) { //商家拒绝部分退款 //商家拒绝部分退款,对返回的数据作处理 } } //服务商接收后需立即返回{“data”.“ok”} // res.put("data", "ok"); return res.toJSONString(); } return res.toJSONString(); } /** * 隐私号-降级回调 * * @param params * @return */ @RequestMapping("/sgPrivacyNoDecline") public String doPrivacyNoDecline(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购隐私号-降级回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doPrivacyNoDecline(params); // JSONObject json = callBack.doPrivacyNoDecline(params); if (callbackRes.getCode() == 0) { /** * 此时异步调用拉取订单并通知客户 */ //{“data”.“ok”} // res.put("data", "ok"); return res.toJSONString(); } else { log.error(callbackRes.getMsg()); } return res.toJSONString(); } /** * 用户催单后的回调 * * @param params * @return */ @RequestMapping("/sgRemindOrder") public String doRemindOrder(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购用户催单后的回调:"+JSONUtil.toJson(params)); ResObject callbackRes = callback.doRemindOrder(params); // JSONObject json = callBack.doNewOrder(params); if (callbackRes.getCode() == 0) { MeituanSgRemindOrderResultVo remindOrderResultVo = callbackRes.getData(); /** * 此时对催单的处理 */ //服务商接收后需立即返回{“data”.“ok”} // res.put("data", "ok"); return res.toJSONString(); } return res.toJSONString(); } /** * 推送美配/企客订单配送状态 * * @param params * @return */ @RequestMapping("/wm/sgOrderStatus") public String doWmOrderStatus(@RequestParam Map params) { JSONObject res = new JSONObject(); if (null == params||params.size()==0) { res.put("data", "ok"); return res.toJSONString(); } res.put("data", "ok"); log.info("美团闪购外卖非接单推送订单配送状态通知:"+JSONUtil.toJson(params)); return res.toJSONString(); } }