MeituanWaiMaiSgCallback.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. package com.ydd.app.callback.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.ydd.api.MeiTuanApi;
  4. import com.ydd.api.MeiTuanSgApi;
  5. import com.ydd.app.service.ApiWaimaiPlatformService;
  6. import com.ydd.app.service.ApiWaimaiService;
  7. import com.ydd.module.enums.DeliveryStatusEnum;
  8. import com.ydd.module.service.IDspWaimaiService;
  9. import com.ydd.module.service.IShopService;
  10. import com.ydd.third.common.utils.JSONUtil;
  11. import com.ydd.third.common.utils.StringUtils;
  12. import com.ydd.third.common.vo.ResObject;
  13. import com.ydd.third.common.vo.waimai.*;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import javax.annotation.Resource;
  20. import java.io.UnsupportedEncodingException;
  21. import java.util.Map;
  22. @Slf4j
  23. @RestController
  24. @RequestMapping("/app/waimai/meituan/sg/callback")
  25. public class MeituanWaiMaiSgCallback {
  26. @Autowired
  27. private MeiTuanSgApi callback;
  28. // @Autowired
  29. // private MeituanCallback meituanCallback;
  30. @Resource
  31. private ApiWaimaiService apiWaimaiService;
  32. @Autowired
  33. private IShopService iShopService;
  34. @Autowired
  35. MeiTuanApi meituanClient;
  36. @Autowired
  37. private IDspWaimaiService iDspWaimaiService;
  38. @Autowired
  39. ApiWaimaiPlatformService apiWaimaiPlatformService;
  40. /**
  41. * 门店映射回调
  42. *
  43. * @param params
  44. * @return
  45. */
  46. @RequestMapping("/doAuth")
  47. public String doStoreMap(@RequestParam Map<String, String> params) throws UnsupportedEncodingException {
  48. JSONObject res = new JSONObject();
  49. if (null == params||params.size()==0) {
  50. res.put("data", "ok");
  51. return res.toJSONString();
  52. }
  53. res.put("data", "ok");
  54. log.info("美团闪购门店映射回调:"+JSONUtil.toJson(params));
  55. ResObject<MeituanSgShopMappingResultVo> callbackRes = callback.doStoreMap(params);
  56. if (callbackRes.getCode() == 0) {
  57. MeituanSgShopMappingResultVo shopMappingVo = callbackRes.getData();
  58. if ("1".equals(callbackRes.getData().getOpType())) {
  59. // 推送门店绑定
  60. apiWaimaiPlatformService.sgBindCallBack(shopMappingVo);
  61. // res.put("data", "success");
  62. return res.toJSONString();
  63. }else if ("2".equals(callbackRes.getData().getOpType())) {
  64. // 推送门店解绑
  65. apiWaimaiPlatformService.sgShopUnbound(shopMappingVo);
  66. // res.put("data", "success");
  67. return res.toJSONString();
  68. }
  69. } else {
  70. log.error(callbackRes.getMsg());
  71. }
  72. return res.toJSONString();
  73. }
  74. /**
  75. * 推送已支付订单回调
  76. *
  77. * @param params
  78. * @return
  79. */
  80. @RequestMapping("/paidOrder")
  81. public String doNewOrder(@RequestParam Map<String, String> params) {
  82. JSONObject res = new JSONObject();
  83. if (null == params||params.size()==0) {
  84. res.put("data", "ok");
  85. return res.toJSONString();
  86. }
  87. res.put("data", "ok");
  88. log.info("美团闪购推送新订单回调:"+JSONUtil.toJson(params));
  89. ResObject<MeituanSgOrderResultVo> callbackRes = callback.doNewOrder(params);
  90. // JSONObject json = callBack.doNewOrder(params);
  91. if (callbackRes.getCode() == 0) {
  92. MeituanSgOrderResultVo orderVo = callbackRes.getData();
  93. apiWaimaiService.sgDoNewOrder(orderVo);
  94. //服务商接收后需立即返回{“data”.“ok”}
  95. // res.put("data", "ok");
  96. return res.toJSONString();
  97. } else {
  98. log.error(callbackRes.getMsg());
  99. }
  100. return res.toJSONString();
  101. }
  102. /**
  103. * 商家已确认订单的回调
  104. *
  105. * @param params
  106. * @return
  107. */
  108. @RequestMapping("/merchantConfirmOrder")
  109. public String doConfirmOrder(@RequestParam Map<String, String> params) {
  110. JSONObject res = new JSONObject();
  111. if (null == params||params.size()==0) {
  112. res.put("data", "ok");
  113. return res.toJSONString();
  114. }
  115. res.put("data", "ok");
  116. log.info("美团闪购商家已确认订单的回调:"+JSONUtil.toJson(params));
  117. ResObject<MeituanSgOrderResultVo> callbackRes = callback.doNewOrder(params);
  118. if (callbackRes.getCode() == 0) {
  119. MeituanSgOrderResultVo orderVo = callbackRes.getData();
  120. apiWaimaiService.sgConfirmOrder(orderVo);
  121. //服务商接收后需立即返回{“data”.“ok”}
  122. // res.put("data", "ok");
  123. return res.toJSONString();
  124. } else {
  125. log.error(callbackRes.getMsg());
  126. }
  127. return res.toJSONString();
  128. }
  129. /**
  130. * 订单完成的回调
  131. *
  132. * @param params
  133. * @return
  134. */
  135. @RequestMapping("/sgFinishOrder")
  136. public String doFinishOrder(@RequestParam Map<String, String> params) {
  137. JSONObject res = new JSONObject();
  138. if (null == params||params.size()==0) {
  139. res.put("data", "ok");
  140. return res.toJSONString();
  141. }
  142. res.put("data", "ok");
  143. log.info("美团闪购订单完成后的回调:"+JSONUtil.toJson(params));
  144. ResObject<MeituanSgOrderResultVo> callbackRes = callback.doFinishOrder(params);
  145. if (callbackRes.getCode() == 0) {
  146. MeituanSgOrderResultVo orderVo = callbackRes.getData();
  147. apiWaimaiService.updateWaimaiOrderStatus(orderVo.getOrderId(), DeliveryStatusEnum.FINISH.status);
  148. /**
  149. * 此时对返回的订单完成数据作处理
  150. */
  151. //服务商接收后需立即返回{“data”.“ok”}
  152. // res.put("data", "ok");
  153. return res.toJSONString();
  154. } else {
  155. log.error(callbackRes.getMsg());
  156. }
  157. return res.toJSONString();
  158. }
  159. /**
  160. * 订单取消的回调
  161. *
  162. * @param params
  163. * @return
  164. */
  165. @RequestMapping("/sgCancelOrder")
  166. public String doCancelOrder(@RequestParam Map<String, String> params) {
  167. JSONObject res = new JSONObject();
  168. if (null == params||params.size()==0) {
  169. res.put("data", "ok");
  170. return res.toJSONString();
  171. }
  172. res.put("data", "ok");
  173. log.info("美团闪购订单被取消回调:"+JSONUtil.toJson(params));
  174. ResObject<MeituanSgOrderCancelResultVo> callbackRes = callback.doCancelOrder(params);
  175. if (callbackRes.getCode() == 0) {
  176. MeituanSgOrderCancelResultVo orderVo = callbackRes.getData();
  177. apiWaimaiService.sgDoCancelOrder(orderVo);
  178. // res.put("data", "ok");
  179. return res.toJSONString();
  180. } else {
  181. log.error(callbackRes.getMsg());
  182. }
  183. return res.toJSONString();
  184. }
  185. /**
  186. * 订单退款回调
  187. *
  188. * @param params
  189. * @return
  190. */
  191. @RequestMapping("/sgOrderRefund")
  192. public String doOrderRefund(@RequestParam Map<String, String> params) {
  193. JSONObject res = new JSONObject();
  194. if (null == params||params.size()==0) {
  195. res.put("data", "ok");
  196. return res.toJSONString();
  197. }
  198. res.put("data", "ok");
  199. log.info("美团闪购订单退款回调:"+JSONUtil.toJson(params));
  200. ResObject<MeituanSgOrderRefundResultVo> callbackRes = callback.doOrderRefund(params);
  201. // JSONObject json = callBack.doNewOrder(params);
  202. if (callbackRes.getCode() == 0) {
  203. MeituanSgOrderRefundResultVo orderRefundVo = callbackRes.getData();
  204. /**
  205. * 退款消息类型
  206. * apply-发起退款
  207. * agree-确认退款
  208. * reject-驳回退款
  209. * cancelRefund-用户取消退款申请
  210. * cancelRefundComplaint-取消退款申诉
  211. */
  212. String notifyType = orderRefundVo.getNotifyType(); //退款消息类型
  213. if (StringUtils.isNotBlank(notifyType)) {
  214. if (notifyType.equals("apply")) { //发起退款
  215. //用户发起退款,对返回的数据作处理
  216. } else if (notifyType.equals("agree")) { //商家确认退款
  217. //商家确认退款,对返回的数据作处理
  218. } else if (notifyType.equals("reject")) { //商家驳回退款
  219. //商家驳回退款,对返回的数据作处理
  220. } else if (notifyType.equals("cancelRefund")) { //用户取消退款申请
  221. //用户取消退款申请,对返回的数据作处理
  222. } else if (notifyType.equals("cancelRefundComplaint")) { //取消退款申诉
  223. //取消退款申诉,对返回的数据作处理
  224. }
  225. }
  226. //服务商接收后需立即返回{“data”.“ok”}
  227. // res.put("data", "ok");
  228. return res.toJSONString();
  229. }
  230. return res.toJSONString();
  231. }
  232. /**
  233. * 订单部分退款的回调
  234. *
  235. * @param params
  236. * @return
  237. */
  238. @RequestMapping("/sgOrderPartRefund")
  239. public String doOrderPartRefund(@RequestParam Map<String, String> params) throws UnsupportedEncodingException {
  240. JSONObject res = new JSONObject();
  241. if (null == params||params.size()==0) {
  242. res.put("data", "ok");
  243. return res.toJSONString();
  244. }
  245. res.put("data", "ok");
  246. log.info("美团闪购订单部分退款的回调:"+JSONUtil.toJson(params));
  247. ResObject<MeituanSgOrderPartRefundResultVo> callbackRes = callback.doOrderPartRefund(params);
  248. // JSONObject json = callBack.doNewOrder(params);
  249. if (callbackRes.getCode() == 0) {
  250. MeituanSgOrderPartRefundResultVo orderPartRefundVo = callbackRes.getData();
  251. // * 消息类型
  252. // *part-商家/用户发起部分退款
  253. // * agree-商家同意部分退款
  254. // * reject-商家拒绝部分退款
  255. // */
  256. String notifyType = orderPartRefundVo.getNotifyType(); //退款消息类型
  257. if (StringUtils.isNotBlank(notifyType)) {
  258. if (notifyType.equals("part")) { //商家/用户发起部分退款
  259. //商家/用户发起部分退款,对返回的数据作处理
  260. } else if (notifyType.equals("agree")) { //商家同意部分退款
  261. //商家同意部分退款,对返回的数据作处理
  262. } else if (notifyType.equals("reject")) { //商家拒绝部分退款
  263. //商家拒绝部分退款,对返回的数据作处理
  264. }
  265. }
  266. //服务商接收后需立即返回{“data”.“ok”}
  267. // res.put("data", "ok");
  268. return res.toJSONString();
  269. }
  270. return res.toJSONString();
  271. }
  272. /**
  273. * 隐私号-降级回调
  274. *
  275. * @param params
  276. * @return
  277. */
  278. @RequestMapping("/sgPrivacyNoDecline")
  279. public String doPrivacyNoDecline(@RequestParam Map<String, String> params) {
  280. JSONObject res = new JSONObject();
  281. if (null == params||params.size()==0) {
  282. res.put("data", "ok");
  283. return res.toJSONString();
  284. }
  285. res.put("data", "ok");
  286. log.info("美团闪购隐私号-降级回调:"+JSONUtil.toJson(params));
  287. ResObject callbackRes = callback.doPrivacyNoDecline(params);
  288. // JSONObject json = callBack.doPrivacyNoDecline(params);
  289. if (callbackRes.getCode() == 0) {
  290. /**
  291. * 此时异步调用拉取订单并通知客户
  292. */
  293. //{“data”.“ok”}
  294. // res.put("data", "ok");
  295. return res.toJSONString();
  296. } else {
  297. log.error(callbackRes.getMsg());
  298. }
  299. return res.toJSONString();
  300. }
  301. /**
  302. * 用户催单后的回调
  303. *
  304. * @param params
  305. * @return
  306. */
  307. @RequestMapping("/sgRemindOrder")
  308. public String doRemindOrder(@RequestParam Map<String, String> params) {
  309. JSONObject res = new JSONObject();
  310. if (null == params||params.size()==0) {
  311. res.put("data", "ok");
  312. return res.toJSONString();
  313. }
  314. res.put("data", "ok");
  315. log.info("美团闪购用户催单后的回调:"+JSONUtil.toJson(params));
  316. ResObject<MeituanSgRemindOrderResultVo> callbackRes = callback.doRemindOrder(params);
  317. // JSONObject json = callBack.doNewOrder(params);
  318. if (callbackRes.getCode() == 0) {
  319. MeituanSgRemindOrderResultVo remindOrderResultVo = callbackRes.getData();
  320. /**
  321. * 此时对催单的处理
  322. */
  323. //服务商接收后需立即返回{“data”.“ok”}
  324. // res.put("data", "ok");
  325. return res.toJSONString();
  326. }
  327. return res.toJSONString();
  328. }
  329. /**
  330. * 推送美配/企客订单配送状态
  331. *
  332. * @param params
  333. * @return
  334. */
  335. @RequestMapping("/wm/sgOrderStatus")
  336. public String doWmOrderStatus(@RequestParam Map<String, String> params) {
  337. JSONObject res = new JSONObject();
  338. if (null == params||params.size()==0) {
  339. res.put("data", "ok");
  340. return res.toJSONString();
  341. }
  342. res.put("data", "ok");
  343. log.info("美团闪购外卖非接单推送订单配送状态通知:"+JSONUtil.toJson(params));
  344. return res.toJSONString();
  345. }
  346. }