BE_Token_RefreshAccessToken_DYLK.groovy 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import com.dderp.common.api.BusinessExecutor
  2. import com.dderp.common.datas.ERPModule
  3. import com.dderp.common.entity.base.ProcessStringItem
  4. import com.dderp.common.entity.base.ScriptMapResult
  5. import com.dderp.common.entity.site.ERPTokenUser
  6. import com.dderp.common.http.HttpTools
  7. import com.sweetfish.convert.json.JsonConvert
  8. import com.sweetfish.service.RetResult
  9. import groovy.json.JsonSlurper
  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_Token_RefreshAccessToken_DYLK implements BusinessExecutor<ProcessStringItem, ScriptMapResult> {
  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. @Override
  29. String scriptName() {
  30. return "[抖音来客]刷新Access-Token"
  31. }
  32. @Override
  33. ERPModule module() {
  34. return ERPModule.PLATFORM_TOKEN
  35. }
  36. @Override
  37. void start(long supplierCode) {
  38. //取到该平台的properties
  39. //这地方严格来说是有问题的,supplierCode的区分没有加进去,做得好的话应该是properties文件用supplierCode区分开
  40. //各平台默认需要以下几个参数
  41. //appId
  42. //appSecret
  43. //reqUrl 接口请求地址
  44. //storeBindUrl 生成门店绑定url时候的请求地址
  45. final File df = new File(homePath, "/conf/platformProperty/DYLK.properties");
  46. if (df.isFile()) {
  47. try {
  48. Properties ps = new Properties();
  49. InputStream ins = new FileInputStream(df);
  50. ps.load(new InputStreamReader(ins, StandardCharsets.UTF_8));
  51. ins.close();
  52. ps.forEach((x, y) ->
  53. platPropertiesMap.putIfAbsent((String) x, (String) y)
  54. );
  55. } catch (IOException e) {
  56. logger.error(e.getMessage(), e);
  57. }
  58. }
  59. }
  60. RetResult<ScriptMapResult> execute(ProcessStringItem source) {
  61. //秒级时间戳,groovy里面不让用system
  62. long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))
  63. String dataSourceId = source.dataSourceId
  64. long supplierCode = source.supplierCode
  65. ERPTokenUser currentUser = source.currentUser
  66. def tokenRequest = [
  67. client_key : platPropertiesMap.get("appId"),
  68. client_secret: platPropertiesMap.get("appSecret"),
  69. grant_type : "client_credential"
  70. ]
  71. Map<String, String> header = new HashMap<>();
  72. header.put("Content-Type", "application/json");
  73. try {
  74. String responseStr = HttpTools.postHttpContentAsync(platPropertiesMap.get("reqUrl") + "/oauth/client_token/", header,
  75. jsonConvert.convertTo(tokenRequest)).get(5, TimeUnit.SECONDS);
  76. def jsonSlurper = new JsonSlurper()
  77. def invokeResp = jsonSlurper.parseText(responseStr)
  78. if (invokeResp["data"]["error_code"] as int == 0) {
  79. String accessToken = invokeResp["data"]["access_token"] as String
  80. RMap<String, String> resultMap = new RMap<>()
  81. resultMap.set("accessToken", accessToken)
  82. resultMap.set("appId", platPropertiesMap.get("appId"))
  83. resultMap.set("appSecret", platPropertiesMap.get("appSecret"))
  84. ScriptMapResult mapResult = new ScriptMapResult()
  85. mapResult.setResultMap(resultMap)
  86. return RetResult.<ScriptMapResult> successT().result(mapResult)
  87. }
  88. } catch (InterruptedException | ExecutionException | TimeoutException e) {
  89. logger.error(e.getMessage(), e);
  90. }
  91. return RetResult.errorT();
  92. }
  93. }