BE_Express_CallBack_Invoke_SFTC.groovy 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import com.dderp.common.api.BusinessExecutor
  2. import com.dderp.common.api.ERPLockDataService
  3. import com.dderp.common.api.NoSqlKeysService
  4. import com.dderp.common.api.StoreService
  5. import com.dderp.common.datas.ERPModule
  6. import com.dderp.common.datas.RedisKeys
  7. import com.dderp.common.entity.base.InvokeCallParams
  8. import com.dderp.common.entity.base.InvokeCallResult
  9. import com.dySweetFishPlugin.sql.dao.OperatorWait
  10. import com.sweetfish.convert.json.JsonConvert
  11. import com.sweetfish.service.RetResult
  12. import groovy.json.JsonSlurper
  13. import org.apache.commons.lang3.StringUtils
  14. import org.apache.logging.log4j.LogManager
  15. import org.apache.logging.log4j.Logger
  16. import javax.annotation.Resource
  17. class BE_Express_CallBack_Invoke_SFTC implements BusinessExecutor<InvokeCallParams, InvokeCallResult> {
  18. private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
  19. @Resource
  20. JsonConvert jsonConvert
  21. @Resource
  22. ERPLockDataService lockDataService
  23. @Resource
  24. NoSqlKeysService keysService
  25. @Resource
  26. StoreService storeService
  27. @Override
  28. String scriptName() {
  29. return "顺丰同城数据回调"
  30. }
  31. @Override
  32. ERPModule module() {
  33. return ERPModule.EXPRESS_API
  34. }
  35. @Override
  36. OperatorWait getAWait(InvokeCallParams source) {
  37. return OperatorWait.ASNYC
  38. }
  39. @Override
  40. RetResult<InvokeCallParams> beforeExecute(InvokeCallParams source) {
  41. //此回调post的数据看着没有子表,直接用groovy自带的json即可,如果有子表,还是应该建立一个类进行转换
  42. //锁定下数据,防止重复提交
  43. def jsonSlurper = new JsonSlurper()
  44. def invokeOrder = jsonSlurper.parseText(source.params)
  45. String urlIndex = invokeOrder["url_index"] as String
  46. //这里除了店铺授权和店铺取消授权,其它都是订单,if-else先写着
  47. if (StringUtils.equalsIgnoreCase("bindnotify", urlIndex)) {
  48. //店铺授权回调
  49. String shopId = invokeOrder["shop_id"] as String
  50. if (lockDataService.hLockAdd(shopId, RedisKeys.KEY_ERP_WORKING_SF_STORE, source.supplierCode) > 1) {
  51. return RetResult.<InvokeCallParams> errorT().retinfo(shopId + "提交工作中,请稍后刷新即可,无需重复操作")
  52. }
  53. } else if (StringUtils.equalsIgnoreCase("cancelbindnotify", urlIndex)) {
  54. //店铺取消授权回调
  55. String shopId = invokeOrder["shop_id"] as String
  56. if (lockDataService.hLockAdd(shopId, RedisKeys.KEY_ERP_WORKING_SF_STORE, source.supplierCode) > 1) {
  57. return RetResult.<InvokeCallParams> errorT().retinfo(shopId + "提交工作中,请稍后刷新即可,无需重复操作")
  58. }
  59. } else {
  60. String invokeOrderId = invokeOrder["sf_order_id"] as String
  61. if (lockDataService.hLockAdd(invokeOrderId, RedisKeys.KEY_ERP_WORKING_SF_ORDER, source.supplierCode) > 1) {
  62. return RetResult.<InvokeCallParams> errorT().retinfo(invokeOrderId + "提交工作中,请稍后刷新即可,无需重复操作")
  63. }
  64. }
  65. return RetResult.<InvokeCallParams> successT().result(source)
  66. }
  67. @Override
  68. void afterExecute(boolean executeError, InvokeCallParams source, InvokeCallResult dest) {
  69. def jsonSlurper = new JsonSlurper()
  70. def invokeOrder = jsonSlurper.parseText(source.params)
  71. String urlIndex = invokeOrder["url_index"] as String
  72. if (StringUtils.equalsIgnoreCase("bindnotify", urlIndex)) {
  73. //店铺授权回调
  74. String shopId = invokeOrder["shop_id"] as String
  75. lockDataService.hLockDel(shopId, RedisKeys.KEY_ERP_WORKING_SF_STORE, source.supplierCode)
  76. } else if (StringUtils.equalsIgnoreCase("cancelbindnotify", urlIndex)) {
  77. //店铺取消授权回调
  78. String shopId = invokeOrder["shop_id"] as String
  79. lockDataService.hLockDel(shopId, RedisKeys.KEY_ERP_WORKING_SF_STORE, source.supplierCode)
  80. } else {
  81. String invokeOrderId = invokeOrder["sf_order_id"] as String
  82. lockDataService.hLockDel(invokeOrderId,RedisKeys.KEY_ERP_WORKING_SF_ORDER, source.supplierCode)
  83. }
  84. }
  85. RetResult<InvokeCallResult> execute(InvokeCallParams source) {
  86. def jsonSlurper = new JsonSlurper()
  87. def invokeOrder = jsonSlurper.parseText(source.params)
  88. logger.info(source.params)
  89. logger.info(invokeOrder["url_index"])
  90. logger.info(invokeOrder["sf_order_id"])
  91. logger.info(invokeOrder["operator_name"])
  92. String urlIndex = invokeOrder["url_index"] as String
  93. if (StringUtils.equalsIgnoreCase("bindnotify", urlIndex)) {
  94. storeService.bindStorePlatform(source.params, "SFTC", source.dataSourceId, source.supplierCode, source.currentUser)
  95. }
  96. return RetResult.<InvokeCallResult> successT().result(
  97. InvokeCallResult.success()
  98. )
  99. }
  100. }