YxSupplyChannelManualController.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package zs.payment.controller;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.apache.commons.lang3.StringUtils;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. import com.alibaba.fastjson.JSONObject;
  7. import zs.payment.dao.OrderCallbackDao;
  8. import zs.payment.entity.mongodb.supply.OrderCallback;
  9. import zs.payment.enums.CallbackMessageType;
  10. import zs.payment.messages.KafkaProducer;
  11. import zs.payment.req.*;
  12. import zs.payment.req.aftersales.AfterSalesCloseReq;
  13. import zs.payment.req.aftersales.AfterSalesOrderReq;
  14. import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
  15. import zs.payment.resp.Result;
  16. import zs.payment.service.supply.paysupply.PaySupplyService;
  17. import javax.validation.Valid;
  18. import java.util.HashMap;
  19. import java.util.Map;
  20. /**
  21. * 芸信 供应链平台
  22. * 售后、物流、支付、回调
  23. */
  24. @Slf4j
  25. @RestController
  26. @RequestMapping("/supply")
  27. public class YxSupplyChannelManualController {
  28. @Autowired
  29. private OrderCallbackDao callbackDao;
  30. @Autowired
  31. private PaySupplyService paySupplyService;
  32. @Autowired
  33. private KafkaProducer kafkaProducer;
  34. //订单支付(单独下单之后使用这个支付)
  35. @PostMapping("/orderPayOnly")
  36. public Result orderPayOnly(@Valid @RequestBody OrderPayReq req){
  37. return paySupplyService.orderPayOnly(req);
  38. }
  39. // =======================售后==========================================
  40. /**
  41. * 获取订单支持的售后方式
  42. * @param req
  43. * @return
  44. */
  45. @PostMapping("/getAfterSalesTypeNameMap")
  46. public Result getAfterSalesTypeNameMap(@Valid @RequestBody AfterSalesOrderTypeReq req){
  47. return paySupplyService.getAfterSalesTypeNameMap(req);
  48. }
  49. //申请售后 - 根据订单编号 去创建
  50. @PostMapping("/afterSalesCreate")
  51. public Result afterSalesCreate(@Valid @RequestBody AfterSalesOrderReq req){
  52. return paySupplyService.afterSalesCreate(req);
  53. }
  54. //关闭售后
  55. @PostMapping("/afterSalesClose")
  56. public Result afterSalesClose(@Valid @RequestBody AfterSalesCloseReq req){
  57. return paySupplyService.afterSalesClose(req.getId());
  58. }
  59. //回调接口,拿到回调数据后,再对数据做处理
  60. @PostMapping("/callback")
  61. public Map<String, Object> callback(@Valid @RequestBody Object req) {
  62. Map<String, Object> result = new HashMap<>();
  63. result.put("code", 0);
  64. JSONObject reqJson = JSONObject.parseObject(JSONObject.toJSONString(req));
  65. String messageType = reqJson.getString("message_type");
  66. OrderCallback callback = new OrderCallback();
  67. callback.setMessageType(messageType);
  68. callback.setMessage(req);
  69. //当 message_type == 商品类的事件 时跳过保存,其他类型才入库
  70. if (CallbackMessageType.GOODS_ALTER.equalsIgnoreCase(messageType) || CallbackMessageType.GOODS_UNDERCARRIAGE.equalsIgnoreCase(messageType)
  71. || CallbackMessageType.GOODS_ON_SALE.equalsIgnoreCase(messageType) || CallbackMessageType.GOODS_DELETE.equalsIgnoreCase(messageType)) {
  72. int productId = reqJson.getIntValue("product_id");
  73. callback.setProductId(productId);
  74. // 若product_id =0 ,则为无效数据,直接跳过
  75. if (0== productId){
  76. return result;
  77. }
  78. JSONObject json=new JSONObject();
  79. json.put("product_id", productId);
  80. // 商品删除
  81. if (CallbackMessageType.GOODS_DELETE.equalsIgnoreCase(messageType)){
  82. //删除商品
  83. kafkaProducer.sendMessage(CallbackMessageType.GOODS_DELETE, json.toJSONString());
  84. }
  85. // 当商品下架的时候,更新商品为下架
  86. if (CallbackMessageType.GOODS_UNDERCARRIAGE.equalsIgnoreCase(messageType)){
  87. //更新商品下架,状态变更,
  88. kafkaProducer.sendMessage(CallbackMessageType.GOODS_UNDERCARRIAGE, json.toJSONString());
  89. }
  90. // 当商品上架的时候,若已同步,则更新商品为上架
  91. if (CallbackMessageType.GOODS_ON_SALE.equalsIgnoreCase(messageType)){
  92. kafkaProducer.sendMessage(CallbackMessageType.GOODS_ON_SALE, json.toJSONString());
  93. }
  94. }
  95. if (CallbackMessageType.ORDER_DELIVERY.equalsIgnoreCase(messageType)) {
  96. //订单发货,会传一个第三方订单编号,通过这个第三方订单编号获取物流信息
  97. String orderSn = reqJson.getString("order_sn");
  98. if (StringUtils.isNotBlank(orderSn)){
  99. kafkaProducer.sendMessage(CallbackMessageType.ORDER_DELIVERY, orderSn);
  100. }
  101. }
  102. //售后通过
  103. if (CallbackMessageType.AFTER_SALES_PASS.equalsIgnoreCase(messageType)) {
  104. }
  105. callbackDao.save(callback);
  106. return result;
  107. }
  108. /**
  109. * 查询商家的收货地址
  110. * @param req
  111. * @return
  112. */
  113. @PostMapping("/getShopAddress")
  114. public Result getShopAddress(@Valid @RequestBody OrderPayReq req){
  115. return paySupplyService.findShopAddressByOrderSn(req.getOrderSn());
  116. }
  117. /**
  118. * 补全退货退款的物流单号
  119. * @param req
  120. * @return
  121. */
  122. @PostMapping("/afterSalesExpress")
  123. public Result afterSalesClose(@Valid @RequestBody OrderPayReq req){
  124. return paySupplyService.executeAfterSalesExpress(req.getOrderSn());
  125. }
  126. }