BE_Express_CallBack_VerifySign_SFTC.groovy 4.5 KB

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