BE_Invoke_GetInvoker_DYLK.groovy 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import com.dderp.common.api.BusinessExecutor
  2. import com.dderp.common.api.flycat.PlatformAccessTokenService
  3. import com.dderp.common.datas.ERPModule
  4. import com.dderp.common.entity.base.ProcessMapItem
  5. import com.dderp.common.entity.base.ScriptStringResult
  6. import com.dderp.common.entity.site.ERPTokenUser
  7. import com.dderp.common.http.HttpTools
  8. import com.sweetfish.convert.json.JsonConvert
  9. import com.sweetfish.service.RetResult
  10. import org.apache.logging.log4j.LogManager
  11. import org.apache.logging.log4j.Logger
  12. import org.rex.RMap
  13. import javax.annotation.Resource
  14. import java.nio.charset.StandardCharsets
  15. import java.time.LocalDateTime
  16. import java.time.ZoneOffset
  17. import java.util.concurrent.ExecutionException
  18. import java.util.concurrent.TimeUnit
  19. import java.util.concurrent.TimeoutException
  20. @SuppressWarnings("unused")
  21. class BE_Invoke_GetInvoker_DYLK implements BusinessExecutor<ProcessMapItem, ScriptStringResult> {
  22. private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
  23. private Map<String, String> platPropertiesMap = new HashMap<>()
  24. @Resource(name = "APP_HOME")
  25. String homePath
  26. @Resource
  27. JsonConvert jsonConvert
  28. @Resource
  29. PlatformAccessTokenService tokenService
  30. @Override
  31. String scriptName() {
  32. return "[抖音来客]通用get请求"
  33. }
  34. @Override
  35. ERPModule module() {
  36. return ERPModule.PLATFORM_TOKEN
  37. }
  38. @Override
  39. RetResult<ProcessMapItem> beforeExecute(ProcessMapItem source) {
  40. //取到该平台的properties
  41. //这地方严格来说是有问题的,supplierCode的区分没有加进去,做得好的话应该是properties文件用supplierCode区分开
  42. //各平台默认需要以下几个参数
  43. //appId
  44. //appSecret
  45. //reqUrl 接口请求地址
  46. //storeBindUrl 生成门店绑定url时候的请求地址
  47. final File df = new File(homePath, "conf/" + "platform.properties");
  48. if (df.isFile()) {
  49. try {
  50. Properties ps = new Properties();
  51. InputStream ins = new FileInputStream(df);
  52. ps.load(new InputStreamReader(ins, StandardCharsets.UTF_8));
  53. ins.close();
  54. ps.forEach((x, y) ->
  55. platPropertiesMap.putIfAbsent((String) x, (String) y)
  56. );
  57. } catch (IOException e) {
  58. logger.error(e.getMessage(), e);
  59. }
  60. }
  61. return super.beforeExecute(source)
  62. }
  63. RetResult<ScriptStringResult> execute(ProcessMapItem source) {
  64. //秒级时间戳,groovy里面不让用system
  65. long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))
  66. RMap params = source.itemData
  67. String dataSourceId = source.dataSourceId
  68. long supplierCode = source.supplierCode
  69. ERPTokenUser currentUser = source.currentUser
  70. Map<String, String> header = new HashMap<>();
  71. header.put("access-token", tokenService.getAccessToken("DYLK", dataSourceId, supplierCode as String));
  72. header.put("log_id", String.valueOf(new Date().getTime()));
  73. header.put("Content-Type", "application/json");
  74. String resp
  75. try {
  76. resp = HttpTools.getHttpContentAsync(platPropertiesMap.get("reqUrl") +
  77. params.getString("subUrl"), header, params.getString("body")).get(20, TimeUnit.SECONDS)
  78. ScriptStringResult stringResult = new ScriptStringResult()
  79. stringResult.setResultStr(resp)
  80. return RetResult.<ScriptStringResult> successT().result(stringResult)
  81. } catch (InterruptedException | ExecutionException | TimeoutException e) {
  82. logger.error("请求抖音来客接口[" + params.getString("subUrl") + "]失败", e);
  83. }
  84. return RetResult.errorT();
  85. }
  86. }