BE_Order_ProcessRefundRequest.groovy 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import com.dderp.business.dao.OrderDao
  2. import com.dderp.common.api.BusinessExecutor
  3. import com.dderp.common.api.StoreService
  4. import com.dderp.common.api.SupplierInitService
  5. import com.dderp.common.api.flycat.DouyinService
  6. import com.dderp.common.api.flycat.OrderSearchService
  7. import com.dderp.common.api.flycat.OrderService
  8. import com.dderp.common.api.flycat.OrderStepService
  9. import com.dderp.common.datas.ERPModule
  10. import com.dderp.common.entity.base.InvokeCallParams
  11. import com.dderp.common.entity.base.InvokeCallResult
  12. import com.dderp.common.entity.order.BusinessOrder
  13. import com.dderp.common.entity.site.ERPTokenUser
  14. import com.dderp.common.entity.store.StorePlatform
  15. import com.dySweetFishPlugin.elasticsearch.ESClient
  16. import com.dySweetFishPlugin.sql.TableIdService
  17. import com.dySweetFishPlugin.sql.dao.TunaService
  18. import com.sweetfish.convert.json.JsonConvert
  19. import com.sweetfish.service.RetResult
  20. import groovy.json.JsonSlurper
  21. import org.apache.logging.log4j.LogManager
  22. import org.apache.logging.log4j.Logger
  23. import javax.annotation.Resource
  24. import java.time.LocalDateTime
  25. import java.time.ZoneOffset
  26. @SuppressWarnings("unused")
  27. class BE_Order_ProcessRefundRequest implements BusinessExecutor<InvokeCallParams, InvokeCallResult> {
  28. private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
  29. @Resource
  30. private JsonConvert jsonConvert
  31. @Resource
  32. private TableIdService tableIdService
  33. @Resource
  34. private StoreService storeService
  35. @Resource
  36. private ESClient esClient
  37. @Resource
  38. private SupplierInitService supplierInitService
  39. @Resource
  40. private OrderStepService orderStepService
  41. @Resource
  42. private OrderService orderService
  43. @Resource
  44. private OrderSearchService orderSearchService
  45. @Resource
  46. private DouyinService douyinService
  47. @Resource
  48. private TunaService tunaService
  49. private OrderDao orderDao
  50. @Override
  51. String scriptName() {
  52. return "商户同意/拒绝退款请求"
  53. }
  54. @Override
  55. ERPModule module() {
  56. return ERPModule.ORDER_API
  57. }
  58. @Override
  59. RetResult<InvokeCallParams> beforeExecute(InvokeCallParams source) {
  60. return super.beforeExecute(source)
  61. }
  62. /*
  63. params : {
  64. "idRefundRequest" : 2 , 客户退款申请id
  65. "approve" : 0 , 拒绝0同意1
  66. "rejectReasonCode" : "101,102,103" , 拒绝原因代码
  67. "rejectMemo" : "拒绝原因备注" 拒绝原因备注
  68. }
  69. */
  70. RetResult<InvokeCallResult> execute(InvokeCallParams source) {
  71. //秒级时间戳,groovy里面不让用system
  72. long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))
  73. String dataSourceId = source.dataSourceId
  74. long supplierCode = source.supplierCode
  75. ERPTokenUser currentUser = source.currentUser
  76. def jsonSlurper = new JsonSlurper()
  77. def invokeOrder = jsonSlurper.parseText(source.params)
  78. long idOrder = invokeOrder["idOrder"] as Long
  79. RetResult<BusinessOrder> orderResult = orderSearchService.getBusinessOrder(idOrder, currentUser, dataSourceId, supplierCode, null)
  80. if (!orderResult.isSuccess()) return RetResult.<InvokeCallResult> errorT().retinfo(orderResult.retinfo)
  81. BusinessOrder esOrder = orderResult.result
  82. StorePlatform storePlatform = storeService.getStorePlatformInfo(esOrder.incomePlatformId, supplierCode)
  83. if (storePlatform == null) return RetResult.<InvokeCallResult> errorT().retinfo("订单来源平台未知!")
  84. //根据订单来源平台,回调平台的接单接口
  85. switch (storePlatform.platformCode) {
  86. case "DYLK": {
  87. //抖音来客
  88. def postBody = [
  89. order_id:
  90. esOrder.incomePlatformOrderCode
  91. ]
  92. String responseStr = douyinService.postInvoker("/goodlife/v1/trade/buy/merchant_confirm_order/", jsonConvert.convertTo(postBody))
  93. def response = jsonSlurper.parseText(responseStr)
  94. if (response["data"]["error_code"] as Integer == 0) {
  95. return RetResult.<InvokeCallResult> successT()
  96. } else {
  97. //todo 抖音侧调用失败,怎么处理?
  98. logger.error("[抖音来客]商户接单平台接口调用失败:" + response["data"]["description"] as String)
  99. return RetResult.<InvokeCallResult> errorT().retinfo("[抖音来客]商户接单平台接口调用失败:" + response["data"]["description"] as String)
  100. }
  101. }
  102. }
  103. return RetResult.<InvokeCallResult> errorT().retinfo("订单来源平台未知!")
  104. }
  105. }