From d94749731a56c05740f3976341c1272af36cb40b Mon Sep 17 00:00:00 2001 From: pioneer Date: Wed, 9 Nov 2022 16:11:20 +0800 Subject: [PATCH] open --- README.md | 6 + lib/finekit-10.0.jar | Bin 0 -> 394200 bytes lib/gson-2.8.6.jar | Bin 0 -> 240255 bytes plugin.xml | 28 + .../party/jsdjjed/FeishuManagerComponent.java | 25 + .../jsdjjed/FeishuManagerSystemOption.java | 33 + .../jsdjjed/OutputPluginLifecycleMonitor.java | 41 + .../fr/plugin/third/party/jsdjjed/Utils.java | 386 +++ .../app/config/AppConfigAccessBridge.java | 40 + .../jsdjjed/app/config/AppConfigDao.java | 16 + .../jsdjjed/app/config/AppConfigData.java | 138 + .../jsdjjed/app/config/AppConfigEntity.java | 87 + .../party/jsdjjed/config/AppDataConfig.java | 498 ++++ .../third/party/jsdjjed/feishu/FeishuApp.java | 687 +++++ .../jsdjjed/feishu/FeishuChatGroupBean.java | 55 + .../jsdjjed/feishu/FeishuLoginUserBean.java | 63 + .../jsdjjed/handle/ImageOutputFormat.java | 29 + .../http/CustomHttpHandlerProvider.java | 23 + .../jsdjjed/http/CustomURLAliasProvider.java | 22 + .../SessionGlobalRequestFilterProvider.java | 566 ++++ .../jsdjjed/http/app/AddAppHttpHandler.java | 62 + .../http/app/DeleteAppHttpHandler.java | 62 + .../jsdjjed/http/app/EditAppHttpHandler.java | 60 + .../http/app/ForbidAppHttpHandler.java | 64 + .../http/app/QueryAppConfigHttpHandler.java | 97 + .../jsdjjed/http/app/QueryAppHttpHandler.java | 71 + .../http/app/QueryChatGroupsHttpHandler.java | 91 + .../http/app/SaveAppConfigHttpHandler.java | 105 + .../app/SynchronizeSourceHttpHandler.java | 46 + .../schedule/AppMessagePushHandler.java | 410 +++ .../schedule/bean/OutputAppMessagePush.java | 154 ++ .../jsdjjed/schedule/components/FileDef.java | 47 + .../schedule/components/JsAndCssBridge.java | 19 + .../schedule/entity/AppMessagePushEntity.java | 131 + .../schedule/formula/FeishuOutputFormula.java | 24 + .../schedule/formula/FormulaCalculator.java | 22 + .../schedule/provider/AppMessagePushDao.java | 16 + .../schedule/provider/DBAccessProvider.java | 40 + .../schedule/utils/PlaceholderResolver.java | 111 + .../schedule/utils/PropertiesUtils.java | 35 + .../plugin/third/party/jsdjjed/util/AES.java | 140 + .../third/party/jsdjjed/util/DateUtil.java | 129 + .../third/party/jsdjjed/util/GZIPUtils.java | 88 + .../third/party/jsdjjed/util/JsonHelper.java | 129 + .../plugin/third/party/jsdjjed/util/Md5.java | 51 + .../party/jsdjjed/util/http/HttpClient.java | 451 +++ .../party/jsdjjed/util/http/HttpRequest.java | 94 + .../jsdjjed/util/http/HttpRequestBytes.java | 19 + .../jsdjjed/util/http/HttpRequestKV.java | 22 + .../jsdjjed/util/http/HttpRequestParams.java | 67 + .../jsdjjed/util/http/HttpRequestPraser.java | 40 + .../util/http/HttpRequestPraserBytes.java | 44 + .../util/http/HttpRequestPraserKV.java | 71 + .../util/http/HttpRequestPraserString.java | 46 + .../jsdjjed/util/http/HttpRequestString.java | 19 + .../party/jsdjjed/util/http/HttpResponse.java | 113 + .../jsdjjed/util/http/HttpResponseBytes.java | 32 + .../util/http/HttpResponseBytesPraser.java | 19 + .../jsdjjed/util/http/HttpResponsePraser.java | 32 + .../jsdjjed/util/http/HttpResponseString.java | 33 + .../util/http/HttpResponseStringPraser.java | 30 + .../jsdjjed/util/http/HttpResultCode.java | 69 + .../party/jsdjjed/util/http/HttpsParams.java | 47 + .../jsdjjed/util/http/HttpsRequestBytes.java | 21 + .../jsdjjed/util/http/HttpsRequestKV.java | 23 + .../jsdjjed/util/http/HttpsRequestString.java | 21 + .../party/jsdjjed/web/MainFilesComponent.java | 46 + .../jsdjjed/web/MainWebResourceProvider.java | 19 + .../fr/plugin/third/party/jsdjjed/feishu.js | 2464 +++++++++++++++++ .../fr/plugin/third/party/jsdjjed/message.js | 263 ++ .../party/jsdjjed/sdk/h5-js-sdk-1.5.12.js | 1 + .../plugin/third/party/jsdjjed/sdk/login.html | 36 + .../third/party/jsdjjed/sdk/runworkhelp.js | 24 + .../third/party/jsdjjed/sdk/vconsole.min.js | 10 + 74 files changed, 9123 insertions(+) create mode 100644 README.md create mode 100644 lib/finekit-10.0.jar create mode 100644 lib/gson-2.8.6.jar create mode 100644 plugin.xml create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerComponent.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerSystemOption.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/OutputPluginLifecycleMonitor.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/Utils.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigAccessBridge.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigDao.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigData.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigEntity.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/config/AppDataConfig.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuApp.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuChatGroupBean.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuLoginUserBean.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/handle/ImageOutputFormat.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomHttpHandlerProvider.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomURLAliasProvider.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/SessionGlobalRequestFilterProvider.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/AddAppHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/DeleteAppHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/EditAppHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/ForbidAppHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppConfigHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryChatGroupsHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SaveAppConfigHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SynchronizeSourceHttpHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/AppMessagePushHandler.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/bean/OutputAppMessagePush.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/FileDef.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/JsAndCssBridge.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/entity/AppMessagePushEntity.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FeishuOutputFormula.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FormulaCalculator.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/AppMessagePushDao.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/DBAccessProvider.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PlaceholderResolver.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PropertiesUtils.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/AES.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/DateUtil.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/GZIPUtils.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/JsonHelper.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/Md5.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpClient.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequest.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestBytes.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestKV.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestParams.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraser.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserBytes.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserKV.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserString.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestString.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponse.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytes.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytesPraser.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponsePraser.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseString.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseStringPraser.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResultCode.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsParams.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestBytes.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestKV.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestString.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainFilesComponent.java create mode 100644 src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainWebResourceProvider.java create mode 100644 src/main/resources/com/fr/plugin/third/party/jsdjjed/feishu.js create mode 100644 src/main/resources/com/fr/plugin/third/party/jsdjjed/message.js create mode 100644 src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/h5-js-sdk-1.5.12.js create mode 100644 src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/login.html create mode 100644 src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/runworkhelp.js create mode 100644 src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/vconsole.min.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..bdf1d91 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# open-JSD-9943 + +JSD-9943 私有版本飞书集成\ +免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ +仅作为开发者学习参考使用!禁止用于任何商业用途!\ +为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系【pioneer】处理。 \ No newline at end of file diff --git a/lib/finekit-10.0.jar b/lib/finekit-10.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..861ee4afb9ff0ba27e26ac1285253ed12cda2307 GIT binary patch literal 394200 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

j3$4m;-M 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

_jwBNTw;O3s_xhK!gHYlYO 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 z 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 literal 0 HcmV?d00001 diff --git a/lib/gson-2.8.6.jar b/lib/gson-2.8.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..4765c4afeb2cdfa224422b174a4e5d94ffc9f714 GIT binary patch literal 240255 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 LEN=v=6@>o*Edn-* literal 0 HcmV?d00001 diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..3078f39 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,28 @@ + + + com.fr.plugin.third.party.jsdjjed + + yes + 1.0.37 + 10.0 + 2019-01-01 + fr.open + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerComponent.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerComponent.java new file mode 100644 index 0000000..094f5c0 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerComponent.java @@ -0,0 +1,25 @@ +package com.fr.plugin.third.party.jsdjjed; + +import com.fr.web.struct.Component; +import com.fr.web.struct.category.ScriptPath; +import com.fr.web.struct.category.StylePath; + + +public class FeishuManagerComponent extends Component { + + public static FeishuManagerComponent KEY = new FeishuManagerComponent(); + + private FeishuManagerComponent(){ + + } + + @Override + public ScriptPath script() { + return ScriptPath.build("/com/fr/plugin/third/party/jsdjjed/feishu.js"); + } + + @Override + public StylePath style() { + return StylePath.build("/com/fr/plugin/third/party/jsdjjed/feishu.css"); + } +} \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerSystemOption.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerSystemOption.java new file mode 100644 index 0000000..d4e7f7c --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/FeishuManagerSystemOption.java @@ -0,0 +1,33 @@ +package com.fr.plugin.third.party.jsdjjed; + +import com.fr.decision.fun.impl.AbstractSystemOptionProvider; +import com.fr.decision.web.MainComponent; +import com.fr.web.struct.Atom; + +public class FeishuManagerSystemOption extends AbstractSystemOptionProvider { + + @Override + public String id() { + return "decision-jsdjjed-feishu-manager"; + } + + @Override + public String displayName() { + return "飞书管理"; + } + + @Override + public int sortIndex() { + return 2; + } + + @Override + public Atom attach() { + return MainComponent.KEY; + } + + @Override + public Atom client() { + return FeishuManagerComponent.KEY; + } +} \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/OutputPluginLifecycleMonitor.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/OutputPluginLifecycleMonitor.java new file mode 100644 index 0000000..2544902 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/OutputPluginLifecycleMonitor.java @@ -0,0 +1,41 @@ +package com.fr.plugin.third.party.jsdjjed; + +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; +import com.fr.plugin.third.party.jsdjjed.config.AppDataConfig; +import com.fr.plugin.third.party.jsdjjed.handle.ImageOutputFormat; +import com.fr.plugin.third.party.jsdjjed.schedule.AppMessagePushHandler; +import com.fr.plugin.third.party.jsdjjed.schedule.bean.OutputAppMessagePush; +import com.fr.plugin.third.party.jsdjjed.schedule.entity.AppMessagePushEntity; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.schedule.extension.report.job.output.BaseOutputFormat; +import com.fr.schedule.feature.ScheduleOutputActionEntityRegister; +import com.fr.schedule.feature.output.OutputActionHandler; +import com.fr.stable.fun.Authorize; + + + +/** + * 配置信息初始化 + */ +@EnableMetrics +public class OutputPluginLifecycleMonitor extends AbstractPluginLifecycleMonitor { + @Override + @Focus(id = "com.fr.plugin.third.party.jsdjjed", text = "plugin-jsdjjed", source = Original.PLUGIN) + public void afterRun(PluginContext pluginContext) { + BaseOutputFormat.registerOutputFormat(new ImageOutputFormat()); + AppDataConfig.getInstance(); + OutputActionHandler.registerHandler(new AppMessagePushHandler(), OutputAppMessagePush.class.getName()); + ScheduleOutputActionEntityRegister.getInstance().addClass(AppMessagePushEntity.class); + + } + + @Override + public void beforeStop(PluginContext pluginContext) { + BaseOutputFormat.removeOutputFormat(ImageOutputFormat.FORMAT_IMAGE); + OutputActionHandler.removeOutputHandler(OutputAppMessagePush.class.getName()); + ScheduleOutputActionEntityRegister.getInstance().removeClass(AppMessagePushEntity.class); + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/Utils.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/Utils.java new file mode 100644 index 0000000..de1e0f8 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/Utils.java @@ -0,0 +1,386 @@ +package com.fr.plugin.third.party.jsdjjed; + +import com.fanruan.api.log.LogKit; +import com.fanruan.api.util.StringKit; +import com.fr.decision.authority.data.User; +import com.fr.decision.webservice.bean.user.UserBean; +import com.fr.decision.webservice.bean.user.UserUpdateBean; +import com.fr.decision.webservice.v10.user.UserService; +import com.fr.json.JSONObject; +import com.fr.stable.StringUtils; +import com.fr.third.org.apache.http.HttpEntity; +import com.fr.third.org.apache.http.HttpStatus; +import com.fr.third.org.apache.http.client.config.RequestConfig; +import com.fr.third.org.apache.http.client.methods.CloseableHttpResponse; +import com.fr.third.org.apache.http.client.methods.HttpGet; +import com.fr.third.org.apache.http.client.methods.HttpPost; +import com.fr.third.org.apache.http.conn.ssl.NoopHostnameVerifier; +import com.fr.third.org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import com.fr.third.org.apache.http.entity.StringEntity; +import com.fr.third.org.apache.http.entity.mime.MultipartEntityBuilder; +import com.fr.third.org.apache.http.impl.client.CloseableHttpClient; +import com.fr.third.org.apache.http.impl.client.HttpClients; +import com.fr.third.org.apache.http.ssl.SSLContextBuilder; +import com.fr.third.org.apache.http.ssl.TrustStrategy; +import com.fr.third.org.apache.http.util.EntityUtils; +import com.fr.third.springframework.web.util.UriUtils; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.List; +import java.util.UUID; + +public class Utils { + public static String DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"; + public static RequestConfig REQUEST_CONFIG = RequestConfig.custom() + .setConnectionRequestTimeout(30000) + .setSocketTimeout(30000) // 服务端相应超时 + .setConnectTimeout(30000) // 建立socket链接超时时间 + .build(); + + public static CloseableHttpClient createSslHttpClient() { + try { + SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { + + @Override + public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { + return true; + } + }).build(); + HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE; + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, hostnameVerifier); + return HttpClients.custom() + .setSSLSocketFactory(sslsf) + .build(); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + } + return HttpClients.createDefault(); + } + + public static CloseableHttpClient createDefaultHttpClient() { + CloseableHttpClient httpClient = HttpClients.custom() + .build(); + return httpClient; + } + + public static synchronized CloseableHttpClient createHttpClient(String url) { + CloseableHttpClient httpClient = null; + if (StringKit.isEmpty(url)) { + httpClient = createDefaultHttpClient(); + return httpClient; + } + + if (url.startsWith("https://")) { + httpClient = createSslHttpClient(); + return httpClient; + } + httpClient = createDefaultHttpClient(); + return httpClient; + } + + /** + * 获取响应内容 + * + * @param response + * @return + * @throws IOException + */ + public static String getResponseBodyContent(CloseableHttpResponse response) throws IOException { + if (response == null) { + return ""; + } + HttpEntity httpEntity = response.getEntity(); + if (httpEntity == null) { + return ""; + } + String content = EntityUtils.toString(httpEntity, "UTF-8"); + return content; + } + + public static synchronized String createHttpGetContent(CloseableHttpClient httpClient, String url, String basicAuth, String contentType) throws IOException { + if ((httpClient == null) || (StringKit.isEmpty(url))) { + return ""; + } + + LogKit.info("http请求链接:" + url); + HttpGet httpGet = new HttpGet(url); + httpGet.addHeader("User-Agent", Utils.DEFAULT_USER_AGENT); + if (StringKit.isNotEmpty(basicAuth)) { + httpGet.addHeader("Authorization", basicAuth); + } + if (StringKit.isNotEmpty(contentType)) { + httpGet.addHeader("Content-Type", contentType); + } + + httpGet.setConfig(Utils.REQUEST_CONFIG); + CloseableHttpResponse response = httpClient.execute(httpGet); + int statusCode = response.getStatusLine().getStatusCode(); + String responseContent = getResponseBodyContent(response); + LogKit.info("http响应内容:\n" + responseContent); + if (statusCode != HttpStatus.SC_OK) { + response.close(); + LogKit.error("http请求出错,http status:" + statusCode); + return ""; + } + response.close(); + if (StringKit.isEmpty(responseContent)) { + LogKit.error("http请求出错,http响应内容为空"); + return ""; + } + return responseContent; + } + + public static String createHttpPostContent(CloseableHttpClient httpClient, String url, String bodyContent, String basicAuth, String contentType) throws IOException { + return createHttpPostContent(httpClient, url, bodyContent, null, basicAuth, contentType); + } + + public static String createHttpPostContent(CloseableHttpClient httpClient, String url, MultipartEntityBuilder multipartEntityBuilder, String basicAuth, String contentType) throws IOException { + return createHttpPostContent(httpClient, url, "", multipartEntityBuilder, basicAuth, contentType); + } + + public static synchronized String createHttpPostContent(CloseableHttpClient httpClient, String url, String bodyContent, MultipartEntityBuilder multipartEntityBuilder, String basicAuth, String contentType) throws IOException { + if ((httpClient == null) || (StringKit.isEmpty(url))) { + return ""; + } + + LogKit.info("http请求链接:" + url); + HttpPost httpPost = new HttpPost(url); + httpPost.addHeader("User-Agent", Utils.DEFAULT_USER_AGENT); + httpPost.setConfig(Utils.REQUEST_CONFIG); + if (StringKit.isNotEmpty(basicAuth)) { + httpPost.addHeader("Authorization", basicAuth); + } + if (StringKit.isNotEmpty(contentType)) { + httpPost.addHeader("Content-Type", contentType); + } + if (StringKit.isNotEmpty(bodyContent)) { + LogKit.info("http请求内容:\n" + bodyContent); + StringEntity bodyEntity = new StringEntity(bodyContent, "UTF-8"); + httpPost.setEntity(bodyEntity); + } + + if (multipartEntityBuilder != null) { + httpPost.setEntity(multipartEntityBuilder.build()); + } + + CloseableHttpResponse response = httpClient.execute(httpPost); + String responseContent = getResponseBodyContent(response); + LogKit.info("http响应内容:\n" + responseContent); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode != HttpStatus.SC_OK) { + response.close(); + LogKit.error("http请求出错,http status:" + statusCode); + return ""; + } + response.close(); + if (StringKit.isEmpty(responseContent)) { + LogKit.error("http请求出错,http响应内容为空"); + return ""; + } + return responseContent; + } + + + public static String createHttpGetContent(CloseableHttpClient httpClient, String url, String contentType) throws IOException { + return createHttpGetContent(httpClient, url, "", contentType); + } + + public static String createHttpGetContentWithHttpClient(String url, String basicAuth, String contentType) throws IOException { + CloseableHttpClient httpClient = Utils.createHttpClient(url); + String content = createHttpGetContent(httpClient, url, basicAuth, contentType); + httpClient.close(); + return content; + } + + public static String createHttpGetContentWithHttpClient(String url) throws IOException { + return createHttpGetContentWithHttpClient(url, "", ""); + } + + public static String createHttpPostContentWithHttpClient(String url, String bodyContent, String contentType) throws IOException { + return createHttpPostContentWithHttpClient(url, bodyContent, "", contentType); + } + + public static String createHttpPostContentWithHttpClient(String url, String bodyContent, String basicAuth, String contentType) throws IOException { + CloseableHttpClient httpClient = Utils.createHttpClient(url); + String content = createHttpPostContent(httpClient, url, bodyContent, basicAuth, contentType); + httpClient.close(); + return content; + } + + + public static String createHttpPostContentWithHttpClient(String url, MultipartEntityBuilder multipartEntityBuilder, String contentType) throws IOException { + return createHttpPostContentWithHttpClient(url, multipartEntityBuilder, "", contentType); + } + + public static String createHttpPostContentWithHttpClient(String url, MultipartEntityBuilder multipartEntityBuilder, String basicAuth, String contentType) throws IOException { + CloseableHttpClient httpClient = Utils.createHttpClient(url); + String content = createHttpPostContent(httpClient, url, multipartEntityBuilder, basicAuth, contentType); + httpClient.close(); + return content; + } + + public static synchronized String createHttpPostContent(CloseableHttpClient httpClient, String url, String bodyContent, String contentType) throws IOException { + return createHttpPostContent(httpClient, url, bodyContent, "", contentType); + } + + + public static String getRequestUrl(HttpServletRequest req) { + if (req == null) { + return ""; + } + String url = req.getRequestURL().toString(); + return url; + } + + /** + * 获取完整请求链接 + * + * @param req 请求 + * @return + */ + public static String getFullRequestUrl(HttpServletRequest req) { + if (req == null) { + return ""; + } + String url = req.getRequestURL().toString(); + String queryUrl = req.getQueryString(); + if ((queryUrl == null) || "null".equalsIgnoreCase(queryUrl)) { + queryUrl = ""; + } else { + queryUrl = "?" + queryUrl; + } + String fullUrl = url + queryUrl; + return fullUrl; + } + + + public static boolean isDecisionLoginRequest(HttpServletRequest req) { + if (req == null) { + return false; + } + if (!"GET".equalsIgnoreCase(req.getMethod())) { + return false; + } + String url = req.getRequestURL().toString(); + if (url.endsWith("/decision/login") || url.endsWith("/decision/login/")) { + return true; + } + return false; + } + + /** + * 重定向 + * + * @param res + * @param url + */ + public static void sendRedirect(HttpServletResponse res, String url) { + if ((res == null) || (StringKit.isEmpty(url))) { + return; + } + res.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); + res.setHeader("Location", url); + } + + + public static synchronized String getUuid() { + String uuid = UUID.randomUUID().toString().replace("-", ""); + return uuid; + } + + + /** + * 通过用户名删除用户,管理员用户无法删除 + * + * @param username 用户名 + * @return + * @throws Exception + */ + public static int deleteUsersByUsername(String username) throws Exception { + if (StringUtils.isEmpty(username)) { + return 0; + } + User user = UserService.getInstance().getUserByUserName(username); + if (user == null) { + return 0; + } + String userId = user.getId(); + List adminUserIds = UserService.getInstance().getAdminUserIdList(); + if ((adminUserIds != null) && (adminUserIds.size() >= 1) && (adminUserIds.contains(userId))) { + return 0; + } + UserUpdateBean userUpdateBean = new UserUpdateBean(); + userUpdateBean.setRemoveUserIds(new String[]{userId}); + return UserService.getInstance().deleteUsers(userUpdateBean); + } + + public static int deleteUsersByUsernames(List usernames) throws Exception { + if ((usernames == null) || (usernames.size() <= 0)) { + return 0; + } + String username; + int totalCount = 0, count; + for (int i = 0, max = usernames.size() - 1; i <= max; i++) { + username = usernames.get(i); + count = deleteUsersByUsername(username); + totalCount = totalCount + count; + } + return totalCount; + } + + public static void editRealNameByUsername(String username, String realName) throws Exception { + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(realName)) { + return; + } + User user = UserService.getInstance().getUserByUserName(username); + if (user == null) { + return; + } + UserBean userBean = new UserBean(user.getEmail(), user.isEnable(), user.getMobile(), realName, user.getUserName(), user.getId()); + UserService.getInstance().editAccount(username, userBean); + } + + public static JSONObject getSuccessResultJson() { + return getResultJson("success", ""); + } + + public static JSONObject getFailuresResultJson() { + return getResultJson("failure", ""); + } + + public static JSONObject getFailuresResultJson(String msg) { + return getResultJson("failure", msg); + } + + public static JSONObject getResultJson(String status, String msg) { + JSONObject json = new JSONObject(); + json.put("status", status); + json.put("msg", msg); + return json; + } + + public static String encodeUrlWithUtf8(String value) { + if ((value == null) || (value.length() <= 0)) { + return ""; + } + /*String path = "/" + value; + URI uri = new URI("http", "a", path, null); + String tempValue = uri.toASCIIString(); + String encodedValue = tempValue.substring(9);*/ + String tempValue = ""; + try { + tempValue = UriUtils.encodeQueryParam(value, "UTF-8"); + return tempValue; + } catch (Exception e) { + LogKit.error("Utils.encodeUrlWithUtf8:" + e.getMessage(), e); + tempValue = value; + } + return tempValue; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigAccessBridge.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigAccessBridge.java new file mode 100644 index 0000000..c3a1dac --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigAccessBridge.java @@ -0,0 +1,40 @@ +package com.fr.plugin.third.party.jsdjjed.app.config; + +import com.fr.db.fun.impl.AbstractDBAccessProvider; +import com.fr.stable.db.accessor.DBAccessor; +import com.fr.stable.db.dao.BaseDAO; +import com.fr.stable.db.dao.DAOProvider; +import com.fr.stable.fun.Authorize; + + +@Authorize(callSignKey = "com.fr.plugin.third.party.jsdjjed") +public class AppConfigAccessBridge extends AbstractDBAccessProvider { + + private static DBAccessor dbAccessor = null; + + public static DBAccessor getDbAccessor() { + return dbAccessor; + } + + @Override + public DAOProvider[] registerDAO() { + return new DAOProvider[]{ + new DAOProvider() { + @Override + public Class getEntityClass() { + return AppConfigEntity.class; + } + + @Override + public Class getDAOClass() { + return AppConfigDao.class; + } + } + }; + } + + @Override + public void onDBAvailable(DBAccessor dbAccessor) { + AppConfigAccessBridge.dbAccessor = dbAccessor; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigDao.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigDao.java new file mode 100644 index 0000000..1cb7f16 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigDao.java @@ -0,0 +1,16 @@ +package com.fr.plugin.third.party.jsdjjed.app.config; + +import com.fr.stable.db.dao.BaseDAO; +import com.fr.stable.db.session.DAOSession; + +public class AppConfigDao extends BaseDAO { + + public AppConfigDao(DAOSession daoSession) { + super(daoSession); + } + + @Override + protected Class getEntityClass() { + return AppConfigEntity.class; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigData.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigData.java new file mode 100644 index 0000000..796a716 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigData.java @@ -0,0 +1,138 @@ +package com.fr.plugin.third.party.jsdjjed.app.config; + +import com.fanruan.api.query.QueryConditionKit; +import com.fanruan.api.query.RestrictionKit; +import com.fanruan.api.util.StringKit; +import com.fr.stable.db.action.DBAction; +import com.fr.stable.db.dao.DAOContext; +import com.fr.third.org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class AppConfigData { + public static synchronized List queryAllAppConfigData() throws Exception { + List entities = AppConfigAccessBridge.getDbAccessor().runQueryAction(new DBAction>() { + @Override + public List run(DAOContext daoContext) throws Exception { + return daoContext.getDAO(AppConfigDao.class).find(QueryConditionKit.newQueryCondition()); + } + }); + if (CollectionUtils.isEmpty(entities)) { + return new ArrayList<>(); + } + return entities; + } + + public static synchronized AppConfigEntity queryAppConfigDataWithId(String id) throws Exception { + AppConfigEntity entity = AppConfigAccessBridge.getDbAccessor().runQueryAction(new DBAction() { + @Override + public AppConfigEntity run(DAOContext daoContext) throws Exception { + return daoContext.getDAO(AppConfigDao.class).getById(id); + } + }); + return entity; + } + + public static synchronized List queryAppConfigDataWithConfigId(String configId) throws Exception { + List entities = AppConfigAccessBridge.getDbAccessor().runQueryAction(new DBAction>() { + @Override + public List run(DAOContext daoContext) throws Exception { + return daoContext.getDAO(AppConfigDao.class).find(QueryConditionKit.newQueryCondition().addRestriction(RestrictionKit.eq("configId", configId))); + } + }); + return entities; + } + + public static synchronized AppConfigEntity queryAppConfigDataWithLogin() throws Exception { + List entities = queryAppConfigDatasWithLogin(); + if (CollectionUtils.isEmpty(entities)) { + return null; + } + return entities.get(0); + } + + public static synchronized List queryAppConfigDatasWithLogin() throws Exception { + List entities = AppConfigAccessBridge.getDbAccessor().runQueryAction(new DBAction>() { + @Override + public List run(DAOContext daoContext) throws Exception { + return daoContext.getDAO(AppConfigDao.class).find(QueryConditionKit.newQueryCondition().addRestriction(RestrictionKit.eq("login", 1))); + } + }); + return entities; + } + + + public static AppConfigEntity queryAppConfigDataWithConfigIdAndOnlyOne(String id) throws Exception { + List entities = queryAppConfigDataWithConfigId(id); + if (CollectionUtils.isEmpty(entities)) { + return null; + } + AppConfigEntity entity = entities.get(0); + return entity; + } + + public static boolean isAppConfigDataExistsWithConfigId(String configId) throws Exception { + return isAppConfigDataExistsWithConfigId(configId,""); + } + + + public static boolean isAppConfigDataExistsWithConfigId(String configId, String id) throws Exception { + AppConfigEntity entity = queryAppConfigDataWithConfigIdAndOnlyOne(configId); + if (entity == null) { + return false; + } + if (StringKit.isNotEmpty(id) && StringKit.equals(id, entity.getId())) { + return false; + } + return true; + } + + + public static synchronized AppConfigEntity addAppConfigData(AppConfigEntity appConfigEntity) throws Exception { + AppConfigEntity resultEntity = AppConfigAccessBridge.getDbAccessor().runDMLAction(new DBAction() { + @Override + public AppConfigEntity run(DAOContext daoContext) throws Exception { + AppConfigEntity entity = appConfigEntity; + entity.setId(UUID.randomUUID().toString()); + daoContext.getDAO(AppConfigDao.class).add(entity); + return entity; + } + }); + return resultEntity; + } + + public static synchronized void updateAppConfigData(AppConfigEntity appConfigEntity) throws Exception { + AppConfigAccessBridge.getDbAccessor().runDMLAction(new DBAction() { + @Override + public Boolean run(DAOContext daoContext) throws Exception { + daoContext.getDAO(AppConfigDao.class).update(appConfigEntity); + return true; + } + }); + } + + public static synchronized AppConfigEntity deleteAppConfigDataWithId(String id) throws Exception { + AppConfigEntity appConfigEntity = queryAppConfigDataWithId(id); + if (appConfigEntity == null) { + return null; + } + AppConfigEntity resultEntity = AppConfigAccessBridge.getDbAccessor().runDMLAction(new DBAction() { + @Override + public AppConfigEntity run(DAOContext daoContext) throws Exception { + daoContext.getDAO(AppConfigDao.class).remove(appConfigEntity.getId()); + return appConfigEntity; + } + }); + return resultEntity; + } + + public static synchronized AppConfigEntity deleteAppConfigDataWithConfigId(String configId) throws Exception { + AppConfigEntity appConfigEntity = queryAppConfigDataWithConfigIdAndOnlyOne(configId); + if (appConfigEntity == null) { + return null; + } + return deleteAppConfigDataWithId(appConfigEntity.getId()); + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigEntity.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigEntity.java new file mode 100644 index 0000000..4c62767 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/app/config/AppConfigEntity.java @@ -0,0 +1,87 @@ +package com.fr.plugin.third.party.jsdjjed.app.config; + +import com.fr.stable.AssistUtils; +import com.fr.stable.db.entity.BaseEntity; +import com.fr.third.javax.persistence.Column; +import com.fr.third.javax.persistence.Entity; +import com.fr.third.javax.persistence.Table; + +@Entity +@Table(name = "jsdjjed_feishu_config") +public class AppConfigEntity extends BaseEntity { + @Column(name = "config_id") + private String configId; + + @Column(name = "notes") + private String notes; + + @Column(name = "app_id") + private String appId; + + @Column(name = "app_secret") + private String appSecret; + + @Column(name = "login_map") + private String loginMap; + + @Column(name = "login") + private int login; + + + public AppConfigEntity() { + + } + + public String getConfigId() { + return configId; + } + + public void setConfigId(String configId) { + this.configId = configId; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getAppSecret() { + return appSecret; + } + + public void setAppSecret(String appSecret) { + this.appSecret = appSecret; + } + + public int getLogin() { + return login; + } + + public void setLogin(int login) { + this.login = login; + } + + public String getLoginMap() { + return loginMap; + } + + public void setLoginMap(String loginMap) { + this.loginMap = loginMap; + } + + @Override + public String toString() { + return AssistUtils.toString(this); + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/config/AppDataConfig.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/config/AppDataConfig.java new file mode 100644 index 0000000..8b2a5fb --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/config/AppDataConfig.java @@ -0,0 +1,498 @@ +package com.fr.plugin.third.party.jsdjjed.config; + +import com.fr.config.*; +import com.fr.config.holder.Conf; +import com.fr.config.holder.factory.Holders; + +import java.util.HashMap; +import java.util.Map; + + +public class AppDataConfig extends DefaultConfiguration { + public String getNameSpace() { + return this.getClass().getName(); + } + + private static volatile AppDataConfig config = null; + + public static AppDataConfig getInstance() { + if (config == null) { + config = ConfigContext.getConfigInstance(AppDataConfig.class); + } + return config; + } + + + private static volatile Map URL_MAP = new HashMap<>(); + + public synchronized static void addMapUrl(String key, String url) { + URL_MAP.put(key, url); + } + + public synchronized static String getMapUrl(String key) { + if (!URL_MAP.containsKey(key)) { + return ""; + } + String url = URL_MAP.get(key); + URL_MAP.remove(key); + return url; + } + + private Conf frUrl = Holders.simple(""); + private Conf accessTokenUrl = Holders.simple("https://xxx/open-apis/auth/v3/app_access_token/internal"); + private Conf codeUserUrl = Holders.simple("https://xxx/open-apis/authen/v1/access_token"); + private Conf chatGroupsUrl = Holders.simple("https://xxx/open-apis/im/v1/chats"); + private Conf usersUrl = Holders.simple("https://xxx/open-apis/user/v1/batch_get_id"); + private Conf sendMessageUrl = Holders.simple("https://xxx/open-apis/im/v1/messages"); + private Conf sendBatchMessageUrl = Holders.simple("https://xxx/open-apis/message/v4/batch_send"); + private Conf uploadImageUrl = Holders.simple("https://xxx/open-apis/im/v1/images"); + private Conf uploadFileUrl = Holders.simple("https://xxx/open-apis/im/v1/files"); + private Conf authorizeUrl = Holders.simple("https://xxx/open-apis/authen/v1/index"); + + private Conf accessTokenUrlEscbOption = Holders.simple(true); + private Conf codeUserUrlEscbOption = Holders.simple(true); + private Conf chatGroupsUrlEscbOption = Holders.simple(true); + private Conf usersUrlEscbOption = Holders.simple(true); + private Conf sendMessageUrlEscbOption = Holders.simple(true); + private Conf sendBatchMessageUrlEscbOption = Holders.simple(true); + private Conf uploadImageUrlEscbOption = Holders.simple(false); + private Conf uploadFileUrlEscbOption = Holders.simple(false); + private Conf authorizeUrlEscbOption = Holders.simple(false); + + private Conf accessTokenUrlEscbCode = Holders.simple("xxx.app.app_access_token"); + private Conf codeUserUrlEscbCode = Holders.simple("xxx.app.get_user_accessToken"); + private Conf chatGroupsUrlEscbCode = Holders.simple("xxx.app.get_chat_v4_list"); + private Conf usersUrlEscbCode = Holders.simple("xxx.app.lark_batch_get_id"); + private Conf sendMessageUrlEscbCode = Holders.simple("xxx.app.feishu_send_message"); + private Conf sendBatchMessageUrlEscbCode = Holders.simple("xxx.app.feishu_batch_send"); + private Conf uploadImageUrlEscbCode = Holders.simple(""); + private Conf uploadFileUrlEscbCode = Holders.simple(""); + private Conf authorizeUrlEscbCode = Holders.simple(""); + + private Conf accessTokenUrlEscbVersion = Holders.simple("1.0"); + private Conf codeUserUrlEscbVersion = Holders.simple("1.0"); + private Conf chatGroupsUrlEscbVersion = Holders.simple("1.0"); + private Conf usersUrlEscbVersion = Holders.simple("1.0"); + private Conf sendMessageUrlEscbVersion = Holders.simple("2.0"); + private Conf sendBatchMessageUrlEscbVersion = Holders.simple("1.0"); + private Conf uploadImageUrlEscbVersion = Holders.simple(""); + private Conf uploadFileUrlEscbVersion = Holders.simple(""); + private Conf authorizeUrlEscbVersion = Holders.simple(""); + + private Conf escbUrl = Holders.simple("http://xxxxxx/ecsb/gw/cls/rf"); + private Conf escbAppCode = Holders.simple("xx"); + private Conf escbAppToken = Holders.simple("xxx"); + private Conf escbOrgCode = Holders.simple("xxx"); + private Conf escbSysCode = Holders.simple("xxx"); + + + + @Identifier(value = "loginTypeNameParameter", name = "登录类型参数名称", description = "", status = Status.HIDE) + private Conf loginTypeNameParameter = Holders.simple("loginType"); + + @Identifier(value = "loginTypeValue", name = "登录类型值", description = "", status = Status.HIDE) + private Conf loginTypeValue = Holders.simple("oauth"); + + public String getLoginTypeNameParameter() { + return loginTypeNameParameter.get(); + } + + public void setLoginTypeNameParameter(String loginTypeNameParameter) { + this.loginTypeNameParameter.set(loginTypeNameParameter); + } + + public String getLoginTypeValue() { + return loginTypeValue.get(); + } + + public void setLoginTypeValue(String loginTypeValue) { + this.loginTypeValue.set(loginTypeValue); + } + + public String getFrUrl() { + return frUrl.get(); + } + + public void setFrUrl(String frUrl) { + this.frUrl.set(frUrl); + } + + public String getAccessTokenUrl() { + return accessTokenUrl.get(); + } + + public void setAccessTokenUrl(String accessTokenUrl) { + this.accessTokenUrl.set(accessTokenUrl); + } + + public String getCodeUserUrl() { + return codeUserUrl.get(); + } + + public void setCodeUserUrl(String codeUserUrl) { + this.codeUserUrl.set(codeUserUrl); + } + + public String getChatGroupsUrl() { + return chatGroupsUrl.get(); + } + + public void setChatGroupsUrl(String chatGroupsUrl) { + this.chatGroupsUrl.set(chatGroupsUrl); + } + + public String getUsersUrl() { + return usersUrl.get(); + } + + public void setUsersUrl(String usersUrl) { + this.usersUrl.set(usersUrl); + } + + public String getSendMessageUrl() { + return sendMessageUrl.get(); + } + + public void setSendMessageUrl(String sendMessageUrl) { + this.sendMessageUrl.set(sendMessageUrl); + } + + public String getSendBatchMessageUrl() { + return sendBatchMessageUrl.get(); + } + + public void setSendBatchMessageUrl(String sendBatchMessageUrl) { + this.sendBatchMessageUrl.set(sendBatchMessageUrl); + } + + public String getUploadImageUrl() { + return uploadImageUrl.get(); + } + + public void setUploadImageUrl(String uploadImageUrl) { + this.uploadImageUrl.set(uploadImageUrl); + } + + public String getUploadFileUrl() { + return uploadFileUrl.get(); + } + + public void setUploadFileUrl(String uploadFileUrl) { + this.uploadFileUrl.set(uploadFileUrl); + } + + public String getAuthorizeUrl() { + return authorizeUrl.get(); + } + + public void setAuthorizeUrl(String authorizeUrl) { + this.authorizeUrl.set(authorizeUrl); + } + + public Boolean isAccessTokenUrlEscbOption() { + return accessTokenUrlEscbOption.get(); + } + + public void setAccessTokenUrlEscbOption(Boolean accessTokenUrlEscbOption) { + this.accessTokenUrlEscbOption.set(accessTokenUrlEscbOption); + } + + public Boolean isCodeUserUrlEscbOption() { + return codeUserUrlEscbOption.get(); + } + + public void setCodeUserUrlEscbOption(Boolean codeUserUrlEscbOption) { + this.codeUserUrlEscbOption.set(codeUserUrlEscbOption); + } + + public Boolean isChatGroupsUrlEscbOption() { + return chatGroupsUrlEscbOption.get(); + } + + public void setChatGroupsUrlEscbOption(Boolean chatGroupsUrlEscbOption) { + this.chatGroupsUrlEscbOption.set(chatGroupsUrlEscbOption); + } + + public Boolean isUsersUrlEscbOption() { + return usersUrlEscbOption.get(); + } + + public void setUsersUrlEscbOption(Boolean usersUrlEscbOption) { + this.usersUrlEscbOption.set(usersUrlEscbOption); + } + + public Boolean isSendMessageUrlEscbOption() { + return sendMessageUrlEscbOption.get(); + } + + public void setSendMessageUrlEscbOption(Boolean sendMessageUrlEscbOption) { + this.sendMessageUrlEscbOption.set(sendMessageUrlEscbOption); + } + + public Boolean isSendBatchMessageUrlEscbOption() { + return sendBatchMessageUrlEscbOption.get(); + } + + public void setSendBatchMessageUrlEscbOption(Boolean sendBatchMessageUrlEscbOption) { + this.sendBatchMessageUrlEscbOption.set(sendBatchMessageUrlEscbOption); + } + + public Boolean isUploadImageUrlEscbOption() { + return uploadImageUrlEscbOption.get(); + } + + public void setUploadImageUrlEscbOption(Boolean uploadImageUrlEscbOption) { + this.uploadImageUrlEscbOption.set(uploadImageUrlEscbOption); + } + + public Boolean isUploadFileUrlEscbOption() { + return uploadFileUrlEscbOption.get(); + } + + public void setUploadFileUrlEscbOption(Boolean uploadFileUrlEscbOption) { + this.uploadFileUrlEscbOption.set(uploadFileUrlEscbOption); + } + + public Boolean isAuthorizeUrlEscbOption() { + return authorizeUrlEscbOption.get(); + } + + public void setAuthorizeUrlEscbOption(Boolean authorizeUrlEscbOption) { + this.authorizeUrlEscbOption.set(authorizeUrlEscbOption); + } + + public String getAccessTokenUrlEscbCode() { + return accessTokenUrlEscbCode.get(); + } + + public void setAccessTokenUrlEscbCode(String accessTokenUrlEscbCode) { + this.accessTokenUrlEscbCode.set(accessTokenUrlEscbCode); + } + + public String getCodeUserUrlEscbCode() { + return codeUserUrlEscbCode.get(); + } + + public void setCodeUserUrlEscbCode(String codeUserUrlEscbCode) { + this.codeUserUrlEscbCode.set(codeUserUrlEscbCode); + } + + public String getChatGroupsUrlEscbCode() { + return chatGroupsUrlEscbCode.get(); + } + + public void setChatGroupsUrlEscbCode(String chatGroupsUrlEscbCode) { + this.chatGroupsUrlEscbCode.set(chatGroupsUrlEscbCode); + } + + public String getUsersUrlEscbCode() { + return usersUrlEscbCode.get(); + } + + public void setUsersUrlEscbCode(String usersUrlEscbCode) { + this.usersUrlEscbCode.set(usersUrlEscbCode); + } + + public String getSendMessageUrlEscbCode() { + return sendMessageUrlEscbCode.get(); + } + + public void setSendMessageUrlEscbCode(String sendMessageUrlEscbCode) { + this.sendMessageUrlEscbCode.set(sendMessageUrlEscbCode); + } + + public String getSendBatchMessageUrlEscbCode() { + return sendBatchMessageUrlEscbCode.get(); + } + + public void setSendBatchMessageUrlEscbCode(String sendBatchMessageUrlEscbCode) { + this.sendBatchMessageUrlEscbCode.set(sendBatchMessageUrlEscbCode); + } + + public String getUploadImageUrlEscbCode() { + return uploadImageUrlEscbCode.get(); + } + + public void setUploadImageUrlEscbCode(String uploadImageUrlEscbCode) { + this.uploadImageUrlEscbCode.set(uploadImageUrlEscbCode); + } + + public String getUploadFileUrlEscbCode() { + return uploadFileUrlEscbCode.get(); + } + + public void setUploadFileUrlEscbCode(String uploadFileUrlEscbCode) { + this.uploadFileUrlEscbCode.set(uploadFileUrlEscbCode); + } + + public String getAuthorizeUrlEscbCode() { + return authorizeUrlEscbCode.get(); + } + + public void setAuthorizeUrlEscbCode(String authorizeUrlEscbCode) { + this.authorizeUrlEscbCode.set(authorizeUrlEscbCode); + } + + public String getAccessTokenUrlEscbVersion() { + return accessTokenUrlEscbVersion.get(); + } + + public void setAccessTokenUrlEscbVersion(String accessTokenUrlEscbVersion) { + this.accessTokenUrlEscbVersion.set(accessTokenUrlEscbVersion); + } + + public String getCodeUserUrlEscbVersion() { + return codeUserUrlEscbVersion.get(); + } + + public void setCodeUserUrlEscbVersion(String codeUserUrlEscbVersion) { + this.codeUserUrlEscbVersion.set(codeUserUrlEscbVersion); + } + + public String getChatGroupsUrlEscbVersion() { + return chatGroupsUrlEscbVersion.get(); + } + + public void setChatGroupsUrlEscbVersion(String chatGroupsUrlEscbVersion) { + this.chatGroupsUrlEscbVersion.set(chatGroupsUrlEscbVersion); + } + + public String getUsersUrlEscbVersion() { + return usersUrlEscbVersion.get(); + } + + public void setUsersUrlEscbVersion(String usersUrlEscbVersion) { + this.usersUrlEscbVersion.set(usersUrlEscbVersion); + } + + public String getSendMessageUrlEscbVersion() { + return sendMessageUrlEscbVersion.get(); + } + + public void setSendMessageUrlEscbVersion(String sendMessageUrlEscbVersion) { + this.sendMessageUrlEscbVersion.set(sendMessageUrlEscbVersion); + } + + public String getSendBatchMessageUrlEscbVersion() { + return sendBatchMessageUrlEscbVersion.get(); + } + + public void setSendBatchMessageUrlEscbVersion(String sendBatchMessageUrlEscbVersion) { + this.sendBatchMessageUrlEscbVersion.set(sendBatchMessageUrlEscbVersion); + } + + public String getUploadImageUrlEscbVersion() { + return uploadImageUrlEscbVersion.get(); + } + + public void setUploadImageUrlEscbVersion(String uploadImageUrlEscbVersion) { + this.uploadImageUrlEscbVersion.set(uploadImageUrlEscbVersion); + } + + public String getUploadFileUrlEscbVersion() { + return uploadFileUrlEscbVersion.get(); + } + + public void setUploadFileUrlEscbVersion(String uploadFileUrlEscbVersion) { + this.uploadFileUrlEscbVersion.set(uploadFileUrlEscbVersion); + } + + public String getAuthorizeUrlEscbVersion() { + return authorizeUrlEscbVersion.get(); + } + + public void setAuthorizeUrlEscbVersion(String authorizeUrlEscbVersion) { + this.authorizeUrlEscbVersion.set(authorizeUrlEscbVersion); + } + + public String getEscbUrl() { + return escbUrl.get(); + } + + public void setEscbUrl(String escbUrl) { + this.escbUrl.set(escbUrl); + } + + public String getEscbAppCode() { + return escbAppCode.get(); + } + + public void setEscbAppCode(String escbAppCode) { + this.escbAppCode.set(escbAppCode); + } + + public String getEscbAppToken() { + return escbAppToken.get(); + } + + public void setEscbAppToken(String escbAppToken) { + this.escbAppToken.set(escbAppToken); + } + + public String getEscbOrgCode() { + return escbOrgCode.get(); + } + + public void setEscbOrgCode(String escbOrgCode) { + this.escbOrgCode.set(escbOrgCode); + } + + public String getEscbSysCode() { + return escbSysCode.get(); + } + + public void setEscbSysCode(String escbSysCode) { + this.escbSysCode.set(escbSysCode); + } + + @Override + public Object clone() throws CloneNotSupportedException { + AppDataConfig cloned = (AppDataConfig) super.clone(); + cloned.loginTypeNameParameter = (Conf) loginTypeNameParameter.clone(); + cloned.loginTypeValue = (Conf) loginTypeValue.clone(); + cloned.accessTokenUrl = (Conf) accessTokenUrl.clone(); + cloned.frUrl = (Conf) frUrl.clone(); + cloned.codeUserUrl = (Conf) codeUserUrl.clone(); + cloned.chatGroupsUrl = (Conf) chatGroupsUrl.clone(); + cloned.sendMessageUrl = (Conf) sendMessageUrl.clone(); + cloned.uploadImageUrl = (Conf) uploadImageUrl.clone(); + cloned.uploadFileUrl = (Conf) uploadFileUrl.clone(); + cloned.usersUrl = (Conf) usersUrl.clone(); + cloned.sendBatchMessageUrl = (Conf) sendBatchMessageUrl.clone(); + cloned.authorizeUrl = (Conf) authorizeUrl.clone(); + + cloned.accessTokenUrlEscbOption = (Conf) accessTokenUrlEscbOption.clone(); + cloned.codeUserUrlEscbOption = (Conf) codeUserUrlEscbOption.clone(); + cloned.chatGroupsUrlEscbOption = (Conf) chatGroupsUrlEscbOption.clone(); + cloned.usersUrlEscbOption = (Conf) usersUrlEscbOption.clone(); + cloned.sendMessageUrlEscbOption = (Conf) sendMessageUrlEscbOption.clone(); + cloned.sendBatchMessageUrlEscbOption = (Conf) sendBatchMessageUrlEscbOption.clone(); + cloned.uploadImageUrlEscbOption = (Conf) uploadImageUrlEscbOption.clone(); + cloned.uploadFileUrlEscbOption = (Conf) uploadFileUrlEscbOption.clone(); + cloned.authorizeUrlEscbOption = (Conf) authorizeUrlEscbOption.clone(); + cloned.accessTokenUrlEscbCode = (Conf) accessTokenUrlEscbCode.clone(); + cloned.codeUserUrlEscbCode = (Conf) codeUserUrlEscbCode.clone(); + cloned.chatGroupsUrlEscbCode = (Conf) chatGroupsUrlEscbCode.clone(); + cloned.usersUrlEscbCode = (Conf) usersUrlEscbCode.clone(); + cloned.sendMessageUrlEscbCode = (Conf) sendMessageUrlEscbCode.clone(); + cloned.sendBatchMessageUrlEscbCode = (Conf) sendBatchMessageUrlEscbCode.clone(); + cloned.uploadImageUrlEscbCode = (Conf) uploadImageUrlEscbCode.clone(); + cloned.uploadFileUrlEscbCode = (Conf) uploadFileUrlEscbCode.clone(); + cloned.authorizeUrlEscbCode = (Conf) authorizeUrlEscbCode.clone(); + cloned.accessTokenUrlEscbVersion = (Conf) accessTokenUrlEscbVersion.clone(); + cloned.codeUserUrlEscbVersion = (Conf) codeUserUrlEscbVersion.clone(); + cloned.chatGroupsUrlEscbVersion = (Conf) chatGroupsUrlEscbVersion.clone(); + cloned.usersUrlEscbVersion = (Conf) usersUrlEscbVersion.clone(); + cloned.sendMessageUrlEscbVersion = (Conf) sendMessageUrlEscbVersion.clone(); + cloned.sendBatchMessageUrlEscbVersion = (Conf) sendBatchMessageUrlEscbVersion.clone(); + cloned.uploadImageUrlEscbVersion = (Conf) uploadImageUrlEscbVersion.clone(); + cloned.uploadFileUrlEscbVersion = (Conf) uploadFileUrlEscbVersion.clone(); + cloned.authorizeUrlEscbVersion = (Conf) authorizeUrlEscbVersion.clone(); + cloned.escbUrl = (Conf) escbUrl.clone(); + cloned.escbAppCode = (Conf) escbAppCode.clone(); + cloned.escbAppToken = (Conf) escbAppToken.clone(); + cloned.escbOrgCode = (Conf) escbOrgCode.clone(); + cloned.escbSysCode = (Conf) escbSysCode.clone(); + return cloned; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuApp.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuApp.java new file mode 100644 index 0000000..5bfe236 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuApp.java @@ -0,0 +1,687 @@ +package com.fr.plugin.third.party.jsdjjed.feishu; + +import com.fanruan.api.log.LogKit; +import com.fanruan.api.util.StringKit; +import com.fr.json.JSONArray; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.config.AppDataConfig; +import com.fr.third.org.apache.commons.collections4.CollectionUtils; +import com.fr.third.org.apache.commons.lang3.time.DateFormatUtils; +import com.fr.third.org.apache.http.entity.ContentType; +import com.fr.third.org.apache.http.entity.mime.HttpMultipartMode; +import com.fr.third.org.apache.http.entity.mime.MultipartEntityBuilder; +import com.fr.third.org.apache.http.entity.mime.content.FileBody; +import com.fr.third.org.apache.http.entity.mime.content.InputStreamBody; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.util.*; + +public class FeishuApp { + + + /** + * 获取消息类型 + * + * @param type + * @return + */ + public static String getMsgType(String type) { + if ("post".equalsIgnoreCase(type)) { + return "post"; + } + return "text"; + } + + public static String getMsgTypeNotes(String type) { + if ("post".equalsIgnoreCase(type)) { + return "富文本"; + } + return "文本"; + } + + + + /** + * 获取发送类型 + * + * @param type + * @return + */ + public static String getSendType(String type) { + if ("file".equalsIgnoreCase(type)) { + return "file"; + } + if ("message_file".equalsIgnoreCase(type)) { + return "message_file"; + } + return "message"; + } + + public static String getSendTypeNotes(String type) { + if ("file".equalsIgnoreCase(type)) { + return "文件"; + } + if ("message_file".equalsIgnoreCase(type)) { + return "消息与文件"; + } + return "消息"; + } + + public static boolean isSendMessage(String type) { + if ("message".equalsIgnoreCase(type)) { + return true; + } + if ("message_file".equalsIgnoreCase(type)) { + return true; + } + return false; + } + + + public static boolean isSendFile(String type) { + if ("file".equalsIgnoreCase(type)) { + return true; + } + if ("message_file".equalsIgnoreCase(type)) { + return true; + } + return false; + } + + + /** + * 获取 app_access_token(企业自建应用) + * + * @param appId + * @param appSecret + * @return + */ + public synchronized static String createAppAccessToken(String appId, String appSecret) throws IOException { + if (StringKit.isEmpty(appId) || StringKit.isEmpty(appSecret)) { + return ""; + } + + JSONObject bodyJson = new JSONObject(); + bodyJson.put("app_id", appId); + bodyJson.put("app_secret", appSecret); + + String url = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal"; + String configUrl = AppDataConfig.getInstance().getAccessTokenUrl(); + url = getRealValue(url, configUrl); + url = getEscbUrl("accessTokenUrl", url); + String content = Utils.createHttpPostContentWithHttpClient(url, bodyJson.toString(), "application/json; charset=utf-8"); + if (StringKit.isEmpty(content)) { + return ""; + } + JSONObject contentJson = new JSONObject(content); + int code = contentJson.getInt("code"); + if (code != 0) { + return ""; + } + String token = contentJson.getString("app_access_token"); + return token; + } + + + /** + * 获取登录用户身份 + * + * @param codeValue + * @param accessToken + * @return + * @throws IOException + */ + public synchronized static FeishuLoginUserBean getLoginUserInfo(String codeValue, String accessToken) throws IOException { + if (StringKit.isEmpty(codeValue) || StringKit.isEmpty(accessToken)) { + return null; + } + + JSONObject bodyJson = new JSONObject(); + bodyJson.put("grant_type", "authorization_code"); + bodyJson.put("code", codeValue); + + String authorizationValue = "Bearer " + accessToken; + String url = "https://open.feishu.cn/open-apis/authen/v1/access_token"; + String configUrl = AppDataConfig.getInstance().getCodeUserUrl(); + url = getRealValue(url, configUrl); + String content = Utils.createHttpPostContentWithHttpClient(url, bodyJson.toString(), authorizationValue, "application/json; charset=utf-8"); + if (StringKit.isEmpty(content)) { + return null; + } + JSONObject contentJson = new JSONObject(content); + int code = contentJson.getInt("code"); + if (code != 0) { + return null; + } + JSONObject dataJson = contentJson.getJSONObject("data"); + FeishuLoginUserBean userBean = new FeishuLoginUserBean(); + userBean.setUserId(dataJson.getString("user_id", "")); + userBean.setName(dataJson.getString("name", "")); + userBean.setEnName(dataJson.getString("en_name", "")); + userBean.setMobile(dataJson.getString("mobile", "")); + return userBean; + } + + + /** + * 获取用户或机器人所在的群列表 + * + * @param accessToken + * @return + * @throws IOException + */ + public synchronized static List getChatGroups(String accessToken) throws IOException { + List chatGroups = new ArrayList<>(); + if (StringKit.isEmpty(accessToken)) { + return chatGroups; + } + + String authorizationValue = "Bearer " + accessToken; + String url = "https://open.feishu.cn/open-apis/im/v1/chats"; + String configUrl = AppDataConfig.getInstance().getChatGroupsUrl(); + url = getRealValue(url, configUrl) + "?page_size=100"; + url = getEscbUrl("chatGroupsUrl", url) + "&page_size=100"; + String content = Utils.createHttpGetContentWithHttpClient(url, authorizationValue, "application/json; charset=utf-8"); + if (StringKit.isEmpty(content)) { + return chatGroups; + } + JSONObject contentJson = new JSONObject(content); + int code = contentJson.getInt("code"); + if (code != 0) { + return chatGroups; + } + JSONObject dataJson = contentJson.getJSONObject("data"); + if (!contentJson.containsKey("data")) { + return chatGroups; + } + if (dataJson == null) { + return chatGroups; + } + + if ((!dataJson.containsKey("items")) && (!dataJson.containsKey("groups"))) { + return chatGroups; + } + + JSONArray itemJsons = null; + if (dataJson.containsKey("items")) { + itemJsons = dataJson.getJSONArray("items"); + } + if (dataJson.containsKey("groups")) { + itemJsons = dataJson.getJSONArray("groups"); + } + + if ((dataJson == null) || (itemJsons.size() <= 0)) { + return chatGroups; + } + + JSONObject itemJson; + FeishuChatGroupBean chatGroupBean; + for (int i = 0, max = itemJsons.size() - 1; i <= max; i++) { + itemJson = itemJsons.getJSONObject(i); + chatGroupBean = new FeishuChatGroupBean(); + chatGroupBean.setChatId(itemJson.getString("chat_id", "")); + chatGroupBean.setName(itemJson.getString("name", "")); + chatGroupBean.setDescription(itemJson.getString("description", "")); + chatGroupBean.setTenantKey(itemJson.getString("tenant_key", "")); + chatGroups.add(chatGroupBean); + } + return chatGroups; + } + + + /** + * 使用手机号或邮箱获取用户 ID + * + * @param emailSet + * @param mobileSet + * @param accessToken + * @return + * @throws IOException + */ + public synchronized static List getFeishuUserId(Set emailSet, Set mobileSet, String accessToken) throws IOException { + List feishuUserIds = new ArrayList<>(); + if (StringKit.isEmpty(accessToken)) { + return feishuUserIds; + } + + if (CollectionUtils.isEmpty(emailSet) && CollectionUtils.isEmpty(mobileSet)) { + return feishuUserIds; + } + String emailsContent = getUrlParams("emails", emailSet); + String mobilesContent = getUrlParams("mobiles", mobileSet); + + String authorizationValue = "Bearer " + accessToken; + String url = "https://open.feishu.cn/open-apis/user/v1/batch_get_id"; + String configUrl = AppDataConfig.getInstance().getUsersUrl(); + url = getRealValue(url, configUrl); + url = getEscbUrl("usersUrl", url); + int flag = 0; + if (StringKit.isNotEmpty(emailsContent)) { + if (url.indexOf("?") > 0) { + url = url + "&" + emailsContent; + } else { + url = url + "?" + emailsContent; + } + flag++; + } + + if (StringKit.isNotEmpty(mobilesContent)) { + if (url.indexOf("?") > 0) { + url = url + "&" + mobilesContent; + } else { + url = url + "?" + mobilesContent; + } + flag++; + } + if (flag == 0) { + return feishuUserIds; + } + String content = Utils.createHttpGetContentWithHttpClient(url, authorizationValue, "application/json; charset=utf-8"); + if (StringKit.isEmpty(content)) { + return feishuUserIds; + } + JSONObject contentJson = new JSONObject(content); + int code = contentJson.getInt("code"); + if (code != 0) { + return feishuUserIds; + } + + JSONObject dataJson = contentJson.getJSONObject("data"); + if (dataJson == null) { + return feishuUserIds; + } + + Set userIdSet = new HashSet<>(); + if (dataJson.containsKey("email_users")) { + JSONObject emailUsersJson = dataJson.getJSONObject("email_users"); + userIdSet.addAll(getUserIdsByJson(emailUsersJson)); + } + + if (dataJson.containsKey("mobile_users")) { + JSONObject mobileUsersJson = dataJson.getJSONObject("mobile_users"); + userIdSet.addAll(getUserIdsByJson(mobileUsersJson)); + } + + feishuUserIds.addAll(userIdSet); + return feishuUserIds; + } + + /** + * 上传图片 + * + * @param imageInputStream + * @param accessToken + * @return + * @throws IOException + */ + public synchronized static JSONObject uploadImage(InputStream imageInputStream, String accessToken) throws IOException { + JSONObject fileJson = new JSONObject(); + if (StringKit.isEmpty(accessToken) || (imageInputStream == null)) { + return fileJson; + } + String authorizationValue = "Bearer " + accessToken; + String url = "https://open.feishu.cn/open-apis/open-apis/im/v1/images"; + String configUrl = AppDataConfig.getInstance().getUploadImageUrl(); + url = getRealValue(url, configUrl); + url = getEscbUrl("uploadImageUrl", url); + MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); + multipartEntityBuilder.addTextBody("image_type", "message"); + multipartEntityBuilder.addPart("image", new InputStreamBody(imageInputStream, "image.png")); + String content = Utils.createHttpPostContentWithHttpClient(url, multipartEntityBuilder, authorizationValue, ""); + if (StringKit.isEmpty(content)) { + return fileJson; + } + JSONObject contentJson = new JSONObject(content); + int code = contentJson.getInt("code"); + if (code != 0) { + return fileJson; + } + JSONObject dataJson = contentJson.getJSONObject("data"); + if (dataJson == null) { + return fileJson; + } + return dataJson; + } + + /** + * 上传文件 + * + * @param fileType + * @param fileName + * @param fileInputStream + * @param accessToken + * @return + * @throws IOException + */ + public synchronized static JSONObject uploadFile(String fileType, String fileName, InputStream fileInputStream, String accessToken) throws IOException { + JSONObject fileJson = new JSONObject(); + if (StringKit.isEmpty(accessToken) || StringKit.isEmpty(fileName) || (fileInputStream == null)) { + return fileJson; + } + String fileTypeValue = StringKit.trim(fileType); + if (StringKit.isEmpty(fileTypeValue)) { + fileTypeValue = "stream"; + } else { + fileTypeValue = fileTypeValue.toLowerCase(); + String[] defaultFileTypes = {"opus", "mp4", "pdf", "doc", "xls", "ppt", "stream"}; + int flag = 0; + for (int i = 0, max = defaultFileTypes.length - 1; i <= max; i++) { + if (StringKit.equals(fileTypeValue, defaultFileTypes[i])) { + flag++; + break; + } + } + if (flag == 0) { + fileTypeValue = "stream"; + } + } + + String authorizationValue = "Bearer " + accessToken; + String url = "https://open.feishu.cn/open-apis/open-apis/im/v1/files"; + String configUrl = AppDataConfig.getInstance().getUploadFileUrl(); + url = getRealValue(url, configUrl); + url = getEscbUrl("uploadFileUrl", url); + MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); + multipartEntityBuilder.addTextBody("file_type", fileTypeValue,ContentType.create("text/plain",Charset.forName("UTF-8"))); + multipartEntityBuilder.addTextBody("file_name", fileName,ContentType.create("text/plain",Charset.forName("UTF-8"))); + multipartEntityBuilder.addBinaryBody("file", fileInputStream); + String content = Utils.createHttpPostContentWithHttpClient(url, multipartEntityBuilder, authorizationValue, ""); + if (StringKit.isEmpty(content)) { + return fileJson; + } + JSONObject contentJson = new JSONObject(content); + int code = contentJson.getInt("code"); + if (code != 0) { + return fileJson; + } + JSONObject dataJson = contentJson.getJSONObject("data"); + if (dataJson == null) { + return fileJson; + } + return dataJson; + } + + public static boolean isValidFileJson(JSONObject fileJson) { + if (fileJson == null) { + return false; + } + + if (fileJson.containsKey("file_key")) { + return true; + } + return false; + } + + public static boolean isValidImageJson(JSONObject fileJson) { + if (fileJson == null) { + return false; + } + + if (fileJson.containsKey("image_key")) { + return true; + } + return false; + } + + /** + * 发送消息 + * + * @param receiveIdType + * @param receiveId + * @param msgContent + * @param msgType + * @param accessToken + * @throws IOException + */ + public synchronized static void sendMessage(String receiveIdType, String receiveId, String msgContent, String msgType, String accessToken) throws IOException { + if (StringKit.isEmpty(receiveIdType) || StringKit.isEmpty(receiveId) || StringKit.isEmpty(msgContent) || StringKit.isEmpty(msgType) || StringKit.isEmpty(accessToken)) { + return; + } + + JSONObject bodyJson = new JSONObject(); + //bodyJson.put("receive_id_type", receiveIdType); + bodyJson.put("receive_id", receiveId); + bodyJson.put("content", msgContent); + bodyJson.put("msg_type", msgType); + + String authorizationValue = "Bearer " + accessToken; + String url = "https://open.feishu.cn/open-apis/im/v1/messages"; + String configUrl = AppDataConfig.getInstance().getSendMessageUrl(); + url = getRealValue(url, configUrl) + "?receive_id_type=" + receiveIdType; + url = getEscbUrl("sendMessageUrl", url) + "&receive_id_type=" + receiveIdType; + String content = Utils.createHttpPostContentWithHttpClient(url, bodyJson.toString(), authorizationValue, "application/json; charset=utf-8"); + } + + /** + * 发送文本消息 + * + * @param receiveIdType + * @param receiveId + * @param textContent + * @param accessToken + * @throws IOException + */ + public static void sendMessageWithText(String receiveIdType, String receiveId, String textContent, String accessToken) throws IOException { + JSONObject textJson = new JSONObject(); + textJson.put("text", textContent); + sendMessage(receiveIdType, receiveId, textJson.toString(), "text", accessToken); + } + + /** + * 发送群文本消息 + * + * @param chatId + * @param textContent + * @param accessToken + * @throws IOException + */ + public static void sendGroupMessageWithText(String chatId, String textContent, String accessToken) throws IOException { + sendMessageWithText("chat_id", chatId, textContent, accessToken); + } + + public static void sendMessageWithImage(String receiveIdType, String receiveId, String imageContent, String accessToken) throws IOException { + sendMessage(receiveIdType, receiveId, imageContent, "image", accessToken); + } + + public static void sendGroupMessageWithImage(String chatId, String imageContent, String accessToken) throws IOException { + sendMessageWithImage("chat_id", chatId, imageContent, accessToken); + } + + public static void sendMessageWithFile(String receiveIdType, String receiveId, String fileContent, String accessToken) throws IOException { + sendMessage(receiveIdType, receiveId, fileContent, "file", accessToken); + } + + public static void sendMessageWithFileByUserId(String receiveId, String fileContent, String accessToken) throws IOException { + sendMessage("user_id", receiveId, fileContent, "file", accessToken); + } + + public static void sendGroupMessageWithFile(String chatId, String fileContent, String accessToken) throws IOException { + sendMessageWithFile("chat_id", chatId, fileContent, accessToken); + } + + + public synchronized static void sendBatchMessage(List userIds, String msgContent, String msgType, String accessToken) throws IOException { + if (CollectionUtils.isEmpty(userIds) || StringKit.isEmpty(msgContent) || StringKit.isEmpty(msgType) || StringKit.isEmpty(accessToken)) { + return; + } + + JSONArray userIdJsons = new JSONArray(); + for (int i = 0, max = userIds.size() - 1; i <= max; i++) { + userIdJsons.add(userIds.get(i)); + } + JSONObject bodyJson = new JSONObject(); + bodyJson.put("content", new JSONObject(msgContent)); + bodyJson.put("msg_type", msgType); + bodyJson.put("user_ids", userIdJsons); + + String authorizationValue = "Bearer " + accessToken; + String url = "https://open.feishu.cn/open-apis/message/v4/batch_send"; + String configUrl = AppDataConfig.getInstance().getSendBatchMessageUrl(); + url = getRealValue(url, configUrl); + url = getEscbUrl("sendBatchMessageUrl", url); + String content = Utils.createHttpPostContentWithHttpClient(url, bodyJson.toString(), authorizationValue, "application/json; charset=utf-8"); + } + + + private static String getEscbUrl(String type, String originalUrl) { + boolean escbOption = false; + String escbCode = ""; + String escbVersion = ""; + + if ("accessTokenUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isAccessTokenUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getAccessTokenUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getAccessTokenUrlEscbVersion(); + } else if ("codeUserUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isCodeUserUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getCodeUserUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getCodeUserUrlEscbVersion(); + } else if ("chatGroupsUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isChatGroupsUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getChatGroupsUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getChatGroupsUrlEscbVersion(); + } else if ("usersUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isUsersUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getUsersUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getUsersUrlEscbVersion(); + } else if ("sendMessageUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isSendMessageUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getSendMessageUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getSendMessageUrlEscbVersion(); + } else if ("sendBatchMessageUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isSendBatchMessageUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getSendBatchMessageUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getSendBatchMessageUrlEscbVersion(); + } else if ("uploadImageUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isUploadImageUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getUploadImageUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getUploadImageUrlEscbVersion(); + } else if ("uploadFileUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isUploadFileUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getUploadFileUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getUploadFileUrlEscbVersion(); + } else if ("authorizeUrl".equals(type)) { + escbOption = AppDataConfig.getInstance().isAuthorizeUrlEscbOption(); + escbCode = AppDataConfig.getInstance().getAuthorizeUrlEscbCode(); + escbVersion = AppDataConfig.getInstance().getAuthorizeUrlEscbVersion(); + } else { + return originalUrl; + } + + if ((!escbOption) || StringKit.isEmpty(escbCode)) { + return originalUrl; + } + + if (StringKit.isEmpty(escbVersion)) { + escbVersion = "1.0"; + } + + String ssdpValue = "Api_ID=" + escbCode + + "&Api_Version=" + escbVersion + + "&App_Sub_ID=" + AppDataConfig.getInstance().getEscbAppCode() + + "&App_Token=" + AppDataConfig.getInstance().getEscbAppToken() + + "&Partner_ID=" + AppDataConfig.getInstance().getEscbOrgCode() + + "&Sign=NO_SIGN" + + "&Sys_ID=" + AppDataConfig.getInstance().getEscbSysCode() + + "&Time_Stamp=" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss:SSS") + + "&User_Token="; + LogKit.info("飞书集成," + type + ",ssdp:" + ssdpValue); + + Base64.Encoder encoder = Base64.getEncoder(); + String url = AppDataConfig.getInstance().getEscbUrl() + "?ssdp=" + new String(encoder.encode(ssdpValue.getBytes())); + LogKit.info("飞书集成,ssdp url:" + url); + return url; + } + + + public static void sendBatchMessageWithText(List userIds, String textContent, String accessToken) throws IOException { + JSONObject textJson = new JSONObject(); + textJson.put("text", textContent); + sendBatchMessage(userIds, textJson.toString(), "text", accessToken); + } + + public static void sendBatchMessageWithRichText(List userIds, String textContent, String accessToken) throws IOException { + JSONObject textJson = new JSONObject(); + textJson.put("post", new JSONObject(textContent)); + sendBatchMessage(userIds, textJson.toString(), "post", accessToken); + } + + + public static void sendBatchMessageWithImage(List userIds, String imageContent, String accessToken) throws IOException { + sendBatchMessage(userIds, imageContent, "image", accessToken); + } + + public static void sendBatchMessageWithFile(List userIds, String fileContent, String accessToken) throws IOException { + //sendBatchMessage(userIds, fileContent, "file", accessToken); + //批量发送不支持发送文件 + if (CollectionUtils.isEmpty(userIds)) { + return; + } + for (int i = 0, max = userIds.size() - 1; i <= max; i++) { + sendMessageWithFileByUserId(userIds.get(i), fileContent, accessToken); + } + } + + + private static List getUserIdsByJson(JSONObject dataJson) { + List userIds = new ArrayList<>(); + if (dataJson == null) { + return userIds; + } + + Set fieldNames = dataJson.fieldNames(); + if (CollectionUtils.isEmpty(fieldNames)) { + return userIds; + } + + JSONArray tempJsons; + JSONObject tempJson; + for (String fieldName : fieldNames) { + tempJsons = dataJson.getJSONArray(fieldName); + if ((tempJsons == null) || (tempJsons.size() <= 0)) { + continue; + } + for (int i = 0, max = tempJsons.size() - 1; i <= max; i++) { + tempJson = tempJsons.getJSONObject(i); + userIds.add(tempJson.getString("user_id")); + } + } + return userIds; + } + + + private static String getUrlParams(String paramName, Set valueSet) { + if (StringKit.isEmpty(paramName) || CollectionUtils.isEmpty(valueSet)) { + return ""; + } + List values = new ArrayList<>(); + values.addAll(valueSet); + String paramsContent = ""; + String value; + int count = 0; + for (int i = 0, max = values.size() - 1; i <= max; i++) { + if (count >= 1) { + paramsContent = paramsContent + "&"; + } + value = values.get(i); + if (StringKit.isEmpty(value)) { + continue; + } + paramsContent = paramsContent + paramName + "=" + value; + count++; + } + return paramsContent; + } + + + private static String getRealValue(String value, String value1) { + String tempValue = StringKit.trim(value1); + if (StringKit.isEmpty(tempValue)) { + return value; + } + return tempValue; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuChatGroupBean.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuChatGroupBean.java new file mode 100644 index 0000000..d0c2e29 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuChatGroupBean.java @@ -0,0 +1,55 @@ +package com.fr.plugin.third.party.jsdjjed.feishu; + +import java.io.Serializable; + +public class FeishuChatGroupBean implements Serializable { + /** + * 群组 ID chat_id + */ + private String chatId; + /** + * 群名称 + */ + private String name; + /** + * 群描述 + */ + private String description; + /** + * tenant_key + */ + private String tenantKey; + + + public String getChatId() { + return chatId; + } + + public void setChatId(String chatId) { + this.chatId = chatId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getTenantKey() { + return tenantKey; + } + + public void setTenantKey(String tenantKey) { + this.tenantKey = tenantKey; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuLoginUserBean.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuLoginUserBean.java new file mode 100644 index 0000000..0fde8ae --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/feishu/FeishuLoginUserBean.java @@ -0,0 +1,63 @@ +package com.fr.plugin.third.party.jsdjjed.feishu; + +import com.fanruan.api.util.StringKit; + +import java.io.Serializable; + +public class FeishuLoginUserBean implements Serializable { + /** + * 用户 user_id + */ + private String userId; + /** + * 用户姓名 + */ + private String name; + /** + * 用户英文名称 + */ + private String enName; + /** + * 用户手机号 + */ + private String mobile; + + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEnName() { + return enName; + } + + public void setEnName(String enName) { + this.enName = enName; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String value) { + if (StringKit.isEmpty(value)) { + this.mobile = ""; + } + if (value.startsWith("+86")) { + value = value.substring(3); + } + this.mobile = value; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/handle/ImageOutputFormat.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/handle/ImageOutputFormat.java new file mode 100644 index 0000000..e617504 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/handle/ImageOutputFormat.java @@ -0,0 +1,29 @@ +package com.fr.plugin.third.party.jsdjjed.handle; + +import com.fr.general.ReportDeclareRecordType; +import com.fr.io.exporter.ScaledImageExporter; +import com.fr.main.workbook.ResultWorkBook; +import com.fr.schedule.extension.report.job.output.BaseOutputFormat; + +import java.io.OutputStream; + +public class ImageOutputFormat extends BaseOutputFormat { + public static final int FORMAT_IMAGE = 4096; + + public int getFormat() { + return FORMAT_IMAGE; + } + + public String getFileSuffix() { + return ".png"; + } + + + public void flush(OutputStream outputStream, ResultWorkBook resultWorkBook) throws Exception { + + ScaledImageExporter exporter = new ScaledImageExporter(ReportDeclareRecordType.EXPORT_TYPE_IMAGE_PNG.getTypeString(), 96); + exporter.export(outputStream, resultWorkBook); + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomHttpHandlerProvider.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomHttpHandlerProvider.java new file mode 100644 index 0000000..6e95bd8 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomHttpHandlerProvider.java @@ -0,0 +1,23 @@ +package com.fr.plugin.third.party.jsdjjed.http; + +import com.fr.decision.fun.impl.AbstractHttpHandlerProvider; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.plugin.third.party.jsdjjed.http.app.*; + + +public class CustomHttpHandlerProvider extends AbstractHttpHandlerProvider { + @Override + public BaseHttpHandler[] registerHandlers() { + return new BaseHttpHandler[]{ + new AddAppHttpHandler(), + new DeleteAppHttpHandler(), + new EditAppHttpHandler(), + new QueryAppHttpHandler(), + new ForbidAppHttpHandler(), + new QueryAppConfigHttpHandler(), + new SaveAppConfigHttpHandler(), + new QueryChatGroupsHttpHandler(), + new SynchronizeSourceHttpHandler() + }; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomURLAliasProvider.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomURLAliasProvider.java new file mode 100644 index 0000000..fcb0ff4 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/CustomURLAliasProvider.java @@ -0,0 +1,22 @@ +package com.fr.plugin.third.party.jsdjjed.http; + +import com.fr.decision.fun.impl.AbstractURLAliasProvider; +import com.fr.decision.webservice.url.alias.URLAlias; +import com.fr.decision.webservice.url.alias.URLAliasFactory; + +public class CustomURLAliasProvider extends AbstractURLAliasProvider { + @Override + public URLAlias[] registerAlias() { + return new URLAlias[]{ + URLAliasFactory.createPluginAlias("/jsdjjed/add/app", "/jsdjjed/add/app", true), + URLAliasFactory.createPluginAlias("/jsdjjed/delete/app", "/jsdjjed/delete/app", true), + URLAliasFactory.createPluginAlias("/jsdjjed/edit/app", "/jsdjjed/edit/app", true), + URLAliasFactory.createPluginAlias("/jsdjjed/query/app", "/jsdjjed/query/app", true), + URLAliasFactory.createPluginAlias("/jsdjjed/forbid/app", "/jsdjjed/forbid/app", true), + URLAliasFactory.createPluginAlias("/jsdjjed/query/config/app", "/jsdjjed/query/config/app", true), + URLAliasFactory.createPluginAlias("/jsdjjed/save/config/app", "/jsdjjed/save/config/app", true), + URLAliasFactory.createPluginAlias("/jsdjjed/query/chat/group", "/jsdjjed/query/chat/group", true), + URLAliasFactory.createPluginAlias("/jsdjjed/synchronize/source", "/jsdjjed/synchronize/source", true), + }; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/SessionGlobalRequestFilterProvider.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/SessionGlobalRequestFilterProvider.java new file mode 100644 index 0000000..249ead3 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/SessionGlobalRequestFilterProvider.java @@ -0,0 +1,566 @@ +package com.fr.plugin.third.party.jsdjjed.http; + +import com.fanruan.api.log.LogKit; +import com.fanruan.api.query.QueryConditionKit; +import com.fanruan.api.query.RestrictionKit; +import com.fanruan.api.util.StringKit; +import com.fr.decision.authority.AuthorityContext; +import com.fr.decision.authority.data.User; +import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; +import com.fr.decision.webservice.v10.login.LoginService; +import com.fr.decision.webservice.v10.user.UserService; +import com.fr.general.ComparatorUtils; +import com.fr.plugin.context.PluginContexts; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.plugin.third.party.jsdjjed.config.AppDataConfig; +import com.fr.plugin.third.party.jsdjjed.feishu.FeishuApp; +import com.fr.plugin.third.party.jsdjjed.feishu.FeishuLoginUserBean; +import com.fr.stable.query.condition.QueryCondition; +import com.fr.web.utils.WebUtils; + +import javax.servlet.FilterChain; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; + + +public class SessionGlobalRequestFilterProvider extends AbstractGlobalRequestFilterProvider { + private static String DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"; + + @Override + public String filterName() { + return "ttt.com.fr.plugin.third.party.jsdjjed"; + } + + @Override + public String[] urlPatterns() { + return new String[]{"/decision", "/decision/*"}; + } + + @Override + public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) { + try { + + String fullUrl = Utils.getFullRequestUrl(req); + String method = req.getMethod(); + LogKit.info("飞书登录集成,记录访问地址:" + method + " " + fullUrl); + if (!"GET".equalsIgnoreCase(method)) { + filterChain.doFilter(req, res); + return; + } + + String reqUrl = Utils.getRequestUrl(req); + + if (Utils.isDecisionLoginRequest(req)) { + filterChain.doFilter(req, res); + return; + } + + if (reqUrl.indexOf("/remote/") >= 0) { + filterChain.doFilter(req, res); + return; + } + + if (reqUrl.indexOf("terminal=H5") >= 0) { + filterChain.doFilter(req, res); + return; + } + + if (reqUrl.indexOf("__device__=") >= 0) { + filterChain.doFilter(req, res); + return; + } + + if (reqUrl.indexOf("/weixin/") >= 0) { + filterChain.doFilter(req, res); + return; + } + + if (reqUrl.indexOf("/dingtalk/") >= 0) { + filterChain.doFilter(req, res); + return; + } + + String state; + if (isAllowLoginWithParameter(req)) { + reqUrl = getRequestUrl(req); + state = UUID.randomUUID().toString(); + AppDataConfig.getInstance().addMapUrl(state, reqUrl); + String tempUrl = getFullAuthorizeUrl(state); + LogKit.info("飞书登录集成,请求认证地址:" + tempUrl); + sendRedirect(res, tempUrl); + return; + } + + if (isAllowLoginWithLightApp(req)) { + reqUrl = getRequestUrl(req); + state = UUID.randomUUID().toString(); + AppDataConfig.getInstance().addMapUrl(state, reqUrl); + LogKit.info("飞书登录集成,报表轻应用跳转"); + AppConfigEntity appConfigEntity = AppConfigData.queryAppConfigDataWithLogin(); + if (appConfigEntity == null) { + LogKit.info("飞书登录集成,报表轻应用跳转,没有获取到登录飞书凭证"); + filterChain.doFilter(req, res); + return; + } + String loginContent = "\n" + + "\n" + + "\n" + + " \n" + + " \n" + + " 数据决策系统\n" + + " \n" + + " \n" + + " \n" + + "\n" + + "\n" + + "

轻应用跳转中,请稍等...

\n" + + //""+ + "\n" + + "\n" + + "\n"; + res.setContentType("text/html;charset=UTF-8"); + WebUtils.printAsString(res, loginContent); + res.setStatus(200); + return; + } + + String loginUsername = getOauthLoginUsername(req); + if (StringKit.isEmpty(loginUsername)) { + filterChain.doFilter(req, res); + return; + } + LogKit.info("飞书登录集成,用户名:" + loginUsername); + + User user = UserService.getInstance().getUserByUserName(loginUsername); + boolean tipsOption = false; + String tipsContent = ""; + if (user == null) { + tipsOption = true; + LogKit.info("飞书登录集成,用户名:" + loginUsername + "在报表平台不存在"); + tipsContent = "在报表服务器上不存在"; + } else if (!user.isEnable()) { + tipsOption = true; + LogKit.info("飞书登录集成,用户名:" + loginUsername + "在报表平台上被禁用"); + tipsContent = "在报表平台上被禁用"; + } + + //添加认证 + if (!PluginContexts.currentContext().isAvailable()) { + tipsOption = true; + LogKit.error("飞书登录集成插件试用过期, 请购买许可证"); + tipsContent = "飞书登录集成插件试用过期, 请购买许可证"; + } + + if (tipsOption) { + String jumpContent = "\n" + + "\n" + + " \n" + + " 提示\n" + + "\t\n" + + "\t\n" + + "\n" + + "\n" + + "
\n" + + " \n" + + "
\n" + + "\n" + + ""; + res.setContentType("text/html;charset=UTF-8"); + WebUtils.printAsString(res, jumpContent); + res.setStatus(200); + return; + } + + loginUsername = user.getUserName(); + LogKit.info("飞书登录集成,报表平台用户名:" + loginUsername); + + + String loginToken = LoginService.getInstance().login(req, res, loginUsername); + req.setAttribute("fine_auth_token", loginToken); + + String reqUrl1 = getRealUrl(req); + if (StringKit.isNotEmpty(reqUrl1) && (!StringKit.equals(reqUrl1, fullUrl))) { + sendRedirect(res, reqUrl1); + return; + } + filterChain.doFilter(req, res); + } catch (Exception e) { + LogKit.error("飞书登录集成出错," + e.getMessage(), e); + } + } + + private String getRealUrl(HttpServletRequest req) { + if (req == null) { + return ""; + } + String state = WebUtils.getHTTPRequestParameter(req, "state"); + if (StringKit.isEmpty(state)) { + return ""; + } + String url = AppDataConfig.getInstance().getMapUrl(state); + url = addLoginPara(url); + return url; + } + + private String addLoginPara(String url) { + if (StringKit.isEmpty(url)) { + return ""; + } + if ((url.indexOf("&login=feishu") >= 0) || (url.indexOf("?login=feishu") >= 0)) { + return url; + } + if (url.indexOf("?") >= 0) { + url = url + "&login=feishu"; + return url; + } + url = url + "?login=feishu"; + return url; + } + + + private String getFullAuthorizeUrl(String state) throws Exception { + + AppConfigEntity configEntity = AppConfigData.queryAppConfigDataWithLogin(); + if (configEntity == null) { + LogKit.error("飞书登录集成,没有登录验证的应用凭证信息0"); + return ""; + } + AppDataConfig config = AppDataConfig.getInstance(); + String tempUrl = config.getFrUrl(); + String url = config.getAuthorizeUrl() + "?app_id=" + configEntity.getAppId() + "&redirect_uri=" + tempUrl + "&state=" + state; + LogKit.info("飞书登录集成,请求用户授权地址:" + url); + return url; + } + + + private String getOauthLoginUsername(HttpServletRequest req) throws Exception { + if (req == null) { + return ""; + } + String lightAppId = StringKit.trim(WebUtils.getHTTPRequestParameter(req, "light_app_id")); + if (StringKit.isNotEmpty(lightAppId)) { + lightAppId = lightAppId.toUpperCase(); + return lightAppId; + } + + String oAuthCode = WebUtils.getHTTPRequestParameter(req, "code"); + if (StringKit.isEmpty(oAuthCode)) { + return ""; + } + LogKit.info("飞书登录集成,OAuth Code:" + oAuthCode); + + + AppConfigEntity configEntity = AppConfigData.queryAppConfigDataWithLogin(); + if (configEntity == null) { + LogKit.error("飞书登录集成,没有登录验证的应用凭证信息1"); + return ""; + } + String accessToken = FeishuApp.createAppAccessToken(configEntity.getAppId(), configEntity.getAppSecret()); + if (StringKit.isEmpty(accessToken)) { + LogKit.error("飞书登录集成,获取app_access_token为空"); + return ""; + } + FeishuLoginUserBean loginUserBean = FeishuApp.getLoginUserInfo(oAuthCode, accessToken); + if (loginUserBean == null) { + LogKit.error("飞书登录集成,获取登录信息为空"); + return ""; + } + + String loginMap = configEntity.getLoginMap(); + QueryCondition queryCondition = getUserQueryCondition(loginMap, loginUserBean); + if (queryCondition == null) { + LogKit.error("飞书登录集成,用户信息没有有效的映射匹配"); + return ""; + } + List perfectMatchUsers = AuthorityContext.getInstance().getUserController().find(queryCondition); + if ((perfectMatchUsers == null) || (perfectMatchUsers.size() <= 0)) { + LogKit.error("飞书登录集成,没有匹配到用户信息"); + return ""; + } + if (perfectMatchUsers.size() >= 2) { + LogKit.error("飞书登录集成,匹配到多个用户信息"); + return ""; + } + User user = perfectMatchUsers.get(0); + String username = user.getUserName(); + return username; + } + + + private QueryCondition getUserQueryCondition(String loginMap, FeishuLoginUserBean loginUserBean) { + if (StringKit.isEmpty(loginMap)) { + loginMap = "name"; + } + Set usernameValues = new HashSet<>(); + String[] loginNames = loginMap.split(","); + String loginName; + String mobile = ""; + for (int i = 0, max = loginNames.length - 1; i <= max; i++) { + loginName = StringKit.trim(loginNames[i]); + if (StringKit.isEmpty(loginName)) { + continue; + } + if (StringKit.equalsIgnoreCase("name", loginName) && StringKit.isNotEmpty(loginUserBean.getName())) { + usernameValues.add(loginUserBean.getName()); + } else if (StringKit.equalsIgnoreCase("en_name", loginName) && StringKit.isNotEmpty(loginUserBean.getEnName())) { + usernameValues.add(loginUserBean.getEnName()); + } else if (StringKit.equalsIgnoreCase("user_id", loginName) && StringKit.isNotEmpty(loginUserBean.getUserId())) { + usernameValues.add(loginUserBean.getUserId()); + usernameValues.add(loginUserBean.getUserId().toUpperCase()); + } else if (StringKit.equalsIgnoreCase("mobile", loginName) && StringKit.isNotEmpty(loginUserBean.getMobile())) { + mobile = loginUserBean.getMobile(); + } + } + + int queryCount = 0; + QueryCondition queryCondition = QueryConditionKit.newQueryCondition(); + if (usernameValues.size() >= 1) { + queryCount++; + queryCondition.addRestriction(RestrictionKit.in("userName", usernameValues)); + } + if (StringKit.isNotEmpty(mobile)) { + queryCount++; + queryCondition.addRestriction(RestrictionKit.eq("mobile", mobile)); + } + if (queryCount <= 0) { + return null; + } + return queryCondition; + } + + + public synchronized static String getSysTime() { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date date = new Date(); + String nowData = format.format(date); + return nowData; + } + + private void sendRedirect(HttpServletResponse res, String url) { + res.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); + res.setHeader("Location", url); + } + + private String getRequestUrl(HttpServletRequest req) { + String fullUrl = req.getRequestURL().toString(); + fullUrl = getRealUrl(fullUrl); + Map paraMap = req.getParameterMap(); + String paraName; + String[] paraValues; + String loginTypeParaName = AppDataConfig.getInstance().getLoginTypeNameParameter(); + String queryStr = ""; + for (Map.Entry entry : paraMap.entrySet()) { + paraName = entry.getKey(); + if (ComparatorUtils.equals(paraName, loginTypeParaName)) { + continue; + } + if (ComparatorUtils.equals(paraName, "code")) { + continue; + } + if (ComparatorUtils.equals(paraName, "state")) { + continue; + } + if (ComparatorUtils.equals(paraName, "login_type")) { + continue; + } + if (ComparatorUtils.equals(paraName, "light_app")) { + continue; + } + paraValues = entry.getValue(); + queryStr = addParaToQuery(queryStr, paraName, paraValues); + } + if (StringKit.isEmpty(queryStr)) { + return fullUrl; + } + fullUrl = fullUrl + "?" + queryStr; + return fullUrl; + } + + private String getRealUrl(String url) { + if (StringKit.isEmpty(url)) { + return url; + } + int index = url.indexOf("/decision"); + if (index < 0) { + return url; + } + String tempUrl = AppDataConfig.getInstance().getFrUrl() + url.substring(index + "/decision".length()); + return tempUrl; + } + + + private String addParaToQuery(String query, String paraName, String[] paraValues) { + if (StringKit.isEmpty(paraName)) { + return query; + } + String fullQuery = query; + if ((paraValues == null) || (paraValues.length <= 0)) { + if (StringKit.isNotEmpty(fullQuery)) { + fullQuery = fullQuery + "&"; + } + fullQuery = fullQuery + paraName + "="; + return fullQuery; + } + for (int i = 0, max = paraValues.length - 1; i <= max; i++) { + if (StringKit.isNotEmpty(fullQuery)) { + fullQuery = fullQuery + "&"; + } + fullQuery = fullQuery + paraName + "=" + Utils.encodeUrlWithUtf8(paraValues[i]); + } + return fullQuery; + } + + + private boolean isAllowLoginWithParameter(HttpServletRequest req) { + if (req == null) { + return false; + } + String loginTypeNameParameter = "login_type"; + String loginTypeConfigValue = "feishu"; + if (StringKit.isEmpty(loginTypeNameParameter) || StringKit.isEmpty(loginTypeConfigValue)) { + return false; + } + String loginTypeValue = WebUtils.getHTTPRequestParameter(req, loginTypeNameParameter); + return ComparatorUtils.equalsIgnoreCase(loginTypeConfigValue, loginTypeValue); + } + + + private boolean isAllowLoginWithLightApp(HttpServletRequest req) { + if (req == null) { + return false; + } + String loginTypeNameParameter = "light_app"; + String loginTypeConfigValue = "feishu"; + if (StringKit.isEmpty(loginTypeNameParameter) || StringKit.isEmpty(loginTypeConfigValue)) { + return false; + } + String loginTypeValue = WebUtils.getHTTPRequestParameter(req, loginTypeNameParameter); + return ComparatorUtils.equalsIgnoreCase(loginTypeConfigValue, loginTypeValue); + } + + + private boolean isReportRequest(HttpServletRequest req) { + if (req == null) { + return false; + } + if (!"GET".equalsIgnoreCase(req.getMethod())) { + return false; + } + String url = req.getRequestURL().toString(); + if (url.endsWith("/decision") || url.endsWith("/decision/")) { + return true; + } + if ((url.indexOf("/decision/") >= 0) && (url.indexOf("/entry/access/") >= 0)) { + return true; + } + String viewlet = WebUtils.getHTTPRequestParameter(req, "viewlet"); + if ((url.indexOf("/decision/view/report") >= 0) && (StringKit.isNotEmpty(viewlet))) { + return true; + } + if ((url.indexOf("/decision/view/form") >= 0) && (StringKit.isNotEmpty(viewlet))) { + return true; + } + return false; + } + + private boolean isOauthCodeRequest(HttpServletRequest req) throws IOException { + if (req == null) { + return false; + } + if (!"GET".equalsIgnoreCase(req.getMethod())) { + return false; + } + String oAuthCode = WebUtils.getHTTPRequestParameter(req, "code"); + if (StringKit.isNotEmpty(oAuthCode)) { + return true; + } + return false; + } + + + private boolean isNoAuthRequest(HttpServletRequest req) throws IOException { + if (req == null) { + return false; + } + if (!"GET".equalsIgnoreCase(req.getMethod())) { + return false; + } + String oAuthCode = WebUtils.getHTTPRequestParameter(req, "loginType"); + if (StringKit.equalsIgnoreCase("noauth", oAuthCode)) { + return true; + } + return false; + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/AddAppHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/AddAppHttpHandler.java new file mode 100644 index 0000000..e615a8b --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/AddAppHttpHandler.java @@ -0,0 +1,62 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fanruan.api.util.StringKit; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.general.IOUtils; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + */ +public class AddAppHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.POST; + } + + @Override + public String getPath() { + return "/jsdjjed/add/app"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + String repBody = IOUtils.inputStream2String(req.getInputStream(), "UTF-8"); + if (StringKit.isEmpty(repBody)) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("请求内容为空")); + return; + } + JSONObject reqJson = new JSONObject(repBody); + AppConfigEntity appConfigEntity = reqJson.mapTo(AppConfigEntity.class); + appConfigEntity.setConfigId(toLowerCase(appConfigEntity.getConfigId())); + if (AppConfigData.isAppConfigDataExistsWithConfigId(appConfigEntity.getConfigId())) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("应用唯一标识已存在")); + return; + } + AppConfigData.addAppConfigData(appConfigEntity); + WebUtils.printAsJSON(res, Utils.getSuccessResultJson()); + } + + private String toLowerCase(String value) { + if (StringKit.isEmpty(value)) { + return ""; + } + return value.toLowerCase(); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/DeleteAppHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/DeleteAppHttpHandler.java new file mode 100644 index 0000000..322b543 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/DeleteAppHttpHandler.java @@ -0,0 +1,62 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fanruan.api.util.StringKit; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.general.IOUtils; +import com.fr.json.JSONArray; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + */ +public class DeleteAppHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.DELETE; + } + + @Override + public String getPath() { + return "/jsdjjed/delete/app"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + String repBody = IOUtils.inputStream2String(req.getInputStream(), "UTF-8"); + if (StringKit.isEmpty(repBody)) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("请求内容为空")); + return; + } + + JSONObject removeJson = new JSONObject(repBody); + JSONArray idJsons = removeJson.getJSONArray("removeUserIds"); + if ((idJsons == null) || (idJsons.size() <= 0)) { + WebUtils.printAsJSON(res, Utils.getSuccessResultJson()); + return; + } + String id; + int size = idJsons.size(); + for (int i = 0, max = size - 1; i <= max; i++) { + id = idJsons.getString(i); + AppConfigData.deleteAppConfigDataWithId(id); + } + String resultContent = "{\"data\":{\"count\":" + size + "},\"stauts\":\"success\"}"; + WebUtils.printAsString(res, resultContent); + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/EditAppHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/EditAppHttpHandler.java new file mode 100644 index 0000000..4bdd8d7 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/EditAppHttpHandler.java @@ -0,0 +1,60 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fanruan.api.util.StringKit; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.general.IOUtils; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +public class EditAppHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.PUT; + } + + @Override + public String getPath() { + return "/jsdjjed/edit/app"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + String repBody = IOUtils.inputStream2String(req.getInputStream(), "UTF-8"); + if (StringKit.isEmpty(repBody)) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("请求内容为空")); + return; + } + JSONObject reqJson = new JSONObject(repBody); + AppConfigEntity appConfigEntity = reqJson.mapTo(AppConfigEntity.class); + if (AppConfigData.isAppConfigDataExistsWithConfigId(appConfigEntity.getConfigId(), appConfigEntity.getId())) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("应用唯一标识已存在")); + return; + } + + AppConfigEntity entity = AppConfigData.queryAppConfigDataWithConfigIdAndOnlyOne(appConfigEntity.getConfigId()); + if (entity == null) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("应用唯一标识不存在")); + return; + } + appConfigEntity.setLogin(entity.getLogin()); + AppConfigData.updateAppConfigData(appConfigEntity); + WebUtils.printAsJSON(res, Utils.getSuccessResultJson()); + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/ForbidAppHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/ForbidAppHttpHandler.java new file mode 100644 index 0000000..bd0c1f0 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/ForbidAppHttpHandler.java @@ -0,0 +1,64 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fanruan.api.util.StringKit; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.general.IOUtils; +import com.fr.json.JSONArray; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + */ +public class ForbidAppHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.PUT; + } + + @Override + public String getPath() { + return "/jsdjjed/forbid/app"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + String repBody = IOUtils.inputStream2String(req.getInputStream(), "UTF-8"); + if (StringKit.isEmpty(repBody)) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("请求内容为空")); + return; + } + + JSONObject forbidJson = new JSONObject(repBody); + boolean enable = forbidJson.getBoolean("enable"); + String id = forbidJson.getString("id"); + + int login = 0; + if (enable) { + login = 1; + } + AppConfigEntity entity = AppConfigData.queryAppConfigDataWithId(id); + if (entity == null) { + WebUtils.printAsJSON(res, Utils.getSuccessResultJson()); + return; + } + + entity.setLogin(login); + AppConfigData.updateAppConfigData(entity); + WebUtils.printAsJSON(res, Utils.getSuccessResultJson()); + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppConfigHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppConfigHttpHandler.java new file mode 100644 index 0000000..a84c1c6 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppConfigHttpHandler.java @@ -0,0 +1,97 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.json.JSONArray; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.plugin.third.party.jsdjjed.config.AppDataConfig; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * + */ +public class QueryAppConfigHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.GET; + } + + @Override + public String getPath() { + return "/jsdjjed/query/config/app"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + JSONObject dataJson = getConfigJsonData(); + WebUtils.printAsJSON(res, dataJson); + } + + private JSONObject getConfigJsonData() { + JSONObject dataJson = new JSONObject(); + dataJson.put("frUrl", AppDataConfig.getInstance().getFrUrl()); + dataJson.put("accessTokenUrl", AppDataConfig.getInstance().getAccessTokenUrl()); + dataJson.put("codeUserUrl", AppDataConfig.getInstance().getCodeUserUrl()); + dataJson.put("chatGroupsUrl", AppDataConfig.getInstance().getChatGroupsUrl()); + dataJson.put("usersUrl", AppDataConfig.getInstance().getUsersUrl()); + dataJson.put("sendMessageUrl", AppDataConfig.getInstance().getSendMessageUrl()); + dataJson.put("sendBatchMessageUrl", AppDataConfig.getInstance().getSendBatchMessageUrl()); + dataJson.put("uploadImageUrl", AppDataConfig.getInstance().getUploadImageUrl()); + dataJson.put("uploadFileUrl", AppDataConfig.getInstance().getUploadFileUrl()); + dataJson.put("authorizeUrl", AppDataConfig.getInstance().getAuthorizeUrl()); + + dataJson.put("accessTokenUrlEscbOption", AppDataConfig.getInstance().isAccessTokenUrlEscbOption()); + dataJson.put("codeUserUrlEscbOption", AppDataConfig.getInstance().isCodeUserUrlEscbOption()); + dataJson.put("chatGroupsUrlEscbOption", AppDataConfig.getInstance().isChatGroupsUrlEscbOption()); + dataJson.put("usersUrlEscbOption", AppDataConfig.getInstance().isUsersUrlEscbOption()); + dataJson.put("sendMessageUrlEscbOption", AppDataConfig.getInstance().isSendMessageUrlEscbOption()); + dataJson.put("sendBatchMessageUrlEscbOption", AppDataConfig.getInstance().isSendBatchMessageUrlEscbOption()); + dataJson.put("uploadImageUrlEscbOption", AppDataConfig.getInstance().isUploadImageUrlEscbOption()); + dataJson.put("uploadFileUrlEscbOption", AppDataConfig.getInstance().isUploadFileUrlEscbOption()); + dataJson.put("authorizeUrlEscbOption", AppDataConfig.getInstance().isAuthorizeUrlEscbOption()); + dataJson.put("accessTokenUrlEscbCode", AppDataConfig.getInstance().getAccessTokenUrlEscbCode()); + dataJson.put("codeUserUrlEscbCode", AppDataConfig.getInstance().getCodeUserUrlEscbCode()); + dataJson.put("chatGroupsUrlEscbCode", AppDataConfig.getInstance().getChatGroupsUrlEscbCode()); + dataJson.put("usersUrlEscbCode", AppDataConfig.getInstance().getUsersUrlEscbCode()); + dataJson.put("sendMessageUrlEscbCode", AppDataConfig.getInstance().getSendMessageUrlEscbCode()); + dataJson.put("sendBatchMessageUrlEscbCode", AppDataConfig.getInstance().getSendBatchMessageUrlEscbCode()); + dataJson.put("uploadImageUrlEscbCode", AppDataConfig.getInstance().getUploadImageUrlEscbCode()); + dataJson.put("uploadFileUrlEscbCode", AppDataConfig.getInstance().getUploadFileUrlEscbCode()); + dataJson.put("authorizeUrlEscbCode", AppDataConfig.getInstance().getAuthorizeUrlEscbCode()); + dataJson.put("accessTokenUrlEscbVersion", AppDataConfig.getInstance().getAccessTokenUrlEscbVersion()); + dataJson.put("codeUserUrlEscbVersion", AppDataConfig.getInstance().getCodeUserUrlEscbVersion()); + dataJson.put("chatGroupsUrlEscbVersion", AppDataConfig.getInstance().getChatGroupsUrlEscbVersion()); + dataJson.put("usersUrlEscbVersion", AppDataConfig.getInstance().getUsersUrlEscbVersion()); + dataJson.put("sendMessageUrlEscbVersion", AppDataConfig.getInstance().getSendMessageUrlEscbVersion()); + dataJson.put("sendBatchMessageUrlEscbVersion", AppDataConfig.getInstance().getSendBatchMessageUrlEscbVersion()); + dataJson.put("uploadImageUrlEscbVersion", AppDataConfig.getInstance().getUploadImageUrlEscbVersion()); + dataJson.put("uploadFileUrlEscbVersion", AppDataConfig.getInstance().getUploadFileUrlEscbVersion()); + dataJson.put("authorizeUrlEscbVersion", AppDataConfig.getInstance().getAuthorizeUrlEscbVersion()); + dataJson.put("escbUrl", AppDataConfig.getInstance().getEscbUrl()); + dataJson.put("escbAppCode", AppDataConfig.getInstance().getEscbAppCode()); + dataJson.put("escbAppToken", AppDataConfig.getInstance().getEscbAppToken()); + dataJson.put("escbOrgCode", AppDataConfig.getInstance().getEscbOrgCode()); + dataJson.put("escbSysCode", AppDataConfig.getInstance().getEscbSysCode()); + + dataJson.put("page", 1); + JSONObject json = Utils.getSuccessResultJson(); + json.put("data", dataJson); + return json; + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppHttpHandler.java new file mode 100644 index 0000000..3c4aafb --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryAppHttpHandler.java @@ -0,0 +1,71 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.json.JSONArray; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * + */ +public class QueryAppHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.GET; + } + + @Override + public String getPath() { + return "/jsdjjed/query/app"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + List entities = AppConfigData.queryAllAppConfigData(); + JSONObject dataJson = createJsonData(entities); + WebUtils.printAsJSON(res, dataJson); + } + + private JSONObject createJsonData(List entities) { + int total = entities.size(); + JSONArray itemsJsons = new JSONArray(); + AppConfigEntity entity; + JSONObject itemsJson; + for (int i = 0, max = total - 1; i <= max; i++) { + entity = entities.get(i); + itemsJson = JSONObject.mapFrom(entity); + if (entity.getLogin() == 1) { + itemsJson.put("enable", true); + } else { + itemsJson.put("enable", false); + } + itemsJson.put("show", entity.getConfigId() + "_" + entity.getNotes()); + itemsJsons.add(itemsJson); + } + + JSONObject dataJson = new JSONObject(); + dataJson.put("total", total); + dataJson.put("page", 1); + dataJson.put("items", itemsJsons); + + JSONObject json = new JSONObject(); + json.put("data", dataJson); + return json; + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryChatGroupsHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryChatGroupsHttpHandler.java new file mode 100644 index 0000000..96ffd95 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/QueryChatGroupsHttpHandler.java @@ -0,0 +1,91 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fanruan.api.util.StringKit; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.json.JSONArray; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.plugin.third.party.jsdjjed.feishu.FeishuApp; +import com.fr.plugin.third.party.jsdjjed.feishu.FeishuChatGroupBean; +import com.fr.third.org.apache.commons.collections4.CollectionUtils; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * + */ +public class QueryChatGroupsHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.GET; + } + + @Override + public String getPath() { + return "/jsdjjed/query/chat/group"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + String configId = WebUtils.getHTTPRequestParameter(req, "config_id"); + if (StringKit.isEmpty(configId)) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("应用唯一标识为空")); + return; + } + JSONObject dataJson = createJsonData(configId); + WebUtils.printAsJSON(res, dataJson); + } + + private JSONObject createJsonData(String configId) throws Exception { + AppConfigEntity configEntity = AppConfigData.queryAppConfigDataWithConfigIdAndOnlyOne(configId); + if (configEntity == null) { + return Utils.getFailuresResultJson("应用唯一标识无效,没有对应配置信息"); + } + + String appId = configEntity.getAppId(); + String appSecret = configEntity.getAppSecret(); + String accessToken = FeishuApp.createAppAccessToken(appId, appSecret); + if (StringKit.isEmpty(accessToken)) { + return Utils.getFailuresResultJson("获取app_access_token为空"); + } + List chatGroupBeans = FeishuApp.getChatGroups(accessToken); + if (CollectionUtils.isEmpty(chatGroupBeans)) { + return Utils.getFailuresResultJson("获取群列表为空"); + } + + int total = chatGroupBeans.size(); + JSONArray itemsJsons = new JSONArray(); + FeishuChatGroupBean entity; + JSONObject itemsJson; + String show; + for (int i = 0, max = total - 1; i <= max; i++) { + entity = chatGroupBeans.get(i); + itemsJson = JSONObject.mapFrom(entity); + show = entity.getName() + "_" + entity.getChatId(); + itemsJson.put("show", show); + itemsJsons.add(itemsJson); + } + + JSONObject dataJson = new JSONObject(); + dataJson.put("total", total); + dataJson.put("page", 1); + dataJson.put("items", itemsJsons); + + JSONObject json = Utils.getSuccessResultJson(); + json.put("data", dataJson); + return json; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SaveAppConfigHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SaveAppConfigHttpHandler.java new file mode 100644 index 0000000..bbab885 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SaveAppConfigHttpHandler.java @@ -0,0 +1,105 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fanruan.api.util.StringKit; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.general.IOUtils; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.plugin.third.party.jsdjjed.config.AppDataConfig; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +public class SaveAppConfigHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.PUT; + } + + @Override + public String getPath() { + return "/jsdjjed/save/config/app"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + String repBody = IOUtils.inputStream2String(req.getInputStream(), "UTF-8"); + if (StringKit.isEmpty(repBody)) { + WebUtils.printAsJSON(res, Utils.getFailuresResultJson("请求内容为空")); + return; + } + JSONObject reqJson = new JSONObject(repBody); + String frUrl = reqJson.getString("frUrl", ""); + String accessTokenUrl = reqJson.getString("accessTokenUrl", ""); + String codeUserUrl = reqJson.getString("codeUserUrl", ""); + String chatGroupsUrl = reqJson.getString("chatGroupsUrl", ""); + String usersUrl = reqJson.getString("usersUrl", ""); + String sendMessageUrl = reqJson.getString("sendMessageUrl", ""); + String sendBatchMessageUrl = reqJson.getString("sendBatchMessageUrl", ""); + String uploadImageUrl = reqJson.getString("uploadImageUrl", ""); + String uploadFileUrl = reqJson.getString("uploadFileUrl", ""); + String authorizeUrl = reqJson.getString("authorizeUrl", ""); + + AppDataConfig.getInstance().setFrUrl(frUrl); + AppDataConfig.getInstance().setAccessTokenUrl(accessTokenUrl); + AppDataConfig.getInstance().setCodeUserUrl(codeUserUrl); + AppDataConfig.getInstance().setChatGroupsUrl(chatGroupsUrl); + AppDataConfig.getInstance().setUsersUrl(usersUrl); + AppDataConfig.getInstance().setSendMessageUrl(sendMessageUrl); + AppDataConfig.getInstance().setSendBatchMessageUrl(sendBatchMessageUrl); + AppDataConfig.getInstance().setUploadImageUrl(uploadImageUrl); + AppDataConfig.getInstance().setUploadFileUrl(uploadFileUrl); + AppDataConfig.getInstance().setAuthorizeUrl(authorizeUrl); + + AppDataConfig.getInstance().setAccessTokenUrlEscbOption(reqJson.getBoolean("accessTokenUrlEscbOption")); + AppDataConfig.getInstance().setCodeUserUrlEscbOption(reqJson.getBoolean("codeUserUrlEscbOption")); + AppDataConfig.getInstance().setChatGroupsUrlEscbOption(reqJson.getBoolean("chatGroupsUrlEscbOption")); + AppDataConfig.getInstance().setUsersUrlEscbOption(reqJson.getBoolean("usersUrlEscbOption")); + AppDataConfig.getInstance().setSendMessageUrlEscbOption(reqJson.getBoolean("sendMessageUrlEscbOption")); + AppDataConfig.getInstance().setSendBatchMessageUrlEscbOption(reqJson.getBoolean("sendBatchMessageUrlEscbOption")); + AppDataConfig.getInstance().setUploadImageUrlEscbOption(reqJson.getBoolean("uploadImageUrlEscbOption")); + AppDataConfig.getInstance().setUploadFileUrlEscbOption(reqJson.getBoolean("uploadFileUrlEscbOption")); + AppDataConfig.getInstance().setAuthorizeUrlEscbOption(reqJson.getBoolean("authorizeUrlEscbOption")); + + + AppDataConfig.getInstance().setAccessTokenUrlEscbCode(reqJson.getString("accessTokenUrlEscbCode","")); + AppDataConfig.getInstance().setCodeUserUrlEscbCode(reqJson.getString("codeUserUrlEscbCode","")); + AppDataConfig.getInstance().setChatGroupsUrlEscbCode(reqJson.getString("chatGroupsUrlEscbCode","")); + AppDataConfig.getInstance().setUsersUrlEscbCode(reqJson.getString("usersUrlEscbCode","")); + AppDataConfig.getInstance().setSendMessageUrlEscbCode(reqJson.getString("sendMessageUrlEscbCode","")); + AppDataConfig.getInstance().setSendBatchMessageUrlEscbCode(reqJson.getString("sendBatchMessageUrlEscbCode","")); + AppDataConfig.getInstance().setUploadImageUrlEscbCode(reqJson.getString("uploadImageUrlEscbCode","")); + AppDataConfig.getInstance().setUploadFileUrlEscbCode(reqJson.getString("uploadFileUrlEscbCode","")); + AppDataConfig.getInstance().setAuthorizeUrlEscbCode(reqJson.getString("authorizeUrlEscbCode","")); + AppDataConfig.getInstance().setAccessTokenUrlEscbVersion(reqJson.getString("accessTokenUrlEscbVersion","")); + AppDataConfig.getInstance().setCodeUserUrlEscbVersion(reqJson.getString("codeUserUrlEscbVersion","")); + AppDataConfig.getInstance().setChatGroupsUrlEscbVersion(reqJson.getString("chatGroupsUrlEscbVersion","")); + AppDataConfig.getInstance().setUsersUrlEscbVersion(reqJson.getString("usersUrlEscbVersion","")); + AppDataConfig.getInstance().setSendMessageUrlEscbVersion(reqJson.getString("sendMessageUrlEscbVersion","")); + AppDataConfig.getInstance().setSendBatchMessageUrlEscbVersion(reqJson.getString("sendBatchMessageUrlEscbVersion","")); + AppDataConfig.getInstance().setUploadImageUrlEscbVersion(reqJson.getString("uploadImageUrlEscbVersion","")); + AppDataConfig.getInstance().setUploadFileUrlEscbVersion(reqJson.getString("uploadFileUrlEscbVersion","")); + AppDataConfig.getInstance().setAuthorizeUrlEscbVersion(reqJson.getString("authorizeUrlEscbVersion","")); + AppDataConfig.getInstance().setEscbUrl(reqJson.getString("escbUrl","")); + AppDataConfig.getInstance().setEscbAppCode(reqJson.getString("escbAppCode","")); + AppDataConfig.getInstance().setEscbAppToken(reqJson.getString("escbAppToken","")); + AppDataConfig.getInstance().setEscbOrgCode(reqJson.getString("escbOrgCode","")); + AppDataConfig.getInstance().setEscbSysCode(reqJson.getString("escbSysCode","")); + + WebUtils.printAsJSON(res, Utils.getSuccessResultJson()); + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SynchronizeSourceHttpHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SynchronizeSourceHttpHandler.java new file mode 100644 index 0000000..9b55b65 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/http/app/SynchronizeSourceHttpHandler.java @@ -0,0 +1,46 @@ +package com.fr.plugin.third.party.jsdjjed.http.app; + +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.json.JSONObject; +import com.fr.plugin.third.party.jsdjjed.Utils; +import com.fr.plugin.third.party.jsdjjed.config.AppDataConfig; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + */ +public class SynchronizeSourceHttpHandler extends BaseHttpHandler { + + @Override + public RequestMethod getMethod() { + return RequestMethod.GET; + } + + @Override + public String getPath() { + return "/jsdjjed/synchronize/source"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { + res.setContentType("application/json; charset=utf-8"); + JSONObject dataJson = getConfigJsonData(); + WebUtils.printAsJSON(res, dataJson); + } + + private JSONObject getConfigJsonData() { + JSONObject dataJson = new JSONObject("{\"data\":{\"type\":0}}"); + return dataJson; + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/AppMessagePushHandler.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/AppMessagePushHandler.java new file mode 100644 index 0000000..70093fb --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/AppMessagePushHandler.java @@ -0,0 +1,410 @@ +package com.fr.plugin.third.party.jsdjjed.schedule; + +import com.fanruan.api.log.LogKit; +import com.fanruan.api.util.StringKit; +import com.fr.base.DataSetFunctionParameterMapNameSpace; +import com.fr.base.TemplateUtils; +import com.fr.decision.authority.AuthorityContext; +import com.fr.decision.authority.data.User; +import com.fr.io.utils.ResourceIOUtils; +import com.fr.json.JSONObject; +import com.fr.plugin.context.PluginContexts; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigData; +import com.fr.plugin.third.party.jsdjjed.app.config.AppConfigEntity; +import com.fr.plugin.third.party.jsdjjed.feishu.FeishuApp; +import com.fr.plugin.third.party.jsdjjed.schedule.bean.OutputAppMessagePush; +import com.fr.schedule.base.constant.ScheduleConstants; +import com.fr.schedule.extension.report.job.output.BaseOutputFormat; +import com.fr.schedule.feature.output.OutputActionHandler; +import com.fr.script.Calculator; +import com.fr.stable.StringUtils; +import com.fr.stable.query.QueryFactory; +import com.fr.stable.query.restriction.RestrictionFactory; +import com.fr.third.org.apache.commons.collections4.CollectionUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.*; + +public class AppMessagePushHandler extends OutputActionHandler { + + + @Override + public void doAction(OutputAppMessagePush action, Map map) throws Exception { + LogKit.info("飞书发送消息,开发发送任务........"); + String configId = action.getConfigId(); + if (StringKit.isEmpty(configId)) { + return; + } + + //添加认证 + if (!PluginContexts.currentContext().isAvailable()) { + LogKit.error("飞书登录集成插件试用过期,飞书发送消息, 请购买许可证"); + } + + + AppConfigEntity configEntity = AppConfigData.queryAppConfigDataWithConfigIdAndOnlyOne(configId); + if (configEntity == null) { + return; + } + + LogKit.info("飞书发送消息,获取token........"); + String appAccessToken = FeishuApp.createAppAccessToken(configEntity.getAppId(), configEntity.getAppSecret()); + if (StringKit.isEmpty(appAccessToken)) { + LogKit.error("飞书发送消息,获取app_access_token为空"); + return; + } + + LogKit.info("飞书发送消息,获取飞书用户和群........"); + List feishuUserIds = getFeishuUserIds(map); + String chatGroupId = action.getChatGroupId(); + if ("empty_group".equalsIgnoreCase(chatGroupId)) { + chatGroupId = ""; + } + + if (CollectionUtils.isEmpty(feishuUserIds) && StringKit.isEmpty(chatGroupId)) { + LogKit.error("飞书发送消息,飞书用户ID和群ID都为空"); + return; + } + + String msgType = FeishuApp.getMsgType(action.getFeishuMsgType()); + String sendType = FeishuApp.getSendType(action.getFeishuSendType()); + LogKit.info("飞书发送消息,消息类型:" + FeishuApp.getMsgTypeNotes(msgType)); + LogKit.info("飞书发送消息,发送类型:" + FeishuApp.getSendTypeNotes(sendType)); + if (FeishuApp.isSendMessage(sendType)) { + LogKit.info("飞书发送消息,生成发送文本........"); + Calculator cal = Calculator.createCalculator(); + String content = action.getContent(); + String msgContent = TemplateUtils.renderTpl(cal, content); + LogKit.info("飞书发送消息,发送文本:" + msgContent); + + LogKit.info("飞书发送消息,发送文本消息........"); + if (StringKit.isNotEmpty(chatGroupId) && StringKit.isNotEmpty(msgContent)) { + LogKit.info("飞书发送消息,发送群文本消息........"); + if ("text".equals(msgType)) { + FeishuApp.sendGroupMessageWithText(chatGroupId, msgContent, appAccessToken); + } else { + FeishuApp.sendMessage("chat_id", chatGroupId, msgContent, "post", appAccessToken); + } + } + + if (CollectionUtils.isNotEmpty(feishuUserIds) && StringKit.isNotEmpty(msgContent)) { + LogKit.info("飞书发送消息,发送个人文本消息........"); + if ("text".equals(msgType)) { + FeishuApp.sendBatchMessageWithText(feishuUserIds, msgContent, appAccessToken); + } else { + FeishuApp.sendBatchMessageWithRichText(feishuUserIds, msgContent, appAccessToken); + } + } + } + + if (FeishuApp.isSendFile(sendType)) { + LogKit.info("飞书发送消息,发送文件消息........"); + JSONObject commonUploadJson = getUploadFileJson(action, map, appAccessToken); + if (FeishuApp.isValidFileJson(commonUploadJson)) { + if (StringKit.isNotEmpty(chatGroupId)) { + LogKit.info("飞书发送消息,发送群文件消息........"); + FeishuApp.sendGroupMessageWithFile(chatGroupId, commonUploadJson.toString(), appAccessToken); + } + } else if (FeishuApp.isValidImageJson(commonUploadJson)) { + if (StringKit.isNotEmpty(chatGroupId)) { + LogKit.info("飞书发送消息,发送群图片消息........"); + FeishuApp.sendGroupMessageWithImage(chatGroupId, commonUploadJson.toString(), appAccessToken); + } + } + + if (CollectionUtils.isNotEmpty(feishuUserIds)) { + List userIds = getTaskUserIds(map); + String feishuUserId, userId; + List sendUserIds = new ArrayList<>(); + JSONObject uploadJson; + List tempFeishuUserIds = new ArrayList<>(); + for (int i = 0, max = userIds.size() - 1; i <= max; i++) { + userId = userIds.get(i); + feishuUserId = toLower(userId); + if (sendUserIds.contains(feishuUserId)) { + continue; + } + tempFeishuUserIds.clear(); + tempFeishuUserIds.add(feishuUserId); + uploadJson = getUserUploadFileJson(action, map, appAccessToken, userId); + if ((!FeishuApp.isValidFileJson(uploadJson)) && (!FeishuApp.isValidImageJson(uploadJson))) { + uploadJson = commonUploadJson; + } + if (FeishuApp.isValidFileJson(uploadJson)) { + if (CollectionUtils.isNotEmpty(tempFeishuUserIds)) { + LogKit.info("飞书发送消息,发送个人文件消息........"); + FeishuApp.sendBatchMessageWithFile(tempFeishuUserIds, uploadJson.toString(), appAccessToken); + } + } else if (FeishuApp.isValidImageJson(uploadJson)) { + if (CollectionUtils.isNotEmpty(tempFeishuUserIds)) { + LogKit.info("飞书发送消息,发送个人图片消息........"); + FeishuApp.sendBatchMessageWithImage(tempFeishuUserIds, uploadJson.toString(), appAccessToken); + } + } + sendUserIds.add(feishuUserId); + } + } + } + LogKit.info("飞书发送消息,结束发送任务........"); + } + + + private JSONObject getUserUploadFileJson(OutputAppMessagePush action, Map map, String appAccessToken, String userId) throws IOException { + JSONObject fileJson = new JSONObject(); + String fileType = getFileType(action); + if (StringKit.isEmpty(fileType)) { + return fileJson; + } + + String filePath = getUploadFilePath(action, map); + String fileName = getUploadFileName(filePath); + + String userFilePath = getUserUploadFilePath(action, map, userId, fileName); + if (StringKit.isEmpty(userFilePath)) { + return fileJson; + } + + InputStream fileInputStream = getUploadFileInputStream(userFilePath); + if (fileInputStream == null) { + return fileJson; + } + + if ("png".equals(fileType)) { + fileJson = FeishuApp.uploadImage(fileInputStream, appAccessToken); + return fileJson; + } + + fileJson = FeishuApp.uploadFile(fileType, fileName, fileInputStream, appAccessToken); + return fileJson; + } + + private String getUserUploadFilePath(OutputAppMessagePush action, Map map, String userId, String fileName) { + String fileType = getFileType(action); + if (StringKit.isEmpty(fileType)) { + return ""; + } + + String fileSuffix = "." + fileType; + if (StringKit.isEmpty(fileSuffix)) { + return ""; + } + String tempFilePath = String.valueOf(map.get(ScheduleConstants.SAVE_DIRECTORY_WITHOUT_USERNAME)); + if (StringKit.isEmpty(tempFilePath)) { + return ""; + } + String filePath = tempFilePath.substring(0, tempFilePath.lastIndexOf("/")) + "/" + userId + "/" + fileName; + if (StringKit.isNotEmpty(filePath) && ResourceIOUtils.exist(filePath)) { + return filePath; + } + return ""; + } + + private JSONObject getUploadFileJson(OutputAppMessagePush action, Map map, String appAccessToken) throws IOException { + JSONObject fileJson = new JSONObject(); + String fileType = getFileType(action); + if (StringKit.isEmpty(fileType)) { + return fileJson; + } + + String filePath = getUploadFilePath(action, map); + InputStream fileInputStream = getUploadFileInputStream(filePath); + if (fileInputStream == null) { + return fileJson; + } + + if ("png".equals(fileType)) { + fileJson = FeishuApp.uploadImage(fileInputStream, appAccessToken); + return fileJson; + } + + String fileName = getUploadFileName(filePath); + fileJson = FeishuApp.uploadFile(fileType, fileName, fileInputStream, appAccessToken); + return fileJson; + } + + + private String getFileType(OutputAppMessagePush action) { + if (action == null) { + return ""; + } + + if (action.getType() != 3) { + return ""; + } + BaseOutputFormat outputFormat = BaseOutputFormat.fromInteger(action.getMediaId()); + if (outputFormat == null) { + return ""; + } + String fileSuffix = StringKit.trim(outputFormat.getFileSuffix()); + if (StringKit.isEmpty(fileSuffix)) { + return ""; + } + String type = ""; + if (fileSuffix.startsWith(".")) { + type = fileSuffix.substring(1); + } + type = StringKit.trim(type); + return type; + } + + private String getUploadFilePath(OutputAppMessagePush action, Map map) { + String fileType = getFileType(action); + if (StringKit.isEmpty(fileType)) { + return ""; + } + + String fileSuffix = "." + fileType; + if (StringKit.isEmpty(fileSuffix)) { + return ""; + } + String[] filePaths = (String[]) map.get(ScheduleConstants.OUTPUT_FILES); + if ((filePaths == null) || (filePaths.length <= 0)) { + return ""; + } + String filePath; + for (int i = 0, max = filePaths.length - 1; i <= max; i++) { + filePath = filePaths[i]; + if (StringKit.isNotEmpty(filePath) && filePath.endsWith(fileSuffix) && ResourceIOUtils.exist(filePath)) { + return filePath; + } + } + return ""; + } + + private String getUploadFileName(String filePath) { + if (StringKit.isEmpty(filePath)) { + return ""; + } + String name = ResourceIOUtils.getName(filePath); + return name; + } + + private InputStream getUploadFileInputStream(String filePath) { + if (StringKit.isEmpty(filePath)) { + return null; + } + if (ResourceIOUtils.exist(filePath)) { + InputStream in = ResourceIOUtils.read(filePath); + return in; + } + return null; + } + + + private List getTaskUserIds(Map map) throws Exception { + if ((map == null) || (map.size() <= 0)) { + return new ArrayList<>(); + } + String[] scheduleUserNames = (String[]) map.get(ScheduleConstants.USERNAMES); + String scheduleUserName = (String) map.get(ScheduleConstants.USERNAME); + Set userSet = new HashSet(); + String tempUserName = StringKit.trim(scheduleUserName); + if (StringKit.isNotEmpty(tempUserName)) { + userSet.add(tempUserName); + } + + if ((scheduleUserNames != null) && (scheduleUserNames.length >= 1)) { + for (int i = 0, max = scheduleUserNames.length - 1; i <= max; i++) { + tempUserName = StringKit.trim(scheduleUserNames[i]); + if (StringKit.isNotEmpty(tempUserName)) { + userSet.add(tempUserName); + } + } + } + if (userSet.size() <= 0) { + return new ArrayList<>(); + } + List userId = new ArrayList<>(); + userId.addAll(userSet); + return userId; + } + + private List getFeishuUserIds(Map map) throws Exception { + if ((map == null) || (map.size() <= 0)) { + return new ArrayList<>(); + } + String[] scheduleUserNames = (String[]) map.get(ScheduleConstants.USERNAMES); + String scheduleUserName = (String) map.get(ScheduleConstants.USERNAME); + Set userSet = new HashSet(); + String tempUserName = toLower(scheduleUserName); + if (StringKit.isNotEmpty(tempUserName)) { + userSet.add(tempUserName); + } + + if ((scheduleUserNames != null) && (scheduleUserNames.length >= 1)) { + for (int i = 0, max = scheduleUserNames.length - 1; i <= max; i++) { + tempUserName = toLower(scheduleUserNames[i]); + if (StringKit.isNotEmpty(tempUserName)) { + userSet.add(tempUserName); + } + } + } + if (userSet.size() <= 0) { + return new ArrayList<>(); + } + List userId = new ArrayList<>(); + userId.addAll(userSet); + return userId; + } + + private String toLower(String value) { + if (StringKit.isEmpty(value)) { + return ""; + } + String tempValue = StringKit.trim(value.toLowerCase()); + if (StringKit.isEmpty(tempValue)) { + return ""; + } + return tempValue; + } + + + private List getFeishuUserId(String appAccessToken, Map map) throws Exception { + if (StringKit.isEmpty(appAccessToken)) { + return new ArrayList<>(); + } + + if ((map == null) || (map.size() <= 0)) { + return new ArrayList<>(); + } + String[] scheduleUserNames = (String[]) map.get(ScheduleConstants.USERNAMES); + String scheduleUserName = (String) map.get(ScheduleConstants.USERNAME); + Set userSet = new HashSet(); + if (StringUtils.isNotBlank(scheduleUserName)) { + userSet.add(scheduleUserName); + } + if ((scheduleUserNames != null) && (scheduleUserNames.length >= 1)) { + userSet.addAll(Arrays.asList(scheduleUserNames)); + } + + List userList = AuthorityContext.getInstance().getUserController().find(QueryFactory.create().addRestriction(RestrictionFactory.in("userName", userSet))); + if ((userList == null) || (userList.size() <= 0)) { + return new ArrayList<>(); + } + + Set emailSet = new HashSet(); + Set mobileSet = new HashSet(); + + User user; + String email, mobile; + for (int i = 0, max = userList.size() - 1; i <= max; i++) { + user = userList.get(i); + email = StringKit.trim(user.getEmail()); + if (StringKit.isNotEmpty(email)) { + emailSet.add(email); + } + mobile = StringKit.trim(user.getMobile()); + if (StringKit.isNotEmpty(mobile)) { + mobileSet.add(mobile); + } + } + + if ((emailSet.size() <= 0) && (mobileSet.size() <= 0)) { + return new ArrayList<>(); + } + + List feishuUserIds = FeishuApp.getFeishuUserId(emailSet, mobileSet, appAccessToken); + return feishuUserIds; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/bean/OutputAppMessagePush.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/bean/OutputAppMessagePush.java new file mode 100644 index 0000000..a216d9e --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/bean/OutputAppMessagePush.java @@ -0,0 +1,154 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.bean; + + +import com.fr.plugin.third.party.jsdjjed.schedule.entity.AppMessagePushEntity; +import com.fr.schedule.base.bean.output.BaseOutputAction; +import com.fr.schedule.base.entity.AbstractScheduleEntity; +import com.fr.schedule.base.type.RunType; +import com.fr.third.fasterxml.jackson.annotation.JsonSubTypes; + + +@JsonSubTypes.Type(value = OutputAppMessagePush.class, name = "OutputAppMessagePush") +public class OutputAppMessagePush extends BaseOutputAction { + private int terminal = 64; + + private String subject; + + private String content; + + /** + * 客户端通知 消息类型
+ * 1:链接消息;2:图文消息;3:文件消息 + */ + private int type; + + private String configId; + + private String chatGroupId; + + private String feishuMsgType; + + private String feishuSendType; + + + /** + * 客户端通知 定时结果附件 + */ + private int mediaId; + + private int runType = RunType.CLIENT_NOTIFICATION.getValue(); + + //是否受不同用户生成不同附件影响 + @Override + public boolean willExecuteByUser() { + return false; + } + + //推送类型 + @Override + public RunType runType() { + return RunType.CLIENT_NOTIFICATION; + } + + @Override + public Class outputActionEntityClass() { + return AppMessagePushEntity.class; + } + + @Override + public AbstractScheduleEntity createOutputActionEntity() { + AppMessagePushEntity entity = new AppMessagePushEntity(); + entity.setId(this.getId()); + entity.setContent(this.getContent()); + entity.setSubject(this.getSubject()); + entity.setTerminal(this.getTerminal()); + entity.setType(this.getType()); + entity.setConfigId(this.getConfigId()); + entity.setChatGroupId(this.getChatGroupId()); + entity.setMediaId(this.getMediaId()); + entity.setFeishuMsgType(this.getFeishuMsgType()); + entity.setFeishuSendType(this.getFeishuSendType()); + return entity; + } + + + public int getTerminal() { + return terminal; + } + + public void setTerminal(int terminal) { + this.terminal = terminal; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public int getRunType() { + return runType; + } + + public void setRunType(int runType) { + this.runType = runType; + } + + public String getConfigId() { + return configId; + } + + public void setConfigId(String configId) { + this.configId = configId; + } + + public String getChatGroupId() { + return chatGroupId; + } + + public void setChatGroupId(String chatGroupId) { + this.chatGroupId = chatGroupId; + } + + public int getMediaId() { + return mediaId; + } + + public void setMediaId(int mediaId) { + this.mediaId = mediaId; + } + + public String getFeishuMsgType() { + return feishuMsgType; + } + + public void setFeishuMsgType(String feishuMsgType) { + this.feishuMsgType = feishuMsgType; + } + + public String getFeishuSendType() { + return feishuSendType; + } + + public void setFeishuSendType(String feishuSendType) { + this.feishuSendType = feishuSendType; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/FileDef.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/FileDef.java new file mode 100644 index 0000000..f572caa --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/FileDef.java @@ -0,0 +1,47 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.components; + +import com.fr.web.struct.Component; +import com.fr.web.struct.Filter; +import com.fr.web.struct.browser.RequestClient; +import com.fr.web.struct.category.ScriptPath; +import com.fr.web.struct.category.StylePath; + + +public class FileDef extends Component { + + public static final FileDef KEY = new FileDef(); + private FileDef(){} + + /** + * 返回需要引入的JS脚本路径 + * @param client 请求客户端描述 + * @return JS脚本路径 + */ + @Override + public ScriptPath script(RequestClient client) { + return ScriptPath.build("com/fr/plugin/third/party/jsdjjed/message.js"); + } + + /** + * 返回需要引入的CSS样式路径 + * @param client 请求客户端描述 + * @return CSS样式路径 + */ + @Override + public StylePath style(RequestClient client) { +// //如果不需要就直接返回 StylePath.EMPTY; +// return StylePath.build("com/fr/plugin/publiclinksecurty/componet/demo.css"); + return StylePath.EMPTY; + } + + + @Override + public Filter filter() { + return new Filter(){ + public boolean accept() { + //任何情况下我们都在平台组件加载时加载我们的组件 + return true; + } + }; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/JsAndCssBridge.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/JsAndCssBridge.java new file mode 100644 index 0000000..d65fbfa --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/components/JsAndCssBridge.java @@ -0,0 +1,19 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.components; + +import com.fr.decision.fun.impl.AbstractWebResourceProvider; +import com.fr.decision.web.MainComponent; +import com.fr.plugin.transform.FunctionRecorder; +import com.fr.web.struct.Atom; + +@FunctionRecorder +public class JsAndCssBridge extends AbstractWebResourceProvider { + @Override + public Atom attach() { + return MainComponent.KEY; + } + + @Override + public Atom client() { + return FileDef.KEY; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/entity/AppMessagePushEntity.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/entity/AppMessagePushEntity.java new file mode 100644 index 0000000..817f2b0 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/entity/AppMessagePushEntity.java @@ -0,0 +1,131 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.entity; + + +import com.fr.plugin.third.party.jsdjjed.schedule.bean.OutputAppMessagePush; +import com.fr.schedule.base.bean.BaseBean; +import com.fr.schedule.base.entity.AbstractScheduleEntity; +import com.fr.stable.db.constant.EntityConstant; +import com.fr.third.javax.persistence.Column; +import com.fr.third.javax.persistence.Entity; +import com.fr.third.javax.persistence.Table; + +@Entity +@Table(name = "jsdjjed_feishu_message_push") +public class AppMessagePushEntity extends AbstractScheduleEntity { + @Column(name = "terminal") + private int terminal = 64; + + @Column(name = "media_id") + private int mediaId = -1; + + @Column(name = "subject", length = EntityConstant.STRING_LONG_SIZE) + private String subject; + + @Column(name = "content", length = EntityConstant.STRING_LONG_SIZE) + private String content; + + @Column(name = "type") + private int type; + + @Column(name = "config_id") + private String configId; + + @Column(name = "chat_group_id", length = EntityConstant.STRING_LONG_SIZE) + private String chatGroupId; + + @Column(name = "feishu_msg_type") + private String feishuMsgType; + + @Column(name = "feishu_send_type") + private String feishuSendType; + + + @Override + public BaseBean createBean() { + OutputAppMessagePush outputAppMessagePush = new OutputAppMessagePush(); + outputAppMessagePush.setId(this.getId()); + outputAppMessagePush.setContent(this.getContent()); + outputAppMessagePush.setSubject(this.getSubject()); + outputAppMessagePush.setTerminal(this.getTerminal()); + outputAppMessagePush.setType(this.getType()); + outputAppMessagePush.setConfigId(this.getConfigId()); + outputAppMessagePush.setChatGroupId(this.getChatGroupId()); + outputAppMessagePush.setMediaId(this.getMediaId()); + outputAppMessagePush.setFeishuMsgType(this.getFeishuMsgType()); + outputAppMessagePush.setFeishuSendType(this.getFeishuSendType()); + return outputAppMessagePush; + } + + + public int getTerminal() { + return terminal; + } + + public void setTerminal(int terminal) { + this.terminal = terminal; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getConfigId() { + return configId; + } + + public void setConfigId(String configId) { + this.configId = configId; + } + + public String getChatGroupId() { + return chatGroupId; + } + + public void setChatGroupId(String chatGroupId) { + this.chatGroupId = chatGroupId; + } + + public int getMediaId() { + return mediaId; + } + + public void setMediaId(int mediaId) { + this.mediaId = mediaId; + } + + public String getFeishuMsgType() { + return feishuMsgType; + } + + public void setFeishuMsgType(String feishuMsgType) { + this.feishuMsgType = feishuMsgType; + } + + public String getFeishuSendType() { + return feishuSendType; + } + + public void setFeishuSendType(String feishuSendType) { + this.feishuSendType = feishuSendType; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FeishuOutputFormula.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FeishuOutputFormula.java new file mode 100644 index 0000000..7d4bfba --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FeishuOutputFormula.java @@ -0,0 +1,24 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.formula; + +import com.fr.main.workbook.ResultWorkBook; +import com.fr.plugin.third.party.jsdjjed.schedule.bean.OutputAppMessagePush; +import com.fr.schedule.base.provider.impl.AbstractOutputFormulaProvider; +import com.fr.schedule.extension.report.util.ScheduleParameterUtils; + +import java.util.List; +import java.util.Map; + +public class FeishuOutputFormula extends AbstractOutputFormulaProvider { + + @Override + public void dealWithFormulaParam(OutputAppMessagePush bean, ResultWorkBook workBook, List> param) throws Exception { + Map map = param.get(0); + bean.setSubject(ScheduleParameterUtils.dealWithParameter(bean.getSubject(), map, workBook)); + bean.setContent(ScheduleParameterUtils.dealWithParameter(bean.getContent(), map, workBook)); + } + + @Override + public String getActionClassName() { + return OutputAppMessagePush.class.getName(); + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FormulaCalculator.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FormulaCalculator.java new file mode 100644 index 0000000..f592cea --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/formula/FormulaCalculator.java @@ -0,0 +1,22 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.formula; + +import com.fr.plugin.third.party.jsdjjed.schedule.bean.OutputAppMessagePush; +import com.fr.schedule.extension.report.job.output.formula.extract.impl.AbstractOutputFormulaExtractorProvider; +import com.fr.schedule.extension.report.util.ScheduleParameterUtils; + +import java.util.Map; +import java.util.regex.Pattern; + +public class FormulaCalculator extends AbstractOutputFormulaExtractorProvider { + + @Override + public String getActionClassName() { + return OutputAppMessagePush.class.getName(); + } + + @Override + public void addFormulaToMap(OutputAppMessagePush bean, Pattern pattern, Map map) { + ScheduleParameterUtils.addFormulaToMap(bean.getSubject(),pattern, map); + ScheduleParameterUtils.addFormulaToMap(bean.getContent(),pattern, map); + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/AppMessagePushDao.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/AppMessagePushDao.java new file mode 100644 index 0000000..c95177a --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/AppMessagePushDao.java @@ -0,0 +1,16 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.provider; + + +import com.fr.plugin.third.party.jsdjjed.schedule.entity.AppMessagePushEntity; +import com.fr.stable.db.dao.BaseDAO; +import com.fr.stable.db.session.DAOSession; + +public class AppMessagePushDao extends BaseDAO { + public AppMessagePushDao(DAOSession daoSession) { + super(daoSession); + } + // 反回实体类class + protected Class getEntityClass(){ + return AppMessagePushEntity.class; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/DBAccessProvider.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/DBAccessProvider.java new file mode 100644 index 0000000..bc354a3 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/provider/DBAccessProvider.java @@ -0,0 +1,40 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.provider; + +import com.fr.decision.plugin.db.AbstractDecisionDBAccessProvider; + + +import com.fr.plugin.third.party.jsdjjed.schedule.entity.AppMessagePushEntity; +import com.fr.stable.db.accessor.DBAccessor; +import com.fr.stable.db.dao.BaseDAO; +import com.fr.stable.db.dao.DAOProvider; + + +public class DBAccessProvider extends AbstractDecisionDBAccessProvider { + private static DBAccessor dbAccessor = null; + + public static DBAccessor getDbAccessor() { + return dbAccessor; + } + + @Override + public DAOProvider[] registerDAO() { + return new DAOProvider[]{ + new DAOProvider() { + @Override + public Class getEntityClass() { + return AppMessagePushEntity.class; + } + + @Override + public Class getDAOClass() { + return AppMessagePushDao.class; + } + } + }; + } + + @Override + public void onDBAvailable(DBAccessor dbAccessor) { + DBAccessProvider.dbAccessor = dbAccessor; + } +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PlaceholderResolver.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PlaceholderResolver.java new file mode 100644 index 0000000..8753ec8 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PlaceholderResolver.java @@ -0,0 +1,111 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.utils; + +import com.fr.log.FineLoggerFactory; +import com.fr.script.Calculator; +import com.fr.stable.StringUtils; +import com.fr.stable.UtilEvalError; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @Author: xx + * @Date: 2020/9/13 11:44 + */ +public class PlaceholderResolver { + + public static final String TEXT = "这是一个包含日期:${today()}和当前时间:${now()} 的两个公式文本"; + + /** + * 默认前缀占位符 + */ + public static final String DEFAULT_PLACEHOLDER_PREFIX = "${"; + + /** + * 默认后缀占位符 + */ + public static final String DEFAULT_PLACEHOLDER_SUFFIX = "}"; + + /** + * 默认单例解析器 + */ + private static PlaceholderResolver defaultResolver = new PlaceholderResolver(); + + /** + * 占位符前缀 + */ + private String placeholderPrefix = DEFAULT_PLACEHOLDER_PREFIX; + + /** + * 占位符后缀 + */ + private String placeholderSuffix = DEFAULT_PLACEHOLDER_SUFFIX; + + + private PlaceholderResolver() { + } + + private PlaceholderResolver(String placeholderPrefix, String placeholderSuffix) { + this.placeholderPrefix = placeholderPrefix; + this.placeholderSuffix = placeholderSuffix; + } + + /** + * 获取默认的占位符解析器,即占位符前缀为"${", 后缀为"}" + * + * @return + */ + public static PlaceholderResolver getDefaultResolver() { + return defaultResolver; + } + + public static PlaceholderResolver getResolver(String placeholderPrefix, String placeholderSuffix) { + return new PlaceholderResolver(placeholderPrefix, placeholderSuffix); + } + + /** + * 解析带有指定占位符的模板字符串,默认占位符为前缀:${ 后缀:} + * 如:"这是一个包含日期:${today()}和当前时间:${sum(1,2)} 的两个公式文本" + * + * @param content 要解析的带有占位符的模板字符串 + * @return + */ + public String resolve(String content) { + int start = content.indexOf(this.placeholderPrefix); + if (start == -1) { + return content; + } + + int valueIndex = 0; + StringBuilder resultContent = new StringBuilder(content); + while (start != -1) { + int end = resultContent.indexOf(this.placeholderSuffix); + String place = content.substring(start, end + this.placeholderSuffix.length()); + String formula = place.replace(this.placeholderPrefix, "").replace(this.placeholderSuffix, ""); + Calculator calculator = Calculator.createCalculator(); + String value = StringUtils.EMPTY; + try { + Object o = calculator.evalValue(formula); + + if (o!=null){ + if (o instanceof Date){ + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + value = format.format(o); + }else { + value =o.toString(); + } + } + + } catch (UtilEvalError utilEvalError) { + FineLoggerFactory.getLogger().error(utilEvalError,"JSD:>>calculator formula in text error!",utilEvalError.getMessage()); + } + resultContent.replace(start, end + this.placeholderSuffix.length(), value); + start = resultContent.indexOf(this.placeholderPrefix, start + value.length()); + } + return resultContent.toString(); + } + + + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PropertiesUtils.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PropertiesUtils.java new file mode 100644 index 0000000..5db6f1f --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/schedule/utils/PropertiesUtils.java @@ -0,0 +1,35 @@ +package com.fr.plugin.third.party.jsdjjed.schedule.utils; + +import com.fr.io.utils.ResourceIOUtils; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class PropertiesUtils { + //获取配置文件 + private static Properties getProperties() { + InputStream is = ResourceIOUtils.read("/resources/minxing_push_message.properties"); + Properties properties = new Properties(); + try { + properties.load(is); + } catch (IOException e) { + FineLoggerFactory.getLogger().error("JSD:>>get properties error! ",e.getMessage()); + } + return properties; + } + + public static String getPro(String key) { + Properties properties = PropertiesUtils.getProperties(); + String value = properties.get(key)==null?"":properties.get(key).toString(); + if ( StringUtils.isEmpty(value)) { + FineLoggerFactory.getLogger().error("JSD:>>[{}] is null or empty!",key); + } + return value; + } + + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/AES.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/AES.java new file mode 100644 index 0000000..8afa499 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/AES.java @@ -0,0 +1,140 @@ +package com.fr.plugin.third.party.jsdjjed.util; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class AES { + + public final static String ALGORITHM_AEPP = "AES/ECB/PKCS5Padding"; + + /** + * AES加密 + * + * @param content + * 内容 + * @param password + * 密钥 + * @param algorithm + * 算法 + * @return 加密后数据 + */ + public static byte[] encrypt(byte[] content, byte[] password, String algorithm) { + if (content == null || password == null) + return null; + try { + Cipher cipher = null; + if (algorithm.endsWith("PKCS7Padding")) { + cipher = Cipher.getInstance(algorithm, "BC"); + } else { + cipher = Cipher.getInstance(algorithm); + } + cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(password, "AES")); + return cipher.doFinal(content); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * AES解密 + * + * @param content + * 加密内容 + * @param password + * 密钥 + * @param algorithm + * 算法 + * @return 解密后数据 + */ + public static byte[] decrypt(byte[] content, byte[] password, String algorithm) { + if (content == null || password == null) + return null; + try { + Cipher cipher = null; + if (algorithm.endsWith("PKCS7Padding")) { + cipher = Cipher.getInstance(algorithm, "BC"); + } else { + cipher = Cipher.getInstance(algorithm); + } + cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(password, "AES")); + byte[] bytes = cipher.doFinal(content); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * AES加密 + * + * @param content + * 内容 + * @param password + * 密钥 + * @param algorithm + * 算法 + * @param ivStr + * 向量 + * @return 加密后数据 + */ + public static byte[] encrypt(byte[] content, byte[] password, byte[] ivStr, String algorithm) { + if (content == null || password == null) + return null; + try { + Cipher cipher = null; + if (algorithm.endsWith("PKCS7Padding")) { + cipher = Cipher.getInstance(algorithm, "BC"); + } else { + cipher = Cipher.getInstance(algorithm); + } + IvParameterSpec iv = new IvParameterSpec(ivStr); + cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(password, "AES"), iv); + return cipher.doFinal(content); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * AES解密 + * + * @param content + * 加密内容 + * @param password + * 密钥 + * @param algorithm + * 算法 + * @param ivStr + * 向量 + * @return 解密后数据 + */ + public static byte[] decrypt(byte[] content, byte[] password, byte[] ivStr, String algorithm) { + if (content == null || password == null) + return null; + try { + Cipher cipher = null; + if (algorithm.endsWith("PKCS7Padding")) { + cipher = Cipher.getInstance(algorithm, "BC"); + } else { + cipher = Cipher.getInstance(algorithm); + } + IvParameterSpec iv = new IvParameterSpec(ivStr); + cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(password, "AES"), iv); + byte[] bytes = cipher.doFinal(content); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/DateUtil.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/DateUtil.java new file mode 100644 index 0000000..fe8e784 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/DateUtil.java @@ -0,0 +1,129 @@ +package com.fr.plugin.third.party.jsdjjed.util; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class DateUtil { + + public static final long ONE_HOUR_TIME_LONG = 3600000; + + public static String toString(Date date, String format) { + String dateStr = null; + try { + SimpleDateFormat sdf = new SimpleDateFormat(format); + dateStr = sdf.format(date); + } catch (Exception e) { + } + return dateStr; + } + + public static Date parseDate(String dateStr, String format) { + Date date = null; + try { + SimpleDateFormat sdf = new SimpleDateFormat(format); + date = sdf.parse(dateStr); + } catch (Exception e) { + } + return date; + } + + /** + * 获取日期当天的最小时间日期,0点 + */ + public static Date getMinTimeDateByDate(Date date) { + if (date == null) + return null; + String datestr = toString(date, "yyyyMMdd"); + return parseDate(datestr, "yyyyMMdd"); + } + + /** + * 获取日期当天的最大时间日期,12点整 + */ + public static Date getMaxTimeDateByDate(Date date) { + if (date == null) + return null; + String datestr = toString(date, "yyyyMMdd"); + Date d = parseDate(datestr, "yyyyMMdd"); + return new Date(d.getTime() + 24l * 60l * 60l * 1000l - 1l); + } + + public static long subTime(Date startDate, Date endDate) { + return endDate.getTime() - startDate.getTime(); + } + + /** + * 获取上月第一天最早时间 + * @return Date + */ + public static Date getLastMonthFirstDay() { + Calendar cal_1 = Calendar.getInstance();// 获取当前日期 + cal_1.setTime(getMinTimeDateByDate(new Date())); + cal_1.add(Calendar.MONTH, -1); + cal_1.set(Calendar.DAY_OF_MONTH, 1); + return cal_1.getTime(); + } + + /** + * 获取上月最后一天最晚时间 + * @return Date + */ + public static Date getLastMonthLastDay() { + Calendar cale = Calendar.getInstance(); + cale.setTime(getMinTimeDateByDate(new Date())); + cale.add(Calendar.MONTH, -1); + cale.set(Calendar.DAY_OF_MONTH, cale.getActualMaximum(Calendar.DAY_OF_MONTH)); + return new Date(cale.getTime().getTime() + 1000l * 60l * 60l * 24l - 1l); + } + + /** + * 获取本月第一天最早时间 + * @return Date + */ + public static Date getNowMonthFirstDay() { + Calendar cal_1 = Calendar.getInstance();// 获取当前日期 + cal_1.setTime(getMinTimeDateByDate(new Date())); + cal_1.add(Calendar.MONTH, 0); + cal_1.set(Calendar.DAY_OF_MONTH, 1); + return cal_1.getTime(); + } + + /** + * 获取本月最后一天最晚时间 + * @return Date + */ + public static Date getNowMonthLastDay() { + Calendar cale = Calendar.getInstance(); + cale.setTime(getMinTimeDateByDate(new Date())); + cale.set(Calendar.DAY_OF_MONTH, cale.getActualMaximum(Calendar.DAY_OF_MONTH)); + return new Date(cale.getTime().getTime() + 1000l * 60l * 60l * 24l - 1l); + } + + /** + * 获取本月最后一天 + * @return Date + */ + public static Date getTheMonthLastDay(Date date) { + if(date == null){ + return null; + } + Calendar cale = Calendar.getInstance(); + cale.setTime(date); + cale.set(Calendar.DAY_OF_MONTH, cale.getActualMaximum(Calendar.DAY_OF_MONTH)); + cale.set(Calendar.HOUR, 0); + cale.set(Calendar.HOUR_OF_DAY, 0); + cale.set(Calendar.MINUTE, 0); + cale.set(Calendar.SECOND, 0); + cale.set(Calendar.MILLISECOND, 0); + return cale.getTime(); + } + + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/GZIPUtils.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/GZIPUtils.java new file mode 100644 index 0000000..6c2d4b0 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/GZIPUtils.java @@ -0,0 +1,88 @@ +package com.fr.plugin.third.party.jsdjjed.util; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class GZIPUtils { + + + /** + * 数据压缩传输 + * + * @param is + * @param os + * @throws Exception + */ + public static void compressTransfe(byte[] bytes, OutputStream out) throws IOException { + GZIPOutputStream gos = null; + try { + gos = new GZIPOutputStream(out); + gos.write(bytes); + gos.finish(); + gos.flush(); + } finally{ + if(gos != null){ + gos.close(); + } + } + } + + /** + * 数据压缩 + * + * @param is + * @param os + * @throws Exception + */ + public static byte[] compress(byte[] bytes) throws IOException { + ByteArrayOutputStream out = null; + GZIPOutputStream gos = null; + try { + out = new ByteArrayOutputStream(); + gos = new GZIPOutputStream(out); + gos.write(bytes); + gos.finish(); + gos.flush(); + } finally{ + if(gos != null){ + gos.close(); + } + if(out != null){ + out.close(); + } + } + return out.toByteArray(); + } + + /** + * 数据解压 + * + * @param in + * @return + * @throws IOException + */ + public static byte[] decompress(byte[] bytes) throws IOException { + ByteArrayInputStream in = new ByteArrayInputStream(bytes); + GZIPInputStream gin = new GZIPInputStream(in); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int count; + byte data[] = new byte[1024]; + while ((count = gin.read(data, 0, 1024)) != -1) { + out.write(data, 0, count); + } + out.flush(); + out.close(); + gin.close(); + return out.toByteArray(); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/JsonHelper.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/JsonHelper.java new file mode 100644 index 0000000..043a6be --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/JsonHelper.java @@ -0,0 +1,129 @@ +package com.fr.plugin.third.party.jsdjjed.util; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class JsonHelper { + + private static Map gsons = new HashMap(); + + private static String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + static { + gsons.put(DEFAULT_DATE_PATTERN, createGson(DEFAULT_DATE_PATTERN)); + } + + private static Gson createGson(String datePattern){ + return new GsonBuilder().setDateFormat(datePattern).disableHtmlEscaping().serializeNulls().create(); + } + + public static Gson getGson() { + return gsons.get(DEFAULT_DATE_PATTERN); + } + + public static Gson getGson(String datePattern) { + Gson gson = gsons.get(datePattern); + if(gson == null){ + gson = createGson(datePattern); + gsons.put(datePattern, gson); + } + return gson; + } + + public static GsonBuilder newGsonBuilder() { + return new GsonBuilder(); + } + + /** + * 将对象转换为json串 + * + * @param obj + * @return + */ + public static String toJsonString(Object obj) { + if (obj == null) { + return null; + } + return getGson().toJson(obj); + } + + /** + * 将对象转换为json串,自定义日期转换规则 + * + * @param obj + * @param datePattern + * @return + */ + public static String toJsonString(Object obj, String datePattern) { + if (obj == null) { + return null; + } + return getGson(datePattern).toJson(obj); + } + + /** + * 将json串转换为对象 + * + * @param clazz + * @param jsonString + * @return + */ + public static T fromJson(Class clazz, String jsonString) { + if (jsonString == null) { + return null; + } + return getGson().fromJson(jsonString, clazz); + } + + /** + * 将json串转换为对象 + * + * @Type type + * @param jsonString + * @return + */ + public static T fromJson(TypeToken token, String jsonString) { + if (jsonString == null) { + return null; + } + return getGson().fromJson(jsonString, token.getType()); + } + + /** + * 将json串转换为对象 + * + * @Type type + * @param jsonString + * @return + */ + public static T fromJson(TypeToken token, String jsonString, String datePattern) { + if (jsonString == null) { + return null; + } + return getGson(datePattern).fromJson(jsonString, token.getType()); + } + + /** + * 将json串转换为对象 + * + * @param clazz + * @param jsonString + * @return + */ + public static T fromJson(Class clazz, String jsonString, String datePattern) { + if (jsonString == null) { + return null; + } + return getGson(datePattern).fromJson(jsonString, clazz); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/Md5.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/Md5.java new file mode 100644 index 0000000..95ee23d --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/Md5.java @@ -0,0 +1,51 @@ +package com.fr.plugin.third.party.jsdjjed.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class Md5 { + + /** + * MD5 + * @param bytes + * @return + */ + public static String md5(byte[] bytes) { + if (bytes == null || bytes.length == 0) + return null; + String s = null; + char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(bytes); + byte tmp[] = md.digest(); + char str[] = new char[16 * 2]; + int k = 0; + for (int i = 0; i < 16; i++) { + byte byte0 = tmp[i]; + str[k++] = hexDigits[byte0 >>> 4 & 0xf]; + str[k++] = hexDigits[byte0 & 0xf]; + } + s = new String(str); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return s; + } + + /** + * MD5[16位] + * + * @param bytes + * @return + */ + public static String md5For16(byte[] bytes) { + return md5(bytes).substring(8,24); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpClient.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpClient.java new file mode 100644 index 0000000..b7b9fa7 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpClient.java @@ -0,0 +1,451 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import javax.net.ssl.*; +import java.io.*; +import java.net.*; +import java.security.*; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpClient { + + /** + * 链接超时时间(s) + */ + private int httpConnectionTimeOut = 30; + + /** + * 数据传输超时时间(s) + */ + private int httpReadTimeOut = 30; + + public HttpClient() { + + } + + /** + * + * @param httpConnectionTimeOut + * 链接超时时间(s) + * @param httpReadTimeOut + * 数据传输超时时间(s) + */ + public HttpClient(int httpConnectionTimeOut, int httpReadTimeOut) { + this.httpConnectionTimeOut = httpConnectionTimeOut; + this.httpReadTimeOut = httpReadTimeOut; + } + + /** + * 发送HTTP请求 + * + * @param request + * 请求 + * @param praser + * 响应解析器 + * @return T 响应 + */ + public T service(HttpRequest request, HttpResponsePraser praser) { + HttpResultCode code = HttpResultCode.SUCCESS; + if (request.getHttpParams().getUrl() == null || request.getHttpParams().getUrl().length() == 0) { + code = HttpResultCode.ERROR_URL_NULL; + return praser.prase(code, 0, null, null, request.getHttpParams().getCharSet(), null); + } + HttpURLConnection conn = null; + int httpCode = 0; + Map headers = null; + List cookies = null; + ByteArrayOutputStream outputStream = null; + try { + String realUrl = this.genUrl(request); + conn = this.createConnection(request, realUrl); + this.fillConnection(conn, request); + this.request(conn, request); + httpCode = conn.getResponseCode(); + headers = this.getHeaders(conn, request.getHttpParams().getCharSet()); + cookies = this.getCookies(conn, request.getHttpParams().getCharSet()); + outputStream = this.getResultOutputStream(conn); + } catch (SocketTimeoutException e) { + code = HttpResultCode.ERROR_TIMEOUT; + e.printStackTrace(); + } catch (KeyManagementException e) { + code = HttpResultCode.ERROR_HTTPS_SSL; + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + code = HttpResultCode.ERROR_HTTPS_SSL; + e.printStackTrace(); + } catch (ProtocolException e) { + code = HttpResultCode.ERROR_METHOD; + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + code = HttpResultCode.ERROR_CHARSET; + e.printStackTrace(); + } catch (MalformedURLException e) { + code = HttpResultCode.ERROR_URL; + httpCode = 500; + e.printStackTrace(); + } catch (IOException e) { + code = HttpResultCode.ERROR_CONNECT; + e.printStackTrace(); + } catch (UnrecoverableKeyException e) { + code = HttpResultCode.ERROR_HTTPS_SSL; + e.printStackTrace(); + } catch (KeyStoreException e) { + code = HttpResultCode.ERROR_HTTPS_SSL; + e.printStackTrace(); + } catch (CertificateException e) { + code = HttpResultCode.ERROR_HTTPS_SSL; + e.printStackTrace(); + } finally { + if (conn != null) { + conn.disconnect(); + } + } + T t = null; + try { + t = praser.prase(code, httpCode, headers, cookies, request.getHttpParams().getCharSet(), outputStream); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (outputStream != null) { + try { + outputStream.flush(); + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return t; + } + + private String genUrl(HttpRequest request) { + if (request.getHttpParams().getMethod().equalsIgnoreCase("GET")) { + String getprams = request.getContentPraser().praseRqeuestContentToString(request.getHttpParams()); + if (getprams != null) { + String url = null; + if (request.getHttpParams().getUrl().indexOf("?") > 0) { + url = request.getHttpParams().getUrl() + "&" + getprams; + } else { + url = request.getHttpParams().getUrl() + "?" + getprams; + } + return url; + } else { + return request.getHttpParams().getUrl(); + } + } else { + return request.getHttpParams().getUrl(); + } + } + + /** + * 获取HTTP响应头 + * + * @param conn + * @param charSet + * @return + * @throws UnsupportedEncodingException + */ + private Map getHeaders(HttpURLConnection conn, String charSet) throws UnsupportedEncodingException { + Map resultHeaders = new HashMap(); + Map> header = conn.getHeaderFields(); + if (header != null && header.size() > 0) { + for (Entry> entry : header.entrySet()) { + if (!"Set-Cookie".equalsIgnoreCase(entry.getKey())) { + String valuer = ""; + if (entry.getValue() != null && entry.getValue().size() > 0) { + for (String value : entry.getValue()) { + valuer += new String(value.getBytes("ISO-8859-1"), charSet) + ","; + } + valuer = valuer.substring(0, valuer.length() - 1); + } + resultHeaders.put(entry.getKey(), valuer); + } + } + } + return resultHeaders; + } + + /** + * 获取HTTP响应Cookies + * + * @param conn + * @param charSet + * @return + * @throws UnsupportedEncodingException + */ + private List getCookies(HttpURLConnection conn, String charSet) throws UnsupportedEncodingException { + List resultC = new ArrayList(); + List cookies = null; + Map> header = conn.getHeaderFields(); + if (header != null && header.size() > 0) { + cookies = header.get("Set-Cookie"); + } + if (cookies != null) { + for (String cookie : cookies) { + resultC.add(new String(cookie.getBytes("ISO-8859-1"), charSet)); + } + } + return cookies; + } + + /** + * 获取HTTP响应数据流 + * + * @param conn + * @return + * @throws IOException + */ + private ByteArrayOutputStream getResultOutputStream(HttpURLConnection conn) throws IOException { + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + InputStream is = conn.getInputStream(); + try { + if (is != null) { + byte[] buffer = new byte[1024]; + int len = 0; + while ((len = is.read(buffer)) != -1) { + outStream.write(buffer, 0, len); + } + } + } catch (IOException e) { + throw e; + } finally { + if (is != null) { + is.close(); + } + } + return outStream; + } + + /** + * 发送Http请求 + * + * @param conn + * @param request + * @throws IOException + */ + private void request(HttpURLConnection conn, HttpRequest request) throws IOException { + if (request.getHttpParams().getMethod().equalsIgnoreCase("POST")) { + conn.setDoOutput(true); + // conn.connect(); + if (request.getHttpParams().getParams() != null) { + byte[] content = request.getContentPraser().praseRqeuestContentToBytes(request.getHttpParams()); + fillHeader(conn, "Content-Length", String.valueOf(request.getContentPraser().praseRqeuestContentLength(request.getHttpParams()))); + DataOutputStream out = new DataOutputStream(conn.getOutputStream()); + out.write(content); + out.flush(); + out.close(); + } + } else { + conn.connect(); + } + } + + /** + * 添加请求信息 + * + * @param conn + * @param request + * @throws ProtocolException + */ + private void fillConnection(HttpURLConnection conn, HttpRequest request) throws ProtocolException { + this.fillTimeout(conn); + this.filleMethod(conn, request); + this.fillHeaders(conn, request); + this.fillCookies(conn, request); + } + + /** + * 添加超时时间 + * + * @param conn + */ + private void fillTimeout(HttpURLConnection conn) { + if (httpConnectionTimeOut != 0) { + conn.setConnectTimeout(httpConnectionTimeOut * 1000); + } + if (httpReadTimeOut != 0) { + conn.setReadTimeout(httpReadTimeOut * 1000); + } + } + + /** + * 指定HTTP方法 + * + * @param conn + * @param request + * @throws ProtocolException + */ + private void filleMethod(HttpURLConnection conn, HttpRequest request) throws ProtocolException { + conn.setRequestMethod(request.getHttpParams().getMethod().toUpperCase()); + } + + /** + * 添加头信息 + * + * @param conn + * @param request + */ + private void fillHeaders(HttpURLConnection conn, HttpRequest request) { + if (request.getHttpParams().getHeaders() != null) { + for (Entry entry : request.getHttpParams().getHeaders().entrySet()) { + fillHeader(conn, entry.getKey(), entry.getValue()); + } + } + } + + /** + * 添加头信息 + * + * @param conn + * @param request + */ + private void fillHeader(HttpURLConnection conn, String key, String value) { + conn.setRequestProperty(key, value); + } + + /** + * 添加Cookies + * + * @param conn + * @param request + */ + private void fillCookies(HttpURLConnection conn, HttpRequest request) { + if (request.getHttpParams().getCookies() != null) { + conn.setRequestProperty("Cookie", request.getHttpParams().getCookies()); + } + } + + /** + * 创建Http链接 + * + * @param request + * @return + * @throws NoSuchAlgorithmException + * @throws KeyManagementException + * @throws MalformedURLException + * @throws IOException + * @throws CertificateException + * @throws KeyStoreException + * @throws UnrecoverableKeyException + */ + private HttpURLConnection createConnection(HttpRequest request, String realUrl) + throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException, IOException, UnrecoverableKeyException, KeyStoreException, CertificateException { + URL console = new URL(realUrl); + HttpURLConnection conn; + if (request.isHttps()) { + conn = genHttpsConn(console, request); + } else { + conn = (HttpURLConnection) console.openConnection(); + } + return conn; + } + + private HttpURLConnection genHttpsConn(URL console, HttpRequest request) + throws UnrecoverableKeyException, KeyManagementException, NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException { + SSLContext ctx = getSSLContext(request.getHttpsParams()); + HttpsURLConnection sconn = (HttpsURLConnection) console.openConnection(); + sconn.setSSLSocketFactory(ctx.getSocketFactory()); + sconn.setHostnameVerifier(new HostnameVerifier() { + public boolean verify(String hostname, SSLSession session) { + return true; + } + }); + return sconn; + } + + /** + * 获得KeyStore. + * + * @param keyStorePath + * 密钥库路径 + * @param password + * 密码 + * @return 密钥库 + * @throws KeyStoreException + * @throws IOException + * @throws CertificateException + * @throws NoSuchAlgorithmException + * @throws Exception + */ + private KeyStore getKeyStore(HttpsParams params) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException { + // 实例化密钥库 KeyStore用于存放证书,创建对象时 指定交换数字证书的加密标准 + // 指定交换数字证书的加密标准 + KeyStore ks = KeyStore.getInstance(params.getAlgorithm()); + // 获得密钥库文件流 + FileInputStream is = new FileInputStream(params.getKeyStorePath()); + // 加载密钥库 + ks.load(is, params.getPassword().toCharArray()); + // 关闭密钥库文件流 + is.close(); + return ks; + } + + /** + * 获得SSLSocketFactory. + * + * @param password + * 密码 + * @param keyStorePath + * 密钥库路径 + * @param trustStorePath + * 信任库路径 + * @return SSLSocketFactory + * @throws NoSuchAlgorithmException + * @throws IOException + * @throws CertificateException + * @throws KeyStoreException + * @throws UnrecoverableKeyException + * @throws KeyManagementException + * @throws Exception + */ + private SSLContext getSSLContext(HttpsParams params) throws NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException, UnrecoverableKeyException, KeyManagementException { + // 实例化SSL上下文 + SSLContext ctx = SSLContext.getInstance("TLS"); + if (params != null) { + // 实例化密钥库 KeyManager选择证书证明自己的身份 + KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + // 实例化信任库 TrustManager决定是否信任对方的证书 + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + // 获得密钥库 + KeyStore keyStore = getKeyStore(params); + // 初始化密钥工厂 + keyManagerFactory.init(keyStore, params.getPassword().toCharArray()); + // 获得信任库 + KeyStore trustStore = getKeyStore(params); + // 初始化信任库 + trustManagerFactory.init(trustStore); + // 初始化SSL上下文 + ctx.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom()); + } else { + ctx.init(null, new TrustManager[] { myX509TrustManager }, new SecureRandom()); + } + return ctx; + } + + private TrustManager myX509TrustManager = new X509TrustManager() { + + @Override + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { + } + }; + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequest.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequest.java new file mode 100644 index 0000000..f6d6fc5 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequest.java @@ -0,0 +1,94 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequest { + + /** + * http参数 + */ + private HttpRequestParams httpParams; + + /** + * https参数 + */ + private HttpsParams httpsParams; + + /** + * 内容解析器 + */ + private HttpRequestPraser contentPraser; + + /** + * 是否https请求 + */ + private boolean isHttps; + + /** + * + */ + protected HttpRequest() { + + } + + /** + * + * @param httpParams + * http参数 + * @param contentPraser + * 内容解析器 + */ + protected HttpRequest(HttpRequestParams httpParams, HttpRequestPraser contentPraser) { + this.httpParams = httpParams; + this.contentPraser = contentPraser; + this.isHttps = false; + } + + /** + * + * @param httpParams + * http参数 + * @param httpsParams + * https参数 + * @param contentPraser + * 内容解析器 + */ + protected HttpRequest(HttpRequestParams httpParams, HttpsParams httpsParams, HttpRequestPraser contentPraser) { + this.httpParams = httpParams; + this.httpsParams = httpsParams; + this.contentPraser = contentPraser; + this.isHttps = true; + } + + public boolean isHttps() { + return isHttps; + } + + public HttpRequestParams getHttpParams() { + return httpParams; + } + + public void setHttpParams(HttpRequestParams httpParams) { + this.httpParams = httpParams; + } + + public HttpsParams getHttpsParams() { + return httpsParams; + } + + public void setHttpsParams(HttpsParams httpsParams) { + this.httpsParams = httpsParams; + } + + public HttpRequestPraser getContentPraser() { + return contentPraser; + } + + public void setContentPraser(HttpRequestPraser contentPraser) { + this.contentPraser = contentPraser; + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestBytes.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestBytes.java new file mode 100644 index 0000000..9cacdd8 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestBytes.java @@ -0,0 +1,19 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequestBytes extends HttpRequest { + + /** + * + * @param httpParams + * 请求参数 + */ + public HttpRequestBytes(HttpRequestParams httpParams) { + super(httpParams, new HttpRequestPraserBytes()); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestKV.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestKV.java new file mode 100644 index 0000000..e32eb08 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestKV.java @@ -0,0 +1,22 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequestKV extends HttpRequest> { + + /** + * + * @param httpParams + * 请求参数 + */ + public HttpRequestKV(HttpRequestParams> httpParams) { + super(httpParams, new HttpRequestPraserKV()); + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestParams.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestParams.java new file mode 100644 index 0000000..0a935e9 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestParams.java @@ -0,0 +1,67 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequestParams { + + private String url;// URL + private String charSet = "UTF-8";// 编码 + private String method = "GET";// Http方法 + private Map headers;// 头信息 + private String cookies;// cookie信息 + private T params;// 传输数据 + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getCharSet() { + return charSet; + } + + public void setCharSet(String charSet) { + this.charSet = charSet; + } + + public String getMethod() { + return method; + } + + public void setMethod(String method) { + this.method = method; + } + + public Map getHeaders() { + return headers; + } + + public void setHeaders(Map headers) { + this.headers = headers; + } + + public String getCookies() { + return cookies; + } + + public void setCookies(String cookies) { + this.cookies = cookies; + } + + public T getParams() { + return params; + } + + public void setParams(T params) { + this.params = params; + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraser.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraser.java new file mode 100644 index 0000000..2042e2a --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraser.java @@ -0,0 +1,40 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public interface HttpRequestPraser { + + /** + * 将请求参数转换为String
+ * 主要用于get方法传输 + * + * @param httpParams + * 请求参数 + * @return + */ + public String praseRqeuestContentToString(HttpRequestParams httpParams); + + /** + * 将请求参数转换为byte[]
+ * 主要用于post方法传输 + * + * @param httpParams + * 请求参数 + * @return + */ + public byte[] praseRqeuestContentToBytes(HttpRequestParams httpParams); + + /** + * 获取请求参数大小
+ * 主要用于post方法传输 + * + * @param httpParams + * 请求参数 + * @return + */ + public int praseRqeuestContentLength(HttpRequestParams httpParams); + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserBytes.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserBytes.java new file mode 100644 index 0000000..34fe741 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserBytes.java @@ -0,0 +1,44 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.io.UnsupportedEncodingException; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequestPraserBytes implements HttpRequestPraser { + + /** + * 请求内容字符串 + */ + private String contentString; + + @Override + public String praseRqeuestContentToString(HttpRequestParams httpParams) { + if (contentString != null) { + return contentString; + } + try { + contentString = new String(httpParams.getParams(), httpParams.getCharSet()); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return contentString; + } + + @Override + public byte[] praseRqeuestContentToBytes(HttpRequestParams httpParams) { + return httpParams.getParams(); + } + + @Override + public int praseRqeuestContentLength(HttpRequestParams httpParams) { + if (httpParams.getParams() != null) { + return httpParams.getParams().length; + } else { + return 0; + } + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserKV.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserKV.java new file mode 100644 index 0000000..eb48c09 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserKV.java @@ -0,0 +1,71 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.io.UnsupportedEncodingException; +import java.util.Map; +import java.util.Map.Entry; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequestPraserKV implements HttpRequestPraser> { + + /** + * 请求内容byte数组 + */ + private byte[] contentBytes; + + /** + * 请求内容字符串 + */ + private String contentString; + + @Override + public String praseRqeuestContentToString(HttpRequestParams> httpParams) { + if (contentString != null) { + return contentString; + } + Map params = httpParams.getParams(); + if (params == null || params.size() == 0) { + return null; + } + StringBuffer buffer = new StringBuffer(); + for (Entry entry : params.entrySet()) { + if (entry.getValue() != null) { + buffer.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); + } + } + String param = buffer.toString(); + contentString = param.substring(0, param.length() - 1); + return contentString; + } + + @Override + public byte[] praseRqeuestContentToBytes(HttpRequestParams> httpParams) { + if (contentBytes != null) { + return contentBytes; + } + String paramStr = praseRqeuestContentToString(httpParams); + if (paramStr == null) { + return null; + } + try { + contentBytes = paramStr.getBytes(httpParams.getCharSet()); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return contentBytes; + } + + @Override + public int praseRqeuestContentLength(HttpRequestParams> httpParams) { + praseRqeuestContentToBytes(httpParams); + if (contentBytes != null) { + return contentBytes.length; + } else { + return 0; + } + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserString.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserString.java new file mode 100644 index 0000000..4055084 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestPraserString.java @@ -0,0 +1,46 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.io.UnsupportedEncodingException; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequestPraserString implements HttpRequestPraser { + + /** + * 请求内容byte数组 + */ + private byte[] contentBytes; + + @Override + public String praseRqeuestContentToString(HttpRequestParams httpParams) { + return httpParams.getParams(); + } + + @Override + public byte[] praseRqeuestContentToBytes(HttpRequestParams httpParams) { + if (contentBytes != null) { + return contentBytes; + } + try { + contentBytes = httpParams.getParams().getBytes(httpParams.getCharSet()); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + contentBytes = null; + } + return contentBytes; + } + + @Override + public int praseRqeuestContentLength(HttpRequestParams httpParams) { + praseRqeuestContentToBytes(httpParams); + if (contentBytes != null) { + return contentBytes.length; + } else { + return 0; + } + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestString.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestString.java new file mode 100644 index 0000000..0a0bf2a --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpRequestString.java @@ -0,0 +1,19 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpRequestString extends HttpRequest { + + /** + * + * @param httpParams + * 请求参数 + */ + public HttpRequestString(HttpRequestParams httpParams) { + super(httpParams, new HttpRequestPraserString()); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponse.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponse.java new file mode 100644 index 0000000..09f4853 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponse.java @@ -0,0 +1,113 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.util.List; +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpResponse { + + /** + * Http 结果代码 + */ + private HttpResultCode resultCode; + + /** + * Http链接Code + */ + private int httpCode; + + /** + * Http响应头 + */ + private Map headers; + + /** + * http响应Cookies + */ + private List cookies; + /** + * http字符集 + */ + private String charSet; + /** + * http响应数据 + */ + private T result; + + /** + * + * @param resultCode + * Http 结果代码 + * @param httpCode + * Http链接Code + * @param headers + * Http响应头 + * @param cookies + * http响应Cookies + * @param charSet + * http字符集 + * @param result + * http响应数据 + */ + public HttpResponse(HttpResultCode resultCode, int httpCode, Map headers, List cookies, String charSet, T result) { + this.resultCode = resultCode; + this.httpCode = httpCode; + this.headers = headers; + this.cookies = cookies; + this.charSet = charSet; + this.result = result; + } + + public HttpResultCode getResultCode() { + return resultCode; + } + + public void setResultCode(HttpResultCode resultCode) { + this.resultCode = resultCode; + } + + public int getHttpCode() { + return httpCode; + } + + public void setHttpCode(int httpCode) { + this.httpCode = httpCode; + } + + public Map getHeaders() { + return headers; + } + + public void setHeaders(Map headers) { + this.headers = headers; + } + + public List getCookies() { + return cookies; + } + + public void setCookies(List cookies) { + this.cookies = cookies; + } + + public String getCharSet() { + return charSet; + } + + public void setCharSet(String charSet) { + this.charSet = charSet; + } + + public T getResult() { + return result; + } + + public void setResult(T result) { + this.result = result; + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytes.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytes.java new file mode 100644 index 0000000..81a1e06 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytes.java @@ -0,0 +1,32 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.util.List; +import java.util.Map; + +/** + * @Author hujian + * @Date 2020/9/15 + * @Description + **/ +public class HttpResponseBytes extends HttpResponse { + + /** + * + * @param resultCode + * Http 结果代码 + * @param httpCode + * Http链接Code + * @param headers + * Http响应头 + * @param cookies + * http响应Cookies + * @param charSet + * http字符集 + * @param result + * http响应数据 + */ + public HttpResponseBytes(HttpResultCode resultCode, int httpCode, Map headers, List cookies, String charSet, byte[] result) { + super(resultCode, httpCode, headers, cookies, charSet, result); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytesPraser.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytesPraser.java new file mode 100644 index 0000000..66a5187 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseBytesPraser.java @@ -0,0 +1,19 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.io.ByteArrayOutputStream; +import java.util.List; +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpResponseBytesPraser implements HttpResponsePraser { + + @Override + public HttpResponseBytes prase(HttpResultCode resultCode, int httpCode, Map headers, List cookies, String charSet, ByteArrayOutputStream outputStream) { + return new HttpResponseBytes(resultCode, httpCode, headers, cookies, charSet, outputStream == null ? null : outputStream.toByteArray()); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponsePraser.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponsePraser.java new file mode 100644 index 0000000..1c96fc8 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponsePraser.java @@ -0,0 +1,32 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.io.ByteArrayOutputStream; +import java.util.List; +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public interface HttpResponsePraser { + + /** + * 解析 + * + * @param resultCode + * Http 结果代码 + * @param httpCode + * Http链接Code + * @param headers + * Http响应头 + * @param cookies + * http响应Cookies + * @param charSet + * http字符集 + * @param result + * http响应数据 + */ + public T prase(HttpResultCode resultCode, int httpCode, Map headers, List cookies, String charSet, ByteArrayOutputStream outputStream); + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseString.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseString.java new file mode 100644 index 0000000..fd38e4a --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseString.java @@ -0,0 +1,33 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.util.List; +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpResponseString extends HttpResponse { + + /** + * + * @param resultCode + * Http 结果代码 + * @param httpCode + * Http链接Code + * @param headers + * Http响应头 + * @param cookies + * http响应Cookies + * @param charSet + * http字符集 + * @param result + * http响应数据 + */ + public HttpResponseString(HttpResultCode resultCode, int httpCode, Map headers, List cookies, String charSet, String result) { + super(resultCode, httpCode, headers, cookies, charSet, result); + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseStringPraser.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseStringPraser.java new file mode 100644 index 0000000..08d6808 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResponseStringPraser.java @@ -0,0 +1,30 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.io.ByteArrayOutputStream; +import java.io.UnsupportedEncodingException; +import java.util.List; +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpResponseStringPraser implements HttpResponsePraser { + + @Override + public HttpResponseString prase(HttpResultCode resultCode, int httpCode, Map headers, List cookies, String charSet, ByteArrayOutputStream outputStream) { + String st = null; + try { + if(outputStream != null){ + byte[] resultBytes = outputStream.toByteArray(); + st = new String(resultBytes, charSet); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return new HttpResponseString(resultCode, httpCode, headers, cookies, charSet, st); + } + + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResultCode.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResultCode.java new file mode 100644 index 0000000..9bd5740 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpResultCode.java @@ -0,0 +1,69 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public enum HttpResultCode { + + SUCCESS("成功", "SUCCESS"), // + ERROR_URL_NULL("URL为空", "ERROR-URL-NULL"), // + ERROR_URL("URL访问失败", "ERROR-URL"), // + ERROR_HTTPS_SSL("HTTPS异常", "ERROR-HTTPS-SSL"), // + ERROR_METHOD("HTTP方法无法识别", "ERROR-METHOD"), // + ERROR_CHARSET("编码错误", "ERROR-CHARSET"), // + ERROR_CONNECT("访问失败", "ERROR-CONNECT"), // + ERROR_TIMEOUT("访问超时", "ERROR-TIMEOUT"), // + + ; + + /** + * 名称 + */ + private String name; + /** + * 编码 + */ + private String code; + + private HttpResultCode(String name, String code) { + this.name = name; + this.code = code; + } + + public static String findNameByCode(String code) { + for (HttpResultCode oc : HttpResultCode.values()) { + if (oc.getCode().equals(code)) { + return oc.getName(); + } + } + return null; + } + + public static String findCodeByName(String name) { + for (HttpResultCode oc : HttpResultCode.values()) { + if (oc.getName().equals(name)) { + return oc.getCode(); + } + } + return null; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsParams.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsParams.java new file mode 100644 index 0000000..d64adea --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsParams.java @@ -0,0 +1,47 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpsParams { + + private String password;// 密钥库密钥 + private String keyStorePath;// 密钥库文件地址 + private String trustStorePath;// 信任库文件地址 + private String algorithm;// 指定交换数字证书的加密标准:JKS + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getKeyStorePath() { + return keyStorePath; + } + + public void setKeyStorePath(String keyStorePath) { + this.keyStorePath = keyStorePath; + } + + public String getTrustStorePath() { + return trustStorePath; + } + + public void setTrustStorePath(String trustStorePath) { + this.trustStorePath = trustStorePath; + } + + public String getAlgorithm() { + return algorithm; + } + + public void setAlgorithm(String algorithm) { + this.algorithm = algorithm; + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestBytes.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestBytes.java new file mode 100644 index 0000000..7eb4a95 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestBytes.java @@ -0,0 +1,21 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpsRequestBytes extends HttpRequest { + + /** + * + * @param httpParams + * http请求参数 + * @param httpsParams + * https参数 + */ + public HttpsRequestBytes(HttpRequestParams httpParams, HttpsParams httpsParams) { + super(httpParams, httpsParams, new HttpRequestPraserBytes()); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestKV.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestKV.java new file mode 100644 index 0000000..c15b786 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestKV.java @@ -0,0 +1,23 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +import java.util.Map; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpsRequestKV extends HttpRequest> { + + /** + * + * @param httpParams + * http请求参数 + * @param httpsParams + * https参数 + */ + public HttpsRequestKV(HttpRequestParams> httpParams, HttpsParams httpsParams) { + super(httpParams, httpsParams, new HttpRequestPraserKV()); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestString.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestString.java new file mode 100644 index 0000000..f9b7ac8 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/util/http/HttpsRequestString.java @@ -0,0 +1,21 @@ +package com.fr.plugin.third.party.jsdjjed.util.http; + +/** + * @Author xx + * @Date 2020/9/15 + * @Description + **/ +public class HttpsRequestString extends HttpRequest { + + /** + * + * @param httpParams + * http请求参数 + * @param httpsParams + * https参数 + */ + public HttpsRequestString(HttpRequestParams httpParams, HttpsParams httpsParams) { + super(httpParams, httpsParams, new HttpRequestPraserString()); + } + +} diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainFilesComponent.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainFilesComponent.java new file mode 100644 index 0000000..25552ca --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainFilesComponent.java @@ -0,0 +1,46 @@ +package com.fr.plugin.third.party.jsdjjed.web; + +import com.fr.web.struct.Component; +import com.fr.web.struct.Filter; +import com.fr.web.struct.browser.RequestClient; +import com.fr.web.struct.category.ScriptPath; +import com.fr.web.struct.category.StylePath; + +public class MainFilesComponent extends Component { + public static final MainFilesComponent KEY = new MainFilesComponent(); + private MainFilesComponent(){} + /** + * 返回需要引入的JS脚本路径 + * @param client 请求客户端描述 + * @return JS脚本路径 + */ + public ScriptPath script(RequestClient client ) { + //如果不需要就直接返回 ScriptPath.EMPTY + return ScriptPath.build("com/fr/plugin/third/party/jsdjadh/main.js"); + } + + /** + * 返回需要引入的CSS样式路径 + * @param client 请求客户端描述 + * @return CSS样式路径 + */ + public StylePath style(RequestClient client ) { + //如果不需要就直接返回 StylePath.EMPTY; + //return StylePath.build("com/fr/plugin/jscssinput/demo/demo.css"); + return StylePath.EMPTY; + } + + /** + * 通过给定的资源过滤器控制是否加载这个资源 + * @return 资源过滤器 + */ + public Filter filter() { + return new Filter(){ + @Override + public boolean accept() { + //任何情况下我们都在平台组件加载时加载我们的组件 + return true; + } + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainWebResourceProvider.java b/src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainWebResourceProvider.java new file mode 100644 index 0000000..dbce071 --- /dev/null +++ b/src/main/java/com/fr/plugin/third/party/jsdjjed/web/MainWebResourceProvider.java @@ -0,0 +1,19 @@ +package com.fr.plugin.third.party.jsdjjed.web; + +import com.fr.decision.fun.impl.AbstractWebResourceProvider; +import com.fr.decision.web.MainComponent; +import com.fr.web.struct.Atom; + +public class MainWebResourceProvider extends AbstractWebResourceProvider { + @Override + public Atom attach() { + //在平台主组件加载时添加我们自己的组件 + return MainComponent.KEY; + } + + @Override + public Atom client() { + //我们自己要引入的组件 + return MainFilesComponent.KEY; + } +} diff --git a/src/main/resources/com/fr/plugin/third/party/jsdjjed/feishu.js b/src/main/resources/com/fr/plugin/third/party/jsdjjed/feishu.js new file mode 100644 index 0000000..920581a --- /dev/null +++ b/src/main/resources/com/fr/plugin/third/party/jsdjjed/feishu.js @@ -0,0 +1,2464 @@ +!(function () { + Dec.jsdjjed = Dec.jsdjjed || {}; + BI.extend(Dec.jsdjjed, { + reqAddApp: function (e, t) { + Dec.reqPost("/url/jsdjjed/add/app", e, t) + }, + reqAppsByPage: function (e, t, i) { + return Dec.reqGet("/url/jsdjjed/query/app?" + Dec.Utils.transformObject2URLParam(e, null, !1), {}, t, i) + }, + reqEditApp: function (e, t) { + Dec.reqPut("/url/jsdjjed/edit/app", e, t) + }, + deleteAppsByIds: function (e, t) { + Dec.reqDelete("/url/jsdjjed/delete/app", { + removeUserIds: e + }, t) + }, + forbidApp: function (e, t) { + Dec.reqPut("/url/jsdjjed/forbid/app", e, t) + }, + getAppConfig: function (e) { + Dec.reqGetHandle("/url/jsdjjed/query/config/app", "", e) + }, + + saveAppConfig: function (e, t) { + Dec.reqPut("/url/jsdjjed/save/config/app", e, t) + }, + reqChatGroup: function (e, t, i) { + return Dec.reqGet("/url/jsdjjed/query/chat/group?" + Dec.Utils.transformObject2URLParam(e, null, !1), {}, t, i) + }, + isStatusSuccess: function (e) { + if (e.status && e.status == "success") { + return true; + } + return false; + }, + getValidItemsData: function (e) { + if (e.data && e.data.items) { + return e.data.items; + } + return []; + }, + getSyncSource: function (e, t) { + return Dec.reqGet("/url/jsdjjed/synchronize/source", "", t) + } + + }); + + var feishuAppModelAllRow = BI.inherit(Fix.Model, { + context: ["rows", "currentPage", "isAllChecked", "filter", "syncConfigs", "selectedValues", "userManagementConfigs"], + computed: { + keywordMap: function () { + var e = {}; + return BI.isEmptyString(this.model.filter.searchBy) ? e = { + username: this.model.filter.keyword, + realName: this.model.filter.keyword + } : (e[this.model.filter.searchBy] = this.model.filter.keyword, + e) + }, + selected: function () { + return BI.some(this.model.selectedValues, function (e, t) { + return t === this.options.id + }, this) + } + }, + actions: { + disableUser: function (i, n) { + var t = this; + Dec.jsdjjed.forbidApp({ + enable: i, + id: n + }, function (e) { + BI.some(t.model.rows, function (e, t) { + if (t.id === n) + return t.enable = i, + !0 + }), + t.model.rows.splice(0, 0) + }) + }, + changeSelected: function (i) { + var n = this; + i ? this.model.selectedValues.push(this.options.id) : BI.remove(this.model.selectedValues, this.options.id), + BI.some(n.model.rows, function (e, t) { + if (t.id === n.options.id) + return t.selected = i, + !0 + }), + this.model.isAllChecked = BI.every(this.model.rows, function (e, t) { + return BI.contains(n.model.selectedValues, t.id) || !t.enableCheck + }) + } + } + }); + //BI.model("dec.model.user.all.row", feishuAppModelAllRow); + BI.model("dec.model.jsdjjed.feishu.app.all.row", feishuAppModelAllRow); + + var feishuAppEditItemConfigId = BI.inherit(BI.Widget, { + props: { + editControll: {}, + userInfo: {} + }, + render: function () { + var e = this.options + , t = e.userInfo; + e.editControll; + return { + type: "bi.vertical_adapt", + items: [{ + type: "bi.label", + width: 90, + textAlign: "left", + text: "应用唯一标识" + }, { + el: { + type: "bi.label", + cls: "bi-border bi-border-radius", + width: 420, + height: 22, + value: t.configId, + textAlign: "left", + disabled: !0, + lgap: 4 + } + }] + } + }, + getValue: function () { + return {} + } + }); + BI.shortcut("dec.jsdjjed.feishu.app.edit_app.item.configId", feishuAppEditItemConfigId); + + var feishuAppEditItemNotes = BI.inherit(BI.Widget, { + props: { + editControll: {}, + userInfo: {} + }, + render: function () { + var t = this + , e = this.options + , i = e.userInfo + , e = e.editControll; + return { + type: "dec.form.editor", + $value: "real-name", + textWidth: 90, + editorWidth: 420, + invisible: !e.enableEditInfo, + text: "应用说明", + watermark: "应用说明", + value: i.notes, + el: { + disabled: e.userInfoReadOnly + }, + name: "notes", + rules: { + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.notes = e + } + } + }, + getValidations: function () { + return this.notes.getValidations() + }, + showError: function (e) { + this.notes.showError(e) + }, + hideError: function () { + this.notes.hideError() + }, + getValue: function () { + return { + notes: this.notes.getValue() + } + } + }); + BI.shortcut("dec.jsdjjed.feishu.app.edit_user.item.notes", feishuAppEditItemNotes); + var feishuAppEditItemloginMap = BI.inherit(BI.Widget, { + props: { + editControll: {}, + userInfo: {} + }, + render: function () { + var t = this + , e = this.options + , i = e.userInfo + , e = e.editControll; + return { + type: "dec.form.editor", + $value: "real-name", + textWidth: 90, + editorWidth: 420, + invisible: !e.enableEditInfo, + text: "单点映射字段", + watermark: "单点映射字段", + value: i.loginMap, + el: { + disabled: e.userInfoReadOnly + }, + name: "loginMap", + rules: { + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.loginMap = e + } + } + }, + getValidations: function () { + return this.loginMap.getValidations() + }, + showError: function (e) { + this.loginMap.showError(e) + }, + hideError: function () { + this.loginMap.hideError() + }, + getValue: function () { + return { + loginMap: this.loginMap.getValue() + } + } + }); + BI.shortcut("dec.jsdjjed.feishu.app.edit_user.item.loginMap", feishuAppEditItemloginMap); + + var feishuAppEditItemAppId = BI.inherit(BI.Widget, { + props: { + editControll: {}, + userInfo: {} + }, + render: function () { + var t = this + , e = this.options + , i = e.userInfo + , e = e.editControll; + return { + type: "dec.form.editor", + $value: "real-name", + textWidth: 90, + editorWidth: 420, + invisible: !e.enableEditInfo, + text: "APP ID", + watermark: "APP ID", + value: i.appId, + el: { + disabled: e.userInfoReadOnly + }, + name: "appId", + rules: { + required: { + message: "APP ID不能为空" + }, + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.appId = e + } + } + }, + getValidations: function () { + return this.appId.getValidations() + }, + showError: function (e) { + this.appId.showError(e) + }, + hideError: function () { + this.appId.hideError() + }, + getValue: function () { + return { + appId: this.appId.getValue() + } + } + }); + BI.shortcut("dec.jsdjjed.feishu.app.edit_user.item.appid", feishuAppEditItemAppId); + + var feishuAppEditItemAppSecret = BI.inherit(BI.Widget, { + props: { + editControll: {}, + userInfo: {} + }, + render: function () { + var t = this + , e = this.options + , i = e.userInfo + , e = e.editControll; + return { + type: "dec.form.editor", + $value: "real-name", + textWidth: 90, + editorWidth: 420, + invisible: !e.enableEditInfo, + text: "APP Secret", + watermark: "APP Secret", + value: i.appSecret, + el: { + disabled: e.userInfoReadOnly + }, + name: "appSecret", + rules: { + required: { + message: "APP Secret不能为空" + }, + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.appSecret = e + } + } + }, + getValidations: function () { + return this.appSecret.getValidations() + }, + showError: function (e) { + this.appSecret.showError(e) + }, + hideError: function () { + this.appSecret.hideError() + }, + getValue: function () { + return { + appSecret: this.appSecret.getValue() + } + } + }); + BI.shortcut("dec.jsdjjed.feishu.app.edit_user.item.appSecret", feishuAppEditItemAppSecret); + + var feishuAppEditPopupModel = BI.inherit(Fix.Model, { + state: function () { + return {} + }, + computed: {}, + actions: { + editUser: function (t, i) { + var n = this + , e = this.options + , o = e.editControll + , s = e.info.id + , e = (t.id = e.info.id, t.configId = e.info.configId, + this._updateBaseUserInfo(o, t)); + Dec.jsdjjed.reqEditApp(e, function (e) { + if (BI.isNotNull(e.errorCode)) + return e.errorCode === DecCst.ErrorCode.HISTORY_PASSWORD_LIMIT ? BI.Msg.toast(BI.i18nText("Dec-Error_Reset_Password"), { + level: "error" + }) : BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Fail"), { + level: "error" + }), + void i(!0); + t.id === Dec.personal.userId && BI.set(Dec, ["UserInfo", "displayName"], t.realName), + BI.Msg.toast(BI.i18nText("Dec-Basic_Success_Save"), { + level: "success" + }), + n.options.onEdit(t, s), + i(!0) + }) + } + }, + _updateBaseUserInfo: function (e, t, i) { + return e.enableEditInfo ? t : BI.extend(t, { + notes: null, + appId: null, + appSecret: null, + loginMap: null + }) + }, + _updateRoleInfo: function (e, t, i) { + return e.roleEditable ? t : BI.extend(t, { + roleIds: null + }) + }, + _updateDepostInfo: function (e, t, i) { + return e.depostEditable ? t : BI.extend(t, { + departmentPostIds: null + }) + }, + _resetPasswordInfo: function (e, t, i) { + return e.passwordEditable && t.resetPassword ? BI.extend(t, { + resetPassword: !0, + password: t.password + }) : BI.extend(t, { + resetPassword: !1 + }) + } + }); + BI.model("dec.model.jsdjjed.feishu.app.edit.popup", feishuAppEditPopupModel); + + + var feishuAppEditPopup = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-edit-user-popup", + onClickConfirm: BI.emptyFn, + info: {}, + onEdit: BI.emptyFn, + editControll: { + roleEditable: !0, + depostEditable: !0, + passwordEditable: !0, + enableEditInfo: !0, + userInfoReadOnly: !1 + } + }, + _store: function () { + return BI.Models.getModel("dec.model.jsdjjed.feishu.app.edit.popup", this.options) + }, + watch: {}, + render: function () { + var e = this; + return { + type: "bi.vtape", + items: [{ + el: this._rebuildCenter() + }, { + type: "bi.right_vertical_adapt", + lgap: 10, + height: 44, + items: [{ + type: "bi.button", + text: BI.i18nText("Dec-Basic_Cancel"), + level: "ignore", + handler: function () { + e._close() + } + }, { + type: "bi.button", + text: BI.i18nText("Dec-Basic_Sure"), + handler: function () { + e._end() + } + }] + }] + } + }, + _rebuildCenter: function () { + var t = this + , i = this.options.editControll + , n = this.options.info + , e = [{ + type: "dec.jsdjjed.feishu.app.edit_app.item.configId" + }]; + return e.push({ + type: "dec.jsdjjed.feishu.app.edit_user.item.notes" + }), + e.push({ + type: "dec.jsdjjed.feishu.app.edit_user.item.appid" + }), + e.push({ + type: "dec.jsdjjed.feishu.app.edit_user.item.appSecret" + }), + e.push({ + type: "dec.jsdjjed.feishu.app.edit_user.item.loginMap" + }), + BI.each(e, function (e, t) { + BI.extend(t, { + editControll: i, + userInfo: n + }) + }), + { + type: "bi.vertical", + items: [{ + el: { + type: "bi.htape", + cls: "bi-tips", + height: 36, + items: [{ + type: "bi.vertical", + items: [{ + type: "bi.label", + textAlign: "left", + text: BI.i18nText("Dec-Basic_Tip") + ":" + }], + width: 40 + }, { + type: "bi.vertical", + items: [{ + type: "bi.label", + whiteSpace: "normal", + textAlign: "left", + text: "请输入有效的App ID和App Secret" + }] + }] + }, + bgap: 15 + }, { + el: { + type: "bi.form", + cls: "dec-add-user-popup", + layouts: [{ + type: "bi.vertical", + bgap: 15 + }], + ref: function (e) { + t.form = e + }, + items: e + } + }] + } + }, + getValue: function () { + var i = {}; + return BI.each(this.form.getValue(), function (e, t) { + BI.extend(i, t) + }), + i + }, + _close: function () { + this.fireEvent("EVENT_CLOSE") + }, + _end: function () { + var t = this; + this.options; + this.form.submit(function () { + t.store.editUser(t.getValue(), function (e) { + e && t._close() + }) + }) + }, + _generatePassword: function () { + return Dec.Utils.generateRandomString(6) + } + }); + feishuAppEditPopup.EVENT_CLICK_CONFIRM = "EVENT_CONFIRM"; + //BI.shortcut("dec.user.edit.popup", e); + BI.shortcut("dec.jsdjjed.feishu.app.edit.popup", feishuAppEditPopup); + + + var feishuAppRowTools = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-user-row-tools", + enable: !0, + info: {}, + enableEdit: !1, + limited: !1, + enableDelete: !1, + enableDisable: !0, + editControll: {} + }, + render: function () { + var t = this + , i = this.options + , n = i.editControll; + return { + type: "bi.grid", + columns: 3, + rows: 1, + items: [{ + column: 0, + row: 0, + el: { + type: "bi.icon_button", + $value: "edit-user", + cls: "normal-edit-font dec-user-row-tools-button", + title: BI.i18nText("Dec-Basic_Edit"), + stopPropagation: !0, + invisible: !n.enableEdit, + handler: function () { + var e = { + type: "dec.jsdjjed.feishu.app.edit.popup", + onClickConfirm: function (e, t) { + i.onEdit(e, t) + }, + onEdit: i.onEdit, + info: i.infoGetter(), + editControll: n, + listeners: [{ + eventName: "EVENT_CLOSE", + action: function () { + BI.Popovers.remove(t.getName() + "edit") + } + }] + }; + BI.Popovers.create(t.getName() + "edit", { + type: "bi.popover", + header: "编辑飞书应用", + body: e, + width: 550, + height: 500, + listeners: [{ + eventName: "EVENT_CLOSE", + action: function () { + BI.Popovers.remove(t.getName() + "edit") + } + }] + }).open(t.getName() + "edit") + } + } + }, { + column: 1, + row: 0, + el: { + type: "bi.center_adapt", + invisible: !n.enableDisable, + items: [{ + type: "dec.bubble.combo", + disabled: i.limited, + el: { + type: "bi.icon_change_button", + $testId: "dec-icon-button", + $value: i.enable ? "disable-user" : "enable-user", + iconCls: "dec-user-row-tools-button " + (i.enable ? "disable-user-font" : "enable-user-font"), + ref: function (e) { + t.iconChangeButton = e + }, + title: function () { + return i.enable ? "禁用登录验证" : "启用登录验证" + }, + selected: !!i.enable + }, + text: function () { + return i.enable ? "确认禁用该登录验证?" : "确认启用该登录验证?" + }, + onClickConfirm: function () { + i.enable = !i.enable; + t.iconChangeButton.setIcon(i.enable ? "disable-user-font" : "enable-user-font"); + i.onDisable(i.enable); + this.hideView(); + } + }] + } + }, { + column: 2, + row: 0, + el: { + type: "bi.center_adapt", + invisible: !n.enableDelete, + items: [{ + type: "dec.bubble.combo", + disabled: i.limited, + el: { + type: "bi.icon_button", + $value: "delete-user", + cls: "delete-user-font dec-user-row-tools-button", + title: BI.i18nText("Dec-Basic_Delete") + }, + text: "确认删除该应用?", + onClickConfirm: function () { + this.hideView(), + i.onDelete() + } + }] + } + }] + } + } + }); + feishuAppRowTools.EVENT_DELETE = "EVENT_DELETE"; + //BI.shortcut("dec.user.row.tools", e) + BI.shortcut("dec.jsdjjed.feishu.app.row.tools", feishuAppRowTools); + + var feishuAppTableRow = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-user-table-row bi-border-bottom", + columnSize: [50, "fill", 100], + userInfo: {}, + value: BI.UUID() + }, + _store: function () { + return BI.Models.getModel("dec.model.jsdjjed.feishu.app.all.row", this.options) + }, + watch: { + selected: function (e) { + this.setSelected(e) + } + }, + render: function () { + var e = this.options; + return { + type: "bi.htape", + $testId: "dec-user-table-row", + $value: e.userInfo.username, + columnSize: e.columnSize, + items: this._formatItem(e.userInfo) + } + }, + _formatItem: function (e) { + var t = this + , i = this.options + , n = [] + , o = this.model.keywordMap; + return n.push({ + type: "bi.center_adapt", + width: 50, + height: i.height, + items: [{ + type: "bi.checkbox", + $testId: "dec-user-row-checkbox", + $value: e.username, + ref: function (e) { + t.checkbox = e + }, + disabled: !e.enableCheck, + selected: e.selected, + listeners: [{ + eventName: "EVENT_CHANGE", + action: function () { + t.store.changeSelected(this.isSelected()) + } + }] + }] + }), + n.push({ + el: { + type: "bi.htape", + height: i.height, + scrollable: !1, + disabled: !e.enable, + items: [{ + el: { + type: "bi.label", + ref: function (e) { + t.configId = e + }, + scrollable: !1, + textAlign: "left", + text: e.configId, + $testId: "dec-user-row-username", + $value: e.configId, + keyword: o.configId, + title: function () { + return e.configId + }, + rgap: 10, + height: i.height + }, + width: .15 + }, { + el: { + type: "bi.label", + ref: function (e) { + t.notes = e + }, + scrollable: !1, + textAlign: "left", + text: e.notes, + $testId: "dec-user-row-real-name", + $value: e.notes, + keyword: o.notes, + title: function () { + return e.notes + }, + rgap: 10, + height: i.height + }, + width: .2 + }, { + el: { + type: "bi.label", + ref: function (e) { + t.appId = e + }, + textAlign: "left", + text: e.appId, + $testId: "dec-user-row-depost-names", + $value: e.appId, + title: function () { + return e.appId + }, + rgap: 10, + height: i.height + }, + width: .15 + }, { + el: { + type: "bi.label", + ref: function (e) { + t.appSecret = e + }, + textAlign: "left", + text: e.appSecret, + $testId: "dec-user-row-role-names", + $value: e.appSecret, + title: function () { + return e.appSecret + }, + rgap: 10, + height: i.height + }, + width: .15 + }, { + el: { + type: "bi.label", + ref: function (e) { + t.loginMap = e + }, + scrollable: !1, + textAlign: "left", + text: e.loginMap, + $testId: "dec-user-row-real-name", + $value: e.loginMap, + keyword: o.loginMap, + title: function () { + return e.loginMap + }, + rgap: 10, + height: i.height + }, + width: .15 + }, + { + el: { + type: "bi.label", + ref: function (e) { + t.enable = e + }, + textAlign: "left", + text: e.enable ? BI.i18nText("Dec-User_Enabled") : BI.i18nText("Dec-User_Disabled"), + $testId: "dec-user-row-enable", + $value: e.enable, + rgap: 10, + height: i.height + }, + width: .07 + }] + } + }), + (n = BI.concat(n, this._createExtraItems(e))).push(BI.extend({}, e, { + type: "dec.jsdjjed.feishu.app.row.tools", + width: 100, + $scope: e.username, + infoGetter: function () { + return e + }, + onDelete: function () { + t.options.onDelete([e.id]) + }, + onEdit: i.onEdit, + onDisable: function (e) { + t.store.disableUser(e, t.getValue()) + } + })), + n + }, + _createExtraItems: function (i) { + var n = [] + , e = BI.Providers.getProvider("dec.provider.all_user").getExtraAttributes(); + return BI.each(e, function (e, t) { + BI.isKey(t.column) ? n.push(BI.extend({ + type: t.column, + width: t.width + }, i)) : BI.isFunction(t.column) ? n.push(BI.extend({ + width: t.width + }, t.column(i))) : n.push({ + type: "bi.layout", + width: t.width + }) + }), + n + }, + isSelected: function () { + return this.checkbox.isSelected() + }, + getValue: function () { + return this.options.userInfo.id + }, + setSelected: function (e) { + this.options.userInfo.enableCheck && this.checkbox.setSelected(e) + } + }); + feishuAppTableRow.EVENT_DELETE = "EVENT_DELETE"; + //BI.shortcut("dec.user.table.row", feishuAppTableRow); + BI.shortcut("dec.jsdjjed.feishu.app.table.row", feishuAppTableRow); + + + var feishuAppAddPopupModel = BI.inherit(Fix.Model, { + state: function () { + return {} + }, + computed: { + passwordValue: function () { + return this.options.passwordEditable ? "" : "123456" + } + }, + actions: { + addApp: function (e, t) { + function i() { + Dec.jsdjjed.reqAddApp(e, function (e) { + t(e) + }) + } + + BI.isFunction(this.options.beforeAddUser) ? this.options.beforeAddUser(i) : i() + } + } + }); + //BI.model("dec.model.user.add.popup", e); + BI.model("dec.model.jsdjjed.feishu.app.add.popup", feishuAppAddPopupModel); + + + var feishuAppAddPopup = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-add-user-popup", + passwordEditable: !0, + cleanDataSet: !1 + }, + _store: function () { + return BI.Models.getModel("dec.model.jsdjjed.feishu.app.add.popup", this.options) + }, + watch: {}, + render: function () { + var e = this; + return { + type: "bi.vtape", + items: [{ + el: this.rebuildCenter() + }, { + type: "bi.right_vertical_adapt", + height: 44, + lgap: 10, + items: [{ + type: "bi.button", + text: BI.i18nText("Dec-Basic_Cancel"), + level: "ignore", + handler: function () { + e.close() + } + }, { + type: "bi.button", + text: BI.i18nText("Dec-Basic_Sure"), + handler: function () { + e.end() + } + }] + }] + } + }, + rebuildCenter: function () { + var t = this + , e = this.options + , i = { + type: "dec.form.editor", + $value: "configId", + textWidth: 90, + text: "应用唯一标识", + watermark: BI.i18nText("Dec-Please_Input"), + editorWidth: 420, + rules: { + required: { + message: "应用唯一标识不能为空" + }, + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.configId = e + } + } + , n = { + type: "dec.form.editor", + $value: "notes", + textWidth: 90, + text: "应用说明", + watermark: BI.i18nText("Dec-Please_Input"), + editorWidth: 420, + rules: { + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.notes = e + } + } + , e = { + type: "dec.form.editor", + $value: "appId", + textWidth: 90, + text: "App ID", + watermark: BI.i18nText("Dec-Please_Input"), + editorWidth: 420, + rules: { + required: { + message: "App ID不能为空" + }, + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.appId = e + } + } + , o = { + type: "dec.form.editor", + $value: "appSecret", + textWidth: 90, + text: "App Secret", + watermark: BI.i18nText("Dec-Please_Input"), + editorWidth: 420, + rules: { + required: { + message: "App Secret不能为空" + }, + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.appSecret = e + } + }, + + n1 = { + type: "dec.form.editor", + $value: "loginMap", + textWidth: 90, + text: "单点映射字段", + watermark: BI.i18nText("Dec-Please_Input"), + editorWidth: 420, + rules: { + max: DecCst.STRING_SHORT_TEXT_LENGTH + }, + ref: function (e) { + t.loginMap = e + } + } + ; + return { + type: "bi.form", + cls: "dec-add-user-popup", + layouts: [{ + type: "bi.vertical", + bgap: 15 + }], + ref: function (e) { + t.form = e + }, + items: [{ + type: "bi.htape", + cls: "bi-tips", + height: 36, + items: [{ + type: "bi.vertical", + items: [{ + type: "bi.label", + textAlign: "left", + text: BI.i18nText("Dec-Basic_Tip") + ":" + }], + width: 40 + }, { + type: "bi.vertical", + items: [{ + type: "bi.label", + whiteSpace: "normal", + textAlign: "left", + text: "请输入有效的App ID和App Secret" + }] + }] + }, i, n, e, o, n1] + } + }, + getValue: function () { + return BI.extend({ + configId: this.configId.getValue(), + notes: this.notes.getValue(), + appId: this.appId.getValue(), + appSecret: this.appSecret.getValue(), + loginMap: this.loginMap.getValue() + }) + }, + close: function () { + this.fireEvent(i.EVENT_CLOSE) + }, + end: function () { + var t = this; + this.form.submit(function () { + t.store.addApp(t.getValue(), function (e) { + if (e.status && e.status === "success") { + t.fireEvent(feishuAppAddPopup.EVENT_CLICK_CONFIRM); + return; + } + var msg = e.msg; + if (e.errorCode && e.errorMsg) { + msg = "内部错误,请核实日志"; + } + BI.Msg.toast(msg, {level: "error"}); + }) + }) + } + }); + feishuAppAddPopup.EVENT_CLICK_CONFIRM = "EVENT_CONFIRM"; + feishuAppAddPopup.EVENT_CLOSE = "EVENT_CLOSE"; + BI.shortcut("dec.jsdjjed.feishu.app.add.popup", feishuAppAddPopup); + + + var feishuAppAdd = BI.inherit(BI.Widget, { + props: { + baseCls: "" + }, + _store: function () { + return BI.Models.getModel("dec.model.users.operations.add") + }, + watch: { + addButtonVisible: function (e) { + this.addBtn.setVisible(e) + } + }, + render: function () { + var t = this; + return { + type: "bi.icon_text_item", + value: "add", + logic: { + dynamic: !0 + }, + $point: "dec-users-operations-add", + text: "添加飞书应用", + height: 24, + cls: "add-user-font operation-item", + invisible: !this.model.addButtonVisible, + handler: function () { + t._createAddLayer() + }, + ref: function (e) { + t.addBtn = e + } + } + }, + _createAddLayer: function (e) { + var t = this + , e = { + type: "dec.jsdjjed.feishu.app.add.popup", + passwordEditable: this.model.passwordEditable, + beforeAddUser: e, + listeners: [{ + eventName: "EVENT_CLOSE", + action: function () { + BI.Popovers.remove(t.getName() + "add") + } + }, { + eventName: "EVENT_CONFIRM", + action: function () { + t.fireEvent("EVENT_CHANGE"), + BI.Popovers.remove(t.getName() + "add") + } + }] + }; + BI.Popovers.create(t.getName() + "add", { + type: "bi.popover", + header: "添加飞书应用", + body: e, + width: 550, + height: 500, + listeners: [{ + eventName: "EVENT_CLOSE", + action: function () { + BI.Popovers.remove(t.getName() + "add") + } + }] + }).open(t.getName() + "add") + } + }); + BI.shortcut("dec.jsdjjed.feishu.app.operations.add", feishuAppAdd); + + var feishuAppTableHeaders = [{ + type: "bi.label", + text: "应用唯一标识", + fieldName: "userAlias", + width: .15 + }, { + type: "bi.label", + text: "应用说明", + fieldName: "realAlias", + width: .2 + }, { + type: "bi.label", + text: "App ID", + width: .15 + }, { + type: "bi.label", + text: "App Secret", + width: .15 + }, { + type: "bi.label", + text: "单点映射字段", + width: .15 + }, { + type: "dec.user.table.header.enable", + text: "登录验证", + width: .07 + }]; + //BI.constant("dec.constant.user.table.headers", e); + BI.constant("dec.constant.jsdjjed.feishu.app.table.headers", feishuAppTableHeaders); + + var feishuAppTable = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-user-table", + $testId: "dec-user-table", + columnSize: [50, "fill", 100], + headerRowSize: 32, + rowSize: 36, + pager: {}, + perPage: 10, + header: [], + items: [] + }, + _store: function () { + return BI.Models.getModel("dec.model.user.all.table") + }, + watch: { + isAllChecked: function () { + this.header.setSelected(this.model.isAllChecked) + } + }, + render: function () { + var i = this + , t = this.options; + return { + type: "bi.vertical", + items: [{ + type: "dec.user.table.header", + ref: function (e) { + i.header = e + }, + columnSize: t.columnSize, + items: BI.Constants.getConstant("dec.constant.jsdjjed.feishu.app.table.headers"), + height: t.headerRowSize, + onSortChange: function (e, t) { + i.store.onSortChange(e, t) + }, + listeners: [{ + eventName: BI.Controller.EVENT_CHANGE, + action: function (e, t) { + i.store.handleCheckAll(t) + } + }] + }, { + type: "bi.button_group", + ref: function (e) { + i.table = e + }, + chooseType: 1, + layouts: [{ + type: "bi.vertical" + }], + items: [] + }, { + el: { + type: "dec.pager", + ref: function (e) { + i.pager = e + }, + height: 30, + listeners: [{ + eventName: "EVENT_CHANGE", + action: function () { + var e = this.getCurrentPage && this.getCurrentPage(); + t.itemsCreator({ + page: e + }, function (e) { + i.populate(e) + }) + } + }] + }, + vgap: 10 + }] + } + }, + _formatItems: function (e) { + var i = this + , n = this.options; + return BI.map(e, function (e, t) { + return { + type: "dec.jsdjjed.feishu.app.table.row", + id: t.id, + cls: BI.isOdd(e) ? "odd" : "even", + userInfo: t, + columnSize: n.columnSize, + height: n.rowSize, + onDelete: function (e) { + i.fireEvent(feishuAppTable.EVENT_DELETE, e) + }, + onEdit: n.onEdit + } + }) + }, + setCount: function (e) { + this.pager.setCount(e), + this.setAllPages(Math.ceil(e / this.options.perPage)) + }, + setAllPages: function (e) { + this.pager.setAllPages(e) + }, + setPage: function (e) { + this.pager.setPage(e) + }, + getValue: function () { + return this.table.getValue() + }, + empty: function () { + this.header.setSelected(!1) + }, + populate: function (e) { + this.table.populate(this._formatItems(e)) + } + }); + feishuAppTable.EVENT_DELETE = "EVENT_DELETE"; + BI.shortcut("dec.jsdjjed.feishu.app.table", feishuAppTable); + + + var feishuAppModel = BI.inherit(Fix.Model, { + state: function () { + return { + rows: [], + allCount: 0, + currentPage: 0, + isAllChecked: !1, + sortBy: "userAlias", + asc: !0, + filter: { + searchBy: "", + keyword: "" + }, + enable: DecCst.User.Available.ALL, + syncSourceType: 0, + syncConfigs: { + turnOn: !1, + strategy: DecCst.User.SyncUserStrategy.FULL_COVER + }, + perPage: 1e3, + selectedValues: [], + creationType: DecCst.User.CreationType.ALL + } + }, + childContext: ["rows", "currentPage", "allCount", "isAllChecked", "sortBy", "asc", "filter", "enable", "syncSourceType", "syncConfigs", "perPage", "selectedValues", "creationType"], + context: ["userManagementConfigs"], + computed: { + allPages: function () { + return Math.ceil(this.model.allCount / this.model.perPage) + }, + searching: function () { + return BI.isKey(this.model.filter.keyword) + } + }, + watch: { + "sortBy || asc": function () { + this.initData() + }, + "filter.keyword || creationType": function () { + this.initData() + }, + enable: function () { + this.initData() + }, + perPage: function () { + this.initData() + } + }, + created: function () { + this._bindEvents() + }, + destroyed: function () { + this._releaseEvents() + }, + actions: { + initConfigs: function (e) { + var t = this, + i = BI.after(2, function () { + BI.isFunction(e) && e() + }); + + t.model.syncSourceType = 0; + var tempData = '{"data":{"turnOn":false,"rate":43200,"schedule":{"type":"2","cron":"","rate":43200,"unit":1},"dataSetName":"","usernameColumn":-1,"userIdColumn":-1,"realNameColumn":-1,"passwordColumn":-1,"encryption":0,"customEncrypt":"","departmentColumn":-1,"departmentIdColumn":-1,"postColumn":-1,"postIdColumn":-1,"roleColumn":-1,"roleIdColumn":-1,"emailColumn":-1,"mobileColumn":-1,"keepOtherSourceSameData":true,"strategy":0,"sourceConflictStrategy":1,"syncSource":{"@class":"com.fr.decision.sync.source.impl.DefaultSyncSource","type":0}}}'; + var tempJson = JSON.parse(tempData); + BI.extend(t.model.syncConfigs, tempJson.data); + i(); + + /*Dec.jsdjjed.getSyncSource(null, function (e) { + e = e.data.type; + t.model.syncSourceType = e; + //e = BI.Services.getService("dec.service.users.sync").getSyncSourceInfo(e, !0); + //e && e.service.getSyncConfigs(function (e) { + BI.extend(t.model.syncConfigs, e.data), + i() + }) + }),*/ + BI.Services.getService("dec.service.global").initUsebleModules(i); + }, + initData: function () { + var t = this; + this.resetState(), + Dec.jsdjjed.reqAppsByPage({ + page: 1, + sortBy: this.model.sortBy, + asc: this.model.asc, + count: this.model.perPage, + keyword: this.model.filter.keyword, + searchBy: this.model.filter.searchBy, + enable: this.model.enable, + creationType: this.model.creationType + }, function (e) { + t._injectUserAttributes(e.data.items, function () { + t.model.allCount = e.data.total, + t.model.currentPage = e.data.page, + t.model.rows = t._packageRows(e.data.items) + }) + }) + } + + , + getUsersByPage: function (e) { + var t = this; + this.resetState(), + Dec.jsdjjed.reqAppsByPage({ + page: e, + sortBy: this.model.sortBy, + count: this.model.perPage, + asc: this.model.asc, + keyword: this.model.filter.keyword, + searchBy: this.model.filter.searchBy, + enable: this.model.enable, + creationType: this.model.creationType + }, function (e) { + t._injectUserAttributes(e.data.items, function () { + t.model.rows = t._packageRows(e.data.items), + t.model.allCount = e.data.total, + t.model.currentPage = e.data.page + }) + }) + } + , + deleteUsers: function (e) { + var t = this; + Dec.jsdjjed.deleteAppsByIds(e, function (e) { + t.onDeleteUsers(e) + }) + } + , + onEditUser: function (e, t) { + this.initData() + } + , + onDeleteUsers: function (e) { + e.data.count === this.model.rows.length ? this.getUsersByPage(1 === this.model.currentPage ? 1 : this.model.currentPage - 1) : this.getUsersByPage(this.model.currentPage) + } + , + onClearUsers: function () { + this.model.isAllChecked = !1, + this.model.selectedValues = [], + this.model.allCount = 0, + this.model.rows = [], + this.model.currentPage = 1, + this.initData() + } + , + updateUserListHeight: function (e) { + this.model.perPage = BI.max([2, Math.floor(e / 36)]) + } + , + resetState: function () { + this.model.isAllChecked = !1, + this.model.selectedValues = [] + } + , + changeUserSource: function (e) { + this.model.creationType = e + } + }, + _packageRows: function (e) { + var o = this + , s = BI.Services.getService("dec.service.global"); + return BI.each(e, function (e, t) { + var i = t.creationType === DecCst.User.CreationType.SYNC + , n = {}; + t.keyword = o.model.filter.keyword, + t.limited = BI.Services.getService("dec.service.user.management").isLimitedUser(t), + t.enableCheck = !i && !t.limited, + n.enableEdit = s.checkModulesUseable("decision-management-user-edit"), + n.enableEditInfo = s.checkModulesUseable("decision-management-user-edit-edit-info"), + n.userInfoReadOnly = i && o.model.syncConfigs.strategy === DecCst.User.SyncUserStrategy.FULL_COVER, + n.enableDelete = s.checkModulesUseable("decision-management-user-delete") && !i, + n.enableDisable = s.checkModulesUseable("decision-management-user-forbidden"), + n.roleEditable = n.depostEditable = s.checkModulesUseable("decision-management-user-edit-dep-role"), + n.passwordEditable = s.checkModulesUseable("decision-management-user-edit-reset-password") && (i ? o.model.userManagementConfigs.syncOperationType.type === DecCst.System.Info.AuthenticType.DEFAULT && o.model.syncConfigs.strategy === DecCst.User.SyncUserStrategy.INCREMENTAL_UPDATE : o.model.userManagementConfigs.manualOperationType.type === DecCst.System.Info.AuthenticType.DEFAULT), + t.editControll = n + }), + BI.remove(e, function (e, t) { + return BI.Services.getService("dec.service.user.management").checkAdmin(t) + }), + e + } + , + _injectUserAttributes: function (i, e) { + var n, t = BI.Providers.getProvider("dec.provider.all_user").getExtraAttributes(); + BI.isEmptyArray(t) ? e() : (n = BI.after(t.length, e), + BI.each(t, function (e, t) { + t.attributeGetter(i, n) + })) + } + , + _bindEvents: function () { + var e = this; + this.unListen = BI.Services.getService("dec.service.user.all_users").on("EVENT_REFRESH", function () { + e.initData() + }) + } + , + _releaseEvents: function () { + this.unListen && this.unListen() + } + }) + ; + BI.model("dec.model.jsdjjed.feishu.app", feishuAppModel); + + var feishuApp = BI.inherit(BI.Pane, { + props: { + baseCls: "dec-user-all bi-card" + }, + _store: function () { + return BI.Models.getModel("dec.model.jsdjjed.feishu.app") + }, + watch: { + rows: function (e) { + this.populate(e) + }, + allPages: function () { + this.table.setAllPages(this.model.allPages) + }, + currentPage: function (e) { + this.table.setPage(e) + }, + searching: function (e) { + this.userSourceRow.setVisible(!e) + }, + creationType: function (e) { + this.userSourceCombo.setValue(e) + } + }, + beforeRender: function (e) { + var t = this; + this.loading(), + this.store.initConfigs(function () { + t.loaded(), + e() + }) + }, + mounted: function () { + var e = this; + this.store.updateUserListHeight(this._calculateUserListHeight()), + BI.Resizers.add(this.getName(), function () { + e.store.updateUserListHeight(e._calculateUserListHeight()) + }) + }, + render: function () { + var i = this + , e = { + type: "bi.button_group", + ref: function (e) { + i.toolbar = e + }, + layouts: [{ + type: "bi.vertical_adapt", + rgap: 15 + }], + items: this._createOperations() + } + , t = { + type: "dec.jsdjjed.feishu.app.table", + ref: function (e) { + i.table = e + }, + itemsCreator: function (e, t) { + i.store.getUsersByPage(e.page, t) + }, + perPage: this.model.perPage, + listeners: [{ + eventName: "EVENT_DELETE", + action: function (e) { + i.store.deleteUsers(e) + } + }], + onEdit: BI.bind(this.store.onEditUser, this.store) + }; + return { + type: "bi.vtape", + hgap: 10, + items: [{ + type: "bi.absolute", + height: 40, + items: [{ + el: e, + top: 0, + left: 0, + bottom: 0 + }] + }, { + el: t + }] + } + }, + _createOperations: function () { + var n = this; + return BI.map( + //BI.Constants.getConstant("dec.constant.user.all.operations") + [{ + value: "add", + type: "dec.jsdjjed.feishu.app.operations.add", + actions: ["initConfigs", "initData"] + }] + + , function (e, t) { + return BI.extend({ + listeners: [{ + eventName: "EVENT_CHANGE", + action: function () { + var i = arguments; + BI.each(t.actions, function (e, t) { + n.store[t].apply(n.store, i) + }) + } + }], + rgap: 20 + }, t) + }) + }, + _calculateUserListHeight: function () { + return this.element.height() - 40 - 82 + }, + beforeDestroy: function () { + BI.Resizers.remove(this.getName()) + }, + populate: function (e) { + this.table.populate(e) + }, + initData: function () { + this.store.initData() + } + }); + BI.shortcut("dec.jsdjjed.feishu.app", feishuApp); + + + var feishuAppConfigModel = BI.inherit(Fix.Model, { + state: function () { + return { + normalConfig: {}, + beforeConfig: {} + } + }, + childContext: ["normalConfig"], + computed: { + encodingArray: function () { + return this.model.normalConfig.encodingArray + } + }, + actions: { + initPage: function (t) { + var i = this; + Dec.jsdjjed.getAppConfig(function (e) { + i.model.normalConfig = e, + i.model.beforeConfig = BI.deepClone(e), + t() + }) + }, + saveNormal: function (e, i) { + var n = this; + BI.isDeepMatch(n.model.beforeConfig, e) || Dec.jsdjjed.saveAppConfig(e, function (t) { + Dec.jsdjjed.getAppConfig(function (e) { + i(t, BI.deepClone(e), n.model.beforeConfig), + n.model.beforeConfig = e + }) + }) + }, + configExternalDatabase: function () { + BI.history.navigate("management/system/migration", { + trigger: !0 + }) + }, + switchingEncryptionAlgorithm: function () { + BI.history.navigate("management/system/encryption", { + trigger: !0 + }) + } + } + }); + BI.model("dec.model.jsdjjed.feishu.app.config", feishuAppConfigModel); + var feishuAppConfig = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-system-normal-decision bi-card" + }, + _store: function () { + return BI.Models.getModel("dec.model.jsdjjed.feishu.app.config") + }, + beforeInit: function (e) { + this.store.initPage(e) + }, + watch: {}, + render: function () { + var n = this; + var e = this.model.normalConfig; + var editorConfig = {textWidth: 160, editorWidth: 200, codeWidth: 150, codeHeight: 24, versionWidth: 50}; + return { + type: "bi.vertical", + hgap: 10, + items: [{ + type: "dec.card.vertical", + text: "常规参数                          启用ECSB     服务编码     版本号", + content: { + type: "bi.horizontal", + items: [{ + el: { + type: "bi.vertical", + width: 700, + vgap: 10, + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "报表地址:", + value: e.frUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.frUrlItem = e + } + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "获取app_access_token地址:", + value: e.accessTokenUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.accessTokenUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.accessTokenUrlEscbOption, + hgap: 10, + ref: function (e) { + n.accessTokenUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.accessTokenUrlEscbCodeEditor = e + }, + value: e.accessTokenUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.accessTokenUrlEscbVersionEditor = e + }, + value: e.accessTokenUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "根据code获取用户信息地址:", + value: e.codeUserUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.codeUserUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.codeUserUrlEscbOption, + hgap: 10, + ref: function (e) { + n.codeUserUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.codeUserUrlEscbCodeEditor = e + }, + value: e.codeUserUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.codeUserUrlEscbVersionEditor = e + }, + value: e.codeUserUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + } + , + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "获取群列表地址:", + value: e.chatGroupsUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.chatGroupsUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.chatGroupsUrlEscbOption, + hgap: 10, + ref: function (e) { + n.chatGroupsUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.chatGroupsUrlEscbCodeEditor = e + }, + value: e.chatGroupsUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.chatGroupsUrlEscbVersionEditor = e + }, + value: e.chatGroupsUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "获取用户ID:", + title: "使用手机号或邮箱获取用户ID", + value: e.usersUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.usersUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.usersUrlEscbOption, + hgap: 10, + ref: function (e) { + n.usersUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.usersUrlEscbCodeEditor = e + }, + value: e.usersUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.usersUrlEscbVersionEditor = e + }, + value: e.usersUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "发送消息地址:", + value: e.sendMessageUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.sendMessageUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.sendMessageUrlEscbOption, + hgap: 10, + ref: function (e) { + n.sendMessageUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.sendMessageUrlEscbCodeEditor = e + }, + value: e.sendMessageUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.sendMessageUrlEscbVersionEditor = e + }, + value: e.sendMessageUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "批量发送消息地址:", + value: e.sendBatchMessageUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.sendBatchMessageUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.sendBatchMessageUrlEscbOption, + hgap: 10, + ref: function (e) { + n.sendBatchMessageUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.sendBatchMessageUrlEscbCodeEditor = e + }, + value: e.sendBatchMessageUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.sendBatchMessageUrlEscbVersionEditor = e + }, + value: e.sendBatchMessageUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "上传图片地址:", + title: "上传图片地址", + value: e.uploadImageUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.uploadImageUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.uploadImageUrlEscbOption, + hgap: 10, + ref: function (e) { + n.uploadImageUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.uploadImageUrlEscbCodeEditor = e + }, + value: e.uploadImageUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.uploadImageUrlEscbVersionEditor = e + }, + value: e.uploadImageUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "上传文件地址:", + title: "上传文件地址", + value: e.uploadFileUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.uploadFileUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.uploadFileUrlEscbOption, + hgap: 10, + ref: function (e) { + n.uploadFileUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.uploadFileUrlEscbCodeEditor = e + }, + value: e.uploadFileUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.uploadFileUrlEscbVersionEditor = e + }, + value: e.uploadFileUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "bi.vertical_adapt", + items: [{ + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "请求用户身份验证地址:", + title: "请求用户身份验证地址", + value: e.authorizeUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.authorizeUrlItem = e + } + }, { + type: "dec.switch_button", + value: e.authorizeUrlEscbOption, + hgap: 10, + ref: function (e) { + n.authorizeUrlEscbOptionSwitcher = e + } + }, + { + type: "bi.editor", + cls: "bi-border", + ref: function (e) { + n.authorizeUrlEscbCodeEditor = e + }, + value: e.authorizeUrlEscbCode, + allowBlank: !0, + width: editorConfig.codeWidth, + height: editorConfig.codeHeight, + }, { + type: "bi.editor", + cls: "bi-border", + hgap: 10, + ref: function (e) { + n.authorizeUrlEscbVersionEditor = e + }, + value: e.authorizeUrlEscbVersion, + allowBlank: !0, + width: editorConfig.versionWidth, + height: editorConfig.codeHeight, + } + ] + }, + { + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "ESCB接口地址:", + title: "ESCB接口地址", + value: e.escbUrl, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.escbUrlItem = e + } + }, { + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "ESCB应用编码:", + title: "ESCB应用编码", + value: e.escbAppCode, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.escbAppCodeItem = e + } + }, + { + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "ESCB应用授权令牌:", + title: "ESCB应用授权令牌", + value: e.escbAppToken, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.escbAppTokenItem = e + } + }, + { + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "ESCB组织编码:", + title: "ESCB组织编码", + value: e.escbOrgCode, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.escbOrgCodeItem = e + } + }, + { + type: "dec.label.editor.item", + textWidth: editorConfig.textWidth, + cls: "dec-font-weight-bold", + text: "ESCB系统编码:", + title: "ESCB系统编码", + value: e.escbSysCode, + editorWidth: editorConfig.editorWidth, + ref: function (e) { + n.escbSysCodeItem = e + } + } + + ] + } + }] + }, + listeners: [{ + eventName: "EVENT_CHANGE", + action: function () { + var e; + n._validation() && (e = n.getValue(), + n.store.saveNormal(e, function (e, t, i) { + if (e.status && ("success" == e.status)) { + BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Success"), {level: "success"}); + return; + } + BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Fail"), {level: "error"}); + })) + } + }] + }] + } + }, + getValue: function () { + return BI.extend({ + frUrl: this.frUrlItem.getValue(), + accessTokenUrl: this.accessTokenUrlItem.getValue(), + accessTokenUrlEscbOption: this.accessTokenUrlEscbOptionSwitcher.getValue(), + accessTokenUrlEscbCode: this.accessTokenUrlEscbCodeEditor.getValue(), + accessTokenUrlEscbVersion: this.accessTokenUrlEscbVersionEditor.getValue(), + + codeUserUrl: this.codeUserUrlItem.getValue(), + codeUserUrlEscbOption: this.codeUserUrlEscbOptionSwitcher.getValue(), + codeUserUrlEscbCode: this.codeUserUrlEscbCodeEditor.getValue(), + codeUserUrlEscbVersion: this.codeUserUrlEscbVersionEditor.getValue(), + + chatGroupsUrl: this.chatGroupsUrlItem.getValue(), + chatGroupsUrlEscbOption: this.chatGroupsUrlEscbOptionSwitcher.getValue(), + chatGroupsUrlEscbCode: this.chatGroupsUrlEscbCodeEditor.getValue(), + chatGroupsUrlEscbVersion: this.chatGroupsUrlEscbVersionEditor.getValue(), + + usersUrl: this.usersUrlItem.getValue(), + usersUrlEscbOption: this.usersUrlEscbOptionSwitcher.getValue(), + usersUrlEscbCode: this.usersUrlEscbCodeEditor.getValue(), + usersUrlEscbVersion: this.usersUrlEscbVersionEditor.getValue(), + + sendMessageUrl: this.sendMessageUrlItem.getValue(), + sendMessageUrlEscbOption: this.sendMessageUrlEscbOptionSwitcher.getValue(), + sendMessageUrlEscbCode: this.sendMessageUrlEscbCodeEditor.getValue(), + sendMessageUrlEscbVersion: this.sendMessageUrlEscbVersionEditor.getValue(), + + sendBatchMessageUrl: this.sendBatchMessageUrlItem.getValue(), + sendBatchMessageUrlEscbOption: this.sendBatchMessageUrlEscbOptionSwitcher.getValue(), + sendBatchMessageUrlEscbCode: this.sendBatchMessageUrlEscbCodeEditor.getValue(), + sendBatchMessageUrlEscbVersion: this.sendBatchMessageUrlEscbVersionEditor.getValue(), + + uploadImageUrl: this.uploadImageUrlItem.getValue(), + uploadImageUrlEscbOption: this.uploadImageUrlEscbOptionSwitcher.getValue(), + uploadImageUrlEscbCode: this.uploadImageUrlEscbCodeEditor.getValue(), + uploadImageUrlEscbVersion: this.uploadImageUrlEscbVersionEditor.getValue(), + + uploadFileUrl: this.uploadFileUrlItem.getValue(), + uploadFileUrlEscbOption: this.uploadFileUrlEscbOptionSwitcher.getValue(), + uploadFileUrlEscbCode: this.uploadFileUrlEscbCodeEditor.getValue(), + uploadFileUrlEscbVersion: this.uploadFileUrlEscbVersionEditor.getValue(), + + authorizeUrl: this.authorizeUrlItem.getValue(), + authorizeUrlEscbOption: this.authorizeUrlEscbOptionSwitcher.getValue(), + authorizeUrlEscbCode: this.authorizeUrlEscbCodeEditor.getValue(), + authorizeUrlEscbVersion: this.authorizeUrlEscbVersionEditor.getValue(), + + escbUrl: this.escbUrlItem.getValue(), + escbAppCode: this.escbAppCodeItem.getValue(), + escbAppToken: this.escbAppTokenItem.getValue(), + escbOrgCode: this.escbOrgCodeItem.getValue(), + escbSysCode: this.escbSysCodeItem.getValue() + }) + }, + _validation: function () { + var e = !0 + return e; + }, + _showSuccess: function (e, t) { + var i = BI.UUID(); + delete e.cloudCenter, + BI.isDeepMatch(t, e) ? BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Success"), { + level: "success" + }) : BI.Popovers.create(i, { + width: 450, + height: 220, + header: BI.i18nText("BI-Basic_Prompt"), + body: { + type: "dec.component.icon_text.alert", + text: BI.i18nText("Dec-System_Normal_Save_Tip"), + listeners: [{ + eventName: BI.Popover.EVENT_CLOSE, + action: function () { + BI.Popovers.remove(i) + } + }] + } + }).open(i) + } + }); + BI.shortcut("dec.jsdjjed.feishu.app.config", feishuAppConfig); + + BI.constant("dec.constant.jsdjjed.feishu.tabs", [{ + value: "allApp", + text: "飞书应用", + cardType: "dec.jsdjjed.feishu.app" + }, { + value: "appConfig", + text: "配置", + cardType: "dec.jsdjjed.feishu.app.config" + }]); + + var fsManagerModel = BI.inherit(Fix.Model, { + state: function () { + var e = BI.Constants.getConstant("dec.constant.jsdjjed.feishu.tabs"); + return { + activeTab: BI.isNotEmptyArray(e) ? e[0].value : "allUser", + userManagementConfigs: { + syncOperationType: { + type: DecCst.System.Info.AuthenticType.DEFAULT + }, + manualOperationType: { + type: DecCst.System.Info.AuthenticType.DEFAULT + } + } + } + }, + childContext: ["userManagementConfigs"], + computed: { + tabs: function () { + return BI.map(BI.Constants.getConstant("dec.constant.jsdjjed.feishu.tabs"), function (e, t) { + return { + text: t.text, + value: t.value, + selected: 0 === e + } + }) + }, + isAdmin: function () { + //return BI.Services.getService("dec.service.user.management").isAdmin(); + return true; + } + }, + actions: { + getUserConfig: function (e) { + this.getManagementConfig(e), + BI.Services.getService("dec.service.user.management").initUserOrganization() + }, + getManagementConfig: function (t) { + var i = this; + Dec.Utils.getUserManagementConfig(function (e) { + i.model.userManagementConfigs = e.data, + t && t() + }) + }, + openTab: function (e) { + this.model.activeTab = e + }, + createCard: function (i) { + var e = BI.find(BI.Constants.getConstant("dec.constant.jsdjjed.feishu.tabs"), function (e, t) { + return t.value === i + }); + return e ? BI.extend({ + type: e.cardType + }, e) : { + type: "bi.label", + text: i + } + } + } + }); + BI.model("dec.model.jsdjjed.feishu.manager", fsManagerModel); + + var fsManager = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-user-management" + }, + _store: function () { + return BI.Models.getModel("dec.model.jsdjjed.feishu.manager") + }, + watch: { + activeTab: function (e) { + this.tab.setSelect(e) + } + }, + beforeInit: function (e) { + this.store.getUserConfig(e) + }, + render: function () { + var t = this + , e = { + type: "dec.line_segment", + cls: "dec-font-weight-bold", + ref: function (e) { + t.tabs = e + }, + height: 40, + items: BI.createItems(this.model.tabs, { + hgap: 15 + }), + layouts: [{ + type: "bi.vertical_adapt" + }], + listeners: [{ + eventName: "EVENT_CHANGE", + action: function (e) { + t.store.openTab(e) + } + }] + }; + return { + type: "bi.absolute", + cls: "bi-background", + items: [{ + el: { + type: "bi.vtape", + items: [{ + type: "bi.vertical_adapt", + cls: "bi-card bi-border-bottom", + items: [e], + height: 40 + }, { + type: "bi.absolute", + items: [{ + el: { + type: "bi.tab", + cardCreator: BI.bind(this.store.createCard, this), + single: !0, + ref: function (e) { + t.tab = e + }, + showIndex: this.model.activeTab + }, + top: 10, + left: 10, + right: 10, + bottom: 10 + }] + }] + }, + left: 0, + right: 0, + top: 0, + bottom: 0 + }] + } + }, + _createSettingLayer: function () { + var e = this + , t = BI.UUID(); + BI.Layers.create(t, null, { + container: this, + render: { + type: "dec.user.setting", + listeners: [{ + eventName: "EVENT_SAVE", + action: function () { + e.store.getManagementConfig(function () { + BI.Layers.remove(t) + }) + } + }, { + eventName: "EVENT_CHANGE", + action: function () { + BI.Layers.remove(t) + } + }] + } + }), + BI.Layers.show(t) + } + }); + BI.shortcut("dec.management.jsdjjed.feishu.manager", fsManager); + + +// 特别注意,此配置需要配合服务端SystemOptionProvider接口使用,不然会因无权限而不显示节点. + BI.config("dec.constant.management.navigation", function (items) { + items.push({ + value: "jsdjjed-feishu", // 地址栏显示的hash值 + id: "decision-jsdjjed-feishu-manager", // id + text: "飞书管理", // 文字 + cardType: "dec.management.jsdjjed.feishu.manager", // 组件的shortcut,适用于用fineui开发的页面. + cls: "icon-manager-font" // 图标类名 + }); + return items; + }); + } + () +) +; \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/third/party/jsdjjed/message.js b/src/main/resources/com/fr/plugin/third/party/jsdjjed/message.js new file mode 100644 index 0000000..618ec2e --- /dev/null +++ b/src/main/resources/com/fr/plugin/third/party/jsdjjed/message.js @@ -0,0 +1,263 @@ +!(function () { + console.log("123"); + BI.config("dec.constant.schedule.task.accessory", function (items) { + items.push({ + value: 4096, + text: "图片" + }) + return items; + }); + + + var jsdjjedTextValueCombo = BI.inherit(BI.Widget, { + props: { + baseCls: "dec-system-extensible-parameter", + labelWidth: 210, + editorWidth: 180, + value: {} + }, + render: function () { + var t = this + , e = this.options + , i = e.value; + return { + type: "bi.vertical_adapt", + items: [{ + type: "bi.label", + textAlign: "left", + cls: "dec-font-weight-bold", + text: BI.i18nText(i.name), + title: BI.i18nText(i.name), + width: e.labelWidth + }, { + type: "bi.text_value_combo", + $testId: "dec-system-normal-extensible-text-value-combo", + width: e.editorWidth, + value: i.value, + items: this._createItems(i), + ref: function (e) { + t.textValueCombo = e + }, + listeners: [{ + eventName: "EVENT_CHANGE", + action: function () { + t.fireEvent("EVENT_CHANGE", arguments) + } + }] + }, { + type: "dec.text.bubble.combo", + cls: "help-area", + invisible: !i.description, + text: i.description ? BI.i18nText(i.description) : "", + el: { + type: "bi.icon_button", + $point: "dec-system-normal-extensible", + cls: "detail-font", + width: 35, + height: 24 + } + }] + } + }, + _createItems: function (e) { + return BI.map(e.items || e.alternatives, function (e, t) { + return BI.extend(t, { + text: BI.isKey(t.text) ? t.text : BI.i18nText(t.key) + }) + }) + }, + getValue: function () { + var e = this.textValueCombo.getValue(); + return BI.isNotEmptyArray(e) ? e[0] : ""; + }, + setValue: function (e) { + this.textValueCombo.setValue(e); + }, + populate: function (e) { + this.textValueCombo.populate(e); + } + }); + jsdjjedTextValueCombo.EVENT_CHANGE = "EVENT_CHANGE"; + BI.shortcut("jsdjjed.text.value.combo", jsdjjedTextValueCombo); + + + var appMessagePushTerminalType = 64; + //debugger; + Dec.Plugin.OutPutActionProvider.items.push({ + version: 1.0, + terminalType: appMessagePushTerminalType, + terminalText: BI.i18nText("飞书推送通知"), + getItem: function () { + var self = this; + return { + type: "bi.vertical", + //width: 540, + height: 100, + vgap: 0, + items: [{ + type: "jsdjjed.text.value.combo", + labelWidth: 80, + value: { + name: "应用凭证", + value: "", + //description: BI.i18nText("Dec-System_Week_Begins_Tips"), + //items: BI.Constants.getConstant("dec.constant.system.normal.week.begins") + }, + ref: function (e) { + self.appConfigIds = e + }, + listeners: [{ + eventName: "EVENT_CHANGE", + action: function () { + var configId = this.getValue(); + //console.log(configId); + self._setChatGroupValue(configId); + } + }] + }, + { + type: "jsdjjed.text.value.combo", + labelWidth: 80, + value: { + name: "飞书群", + value: "", + //description: BI.i18nText("Dec-System_Week_Begins_Tips"), + //items: BI.Constants.getConstant("dec.constant.system.normal.week.begins") + }, + ref: function (e) { + self.chatGroup = e + } + }, + { + type: "jsdjjed.text.value.combo", + labelWidth: 80, + value: { + name: "消息类型", + value: "text", + //description: BI.i18nText("Dec-System_Week_Begins_Tips"), + items: [{text: "文本", value: "text"}, {text: "富文本", value: "post"}] + }, + ref: function (e) { + self.feishuMsgType = e + } + }, + { + type: "jsdjjed.text.value.combo", + labelWidth: 80, + value: { + name: "发送类型", + value: "message", + //description: BI.i18nText("Dec-System_Week_Begins_Tips"), + items: [{text: "消息", value: "message"}, {text: "文件", value: "file"}, { + text: "消息与文件", + value: "message_file" + }] + }, + ref: function (e) { + self.feishuSendType = e + } + } + ] + } + }, + _setChatGroupValue: function (configId) { + var self = this; + var id = configId || ""; + Dec.jsdjjed.reqChatGroup({config_id: id}, function (e) { + var items = BI.map(Dec.jsdjjed.getValidItemsData(e), function (e, t) { + return {text: t.show, value: t.chatId}; + }); + items.unshift({text: "空", value: "empty_group"}); + if (BI.isNotEmptyArray(items)) { + var currentChatGroupId = self._getCurrentChatGroupId(); + var chatId = self._getItemContainValue(currentChatGroupId, items); + self.chatGroup.populate(items); + self.chatGroup.setValue(chatId); + } + }) + }, + setValue: function (v) { + //debugger; + if (v.terminal && v.terminal === appMessagePushTerminalType) { + if ((v.feishuMsgType == undefined) || (v.feishuMsgType == null) || (v.feishuMsgType.length <= 0)) { + v.feishuMsgType = "text"; + } + + if ((v.feishuSendType == undefined) || (v.feishuSendType == null) || (v.feishuSendType.length <= 0)) { + v.feishuSendType = "message"; + } + + this.value = v; + this.appConfigIds.setValue(v.configId); + this.chatGroup.setValue(v.chatGroupId); + this.feishuMsgType.setValue(v.feishuMsgType); + this.feishuSendType.setValue(v.feishuSendType); + } + }, + + getValue: function () { + var self = this; + // actionName最后一个点后面的类名要和这个return的json的字段名一致 + + return { + OutputAppMessagePush: BI.extend(self.value, { + "@class": "com.fr.plugin.third.party.jsdjjed.schedule.bean.OutputAppMessagePush", + actionName: "com.fr.plugin.third.party.jsdjjed.schedule.bean.OutputAppMessagePush", + terminal: appMessagePushTerminalType, + configId: self.appConfigIds.getValue(), + chatGroupId: self.chatGroup.getValue(), + feishuMsgType: self.feishuMsgType.getValue(), + feishuSendType: self.feishuSendType.getValue() + }) + } + }, + + checkValid: function () { + return this.getValue() ? true : false; + }, + + fireEvent: function (v) { + var self = this; + if (v && v == true) { + Dec.jsdjjed.reqAppsByPage({page: 1}, function (e) { + var items = BI.map(Dec.jsdjjed.getValidItemsData(e), function (e, t) { + return {text: t.show, value: t.configId}; + }); + if (BI.isNotEmptyArray(items)) { + var currentConfigId = self._getCurrentConfigId(); + var configId = self._getItemContainValue(currentConfigId, items); + self.appConfigIds.populate(items); + self.appConfigIds.setValue(configId); + self.appConfigIds.fireEvent("EVENT_CHANGE"); + } + }) + } + }, + _getItemContainValue: function (currentValue, items) { + var tempValue = items[0].value; + if (BI.isEmpty(currentValue)) { + return tempValue; + } + for (var i = 0, max = items.length - 1; i <= max; i++) { + if (currentValue == items[i].value) { + return currentValue; + } + } + return tempValue; + }, + _getCurrentConfigId() { + var self = this; + if (self.value && self.value.configId) { + return self.value.configId; + } + return ""; + }, + _getCurrentChatGroupId() { + var self = this; + if (self.value && self.value.chatGroupId) { + return self.value.chatGroupId; + } + return ""; + } + }); +})(); \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/h5-js-sdk-1.5.12.js b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/h5-js-sdk-1.5.12.js new file mode 100644 index 0000000..b790a65 --- /dev/null +++ b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/h5-js-sdk-1.5.12.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";window.__JSSDK_VERSION__={SDKVersion:"3.0.0",SDKUpdateVersion:"3.0.0",CommitHash:""};var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function n(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}var i,r,o,a=t(n((function(e){function t(e,t,n,i,r,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(i,r)}e.exports=function(e){return function(){var n=this,i=arguments;return new Promise((function(r,o){var a=e.apply(n,i);function s(e){t(a,r,o,s,c,"next",e)}function c(e){t(a,r,o,s,c,"throw",e)}s(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0}))),s=n((function(e){var t=function(e){var t,n=Object.prototype,i=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,i){var r=t&&t.prototype instanceof v?t:v,o=Object.create(r.prototype),a=new I(i||[]);return o._invoke=function(e,t,n){var i=f;return function(r,o){if(i===p)throw new Error("Generator is already running");if(i===h){if("throw"===r)throw o;return A()}for(n.method=r,n.arg=o;;){var a=n.delegate;if(a){var s=E(a,n);if(s){if(s===g)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===f)throw i=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=p;var c=l(e,t,n);if("normal"===c.type){if(i=n.done?h:d,c.arg===g)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=h,n.method="throw",n.arg=c.arg)}}}(e,n,a),o}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f="suspendedStart",d="suspendedYield",p="executing",h="completed",g={};function v(){}function m(){}function _(){}var y={};y[o]=function(){return this};var w=Object.getPrototypeOf,b=w&&w(w(x([])));b&&b!==n&&i.call(b,o)&&(y=b);var k=_.prototype=v.prototype=Object.create(y);function S(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function n(r,o,a,s){var c=l(e[r],e,o);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==typeof f&&i.call(f,"__await")?t.resolve(f.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(f).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;this._invoke=function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}}function E(e,n){var i=e.iterator[n.method];if(i===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,E(e,n),"throw"===n.method))return g;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var r=l(i,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,g;var o=r.arg;return o?o.done?(n[e.resultName]=o.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,g):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function z(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function x(e){if(e){var n=e[o];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),z(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;z(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:x(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),g}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function("r","regeneratorRuntime = r")(t)}})),c=n((function(e){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0}))),f=t(n((function(e){e.exports=function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i=0||(r[n]=e[n]);return r},e.exports.default=e.exports,e.exports.__esModule=!0})));!function(e){e.userCaptureScreenObserved="userCaptureScreenObserved",e.onWatermarkChangeObserved="onWatermarkChange",e.onDownloadTaskStateChange="onDownloadTaskStateChange",e.nfcFoundDevice="nfcFoundDevice"}(i||(i={})),function(e){e.IOS="ios",e.ANDROID="android",e.MAC="mac",e.WINDOWS="windows"}(r||(r={})),function(e){e.CDN="cdn",e.NPM="npm",e.DEV="dev"}(o||(o={}));var d=function(e){var t;if(e.includes("Lark")||e.includes("Feishu"))return null==(t=e.match(/(lark|feishu|lark-staging|feishu-staging|lark-prerelease|feishu-prerelease|lark-oversea)\/([\d.]+)/i))?void 0:t[2]},p={versions:function(){var e=navigator.userAgent,t=navigator.platform,n=/(Android|iPhone|iPad|iPod|iOS)/i.test(e),i=d(e),r=e.includes("Lark")||e.includes("Feishu"),o=i&&m(i,"3.46.0")<0,a=i&&m(i,"3.46.0")>=0&&e.includes("WebApp");return{trident:e.includes("Trident"),presto:e.includes("Presto"),webKit:e.includes("AppleWebKit"),gecko:e.includes("Gecko")&&!e.includes("KHTML"),mobile:!!e.match(/AppleWebKit.*Mobile.*/)||!!e.match(/AppleWebKit/),ios:!!e.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),android:e.includes("Android")||e.includes("Linux"),iPhone:e.includes("iPhone")||e.includes("Mac"),iPad:e.includes("iPad"),webApp:!e.includes("Safari"),PCFeishu:!n&&r&&(o||a),mobileFeishu:n&&r,larkVersion:d(e),mac:t.includes("Mac"),win:t.includes("Win")}}()};function h(){return new Promise((function(e){var t=0;!function n(){var i,r;(null==(i=window.webkit)||null==(r=i.messageHandlers)?void 0:r.invoke)||window.WebViewJavascriptBridge||t>100?e(0):(setTimeout(n,10+t),t++)}()}))}function g(e){return Object.prototype.toString.call(e).slice(8,-1)}function v(e,t){t?console.warn("【H5-JS-SDK】: "+e):console.error("【H5-JS-SDK】: "+e)}function m(e,t){for(var n=e.replace(/-\d*$/,"").split(".").map((function(e){return+e})),i=t.replace(/-\d*$/,"").split(".").map((function(e){return+e})),r=0;ri[r])return 1;if(n[r]255||(i=e.charCodeAt(a++))>255||(r=e.charCodeAt(a++))>255)throw new TypeError('Failed to execute "btoa" on "Window": The string '+e+" to be encoded contains characters outside of the Latin1 range.");o+=C.charAt((t=n<<16|i<<8|r)>>18&63)+C.charAt(t>>12&63)+C.charAt(t>>6&63)+C.charAt(63&t)}return s?o.slice(0,s-3)+"===".substring(s):o},I=T.atob||function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!E.test(e))throw new TypeError('Failed to execute "atob" on "Window": The string '+e+" to be decoded is not correctly encoded.");var t;e+="==".slice(2-(3&e.length));for(var n,i,r="",o=0;o>16&255):64===i?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return r};function x(e){for(var t="",n=new Uint8Array(e),i=n.byteLength,r=0;r0){for(var o=0;o{};function Y(e){return void 0===e}const Z={string:function(e){return"string"==typeof e||"String"===function(e){return Object.prototype.toString.call(e).slice(8,-1)}(e)},undefined:Y,void:function(e){return Y(e)||null===e},object:function(e){return null!==e&&"object"==typeof e},number:function(e){return"number"==typeof e&&!Number.isNaN(e)},function:function(e){return"function"==typeof e}};function ee(e,t){return Object.entries(e).filter((([e,n])=>!t(n,e))).reduce(((e,[t,n])=>Object.assign(e,{[t]:n})),{})}function te(e,t,n){Object.defineProperty(e,t,{get:()=>n,set(){}})}let ne;function ie(){return ne||(ne=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}())}var re=function(){function e(e){var t=e.priority,n=e.sampleRate,i=e.filters;this.priority=0,this.filters=[],this.priority=t,this.sampleRate=n,this.filters=i}return e.prototype.match=function(e){return this.filters.every((function(t){return t.match(e)}))},e}(),oe=function(){function e(e){var t=e.key,n=e.values;this.key="",this.values=[],this.key=t,this.values=n}return e.prototype.match=function(e){var t=""+e[this.key];return this.values.includes(t)},e}(),ae=function(){function e(){this._defaultSampleRate=1,this._traceSampleRate=0,this._normalSampleRate=1,this._warnSampleRate=1,this._errorSampleRate=1,this._fatalSampleRate=1,this._orderedRules=[]}var t=e.prototype;return t.buildConfig=function(e){void 0===e&&(e={});var t=e,n=t[$.sampleRate],i=t[$.traceSampleRate],r=t[$.normalSampleRate],o=t[$.warnSampleRate],a=t[$.errorSampleRate],s=t[$.fatalSampleRate],c=t[$.rules];Z.number(n)&&(this._defaultSampleRate=n),Z.number(i)&&(this._traceSampleRate=i),Z.number(r)&&(this._normalSampleRate=r),Z.number(o)&&(this._warnSampleRate=o),Z.number(a)&&(this._errorSampleRate=a),Z.number(s)&&(this._fatalSampleRate=s);var u=this._parseRules(c);this._orderedRules=u.sort((function(e,t){return t.priority-e.priority}))},t.getSampleRate=function(e){var t=this._getMatchedRuleInOrderedRules(e),n=this._defaultSampleRate;switch(e[N.monitorLevel]){case j.trace:n=this._traceSampleRate;break;case j.normal:n=this._normalSampleRate;break;case j.warn:n=this._warnSampleRate;break;case j.error:n=this._errorSampleRate;break;case j.fatal:n=this._fatalSampleRate}return t&&!Z.undefined(t.sampleRate)&&(n=t.sampleRate),n>=1?1:0},t._getMatchedRuleInOrderedRules=function(e){return this._orderedRules.find((function(t){return t.match(e)}))},t._parseRules=function(e){return Array.isArray(e)?e=e.map((function(e){if(Z.object(e)){var t=e[$.priority],n=e[$.sampleRate],i=e[$.filters];return Z.number(t)||(t=0),Z.number(n)||(n=void 0),i=Array.isArray(i)?i.map((function(e){if(Z.object(e)){var t=e,n=t[$.key],i=t[$.values];return Z.string(n)&&Array.isArray(i)?e=new oe({key:n,values:i}):void 0}})).filter((function(e){return e})):[],new re({priority:t,sampleRate:n,filters:i})}})).filter((function(e){return e})):[]},e}(),se=function(){function e(t){var n=this;if(this._domainToNameRegistry=new Map,this._domainToParamInjectorRegistry=new Map,this._domainToNameCache=new Map,t instanceof e)return t;var i=t||{},r=i.defaultName,o=void 0===r?J:r,a=i.log,s=i.report,c=void 0===s?X:s,u=i.commonMetrics,l=void 0===u?{}:u,f=i.commonCategories,d=void 0===f?{}:f,p=i.commonTags,h=void 0===p?[]:p,g=i.defaultPlatform,v=void 0===g?"Slardar":g,m=i.domainToNameMap,_=i.domainToParamInjectorMap;this.defaultName=String(o),this.defaultPlatform=v,this._log=a,this._report=c,this.commonMetrics=l,this.commonCategories=d,this.commonTags=new Set(h),m&&Object.entries(m).forEach((function(e){var t=e[0],i=e[1];n.registerEvent(i,t)})),_&&Object.entries(_).forEach((function(e){var t=e[0],i=e[1];n.registerParamInjector(t,i)}))}var t=e.prototype;return t.setRemoteConfig=function(e){this._remoteConfig=e},t.getRemoteConfig=function(){return this._remoteConfig?this._remoteConfig:this.constructor.globalRemoteConfig},t.log=function(e){Z.function(this._log)&&this._log(e)},t.report=function(e){var t,n=this.getRemoteConfig(),i=e.name,r=e.metrics,o=e.categories,a=Object.assign(Object.assign(((t={})[G]=i,t),r),o);n.getSampleRate(a)<1||this._report(e)},t.registerEvent=function(e,t){if(this._domainToNameRegistry.get(t)!==e){this._domainToNameRegistry.set(t,e);for(var n,i=l(this._domainToNameCache.keys());!(n=i()).done;){var r=n.value;r.startsWith(t)&&this._domainToNameCache.delete(r)}}},t.getNameByDomain=function(e){return this._findName(e)||this.defaultName},t.registerParamInjector=function(e,t){this._domainToParamInjectorRegistry.set(e,t)},t.applyParamInjectorByDomain=function(e,t){for(var n=e.split("."),i=n.length,r=1;r<=i;r++){var o=n.slice(0,r).join("."),a=this._domainToParamInjectorRegistry.get(o);Z.function(a)&&a(t)}},t._findName=function(e){if(this._domainToNameCache.has(e))return this._domainToNameCache.get(e);for(var t,n=e.split("."),i=n.length,r=0;r=20||c&&c>=j.error?s():this.waitingForReport||(this.waitingForReport=!0,r=ie().setTimeout((function(){s()}),2e3))}},t.invokeLog=function(e){Z.function(this.config.log)&&this.config.log(e)},t.invokeReport=function(e){Z.function(this.config.report)&&this.config.report(e)},t._setConfig=function(e){this.config=new se(e)},t._getName=function(e){var t=e.getValue(N.monitorDomain);return e.getName()||t&&this.config.getNameByDomain(String(t))||this.config.defaultName},t._getPlatform=function(e){return e.platform||this.config.defaultPlatform},e}();ce.default=new ce;var ue,le,fe=function(){function e(t){if(t instanceof e)return t;var n=t||{},i=n.domain,r=n.code,o=n.level,a=n.message;te(this,"version",1),te(this,"domain",String(i)),te(this,"code",Number(r)),te(this,"ID",String(this.generateID())),te(this,"level",o),te(this,"message",String(a))}var t=e.prototype;return t.equals=function(t){return t instanceof e&&t.ID===this.ID},t.toJSON=function(){return{domain:this.domain,code:this.code,level:this.level,message:this.message}},t.generateID=function(){return this.version+"-"+this.domain+"-"+this.code},e}(),de=function(){function e(e){this.metrics={},this.categories={},this.internalData={},this.tags=new Set,this._time=0,this._startTime=0,this._endTime=0,this._flushed=!1;var t=e||{},n=t.service,i=t.name,r=void 0===i?J:i,o=t.code,a=t.platform,s=t.metrics,c=t.categories,u=t.internalData;this.service=n?new ce(n):ce.default,this.name=r,this._platform=a,o&&(this.code=new fe(o)),this.categories=Object.assign(Object.assign({},this.service.getConfig().commonCategories),c),this.metrics=Object.assign(Object.assign({},this.service.getConfig().commonMetrics),s),this.tags=new Set(this.service.getConfig().commonTags),this.internalData=Object.assign({},u)}var t=e.prototype;return t.addMetricValue=function(e,t){return Z.undefined(t)||(this.metrics[e]=t),this},t.addCategoryValue=function(e,t){return Z.undefined(t)||(this.categories[e]=t),this},t.addTag=function(e){return Z.undefined(e)||this.tags.add(e),this},t.addMap=function(e){var t=this;return void 0===e&&(e={}),Object.entries(e).forEach((function(e){var n=e[0],i=e[1];Z.undefined(i)||(Z.number(i)?t.metrics[n]=i:t.categories[n]=i)})),this},t.tracing=function(e){return Z.undefined(e)||this.addCategoryValue(N.traceId,e),this},t.flush=function(e){if(!this._flushed){this._flushed=!0;var t=this.getInternalData(),n=t.logEnabled,i=void 0===n||n,r=t.reportEnabled,o=void 0===r||r,a=this.code||(this.hasErrorInfo()?this.codeIfError:void 0);Z.undefined(this.level)&&a&&a.level&&this.setLevel(a.level),a&&(this.addCategoryValue(N.monitorDomain,a.domain),this.addMetricValue(N.monitorCode,a.code),this.addCategoryValue(N.monitorID,a.ID),this.addCategoryValue(N.monitorMessage,a.message)),this.tags&&this.addCategoryValue(N.monitorTags,this.tagsInline()),this.time<=0&&this.setTime(Date.now()),o&&(e||this.service).reportTo(this),i&&this.service.log(this)}},t.flushWithThrottle=function(){this._flushed||(this._flushed=!0,this.service.flushWithThrottle(this))},t.setMonitorCode=function(e){return Z.undefined(e)||(this.code=new fe(e)),this},t.setMonitorCodeIfError=function(e){return Z.undefined(e)||(this.codeIfError=new fe(e)),this},t.setLevel=function(e){return Z.undefined(e)||(this.level=e,this.addMetricValue(N.monitorLevel,e)),this},t.setErrorCode=function(e){return Z.undefined(e)||this.addCategoryValue(N.errorCode,String(e)),this},t.setErrorMessage=function(e){return Z.undefined(e)||this.addCategoryValue(N.errorMsg,String(e)),this},t.setError=function(e){if(Z.undefined(e))return this;var t=e.message,n=e.fileName,i=e.lineNumber,r=e.columnNumber,o=e.stack,a=e.code,s=e.monitorCode;return Z.string(t)&&this.addCategoryValue(N.errorMsg,t),Z.string(n)&&this.addCategoryValue(N.monitorFile,n),Z.string(o)&&this.addCategoryValue(N.monitorStack,o),Z.number(a)&&this.addMetricValue(N.errorCode,a),Z.number(i)&&this.addMetricValue(N.monitorLine,i),Z.number(r)&&this.addMetricValue(N.monitorColumn,r),s&&this.setMonitorCode(s),this},t.setTime=function(e){return Z.undefined(e)||(this._time=e,this.addMetricValue(N.time,e)),this},t.setPlatform=function(e){return e&&(this._platform=e),this},t.timing=function(e){var t=Date.now();return this._startTime>0?(this._endTime=t,this.addMetricValue(e||N.duration,this._endTime-this._startTime)):this._startTime=t,this},t.setDuration=function(e){return Z.undefined(e)||this.addMetricValue(N.duration,e),this},t.getCode=function(){return this.code},t.getName=function(){return this.name},t.getMetrics=function(){return Object.assign({},this.metrics)},t.getCategories=function(){return Object.assign({},this.categories)},t.getInternalData=function(){return this.internalData},t.getData=function(){return Object.assign(Object.assign({},this.metrics),this.categories)},t.getValue=function(e){return this.metrics[e]||this.categories[e]},t.setResultType=function(e){return this.addCategoryValue(N.resultType,e),this},t.setResultTypeSuccess=function(){return this.setResultType(R.success),this},t.setResultTypeFail=function(){return this.setResultType(R.fail),this},t.setResultTypeCancel=function(){return this.setResultType(R.cancel),this},t.setResultTypeTimeout=function(){return this.setResultType(R.timeout),this},t.getLevel=function(){return this.level},t.getMonitorId=function(){return this.code&&this.code.ID},t.getMonitorDomain=function(){return this.code&&this.code.domain},t.toJSON=function(){return{name:this.name,categories:this.getCategories(),metrics:this.getMetrics()}},t.addInternalData=function(e){return Object.assign(this.internalData,e),this},t.hasErrorInfo=function(){return!Z.undefined(this.getValue(N.errorCode))||!Z.undefined(this.getValue(N.errorMsg))},t.tagsInline=function(){return 0===this.tags.size?"":Array.from(this.tags).reduce((function(e,t){return""+e+(t?H+t:"")}))},q(e,[{key:"time",get:function(){return this._time}},{key:"platform",get:function(){return this._platform}}]),e}();!function(e){e.getSdkConfigTimeout="h5jssdk_get_sdk_config_timeout",e.getSdkConfigError="h5jssdk_get_sdk_config_error",e.authenticationFailure="h5jssdk_authentication_failure"}(ue||(ue={})),function(e){e.success="success",e.fail="fail",e.cancel="cancel",e.timeout="timeout"}(le||(le={}));var pe,he="js.open_platform.web",ge=((pe={})[ue.getSdkConfigTimeout]={domain:he+".op_web_js_script_error",code:10001,level:j.error,message:"h5jssdk_get_sdk_config_timeout"},pe[ue.getSdkConfigError]={domain:he+".op_web_js_script_error",code:10002,level:j.error,message:"h5jssdk_get_sdk_config_error"},pe[ue.authenticationFailure]={domain:he+".op_web_js_script_error",code:10003,level:j.error,message:"h5jssdk_authentication_failure"},pe[le.success]={domain:he+".api",code:1e4,level:j.normal,message:"api_success"},pe[le.fail]={domain:he+".api",code:10002,level:j.error,message:"api_fail"},pe[le.cancel]={domain:he+".api",code:10001,level:j.warn,message:"api_cancel"},pe[le.timeout]={domain:he+".api",code:10003,level:j.error,message:"api_timeout"},pe.DEFAULT={domain:he,code:1e4,level:j.warn,message:"undefined_default_code"},pe),ve="op_web_js_script_error",me="op_web_api_invoke_result",_e=[],ye=function(e,t){return void 0===e&&(e=""),void 0===t&&(t=ge.DEFAULT),new de(e?{name:e,code:new fe(t)}:{name:"undefined_default_code",code:new fe(ge.DEFAULT)})},we=function(){return(we=Object.assign||function(e){for(var t,n=1,i=arguments.length;n0)&&!(i=o.next()).done;)a.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return a}function ke(){for(var e=[],t=0;t>e/4).toString(10):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,He)}var Je=function(){return He().replace(/-/g,"").slice(0,19)},Ke=function(e){return function(e,t,n){if("string"==typeof e&&"number"==typeof n){var i,r=[];n=n<=25?n:n%25;var o=String.fromCharCode(n+97);i=e.split(o);for(var a=0;a7344e6)return void this._requestWebId();if(r>432e7)return void this._updateWebId(e)}this._complete(e,t,n)},e.prototype._complete=function(e,t,n){this.cfg.envInfo.user.ssid=n,this.cfg.envInfo.user.web_id=e,this.cfg.envInfo.user.user_unique_id=t,this.tokenReady=!0},e.prototype._requestWebId=function(){this.isNoWebid?this._setTokenId(Je(),"","",!0):this._fetchWebId(this.fetchUrl,!1)},e.prototype._updateWebId=function(e){var t=""+this.domain+Ae+"/"+e+"/update";this._fetchWebId(t,!0)},e.prototype._fetchWebId=function(e,t){var n=this;this.isGetWebId=!0,qe(e,5e3,{app_key:this.config.app_key,app_id:this.config.app_id,url:location.href,user_agent:window.navigator.userAgent,referer:document.referrer,user_unique_id:""},this.config.app_key,(function(e){n.isGetWebId=!1,e&&0===e.e?(n.web_id=e.web_id,n.uuidQueue.length?n._requestSsId(n.uuidQueue[0]):n._setTokenId(e.web_id,"",t?n.ssid:e.ssid,!0)):(n.hook.emit("token-error"),console.warn("[]appid: "+n.config.app_id+", get webid error, init error~"))}),(function(){n.isGetWebId=!1,n.hook.emit("token-error"),console.warn("[]appid: "+n.config.app_id+", get webid error, init error~")}),!0)},e.prototype._setTokenId=function(e,t,n,i){var r=this.cfg.envInfo.user.web_id||e,o={web_id:r,ssid:n,user_unique_id:t||r,timestamp:Date.now()};this.enableCookie&&this.storage.setCookie(this.cookieKey,encodeURIComponent(JSON.stringify(o)),this.expiresTime,this.cookieDomain),this.storage.setItem(this.tokensKey,o),this.cfg.envInfo.user.ssid=n,this.cfg.envInfo.user.web_id=r,this.cfg.envInfo.user.user_unique_id=t||r,this.uuid=t||r,this.web_id=r,this.ssid=n,i&&(this.tokenReady=!0,this.hook.emit("token-ready"))},e.prototype._getSsid=function(e){e&&-1===["0","Null","None","","undefined"].indexOf(e)&&this.uuid!==e&&(this.uuidQueue.push(e),this.uuid=e,this.cfg.envInfo.user.user_unique_id=e,-1===this.uuidQueue.indexOf(e)&&this.uuidQueue.push(e),this.isNoSsid||this.isGetWebId||(this.tokenReady=!1,this._requestSsId(e),this.sendQueue.push(e)),this.session._resetSessionId())},e.prototype._requestSsId=function(e){var t=this;if(!this.sendQueue.length){var n=this.domain+"/v1/user/ssid";qe(n,5e3,{app_key:this.config.app_key,app_id:this.config.app_id,web_id:this.web_id,user_unique_id:e},this.config.app_key,(function(n){t.sendQueue=[],t.uuidQueue.length&&t.uuidQueue.splice(t.uuidQueue.indexOf(e),1),n&&0===n.e?(t._setTokenId(t.web_id,e,n.ssid,0===t.uuidQueue.length),t.uuidQueue.length&&t._requestSsId(t.uuidQueue[0])):(t.tokenReady=!0,t.hook.emit("token-ready"),console.warn("[]appid: "+t.config.app_id+", get ssid error"))}),(function(){t.tokenReady=!0,t.hook.emit("token-ready")}),!0)}},e.prototype.isTokenReady=function(){return this.tokenReady},e}(),Qe=function(e){navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)?window.addEventListener("pagehide",e,!1):window.addEventListener("beforeunload",e,!1)},$e=function(e,t,n){void 0===e&&(e=[]),void 0===t&&(t=function(e){return e}),void 0===n&&(n=20);var i,r=[],o=0;return e.forEach((function(e){var a=t(e);void 0===i?i=a:(a!==i||r[o].length>=n)&&(o+=1,i=a),r[o]=r[o]||[],r[o].push(e)})),r},Xe=function(){function e(e,t,n,i,r,o,a){this.collect=e,this.cfg=n,this.config=t,this._token=i,this.appInfo=t.app_id||t.app_key,this.debugMode=!!t.log,this.evtDataKey=Fe(this.appInfo,!1);var s=t.channel_domain||Ke(xe[t.channel]);if(this.reportUrl=t.report_url?t.report_url:""+s+Oe,this.storage=new Ie(!0),this.EventStorage=new Ie(!1),this.maxStorage=t.max_storage_num||-1,this.maxReport=t.max_report||10,this.reportTime=t.reportTime||30,this.timeout=t.timeout||1e5,this.closeStorage=!0,this.plugin=r,this.session=o,this.filter=a,this.plugin){var c=t.enable_storage,u=t.disable_storage;(c||!1===u)&&(this.closeStorage=!1)}this.addListener()}return e.prototype.addListener=function(){var e=this;window.addEventListener("unload",(function(){e.report(!0)}),!1),Qe((function(){e.report(!0)})),document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e.report(!0)}),!1)},e.prototype.setReady=function(){this.isReady=!0,this.closeStorage||this.checkStorageEvent(),this.report()},e.prototype.event=function(e){var t=this;void 0===e&&(e=[]);try{var n=ke(e,this.storage.getItem(this.evtDataKey)||[]);this.storage.setItem(this.evtDataKey,n),this.reportTimer&&clearTimeout(this.reportTimer),n.length>=this.maxReport?this.report(!1):this.reportTimer=setTimeout((function(){t.report(!1),t.reportTimer=null}),this.reportTime)}catch(e){}},e.prototype.beconEvent=function(e){void 0===e&&(e=[]);var t=this._mergeEvents(e);this._dealData(t,!0)},e.prototype.report=function(e){if(void 0===e&&(e=!1),!this.collect.destroyInstance&&this._token.isTokenReady()&&this.isReady){var t=this.storage.getItem(this.evtDataKey)||[],n=this._mergeEvents(t);this.storage.removeItem(this.evtDataKey),this._dealData(n,e)}},e.prototype._mergeEvents=function(e){var t=this;if(!e.length)return e;var n=this.cfg.get();return n.header.custom=JSON.stringify(n.header.custom),$e(e,(function(e){return!t.closeStorage&&!!e.params.__disable_storage__}),this.maxReport).map((function(e){return we({events:e.map((function(e){try{if(e.event&&"applog_trace"!==e.event){var n=we({},t.cfg.get("evtParams"),e.params);delete n.__disable_storage__;var i=[];return t.plugin&&t.plugin.ab&&t.plugin.ab.versions&&t.plugin.ab.extVersions&&(i=[],i=t.config.enable_multilink||-1!==window.location.href.indexOf("multilink=true")?t.plugin.ab.mulilinkVersions.concat(t.plugin.ab.extVersions):t.plugin.ab.versions.concat(t.plugin.ab.extVersions)),we({},e,{params:JSON.stringify(n),ab_sdk_version:i.join(","),session_id:t.session._getSessionId()})}return we({},e,{params:JSON.stringify(e.params)})}catch(t){return we({},e,{params:JSON.stringify(e.params)})}})),user:n.user,header:n.header},t.closeStorage?{}:{__disable_storage__:e[0].params.__disable_storage__},{verbose:t.debugMode?1:void 0,local_time:parseInt(""+(new Date).getTime()/1e3)})}))},e.prototype._dealData=function(e,t){var n=this;if(!e.length)return e;var i=[];i=$e(e,(function(e){return!!e.__disable_storage__}),this.maxReport),!this.closeStorage&&this.plugin.maxStorage&&this.plugin.maxStorage(i,this.maxStorage,this.evtDataKey,this.storage);var r={};i.forEach((function(e){var i=Je(),o=e;try{n.filter&&(o=n.filter(e))}catch(e){}if(!n.closeStorage&&!e[0].__disable_storage__){var a=JSON.parse(JSON.stringify(e));a&&a[0]&&(a[0].header.__storage_index__=Date.now()),r[i]=a,n.EventStorage.setItem(n.evtDataKey,r)}n._send(i,o,t)}))},e.prototype._send=function(e,t,n){var i=this;this.isSending=!0;var r=function(){i.isSending=!1};if(!this.closeStorage)try{t&&t[0]&&t[0].header.__storage_index__&&delete(t=JSON.parse(JSON.stringify(t)))[0].header.__storage_index__}catch(e){}this.plugin&&this.plugin.et_test&&this.plugin.et_test.send(t),qe(this.reportUrl,this.timeout,t,this.config.app_key,(function(t,n){if(r(),i.plugin&&!i.closeStorage){var o=i.EventStorage.getItem(i.evtDataKey)||{};Object.keys(o).length?(delete o[e],i.EventStorage.setItem(i.evtDataKey,o)):i.EventStorage.removeItem(i.evtDataKey)}t&&0!==t.e&&i.collect&&i.collect.tracer&&1!==i.cfg.staging&&i.collect.tracer.addErrorCount(n,"f_data",t.e,t)}),(function(e,t){r(),i.cfg.get("reportErrorCallback")(e,t),i.collect&&i.collect.tracer&&1!==i.cfg.staging&&i.collect.tracer.addErrorCount(e,"f_net",t),i.plugin&&i.plugin.monitor&&i.plugin.monitor.sdkError(i.config.app_key,i.reportUrl,e,t)}),!1,n,r),this.plugin&&this.plugin.monitor&&this.plugin.monitor.sdkOnload(this.config.app_key,this.reportUrl,t)},e.prototype.checkStorageEvent=function(){var e=this;try{var t=this.EventStorage.getItem(this.evtDataKey)||{},n=Object.keys(t);n.length>0&&setTimeout((function i(){for(var r=[],o=0;o0&&r.push(n.shift());r.length>0&&r.forEach((function(n){e._send(n,t[n],!1)})),setTimeout(i,5)}),5)}catch(e){}},e}(),Ye=void 0,Ze=(new Date).getTimezoneOffset(),et=parseInt(""+-Ze/60,10),nt=60*Ze,it=function(){function e(e,t,n){this.cookieDomain=t.cookie_domain||"",this.initConfig=t;var i=function(e,t){var n,i,r=function(e){var t=document.createElement("a");return t.href=e,t},o=window.screen.width,a=window.screen.height,s=window.navigator.appVersion,c=window.navigator.userAgent,u=window.navigator.language,l=document.referrer,f=l?r(l).hostname:"",d=function(e){var t=r(e).search;t=t.slice(1);var n={};return t.split("&").forEach((function(e){var t,i,r=e.split("=");r.length&&(t=r[0],i=r[1]);try{n[t]=decodeURIComponent(void 0===i?"":i)}catch(e){n[t]=i}})),n}(window.location.href),p="",h="",g="",v=""+parseFloat(s);-1!==(n=c.indexOf("Opera"))&&(g="Opera",v=c.substring(n+6),-1!==(n=c.indexOf("Version"))&&(v=c.substring(n+8))),-1!==(n=c.indexOf("Edge"))?(g="Microsoft Edge",v=c.substring(n+5)):-1!==(n=c.indexOf("MSIE"))?(g="Microsoft Internet Explorer",v=c.substring(n+5)):-1!==(n=c.indexOf("Lark"))?(g="Lark",v=c.substring(n+5,n+11)):-1!==c.indexOf("Chrome")?-1!==(n=c.indexOf("MicroMessenger"))?(g="weixin",v=c.substring(n+15,n+20)):-1!==(n=c.indexOf("MQQBrowser"))?(g="qqbrowser",v=c.substring(n+11,n+15)):-1!==(n=c.indexOf("360"))?(g="360browser",v=c.substring(c.indexOf("Chrome")+7)):-1!==c.indexOf("baidubrowser")||-1!==c.indexOf("BIDUBrowser")?(-1!==c.indexOf("baidubrowser")?(n=c.indexOf("baidubrowser"),v=c.substring(n+13,n+16)):-1!==c.indexOf("BIDUBrowser")&&(n=c.indexOf("BIDUBrowser"),v=c.substring(n+12,n+15)),g="baidubrowser"):-1!==(n=c.indexOf("xiaomi"))?-1!==c.indexOf("openlanguagexiaomi")?(g="openlanguage xiaomi",v=c.substring(n+7,n+13)):(g="xiaomi",v=c.substring(n-7,n-1)):-1!==(n=c.indexOf("TTWebView"))?(g="TTWebView",v=c.substring(n+10,n+23)):-1!==(n=c.indexOf("Chrome"))&&(g="Chrome",v=c.substring(n+7)):-1!==c.indexOf("Safari")?-1!==(n=c.indexOf("QQ"))?(g="qqbrowser",v=c.substring(n+10,n+16)):-1!==(n=c.indexOf("Safari"))&&(g="Safari",v=c.substring(n+7),-1!==(n=c.indexOf("Version"))&&(v=c.substring(n+8))):-1!==(n=c.indexOf("Firefox"))?(g="Firefox",v=c.substring(n+8)):-1!==(n=c.indexOf("MicroMessenger"))?(g="weixin",v=c.substring(n+15,n+20)):-1!==(n=c.indexOf("QQ"))&&(g="qqbrowser",v=c.substring(n+3,n+8)),-1!==(i=v.indexOf(";"))&&(v=v.substring(0,i)),-1!==(i=v.indexOf(" "))&&(v=v.substring(0,i)),-1!==(i=v.indexOf(")"))&&(v=v.substring(0,i));for(var m,_,y=/Mobile|htc|mini|Android|iP(ad|od|hone)/.test(s)?"wap":"web",w=[{s:"Windows 10",r:/(Windows 10.0|Windows NT 10.0|Windows NT 10.1)/},{s:"Windows 8.1",r:/(Windows 8.1|Windows NT 6.3)/},{s:"Windows 8",r:/(Windows 8|Windows NT 6.2)/},{s:"Windows 7",r:/(Windows 7|Windows NT 6.1)/},{s:"Android",r:/Android/},{s:"Sun OS",r:/SunOS/},{s:"Linux",r:/(Linux|X11)/},{s:"iOS",r:/(iPhone|iPad|iPod)/},{s:"Mac OS X",r:/Mac OS X/},{s:"Mac OS",r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/}],b=0;b-1&&(t=e.slice(0,e.indexOf("Build/")))}));else if("ios"===e||"mac"===e||"windows"===e){var n=navigator.userAgent.replace("Mozilla/5.0 (",""),i=n.indexOf(";");t=n.slice(0,i)}}catch(e){}return t.trim()}(p),language:u,referrer:l,referrer_host:f,utm_source:C.utm_source,utm_medium:C.utm_medium,utm_campaign:C.utm_campaign,utm_term:C.utm_term,utm_content:C.utm_content,tracer_data:C.tracer_data}}(e,this.cookieDomain);this.configKey=function(e){return"__tea_cache_config_"+e}(""+e),this.sessionStorage=new Ie(!1,"session"),this.localStorage=new Ie(!1,"local"),n&&(this.storage=1===n?this.sessionStorage:this.localStorage),this.envInfo={user:{user_unique_id:Ye,user_type:Ye,user_id:Ye,user_is_auth:Ye,user_is_login:Ye,device_id:Ye,web_id:Ye,ip_addr_id:Ye,ssid:Ye},header:{app_id:Ye,app_name:Ye,app_install_id:Ye,install_id:Ye,app_package:Ye,app_channel:Ye,app_version:Ye,os_name:i.os_name,os_version:i.os_version,device_model:i.device_model,ab_client:Ye,ab_version:Ye,ab_sdk_version:Ye,traffic_type:Ye,client_ip:Ye,device_brand:Ye,os_api:Ye,access:Ye,language:i.language,region:Ye,app_language:Ye,app_region:Ye,creative_id:Ye,ad_id:Ye,campaign_id:Ye,log_type:Ye,rnd:Ye,platform:i.platform,sdk_version:Le,sdk_lib:"js",province:Ye,city:Ye,timezone:et,tz_offset:nt,tz_name:Ye,sim_region:Ye,carrier:Ye,resolution:i.screen_width+"x"+i.screen_height,browser:i.browser,browser_version:i.browser_version,referrer:i.referrer,referrer_host:i.referrer_host,width:i.screen_width,height:i.screen_height,screen_width:i.screen_width,screen_height:i.screen_height,utm_term:i.utm_term,utm_content:i.utm_content,utm_source:i.utm_source,utm_medium:i.utm_medium,utm_campaign:i.utm_campaign,tracer_data:JSON.stringify(i.tracer_data),custom:{}}},this.evtParams={},this.reportErrorCallback=function(){}}return e.prototype.set=function(e,t){var n=this;if(null==t&&(this.delete(e),t=void 0),"evtParams"===e||"_staging_flag"===e){var i;i="evtParams"===e?t:{_staging_flag:Number(t)};var r=we({},i);Object.keys(r).forEach((function(e){n.evtParams[e]=r[e]}))}else if("reportErrorCallback"===e&&"function"==typeof t)this.reportErrorCallback=t;else{var o="";if(e.indexOf(".")>-1){var a=e.split(".");o=a[0],e=a[1]}if("user_unique_id"===e){if(!t)return;if(-1!==["0","Null","None","","undefined"].indexOf(t))return}if("os_version"===e&&(e=""+t),"web_id"===e){if(!t)return;(!this.envInfo.user.user_unique_id||this.envInfo.user.user_unique_id&&this.envInfo.user.user_unique_id===this.envInfo.user.web_id)&&(this.envInfo.user.user_unique_id=t)}o?"user"===o||"header"===o?this.envInfo[o][e]=t:this.envInfo.header.custom[e]=t:this.envInfo.user.hasOwnProperty(e)?["user_type","ip_addr_id"].indexOf(e)>-1?this.envInfo.user[e]=t?Number(t):t:["user_id","web_id","user_unique_id","ssid"].indexOf(e)>-1?this.envInfo.user[e]=t?String(t):t:["user_is_auth","user_is_login"].indexOf(e)>-1?this.envInfo.user[e]=Boolean(t):"device_id"===e&&(this.envInfo.user[e]=t):this.envInfo.header.hasOwnProperty(e)?this.envInfo.header[e]=t:this.envInfo.header.custom[e]=t}},e.prototype.get=function(e){try{return e?"evtParams"===e?this.evtParams:"reportErrorCallback"===e?this[e]:JSON.parse(JSON.stringify(this.envInfo[e])):JSON.parse(JSON.stringify(this.envInfo))}catch(e){console.log("get config stringify error ")}},e.prototype.setStore=function(e){try{var t=this.storage.getItem(this.configKey);if(Object.keys(e).length){var n=Object.assign(e,t);this.storage.setItem(this.configKey,n)}}catch(e){}},e.prototype.getStore=function(){try{var e=this.storage.getItem(this.configKey);return Object.keys(e).length?e:null}catch(e){return null}},e.prototype.delete=function(e){try{var t=this.storage.getItem(this.configKey);t&&t.hasOwnProperty(e)&&(delete t[e],this.storage.setItem(this.configKey,t))}catch(e){}},e}(),rt=function(){function e(e,t){this.isLog=t||!1,this.name=e||""}var t=e.prototype;return t.info=function(e){this.isLog&&console.log("["+this.name+"] "+e)},t.warn=function(e){this.isLog&&console.warn("["+this.name+"] "+e)},t.error=function(e){this.isLog&&console.error("["+this.name+"] "+e)},t.throw=function(e){throw this.error(this.name),new Error(e)},e}(),ot=function(){function e(){this._hooks={}}return e.prototype.on=function(e,t){e&&t&&"function"==typeof t&&(this._hooks[e]||(this._hooks[e]=[]),this._hooks[e].push(t))},e.prototype.once=function(e,t){var n=this;e&&t&&"function"==typeof t&&this.on(e,(function i(r){t(r),n.off(e,i)}))},e.prototype.off=function(e,t){if(e&&this._hooks[e]&&this._hooks[e].length)if(t){var n=this._hooks[e].indexOf(t);-1!==n&&this._hooks[e].splice(n,1)}else this._hooks[e]=[]},e.prototype.emit=function(e,t){e&&this._hooks[e]&&this._hooks[e].length&&ke(this._hooks[e]).forEach((function(e){try{e(t)}catch(e){}}))},e}(),at=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))},st=function(){function e(e,t){this.storage=new Ie(!1,"session"),this.sessionKey=function(e){return"__tea_session_id_"+e}(e),this.expireTime=t.expireTime||18e5,this.disableSession=t.disable_session,this.disableSession||this._setSessionId()}return e.prototype._updateSessionId=function(){var e=this.storage.getItem(this.sessionKey);if(e&&e.sessionId){var t=e.timestamp;Date.now()-t>this.expireTime?e={sessionId:at(),timestamp:Date.now()}:e.timestamp=Date.now(),this.storage.setItem(this.sessionKey,e),this._resetExpTime()}},e.prototype._setSessionId=function(){var e=this,t=this.storage.getItem(this.sessionKey);t&&t.sessionId?t.timestamp=Date.now():t={sessionId:at(),timestamp:Date.now()},this.storage.setItem(this.sessionKey,t),this.sessionExp=setInterval((function(){e._checkEXp()}),this.expireTime)},e.prototype._getSessionId=function(){var e=this.storage.getItem(this.sessionKey);return this.disableSession?"":e&&e.sessionId?e.sessionId:""},e.prototype._resetExpTime=function(){var e=this;this.sessionExp&&(clearInterval(this.sessionExp),this.sessionExp=setInterval((function(){e._checkEXp()}),this.expireTime))},e.prototype._resetSessionId=function(){var e={sessionId:at(),timestamp:Date.now()};this.storage.setItem(this.sessionKey,e)},e.prototype._checkEXp=function(){var e=this.storage.getItem(this.sessionKey);e&&e.sessionId&&Date.now()-e.timestamp+30>=this.expireTime&&(e={sessionId:at(),timestamp:Date.now()},this.storage.setItem(this.sessionKey,e))},e}(),ct={pv:["predefine_pageview"],sdk:["_be_active","predefine_page_alive","predefine_page_close","__profile_set","__profile_set_once","__profile_increment","__profile_unset","__profile_append"],autotrack:["bav2b_click","bav2b_page","bav2b_beat","bav2b_page_statistics","__bav_click","__bav_page","__bav_beat","__bav_page_statistics"]},ut=function(){function e(e,t,n,i){this.count={pv:0,sdk:0,autotrack:0,log:0},this.limit={pv:1,sdk:10,autotrack:10,log:3},this.errorCode={f_net:0,f_data:0},this.errorInfo={pv:{f_net:0,f_data:0},sdk:{f_net:0,f_data:0},autotrack:{f_net:0,f_data:0},log:{f_net:0,f_data:0}},this.collect=e,this.disable_tracer=t.disable_tracer||t.channel_domain,this.ready=!(!t.app_id||this.disable_tracer),this.appid=t.app_id,this.process=n,this.event=i;var r=t.channel_domain||Ke(xe[t.channel]);this.reportUrl=t.report_url?t.report_url:""+r+Oe,this.listener()}return e.prototype.addCount=function(e){try{if(!this.ready)return;if(this.count[e]++,this.count[e]>=this.limit[e]){var t=[];for(var n in t=ke(t,this.processTracer(this.count[e],e,"net")),this.errorInfo[e])this.errorInfo[n]&&(t=ke(t,this.processTracer(this.errorInfo[e][n],e,n)));t.length&&this.sendTracer(t,!0,e,!1)}}catch(e){}},e.prototype.addErrorCount=function(e,t,n,i){var r=this;try{if(!this.ready)return;if(e&&e.length){var o=e[0].events;o&&o.length&&("f_data"===t?(i&&i.hasOwnProperty("sc")?this.errorInfo.log.f_data=o.length-i.sc:this.errorInfo.log.f_data=o.length,this.errorCode.f_data=n):o.forEach((function(e){var t="log";for(var i in ct)if(-1!==ct[i].indexOf(e.event)){t=i;break}r.errorInfo[t].f_net++,r.errorCode.f_net=n})))}}catch(e){}},e.prototype.clearCount=function(e){try{e?(this.count[e]=0,this.errorInfo[e]={f_net:0,f_data:0}):(this.count={pv:0,sdk:0,autotrack:0,log:0},this.errorInfo={pv:{f_net:0,f_data:0},sdk:{f_net:0,f_data:0},autotrack:{f_net:0,f_data:0},log:{f_net:0,f_data:0}})}catch(e){}},e.prototype.sendTracer=function(e,t,n,i){try{if(!this.ready)return;if(this.collect.staging)return;var r=this.event._mergeEvents(e);i&&window.navigator.sendBeacon?window.navigator.sendBeacon(this.reportUrl,JSON.stringify(r)):qe(this.reportUrl,3e5,r,""),t?this.clearCount(n):this.clearCount()}catch(e){}},e.prototype.processTracer=function(e,t,n){try{var i={count:e,state:n,key:t,params_for_special:"applog_trace",aid:this.appid,platform:"web",_staging_flag:1,sdk_version:Le};"f_net"!==n&&"f_data"!==n||(i.errorCode=this.errorCode[n]);var r=[];if(r.push(this.process("applog_trace",i,!0)),r&&r.length)return delete r[0].is_bav,r}catch(e){}},e.prototype.listener=function(){var e=this;this.ready&&(document.addEventListener("visibilitychange",(function(){e.leavePage()})),Qe((function(){e.leavePage()})))},e.prototype.leavePage=function(){if(this.ready)try{var e=[];for(var t in this.count)if(this.count[t]){var n=this.errorInfo[t];for(var i in e=ke(e,this.processTracer(this.count[t],t,"net")),n)n[i]&&(e=ke(e,this.processTracer(n[i],t,i)))}e&&e.length&&this.sendTracer(e,!1,"",!0)}catch(e){}},e}(),lt=function(){function e(e){this.logger=e}var t=e.prototype;return t.bridgeInject=function(){try{return AppLogBridge?(this.logger.info("AppLogBridge is injected"),!0):(this.logger.info("AppLogBridge is not inject"),!1)}catch(e){return this.logger.info("AppLogBridge is not inject"),!1}},t.hasStarted=function(e){var t=this;try{this.bridgeInject()?AppLogBridge.hasStarted((function(n){t.logger.info("AppLogBridge is started? : "+n),e(n)})):e(0)}catch(t){this.logger.info("AppLogBridge, error:"+JSON.stringify(t.stack)),e(0)}},t.setUserUniqueId=function(e){try{AppLogBridge.setUserUniqueId(e)}catch(e){this.logger.error("setUserUniqueId error")}},t.addHeaderInfo=function(e,t){try{AppLogBridge.addHeaderInfo(e,t)}catch(e){this.logger.error("addHeaderInfo error")}},t.setHeaderInfo=function(e){try{AppLogBridge.setHeaderInfo(JSON.stringify(e))}catch(e){this.logger.error("setHeaderInfo error")}},t.removeHeaderInfo=function(e){try{AppLogBridge.removeHeaderInfo(e)}catch(e){this.logger.error("removeHeaderInfo error")}},t.onEventV3=function(e,t){try{AppLogBridge.onEventV3(e,t)}catch(e){this.logger.error("onEventV3 error")}},t.profileSet=function(e){try{AppLogBridge.profileSet(e)}catch(e){this.logger.error("profileSet error")}},t.profileSetOnce=function(e){try{AppLogBridge.profileSetOnce(e)}catch(e){this.logger.error("profileSetOnce error")}},t.profileIncrement=function(e){try{AppLogBridge.profileIncrement(e)}catch(e){this.logger.error("profileIncrement error")}},t.profileUnset=function(e){try{AppLogBridge.profileUnset(e)}catch(e){this.logger.error("profileUnset error")}},t.profileAppend=function(e){try{AppLogBridge.profileAppend(e)}catch(e){this.logger.error("profileAppend error")}},e}(),ft=function(){function e(e,t,n){this.processEvent=e,this._event=t,this.cache={},this.duration=6e4,this.profileReady=!1,this.reportUrl=(n.channel_domain||Ke(xe[n.channel]))+"/profile/list"}return e.prototype.start=function(){this.profileReady=!0},e.prototype.report=function(e,t){void 0===t&&(t={});try{var n=[];n.push(this.processEvent(e,t));var i=this._event._mergeEvents(n);qe(this.reportUrl,3e5,i)}catch(e){}},e.prototype.setProfile=function(e){var t=this._formatParams(e);t&&Object.keys(t).length&&(this._pushCache(t),this.report("__profile_set",we({},t,{profile:!0})))},e.prototype.setOnceProfile=function(e){var t=this._formatParams(e,!0);t&&Object.keys(t).length&&(this._pushCache(t),this.report("__profile_set_once",we({},t,{profile:!0})))},e.prototype.incrementProfile=function(e){e?this.report("__profile_increment",we({},e,{profile:!0})):console.warn("please check the params, must be object!!!")},e.prototype.unsetProfile=function(e){if(e){var t={};t[e]="1",this.report("__profile_unset",we({},t,{profile:!0}))}else console.warn("please check the key, must be string!!!")},e.prototype.appendProfile=function(e){if(e){var t={};for(var n in e)"string"==typeof e[n]||"Array"===Object.prototype.toString.call(e[n]).slice(8,-1)?t[n]=e[n]:console.warn("please check the value of param: "+n+", must be string or array !!!");Object.keys(t).length&&this.report("__profile_append",we({},t,{profile:!0}))}else console.warn("please check the params, must be object!!!")},e.prototype._pushCache=function(e){var t=this;Object.keys(e).forEach((function(n){t.cache[n]={val:t._clone(e[n]),timestamp:Date.now()}}))},e.prototype._formatParams=function(e,t){var n=this;void 0===t&&(t=!1);try{if(!e||"[object Object]"!==Object.prototype.toString.call(e))return void console.warn("please check the params type, must be object !!!");var i={};for(var r in e)"string"==typeof e[r]||"number"==typeof e[r]||"Array"===Object.prototype.toString.call(e[r]).slice(8,-1)?i[r]=e[r]:console.warn("please check the value of params:"+r+", must be string,number,Array !!!");var o=Object.keys(i);if(!o.length)return;var a=Date.now();return o.filter((function(i){var r=n.cache[i];return t?!r:!(r&&n._compare(r.val,e[i])&&a-r.timestampn.options.maxDuration||(n.event("predefine_page_alive",we({},dt(n.url_path,n.title,n.url),{duration:t,is_support_visibility_change:n.options.sup_vis_change?1:0,startTime:n.sessionStartTime}),"sdk"),n.sessionStartTime=pt())},this._setUpTimer=function(){return n.timerHandler&&clearInterval(n.timerHandler),setInterval((function(){pt()-n.sessionStartTime>n.options.aliveDTime&&n._sendEvent(!0)}),1e3)},this._visibilitychange=function(){"hidden"===document.visibilityState?n.timerHandler&&(clearInterval(n.timerHandler),n._sendEvent()):"visible"===document.visibilityState&&(n.sessionStartTime=pt(),n.timerHandler=n._setUpTimer())},this._beforeunload=function(){document.hidden||n._sendEvent()},this._wtest=function(){document.getElementById("wtest").innerHTML="visibilitychange"},this._dtest=function(){document.getElementById("dtest").innerHTML="dvisibilitychange"},this.event=e,this.config=t,this.isSupVisChange=gt(),this.options={maxDuration:432e5,aliveDTime:6e4,sup_vis_change:gt()},this.pageStartTime=ht(),this.sessionStartTime=this.pageStartTime,this.timerHandler=null,this.disableCallback=function(){}}return e.prototype.enable=function(e,t,n){this.url_path=e,this.url=n,this.title=t,this.disableCallback=this._enablePageAlive()},e.prototype.disable=function(){this.disableCallback(),this.pageStartTime=Date.now()},e.prototype._enablePageAlive=function(){var e=this;return this.timerHandler=this._setUpTimer(),document.addEventListener("visibilitychange",this._visibilitychange),Qe(this._beforeunload),function(){e._beforeunload(),document.removeEventListener("visibilitychange",e._visibilitychange),window.removeEventListener("beforeunload",e._beforeunload),window.removeEventListener("pagehide",e._beforeunload)}},e}(),mt=function(){function e(e,t){var n=this;this._visibilitychange=function(){"hidden"===document.visibilityState?n.activeEndTime=pt():"visible"===document.visibilityState&&(n.activeEndTime&&(n.totalTime+=n.activeEndTime-n.activeStartTime,n.activeTimes+=1),n.activeEndTime=void 0,n.activeStartTime=pt())},this._beforeunload=function(){if(n.totalTime+=(n.activeEndTime||pt())-n.activeStartTime,n.config.autotrack)try{window.sessionStorage.setItem("_tea_cache_duration",JSON.stringify({duration:n.totalTime,page_title:document.title||location.pathname}))}catch(e){}n._sendEventPageClose()},this.event=e,this.config=t,this.isSupVisChange=gt(),this.options={sup_vis_change:this.isSupVisChange},this.maxDuration=t.maxDuration||864e5,this.disableCallback=function(){},this.pageStartTime=ht(),this._resetData()}return e.prototype.enable=function(e,t,n){this.url_path=e,this.url=n,this.title=t,this.disableCallback=this._enablePageClose()},e.prototype.disable=function(){this.disableCallback()},e.prototype._resetData=function(){this.activeStartTime=void 0===this.activeStartTime?ht():Date.now(),this.activeEndTime=void 0,this.activeTimes=1,this.totalTime=0},e.prototype._sendEventPageClose=function(){var e=pt()-this.pageStartTime;this.totalTime<0||e<0||this.totalTime>=this.maxDuration||(this.event("predefine_page_close",we({},dt(this.url_path,this.title,this.url),{active_times:this.activeTimes,duration:this.totalTime,total_duration:e,is_support_visibility_change:this.options.sup_vis_change?1:0}),"sdk"),this.pageStartTime=Date.now(),this._resetData())},e.prototype._enablePageClose=function(){var e=this;return document.addEventListener("visibilitychange",this._visibilitychange),Qe(this._beforeunload),function(){e._beforeunload(),document.removeEventListener("visibilitychange",e._visibilitychange),window.removeEventListener("beforeunload",e._beforeunload),window.removeEventListener("pagehide",e._beforeunload)}},e}(),_t=function(){function e(e,t){this.pageAlive=new vt(e,t),this.pageClose=new mt(e,t),this.title=document.title||location.pathname,this.url=location.href,this.url_path=location.pathname,this._enable(this.url_path,this.title,this.url)}return e.prototype._enable=function(e,t,n){this.pageAlive.enable(e,t,n),this.pageClose.enable(e,t,n)},e.prototype._disable=function(){this.pageAlive.disable(),this.pageClose.disable()},e.prototype.reset=function(e,t,n){this._disable(),this._enable(e,t,n)},e}(),yt=function(){function e(e){var t=this;this._setInterval=function(){t._clearIntervalFunc=function(e,t){void 0===e&&(e=function(){}),void 0===t&&(t=1e3);var n,i=Date.now()+t;return n=window.setTimeout((function r(){var o=Date.now()-i;e(),i+=t,n=window.setTimeout(r,Math.max(0,t-o))}),t),function(){window.clearTimeout(n)}}((function(){t._isSessionhasEvent&&t._endCurrentSession()}),t.sessionInterval)},this._clearInterval=function(){t._clearIntervalFunc&&t._clearIntervalFunc()},this.sessionInterval=6e4,this._eventSenderFunc=e,this._startTime=0,this._lastTime=0,this._setInterval()}return e.prototype._endCurrentSession=function(){this._eventSenderFunc("_be_active",{start_time:this._startTime,end_time:this._lastTime,url:window.location.href,referrer:window.document.referrer},"sdk"),this._isSessionhasEvent=!1,this._startTime=0},e.prototype.process=function(){this._isSessionhasEvent||(this._isSessionhasEvent=!0,this._startTime=+new Date);var e=this._lastTime||+new Date;this._lastTime=+new Date,this._lastTime-e>this.sessionInterval&&(this._clearInterval(),this._endCurrentSession(),this._setInterval())},e}(),wt=function(){function e(){}return e.prototype.sdkOnload=function(e,t,n){if(!this.sdkReady){this.sdkReady=!0;try{if(0===n.length)return;var i=n[0],r=i.header,o=i.user,a=r.app_id,s=r.app_name,c=r.sdk_version,u=o.web_id,l={events:[{event:"onload",params:JSON.stringify({app_key:e,app_id:a,app_name:s||"",sdk_version:c}),local_time_ms:Date.now()}],user:{user_unique_id:u},header:{}};setTimeout((function(){qe(t,3e4,[l],"566f58151b0ed37e")}),16)}catch(e){}}},e.prototype.sdkError=function(e,t,n,i){try{var r=n[0],o=r.user,a=r.header,s=[];n.forEach((function(e){e.events.forEach((function(e){s.push(e)}))}));var c={events:s.map((function(t){return{event:"on_error",params:JSON.stringify({error_code:i,app_key:e,app_id:a.app_id,app_name:a.app_name||"",error_event:t.event,sdk_version:a.sdk_version,local_time_ms:t.local_time_ms,tea_event_index:Date.now(),params:t.params,header:JSON.stringify(a),user:JSON.stringify(o)}),local_time_ms:Date.now()}})),user:{user_unique_id:o.user_unique_id},header:{}};setTimeout((function(){qe(t,3e4,[c],"566f58151b0ed37e")}),16)}catch(e){}},e}(),bt=new Ie(!1),kt=function(e){return"__tea_sdk_ab_version_"+e},St=function(e){var t={ab_version:[],ab_ext_version:[],ab_version_multilink:[],data:null,timestamp:+new Date};try{t=bt.getItem(kt(e))||t}catch(e){}return t},Ct=function(e,t){try{var n=St(e);bt.setItem(kt(e),we({},n,t))}catch(e){}},Et=function(e,t,n){void 0===n&&(n=!1);var i=n?{ab_ext_version:t,timestamp:Date.now()}:{ab_version:t,timestamp:Date.now()};Ct(e,i)},Tt={},zt=[],It=function(e){e.length&&e.forEach((function(e){zt.push(e)}))};function xt(e,t,n,i){var r=e&&e.source||window.opener||window.parent,o=e&&e.origin||i||"*",a={type:t,payload:n};r.postMessage(JSON.stringify(a),o)}function At(e,t){Tt[e]=Tt[e]||[],Tt[e].push(t)}function Ot(e){if(zt.some((function(e){return"*"===e}))||zt.some((function(t){return e.origin.indexOf(t)>-1}))){var t=e.data;if("string"==typeof e.data)try{t=JSON.parse(e.data)}catch(e){t=void 0}if(!t)return;var n=t.type,i=t.payload;Tt[n]&&Tt[n].forEach((function(t){"function"==typeof t&&t(e,i)}))}}function Lt(e,t){(window.opener||window.parent).postMessage("[tea-sdk]ready","*"),(window.opener||window.parent).postMessage({type:"tea:sdk:info",config:e,version:t},"*"),window.addEventListener("message",Ot,!1)}function Pt(e,t,n){var i=document.createElement("script");i.src=e,i.onerror=function(){n(e)},i.onload=function(){t()},document.getElementsByTagName("head")[0].appendChild(i)}window.TEAVisualEditor=window.TEAVisualEditor||{};var Dt="",Mt=!1;function Bt(e){var t=e.event,n=e.editorUrl;e.collectInstance,e.fromSession,Mt||(Mt=!0,Pt(n,(function(){xt(t,"abEditorScriptloadSuccess")}),(function(){t&&xt(t,"abEditorScriptloadError"),Mt=!1})))}var jt,Nt,Ft=Ke("1fz22z22z1nz21z4mz4bz4bz1jz1dz49z1az1bz1lz49z22z1mz21z4az19z27z22z1cz21z1az1kz4az1az1mz1kz4bz1mz19z1hz4bz21z22z18z22z1gz1az4bz1jz1mz1ez49z21z1bz1iz4bz1az1mz1jz1jz1cz1az22z4bz24z1gz21z23z18z1jz49z18z19z49z1jz1mz18z1bz1cz20z4az1hz21")+"?query="+Date.now();!function(e){e[e.No=0]="No",e[e.Ing=1]="Ing",e[e.Complete=2]="Complete"}(jt||(jt={})),function(e){e[e.Var=0]="Var",e[e.All=1]="All"}(Nt||(Nt={}));var Rt=function(){function e(e,t,n){this.appId=0,this.user={},this.header={},this.domain="",this.protocal=location.protocol,this.fetchStatus=jt.No,this.callbacks=[],this.data=null,this.versions=[],this.extVersions=[],this.mulilinkVersions=[],this.collector=e;var i=this.collector._initConfig,r=i.app_id,o=i.channel,a=i.enable_multilink,s=i.multilink_timeout_ms,c=i.ab_channel_domain,u=i.channel_domain,l=i.enable_ab_visual,f=i.ab_timeout;if(this.appId=r,this.timeout=f||3e3,this.domain=c||Ke(Re[o||"cn"]),this.domain){this.needOverlay=a||l||!1,this.enable_ab_visual=l,this.enable_multilink=a,this.closeTime=s||500,this.Hook=t;var d=u||Ke(xe[o]);if(this.reportUrl=""+d+Oe,l){!function(e,t,n,i){It(["*"]);var r,o="";Lt(i,Le);var a="";try{var s=window.performance.getEntriesByType("resource");if(s&&s.length&&(s.forEach((function(e){"script"===e.initiatorType&&e.name&&-1!==e.name.indexOf("collect")&&(a=e.name)})),a||document.currentScript&&(a=document.currentScript.src),a&&(r=a.split("/"))&&r.length)){o="https:/";for(var c=2;c=2592e6){try{bt.removeItem("__tea_sdk_ab_version")}catch(e){}return null}return t}(this.appId);if(t){var n=t.ab_version,i=t.data,r=t.ab_ext_version,o=t.ab_version_multilink;this.mulilinkVersions=o||[],this.extVersions=r,n&&n.length&&(this.versions=n,this.data=i,setTimeout((function(){e._configVersions()})))}},e.prototype.wait=function(){var e=this;this.needOverlay&&(this.isWait||(this.openOverlayer(),this.isWait=!0),setTimeout((function(){e.closeOverlayer()}),this.closeTime))},e.prototype.getAllVars=function(e){if("function"!=typeof e)throw new Error("callback must be a function");var t={callback:e,type:Nt.All};this.fetchStatus===jt.Complete?this._getAllVars(t):this.callbacks.push(t)},e.prototype._getAllVars=function(e){(0,e.callback)(this.data?JSON.parse(JSON.stringify(this.data)):{})},e.prototype.getVids=function(){try{var e=St(this.appId).ab_version,t="";return e&&e.length&&(t=e.join(",")),t}catch(e){return""}},e.prototype.getAbSdkVersion=function(e){e(this.getVids())},e.prototype.getVar=function(e,t,n){if(!e)throw new Error("variable must not be empty");if(void 0===t)throw new Error("variable no default value");if("function"!=typeof n)throw new Error("callback must be a function");var i={name:e,defaultValue:t,callback:n,type:Nt.Var};if(this.fetchStatus===jt.Complete){this._getVar(i,e);try{this.Hook.emit("onAbSdkVersionChange",this.getVids())}catch(e){}}else this.callbacks.push(i)},e.prototype._getVar=function(e,t){var n=e.name,i=e.defaultValue,r=e.callback,o=this.data;if(o){if("object"==typeof o[n]&&void 0!==o[n].val){var a=o[n].vid;return"$ab_url"===t?(-1===this.mulilinkVersions.indexOf(a)&&this.mulilinkVersions.push(a),this._updateMultilinkVersions()):(-1===this.versions.indexOf(a)&&this.versions.push(a),this._updateVersions()),this._abEvent(a,t,i),void r(o[n].val)}r(i)}else r(i)},e.prototype._abEvent=function(e,t,n){var i=this;try{if(e){var r={event:"abtest_exposure",ab_sdk_version:""+e,params:JSON.stringify({app_id:this.appId,ab_url:"$ab_url"===t?n:window.location.href}),local_time_ms:Date.now()},o=this.collector._config.get(),a=o.header,s=o.user;a.ab_sdk_version=""+e,a.custom=JSON.stringify(a.custom);var c={events:[r],user:s,header:a};"$ab_url"===t?window.navigator.sendBeacon?window.navigator.sendBeacon(this.reportUrl,JSON.stringify([c])):qe(this.reportUrl,2e4,[c],""):setTimeout((function(){qe(i.reportUrl,2e4,[c],"")}),16)}}catch(e){}},e.prototype.openOverlayer=function(){!function(){if(!document.getElementById(Ve)){var e="body { opacity: 0 !important; }",t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id=Ve,n.type="text/css",n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e)),t.appendChild(n)}}()},e.prototype.closeOverlayer=function(){var e;(e=document.getElementById(Ve))&&e.parentElement.removeChild(e)},e.prototype._setAbVersion=function(e){this.extVersions=[e],Et(this.appId,this.extVersions,!0)},e.prototype._updateVersions=function(){Et(this.appId,this.versions),this._configVersions()},e.prototype._updateMultilinkVersions=function(){var e,t;e=this.appId,t={ab_version_multilink:this.mulilinkVersions,timestamp:Date.now()},Ct(e,t)},e.prototype._configVersions=function(){var e=this.versions.join(",");e&&this.collector.config({ab_sdk_version:e})},e.prototype._getABconfig=function(e,t){var n=Object.keys(e);n&&n.length&&this.collector.config(e),this.init(this.collector._config.get(),t)},e.prototype._fetchComplete=function(e){var t=this;if(e){!function(e,t){Ct(e,{data:t})}(this.appId,e),this.data=e;var n=[];Object.keys(e).forEach((function(t){var i=e[t].vid;i&&n.push(i)})),-1!==window.location.href.indexOf("multilink=true")||(this.versions=this.versions.filter((function(e){return-1!==n.indexOf(e)})));var i=e.$ab_url,r=e.$ab_modification;if(r&&r.val&&this.enable_ab_visual){if(this.collector.destroyInstance)return;this.getVar("$ab_modification",window.location.href,(function(){var e;e=r.val,window.TEAVisualEditor.__ab_config=e,Pt(Ft,(function(){console.log("load visual render success")}),(function(){console.log("load visual render fail")}))}))}else if(i&&this.enable_multilink){var o=i.val,a=i.vid;o&&a&&this.getVar("$ab_url",o,(function(){var e=window.location.href;-1!==e.indexOf("multilink=true")&&(e=t.filterUrl(e)),o!==e?setTimeout((function(){if(!t.collector.destroyInstance){var e=""+o;-1!==(e=-1===e.indexOf("http")?"https://"+e:e).indexOf("?")?e+="&multilink=true":e+="?multilink=true",window.location.href=e}}),50):t.closeOverlayer()}))}else this.closeOverlayer()}this.callbacks.forEach((function(e){t[e.type===Nt.Var?"_getVar":"_getAllVars"](e,"")})),this.callbacks=[],this._updateVersions();try{this.Hook.emit("onAbSdkVersionChange",this.getVids())}catch(e){}this.isWait||this.closeOverlayer()},e.prototype._fetch=function(e,t){var n=this,i=void 0===t?{}:t,r=i.success,o=void 0===r?function(){}:r,a=i.fail,s=void 0===a?function(){}:a;this.fetchStatus=jt.Ing;var c=this.domain+"/service/2/abtest_config/",u=window.location.href,l=!1;-1!==u.indexOf("multilink=true")&&(u=this.filterUrl(u),l=!0);var f=l?this.mulilinkVersions:this.versions;We(c,{header:we({aid:this.appId},this.user||{},e||{},{ab_sdk_version:f.join(","),ab_url:u})},(function(e){n.fetchStatus=jt.Complete;var t=e.data;"success"===e.message?(n._fetchComplete(t),o(t)):(n._fetchComplete(null),s())}),(function(){n.fetchStatus=jt.Complete,s(),n._fetchComplete(null)}),"",this.timeout)},e.prototype.filterUrl=function(e){try{var t="";-1!==e.indexOf("&multilink=true")?t="&multilink=true":-1!==e.indexOf("?multilink=true")&&(t="\\?multilink=true");var n=new RegExp(t,"g");e=e.replace(n,"")}catch(e){}return e},e}(),Vt=function(e,t,n,i){if(t){var r=e.filter((function(e){return!e[0].__disable_storage__})).length;if(r>0)try{var o=i.getItem(n);if(o){var a=Object.keys(o),s=a.length+r-t;if(s>0){for(var c=a.map((function(e){var t=o[e];return{id:e,index:t&&t[0]?t[0].header.__storage_index__:+new Date}})).sort((function(e,t){return e.index-t.index})),u=0;u0?i+"?"+r:i}function $t(){var e="";try{e=document.referrer?document.referrer:Gt.getItem("__tea_cache_refer_key")===location.href?"":Gt.getItem("__tea_cache_refer_key")}catch(e){}return{is_html:1,page_key:location.href,refer_page_key:e,page_manual_key:"",refer_page_manual_key:""}}function Xt(e,t){var n=$t();return n.is_back=0,n}function Yt(e,t){void 0===t&&(t=!1),function(e){var t,n;t=window.history,n=t.pushState,t.pushState=function(i){"function"==typeof t.onpushstate&&t.onpushstate({state:i}),e("pushState",i,c);for(var r=arguments.length,o=new Array(r>1?r-1:0),a=1;a1?r-1:0),a=1;a0}))}return!0}(t))})(e.target)&&n.eventHandel({eventType:"dom",eventName:"click"},e)},this.changeEvent=function(e){n.eventHandel({eventType:"dom",eventName:"change"},e)},this.submitEvent=function(e){n.eventHandel({eventType:"dom",eventName:"submit"},e)},this.getPageViewEvent=function(e,t,i){"pushState"===e?n.eventHandel({eventType:"dom",eventName:"beat"},{beat_type:0}):n.eventHandel({eventType:"dom",eventName:"page_view"},i)},this.getPageLoadEvent=function(e){n.eventHandel({eventType:"dom",eventName:"page_statistics"},{lcp:e})},this.config=t.getConfig().eventConfig,this.options=e,this.beatTime=e.beat,this.statistics=!1}return e.prototype.init=function(e){this.eventHandel=e;var t=this.config.mode;this.addListener(t)},e.prototype.addListener=function(e){var t=this;if("proxy-capturing"===e&&(this.config.click&&window.document.addEventListener("click",this.clickEvent,!0),this.config.change&&window.document.addEventListener("change",this.changeEvent,!0),this.config.submit&&window.document.addEventListener("submit",this.submitEvent,!0),this.config.pv&&("complete"===document.readyState?Yt(this.getPageViewEvent,this.options.hashTag||this.config.hashTag):window.addEventListener("DOMContentLoaded",(function(){Yt(t.getPageViewEvent,t.options.hashTag||t.config.hashTag)}))),this.config.beat)){try{"complete"===document.readyState?this.beatEvent(this.beatTime):window.addEventListener("load",(function(){t.beatEvent(t.beatTime)}));var n=0,i=null;window.addEventListener("scroll",(function(){clearTimeout(i),i=setTimeout(r,500),n=document.documentElement.scrollTop||document.body.scrollTop}));var r=function(){(document.documentElement.scrollTop||document.body.scrollTop)==n&&t.eventHandel({eventType:"dom",eventName:"beat"},{beat_type:1})}}catch(e){}try{var o=window.performance&&window.performance.getEntriesByType("paint");o&&o.length?(new PerformanceObserver((function(e){var n=e.getEntries(),i=n[n.length-1],r=i.renderTime||i.loadTime;t.statistics||(t.getPageLoadEvent(r),t.statistics=!0)})).observe({entryTypes:["largest-contentful-paint"]}),setTimeout((function(){t.statistics||(t.getPageLoadEvent(o[0].startTime||0),t.statistics=!0)}),2e3)):this.getPageLoadEvent(0)}catch(e){this.getPageLoadEvent(0)}}},e.prototype.removeListener=function(){window.document.removeEventListener("click",this.clickEvent,!0),window.document.removeEventListener("change",this.changeEvent,!0),window.document.removeEventListener("submit",this.submitEvent,!0)},e.prototype.beatEvent=function(e){var t=this;try{var n;this.eventHandel({eventType:"dom",eventName:"beat"},{beat_type:3}),this.beatTime&&(n=setInterval((function(){t.eventHandel({eventType:"dom",eventName:"beat"},{beat_type:2})}),e)),Qe((function(){t.eventHandel({eventType:"dom",eventName:"beat",eventSend:"becon"},{beat_type:0}),t.beatTime&&clearInterval(n)}))}catch(e){}},e}(),en={eventConfig:{mode:"proxy-capturing",submit:!1,click:!0,change:!1,pv:!0,beat:!0,hashTag:!1,impr:!1},scoutConfig:{mode:"xpath"}},tn=function(){function e(e){this.config=e}return e.prototype.getConfig=function(){return this.config},e.prototype.setConfig=function(e){return this.config=e},e}();function nn(e,t){var n={element_path:"",positions:[],texts:[]},i=function(e){if(e){var t=e.getBoundingClientRect(),n=t.width,i=t.height;return{left:t.left,top:t.top,element_width:n,element_height:i}}}(t),r=function(e,t){void 0===e&&(e={}),void 0===t&&(t={});var n=e.clientX,i=e.clientY,r=t.left,o=t.top;return{touch_x:Math.floor(n-r),touch_y:Math.floor(i-o)}}(e,i),o=i.element_width,a=i.element_height,s=r.touch_x,c=r.touch_y,u=function(e){for(var t=[];null!==e.parentElement;)t.push(e),e=e.parentElement;var n=[],i=[];return t.forEach((function(e){var t=function(e){if(null===e)return{str:"",index:0};var t=0,n=e.parentElement;if(n)for(var i=n.children,r=0;r0)for(var r=t.childNodes,o=0;o0)for(var r=t.childNodes,o=0;o0?r:0)),t.page_start_ms=i.navigationStart}catch(e){console.log("page_statistics event error "+JSON.stringify(e))}return t},e.prototype.handleBeadtEvent=function(e){e.event=this.eventName.beat,e.page_key=window.location.href,e.is_html=1,e.page_title=document.title,e.page_manual_key="";try{e.page_total_width=document.documentElement.scrollWidth,e.page_total_height=document.documentElement.scrollHeight,e.scroll_width=document.documentElement.scrollLeft+window.innerWidth,e.scroll_height=document.documentElement.scrollTop+window.innerHeight,e.since_page_start_ms=Date.now()-window.performance.timing.navigationStart,e.page_start_ms=window.performance.timing.navigationStart}catch(e){console.log("beat event error "+JSON.stringify(e))}return e},e}(),an=function(){function e(e,t){this.logFunc=e,this.logFuncBecon=t,this.eventNameList=["report_click_event","report_change_event","report_submit_event","report_exposure_event","report_page_view_event","report_page_statistics_event","report_beat_event"]}return e.prototype.send=function(e,t){e.eventName;var n=e.eventSend,i=t.event;delete t.event,n&&"becon"===n?this.logFuncBecon(i,t,"autotrack"):this.logFunc(i,t,"autotrack")},e.prototype.get=function(e,t){var n=Object.assign({headers:{"content-type":"application/json"},method:"GET"},t);fetch(e,n)},e.prototype.post=function(e,t){var n=Object.assign({headers:{"content-type":"application/json"},method:"POST"},t);fetch(e,n)},e}(),sn="_TEA_VE_OPEN",cn="_TEA_VE_APIHOST",un="lang",ln="_VISUAL_EDITOR_V",fn="_VISUAL_EDITOR_U";function dn(){try{var e=window.TEAVisualEditor.lang=window.TEAVisualEditor.lang||Ce.get(un),t=window.TEAVisualEditor.__editor_ajax_domain=window.TEAVisualEditor.__editor_ajax_domain||Ce.get(cn),n=window.TEAVisualEditor.__editor_verison=window.TEAVisualEditor.__editor_verison||Ce.get(ln),i=window.TEAVisualEditor.__editor_url=window.TEAVisualEditor.__editor_url||Ce.get(fn),r=+new Date,o=new Date(r+18e5);Ce.set(sn,"1",{expires:o}),Ce.set(cn,t,{expires:o}),Ce.set(fn,i,{expires:o}),Ce.set(un,e,{expires:o}),Ce.set(ln,n||"",{expires:o})}catch(e){console.log("set cookie err")}}window.TEAVisualEditor=window.TEAVisualEditor||{};var pn="",hn=window.TEAVisualEditor.__editor_url||Ke("1fz22z22z1nz21z4mz4bz4bz21z4fz4az1nz21z22z18z22z1nz4az1az1mz1kz4bz1nz1ez1az4bz22z1cz1az1fz4bz1az1mz1jz1jz1cz1az22z4bz24z1gz21z23z18z1jz49z1cz1bz1gz22z1mz20z4az1hz21");hn=hn+"?query="+Date.now();var gn=Ke("1fz22z22z1nz21z4mz4bz4bz1jz1dz49z1az1bz1lz49z22z1mz21z4az19z27z22z1cz21z1az1kz4az1az1mz1kz4bz1mz19z1hz4bz21z22z18z22z1gz1az4bz1jz1mz1ez49z21z1bz1iz4bz1az1mz1jz1jz1cz1az22z4bz24z1gz21z23z18z1jz49z1cz1bz1gz22z1mz20z49z20z18z1lz1ez1cz20z21z4az1hz21")+"?query="+Date.now(),vn=!1;function mn(e){var t=e.event,n=e.editorUrl,i=e.autoTrackInstance;e.fromSession,vn||(vn=!0,Pt(n,(function(){xt(t,"editorScriptloadSuccess"),i.destroy()}),(function(){t&&xt(t,"editorScriptloadError"),vn=!1})))}function _n(e,t){window.TEAVisualEditor.appId=t.app_id;var n=t.channel_domain,i="";if(It(["*"]),n){var r,o="";try{var a=window.performance.getEntriesByType("resource");if(a&&a.length&&(a.forEach((function(e){"script"===e.initiatorType&&e.name&&-1!==e.name.indexOf("collect")&&(o=e.name)})),o||document.currentScript&&(o=document.currentScript.src),o&&(r=o.split("/"))&&r.length)){i="https:/";for(var s=2;s-1?(r=t.colloctor)[a].apply(r,n.slice(1)):(o=t.colloctor).event.apply(o,n)})),this.cmdQueue=[],this.name=e,this.colloctor=new Cn(e),this._isProcess=!1,this._alias={},this._processCmd(),kn.forEach((function(e){t._exportCollect[e]=t._exportCollect.bind(t,e)})),this._exportCollect},zn={},In={},xn=function(e){return In[e]||(In[e]=[]),In[e]},An=function(e){try{var t=be(e),n=t[0],i=t.slice(1);if(!n)return void console.error("the eventName is: "+n+", error, stop report, please check");var r=n.split(".");if(1===r.length)xn("default").push(ke([n],i));else if(2===r.length)"event"===r[0]?xn("default").push(ke([n],i)):xn(r[0]).push(ke([r[1]],i));else{var o=r[0],a=[r[1],r[2]].join(".");xn(o).push(ke([a],i))}}catch(e){console.log(e)}},On=function(){Ln.q.forEach((function(e){var t=[].slice.call(e);"Array"===Object.prototype.toString.call(t[0]).slice(8,-1)?t.forEach((function(e){An(e)})):An(t)})),Object.keys(In).forEach((function(e){In[e].forEach((function(t){(function(e){return zn[e]||(zn[e]=new Tn(e)),zn[e]})(e).apply(void 0,ke(t))})),In[e]=[]})),Ln.q=[]},Ln=function e(){for(var t=[],n=0;n=0&&(null!=(Wn=window)&&Wn.Lark_Bridge||null!=(Un=window)&&null!=(qn=Un.webkit)&&null!=(Hn=qn.messageHandlers)&&Hn.invokeNative)?(window.isNewBridge=!0,Yn=new U):Yn=$n.getBridge():Yn=window.__LarkPCSDK__?window.__LarkPCSDK__.bridge:{invoke:function(){},config:function(){}};var Zn={__v2__:!0},ei=0,ti=function(e,t){return function(){return e(t.apply(void 0,arguments))}},ni=function(){};var ii={},ri={},oi=function(e,t,n,i){var r={api_name:e};return t===le.success?(_e.includes(e)&&"monitorReport"!==e&&ye(me,ge[le.success]).addMap(r).setResultType(le.success).flush(),ui(n,e,le.success,"")):t===le.fail?("monitorReport"!==e&&ye(me,ge[le.fail]).addMap(r).setError(_(i)).setResultType(le.fail).flush(),ui(n,e,le.fail,i)):("monitorReport"!==e&&ye(me,ge[t]).addMap(r).setResultType(t).flush(),ui(n,e,t,i)),i};Yn.on=function(e,t,n){if("function"==typeof n)if(ri[e]=ri[e]||[],0===ri[e].length){var i={keep:!0,onSuccess:function(){for(var t=arguments.length,n=new Array(t),i=0;i0?ri[e].push(n):ri[e]=[n],window.isNewBridge){var i={success:n};Object.assign(i,{isListener:!0,eventName:e,progress:n}),ci.invoke(t,i)}},unsubscribe:function(e,t,n){var i=ri[e]||[];ri[e]=i.filter((function(e){return e!==n})),0===ri[e].length&&delete ii[e],window.isNewBridge&&si.removeListener(e,n)},subscribeHandler:function(e,t){var n=ri[e]||[];t=M(t),n.length&&n.forEach((function(e){"function"==typeof e&&e(t)}))}};function ui(e,t,n,i){var r,o,a,s;Vn("h5jssdk_call_api",{api_name:t,begin_time:e,timecost:+new Date-e,result:n,error:_(i),url:null==(r=window)||null==(o=r.location)?void 0:o.href,host:null==(a=window)||null==(s=a.location)?void 0:s.host,client:b(p),larkVersion:p.versions.larkVersion,platform:navigator.platform,browser:navigator.userAgent,app_id:w()})}var li=16e4;function fi(e){if("string"==typeof e){if(e.length<814)throw new Error("非法的base64String");return~~((e.length-814)/1.37)}return 0}var di,pi={navigation:new(function(){function e(){}var t=e.prototype;return t.setTitle=function(e){si.invoke("biz.navigation.setTitle",e)},t.setLeft=function(e){si.invoke("biz.navigation.setLeft",{control:e.control,text:e.text,isShowIcon:e.isShowIcon},{onSuccess:e.onSuccess,keep:!0})},t.setRight=function(e){si.invoke("biz.navigation.setRight",e)},t.setMenu=function(e){(function(e){for(var t,n=l(e);!(t=n()).done;){var i=t.value;if(i.imageBase64&&fi(i.imageBase64)>li)throw new Error("imageSize超过160000");if(i.imageBase64&&i.text)throw new Error("text和imageBase64只能传一个")}return!0})(e.items)&&(si.off("biz.navigation.setMenu"),si.invoke("biz.navigation.setMenu",{items:e.items},{onSuccess:e.onSuccess,keep:!0}))},t.goBack=function(e){si.invoke("biz.navigation.goBack",{},{onSuccess:e.onSuccess})},t.close=function(e){si.invoke("biz.navigation.close",{},{onSuccess:e.onSuccess})},e}()),util:new(function(){function e(){}var t=e.prototype;return t.uploadImage=function(e){si.invoke("biz.util.uploadImage",{multiple:e.multiple,max:e.max},{onSuccess:e.onSuccess})},t.copyText=function(e){si.invoke("biz.util.copyText",e)},t.share=function(e){var t=e.url,n=e.title,i=e.content,r=e.image,o=e.onSuccess;si.invoke("biz.util.share",{url:t,title:n,content:i,image:r},{onSuccess:o})},t.getCookies=function(e){si.invoke("biz.util.getCookies",{},{onSuccess:e.onSuccess})},t.scan=function(e){void 0===e&&(e={});var t={};e.type&&(t.type="string"==typeof e.type?[e.type]:e.type),void 0!==e.barCodeInput&&(t.barCodeInput=e.barCodeInput),si.invoke("biz.util.scan",t,{onSuccess:e.onSuccess})},t.datePicker=function(e){si.invoke("biz.util.datePicker",{format:e.format,value:e.value},{onSuccess:e.onSuccess})},t.timePicker=function(e){si.invoke("biz.util.timePicker",{format:e.format,value:e.value},{onSuccess:e.onSuccess})},t.dateTimePicker=function(e){si.invoke("biz.util.dateTimePicker",{format:e.format,value:e.value},{onSuccess:e.onSuccess})},t.chosen=function(e){si.invoke("biz.util.chosen",{source:e.source,selectedKey:e.selectedKey},{onSuccess:e.onSuccess})},t.multiSelect=function(e){si.invoke("biz.util.multiSelect",{options:e.options,selectOption:e.selectOption},{onSuccess:e.onSuccess})},t.getAppLanguage=function(e){si.invoke("biz.util.getAppLanguage",{},{onSuccess:e.onSuccess})},t.setAuthenticationInfo=function(e){si.invoke("biz.util.setAuthenticationInfo",JSON.parse(JSON.stringify(e)),{onSuccess:e.onSuccess,onFail:e.onFail})},t.startBiometrics=function(e){si.invoke("biz.util.startBiometrics",JSON.parse(JSON.stringify(e)),{onSuccess:e.onSuccess,onFail:e.onFail})},t.savePageSnapshot=function(e){si.invoke("biz.util.savePageSnapshot",{},{onSuccess:e.onSuccess,onFail:e.onFail})},t.sharePageSnapshot=function(e){si.invoke("biz.util.sharePageSnapshot",{},{onSuccess:e.onSuccess,onFail:e.onFail})},t.downloadFile=function(e){var t="downloadFile"+Date.now()+"_"+Math.floor(1e4*Math.random());return si.invoke("biz.util.downloadFile",{url:e.url,taskId:t},{onSuccess:e.onSuccess,onFail:e.onFail,onProgress:e.onProgress}),{abort:function(){si.invoke("biz.util.cancelDownloadFile",{taskId:t})}}},e}()),reporter:new(function(){function e(){}return e.prototype.sendEvent=function(e,t,n){si.invoke("biz.reporter.sendEvent",{category:e,action:t,params:n})},e}()),chat:new(function(){function e(){}var t=e.prototype;return t.openSingleChat=function(e){si.invoke("biz.chat.openSingleChat",{chatterId:e.chatterId},{onSuccess:e.onSuccess})},t.toConversation=function(e){si.invoke("biz.chat.toConversation",{chatId:e.chatId},{onSuccess:e.onSuccess})},e}()),contact:new(function(){function e(){}return e.prototype.choose=function(e){si.invoke("biz.contact.choose",JSON.parse(JSON.stringify(e)),{onSuccess:e.onSuccess})},e}())},hi=new(function(){function e(){}var t=e.prototype;return t.showPreloader=function(e){si.invoke("device.notification.showPreloader",e)},t.hidePreloader=function(){si.invoke("device.notification.hidePreloader",{})},t.confirm=function(e){si.invoke("device.notification.confirm",{message:e.message,title:e.title,buttonLabels:e.buttonLabels},{onSuccess:e.onSuccess})},t.alert=function(e){si.invoke("device.notification.alert",e)},t.toast=function(e){si.invoke("device.notification.toast",Object.assign({},e,{duration:2}))},t.prompt=function(e){si.invoke("device.notification.prompt",{message:e.message,title:e.title,buttonLabels:e.buttonLabels},{onSuccess:e.onSuccess})},t.vibrate=function(e){si.invoke("device.notification.vibrate",{duration:e.duration},{onSuccess:e.onSuccess})},t.actionSheet=function(e){si.invoke("device.notification.actionSheet",{title:e.title,cancelButton:e.cancelButton,otherButtons:e.otherButtons},{onSuccess:e.onSuccess})},e}());!function(e){e.wifi="wifi",e.lbs="lbs",e.gps="gps"}(di||(di={}));var gi,vi=new(function(){function e(){}var t=e.prototype;return t.get=function(e){si.invoke("device.geolocation.get",{useCache:e.useCache},{onSuccess:e.onSuccess,onFail:e.onFail})},t.start=function(e){var t=e.useCache,n=e.interval,i=e.sceneId,r=e.onSuccess,o=e.onFail;si.invoke("device.geolocation.start",{useCache:t,interval:n,sceneId:i},{onSuccess:r,onFail:o,keep:!0})},t.stop=function(e){si.invoke("device.geolocation.stop",{sceneId:e.sceneId},{onSuccess:e.onSuccess,onFail:e.onFail})},e}()),mi=new(function(){function e(){}var t=e.prototype;return t.getNetworkType=function(e){si.invoke("device.connection.getNetworkType",{},{onSuccess:e.onSuccess,onFail:e.onFail})},t.scanBluetoothDevice=function(e){si.invoke("device.connection.scanBluetoothDevice",{scanTimeout:e.scanTimeout},{onSuccess:e.onSuccess})},t.getBluetoothDeviceState=function(e){si.invoke("device.connection.getBluetoothDeviceState",{},{onSuccess:e.onSuccess})},t.connectBluetoothDevice=function(e){si.invoke("device.connection.connectBluetoothDevice",{id:e.id,uuid:e.uuid},{onSuccess:e.onSuccess})},e}());!function(e){e.captureScreen="event.user.captureScreen",e.networkStatusChange="event.connection.networkStatusChange"}(gi||(gi={}));var _i={notification:hi,geolocation:vi,connection:mi,base:new(function(){function e(){}var t=e.prototype;return t.getInterface=function(e){si.invoke("device.base.getInterface",{},{onSuccess:e.onSuccess})},t.getWifiStatus=function(e){si.invoke("device.base.getWifiStatus",{},{onSuccess:e.onSuccess})},t.getWifiList=function(e){si.invoke("device.base.getWifiList",{},{onSuccess:e.onSuccess})},t.getDeviceInfo=function(e){si.invoke("device.base.getDeviceInfo",{},{onSuccess:e.onSuccess})},t.onUserCaptureScreen=function(e){si.on(gi.captureScreen,"device.base.onUserCaptureScreen",e)},t.offUserCaptureScreen=function(e){si.off(gi.captureScreen,"device.base.offUserCaptureScreen",e)},e}()),screen:new(function(){function e(){}var t=e.prototype;return t.lockViewOrientation=function(e){si.invoke("device.screen.lockViewOrientation",{toHorizontal:e.toHorizontal,clockwise:e.clockwise},{onSuccess:e.onSuccess,onFail:e.onFail})},t.unlockViewOrientation=function(e){si.invoke("device.screen.unlockViewOrientation",{},{onSuccess:e.onSuccess,onFail:e.onFail})},e}())};var yi,wi=Object.freeze({__proto__:null,getRecentApplications:function(e){si.invoke("appCenter.getAppList",{},{onSuccess:e.onSuccess,keep:!0})},putRecentApplication:function(e){var t=e.appId,n=e.appType;si.invoke("appCenter.putAppRecent",{appId:t,appType:n},{onSuccess:e.onSuccess,keep:!0})}}),bi=document.createElement("iframe");bi.style.display="none",null==(yi=document.body)||yi.appendChild(bi);var ki,Si=function(e,t){return new Promise((function(n,i){var r=setTimeout((function(){i(new Error("h5jssdk_getSDKConfig_timeout")),Vn("h5jssdk_getSDKConfig_timeout"),ye(ve,ge[ue.getSdkConfigTimeout]).flush()}),3e3);si.invoke("getSDKConfig",{param:JSON.stringify({build:t})},{onSuccess:function(t){r&&clearTimeout(r);try{"android"===e&&t.apiInfoList?n(t.apiInfoList.map((function(e){return e.name}))):0===t.code?n(t.data.apiInfoList.map((function(e){return e.name}))):n(!0)}catch(e){i(e),Vn("h5jssdk_getSDKConfigErr",e),ye(ve,ge[ue.getSdkConfigError]).setError(_(e)).flush()}},onFail:function(e){r&&clearTimeout(r),i(e),Vn("h5jssdk_getSDKConfigErr",e),ye(ve,ge[ue.getSdkConfigError]).setError(_(e)).flush()}})}))},Ci=function(){var e=a(s.mark((function e(t,n,i){var r,o,a,c,u,l,f;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r={},e.prev=1,e.next=4,Si(t,i);case 4:(o=e.sent)&&(r={openList:o,byteList:[]}),e.next=10;break;case 8:e.prev=8,e.t0=e.catch(1);case 10:if(c=(a=r).openList,u=void 0===c?[]:c,l=a.byteList,f=void 0===l?[]:l,"cdn"!==i){e.next=13;break}return e.abrupt("return",u);case 13:return e.abrupt("return",u.concat(f));case 14:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(t,n,i){return e.apply(this,arguments)}}(),Ei=function(e){var t=e.api,n=e.browser,i=e.SDK,r=e.build;return ki=ki||new Promise((function(e,o){if(n.versions.mobileFeishu||n.versions.PCFeishu){var a=b(n),s=n.versions.larkVersion;if(!a||!s)return o(new Error("please use h5-js-sdk in Feishu or Lark APP"));Ci(a,s,r).then((function(n){void 0===n&&(n=[]),n.length?function(e,t,n){e.map((function(e){return e.split(".")})).forEach((function(e){e.reduce((function(t,n,i){if(null===t)return t;var r=t.feishu,o=t.api;return void 0===o[n]?null:e.length===i+1?(r[n]=o[n],null):(void 0===r[n]&&(r[n]={}),{feishu:r[n],api:o[n]})}),{feishu:t,api:n})}))}(n,i,t):Object.keys(t).forEach((function(e){i[e]=t[e]})),e()})).catch((function(e){Object.keys(t).forEach((function(e){i[e]=t[e]})),o(e)}))}else o(new Error("please use h5-js-sdk in Feishu or Lark APP"))}))},Ti={onSuccess:{type:"Function"},onFail:{type:"Function"}},zi=[{name:"device.base.getSystemInfo",args:Ti},{name:"biz.util.getClipboardInfo",args:Ti},{name:"biz.util.openDocument",args:Object.assign({url:{type:"String",required:!0},method:{type:"String"},fileType:{type:"String"},header:{type:"Object"},body:{type:"String"},onProgress:{type:"Function"}},Ti)},{name:"biz.contact.open",args:Object.assign({mode:{type:"String",default:"look",required:!0}},Ti)},{name:"biz.user.getUserInfo",args:Ti},{name:"biz.user.openDetail",args:Object.assign({openId:{type:"String",required:!0},position:{type:"Object"}},Ti)},{name:"biz.user.getUserInfoEx",args:Ti},{name:"device.health.getStepCount",args:Ti},{name:"device.connection.getConnectedWifi",args:Ti},{name:"device.connection.getGatewayIP",args:Ti},{name:"biz.util.previewImage",args:Object.assign({urls:{type:"Array"},current:{type:"String"},requests:{type:"Array"}},Ti)},{name:"biz.util.openLink",args:Object.assign({url:{type:"String",required:!0},title:{type:"String"},newTab:{type:"Boolean"}},Ti)}];function Ii(e,t){return t.forEach((function(t){var n=t.name,i=t.service,r=t.eventName,o=void 0===r?"":r,a=n.split("."),s=e;a.forEach((function(e,r){if(r===a.length-1){if(s[e])return v("the API ["+n+"] has exist, please check and modify");var c=e.match(/^(on|off)[A-Z]/),u=c?si[c[1]]:si.invoke,l=[null!=i?i:n];c&&l.unshift(o),s[e]=function(e){if(!t.args||(i=e,r=t.args,o=n,a=!0,s="",f=g(i),d=r.type||g(r),"Undefined"===f?"Object"===d?i={}:r.required&&(s="【"+o+"】:the argument expect a "+d+" but received a "+f,a=!1):f!==d&&(s="【"+o+"】:the argument expect a "+d+" but received a "+f,a=!1),a&&"Object"===d&&Object.keys(r).forEach((function(e){var t=r[e];t.default&&void 0===i[e]&&(i[e]=t.default),t.alias&&(i[t.alias]=i[e]);var n=g(i[e]);"Undefined"===n?t.required&&(s="【"+o+"】:the param ["+e+"] is required and must be "+t.type,a=!1):t.type!==n&&(s="【"+o+"】:the param ["+e+"] expect "+t.type+" but received "+n,a=!1)})),a||(i&&"function"==typeof i.onFail?i.onFail({errorCode:1015,errorMessage:s}):v(s)),a)){var i,r,o,a,s,f,d;if(c)return u.call.apply(u,[si].concat(l,[e]));var p=function(e){var t={},n={};return Object.keys(e).forEach((function(i){"function"==typeof e[i]?n[i]=e[i]:t[i]=e[i]})),{normal:t,callbacks:n}}(e||{}),h=p.normal,m=p.callbacks;return u.call.apply(u,[si].concat(l,[h,m]))}}}else s=s[e]||(s[e]={})}))})),e}var xi=t(n((function(e){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0}))),Ai=n((function(e){e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0})),Oi=n((function(e){e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.default=e.exports,e.exports.__esModule=!0})),Li=n((function(e){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0})),Pi=n((function(e){e.exports=function(e){return Ai(e)||Oi(e)||u(e)||Li()},e.exports.default=e.exports,e.exports.__esModule=!0})),Di=n((function(e){function t(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0})),Mi=n((function(e){var t=Di.default;e.exports=function(e,n){if("object"!==t(e)||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,n||"default");if("object"!==t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)},e.exports.default=e.exports,e.exports.__esModule=!0})),Bi=n((function(e){var t=Di.default;e.exports=function(e){var n=Mi(e,"string");return"symbol"===t(n)?n:String(n)},e.exports.default=e.exports,e.exports.__esModule=!0})),ji=t(n((function(e){function t(){t=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach((function(n){t.forEach((function(t){t.kind===n&&"own"===t.placement&&this.defineClassElement(e,t)}),this)}),this)},initializeClassElements:function(e,t){var n=e.prototype;["method","field"].forEach((function(i){t.forEach((function(t){var r=t.placement;if(t.kind===i&&("static"===r||"prototype"===r)){var o="static"===r?e:n;this.defineClassElement(o,t)}}),this)}),this)},defineClassElement:function(e,t){var n=t.descriptor;if("field"===t.kind){var i=t.initializer;n={enumerable:n.enumerable,writable:n.writable,configurable:n.configurable,value:void 0===i?void 0:i.call(e)}}Object.defineProperty(e,t.key,n)},decorateClass:function(e,t){var n=[],i=[],o={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,o)}),this),e.forEach((function(e){if(!r(e))return n.push(e);var t=this.decorateElement(e,o);n.push(t.element),n.push.apply(n,t.extras),i.push.apply(i,t.finishers)}),this),!t)return{elements:n,finishers:i};var a=this.decorateConstructor(n,t);return i.push.apply(i,a.finishers),a.finishers=i,a},addElementPlacement:function(e,t,n){var i=t[e.placement];if(!n&&-1!==i.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");i.push(e.key)},decorateElement:function(e,t){for(var n=[],i=[],r=e.decorators,o=r.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,r[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&i.push(c.finisher);var u=c.extras;if(u){for(var l=0;l=0;i--){var r=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[i])(r)||r);if(void 0!==o.finisher&&n.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a>16&255):64===i?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return r};function Gi(e){for(var t=Ki(e),n=t.length,i=new Uint8Array(n),r=0;r0;)if(o===e[a])return i;r(t)}}Object.assign(h.prototype,{subscribe:function(e,t,n){var i=this,r=this._target,o=this._emitter,a=this._listeners,s=function(){var i=d.apply(null,arguments),a={data:i,name:t,original:e};if(n){var s=n.call(r,a);!1!==s&&o.emit.apply(o,[a.name].concat(i))}else o.emit.apply(o,[t].concat(i))};if(a[e])throw Error("Event '"+e+"' is already listening");this._listenersCount++,o._newListener&&o._removeListener&&!i._onNewListener?(this._onNewListener=function(n){n===t&&null===a[e]&&(a[e]=s,i._on.call(r,e,s))},o.on("newListener",this._onNewListener),this._onRemoveListener=function(n){n===t&&!o.hasListeners(n)&&a[e]&&(a[e]=null,i._off.call(r,e,s))},a[e]=null,o.on("removeListener",this._onRemoveListener)):(a[e]=s,i._on.call(r,e,s))},unsubscribe:function(e){var t,n,i,r=this,o=this._listeners,a=this._emitter,s=this._off,u=this._target;if(e&&"string"!=typeof e)throw TypeError("event must be a string");function l(){r._onNewListener&&(a.off("newListener",r._onNewListener),a.off("removeListener",r._onRemoveListener),r._onNewListener=null,r._onRemoveListener=null);var e=b.call(a,r);a._observers.splice(e,1)}if(e){if(!(t=o[e]))return;s.call(u,e,t),delete o[e],--this._listenersCount||l()}else{for(i=(n=c(o)).length;i-- >0;)e=n[i],s.call(u,e,o[e]);this._listeners={},this._listenersCount=0,l()}}});var _=m(["function"]),y=m(["object","function"]);function w(e,t,n){var i,r,o,a=0,s=new e((function(c,u,l){function f(){r&&(r=null),a&&(clearTimeout(a),a=0)}n=g(n,{timeout:0,overload:!1},{timeout:function(e,t){return("number"!=typeof(e*=1)||e<0||!Number.isFinite(e))&&t("timeout must be a positive number"),e}}),i=!n.overload&&"function"==typeof e.prototype.cancel&&"function"==typeof l;var d=function(e){f(),c(e)},p=function(e){f(),u(e)};i?t(d,p,l):(r=[function(e){p(e||Error("canceled"))}],t(d,p,(function(e){if(o)throw Error("Unable to subscribe on cancel event asynchronously");if("function"!=typeof e)throw TypeError("onCancel callback must be a function");r.push(e)})),o=!0),n.timeout>0&&(a=setTimeout((function(){var e=Error("timeout");e.code="ETIMEDOUT",a=0,s.cancel(e),u(e)}),n.timeout))}));return i||(s.cancel=function(e){if(r){for(var t=r.length,n=1;n0;)"_listeners"!==(p=_[s])&&(y=k(e,t,n[p],i+1,r))&&(w?w.push.apply(w,y):w=y);return w}if("**"===b){for((m=i+1===r||i+2===r&&"*"===S)&&n._listeners&&(w=k(e,t,n,r,r)),s=(_=c(n)).length;s-- >0;)"_listeners"!==(p=_[s])&&("*"===p||"**"===p?(n[p]._listeners&&!m&&(y=k(e,t,n[p],r,r))&&(w?w.push.apply(w,y):w=y),y=k(e,t,n[p],i,r)):y=k(e,t,n[p],p===S?i+2:i,r),y&&(w?w.push.apply(w,y):w=y));return w}if(n[b]&&(w=k(e,t,n[b],i+1,r)),(h=n["*"])&&k(e,t,h,i+1,r),g=n["**"])if(i0;)"_listeners"!==(p=_[s])&&(p===S?k(e,t,g[p],i+2,r):p===b?k(e,t,g[p],i+1,r):((v={})[p]=g[p],k(e,t,{"**":v},i+1,r)));else g._listeners?k(e,t,g,r,r):g["*"]&&g["*"]._listeners&&k(e,t,g["*"],r,r);return w}function S(e,t,n){var i,r,o=0,a=0,s=this.delimiter,c=s.length;if("string"==typeof e)if(-1!==(i=e.indexOf(s))){r=new Array(5);do{r[o++]=e.slice(a,i),a=i+c}while(-1!==(i=e.indexOf(s,a)));r[o++]=e.slice(a)}else r=[e],o=1;else r=e,o=e.length;if(o>1)for(i=0;i+10&&l._listeners.length>this._maxListeners&&(l._listeners.warned=!0,f.call(this,l._listeners.length,u))):l._listeners=t,!0;return!0}function C(e,t,n,i){for(var r,o,a,s,u=c(e),l=u.length,f=e._listeners;l-- >0;)r=e[o=u[l]],a="_listeners"===o?n:n?n.concat(o):[o],s=i||"symbol"==typeof o,f&&t.push(s?a:a.join(this.delimiter)),"object"==typeof r&&C.call(this,r,t,a,s);return t}function E(e){for(var t,n,i,r=c(e),o=r.length;o-- >0;)(t=e[n=r[o]])&&(i=!0,"_listeners"===n||E(t)||delete e[n]);return i}function T(e,t,n){this.emitter=e,this.event=t,this.listener=n}function z(e,n,i){if(!0===i)a=!0;else if(!1===i)o=!0;else{if(!i||"object"!=typeof i)throw TypeError("options should be an object or true");var o=i.async,a=i.promisify,c=i.nextTick,u=i.objectify}if(o||c||a){var l=n,f=n._origin||n;if(c&&!r)throw Error("process.nextTick is not supported");a===t&&(a="AsyncFunction"===n.constructor.name),(n=function(){var e=arguments,t=this,n=this.event;return a?c?Promise.resolve():new Promise((function(e){s(e)})).then((function(){return t.event=n,l.apply(t,e)})):(c?process.nextTick:s)((function(){t.event=n,l.apply(t,e)}))})._async=!0,n._origin=f}return[n,u?new T(this,e,n):this]}function I(e){this._events={},this._newListener=!1,this._removeListener=!1,this.verboseMemoryLeak=!1,l.call(this,e)}T.prototype.off=function(){return this.emitter.off(this.event,this.listener),this},I.EventEmitter2=I,I.prototype.listenTo=function(e,n,r){if("object"!=typeof e)throw TypeError("target musts be an object");var o=this;function a(t){if("object"!=typeof t)throw TypeError("events must be an object");var n,i=r.reducers,a=b.call(o,e);n=-1===a?new h(o,e,r):o._observers[a];for(var s,u=c(t),l=u.length,f="function"==typeof i,d=0;d0;)i=n[r],e&&i._target!==e||(i.unsubscribe(t),o=!0);return o},I.prototype.delimiter=".",I.prototype.setMaxListeners=function(e){e!==t&&(this._maxListeners=e,this._conf||(this._conf={}),this._conf.maxListeners=e)},I.prototype.getMaxListeners=function(){return this._maxListeners},I.prototype.event="",I.prototype.once=function(e,t,n){return this._once(e,t,!1,n)},I.prototype.prependOnceListener=function(e,t,n){return this._once(e,t,!0,n)},I.prototype._once=function(e,t,n,i){return this._many(e,1,t,n,i)},I.prototype.many=function(e,t,n,i){return this._many(e,t,n,!1,i)},I.prototype.prependMany=function(e,t,n,i){return this._many(e,t,n,!0,i)},I.prototype._many=function(e,t,n,i,r){var o=this;if("function"!=typeof n)throw new Error("many only accepts instances of Function");function a(){return 0==--t&&o.off(e,a),n.apply(this,arguments)}return a._origin=n,this._on(e,a,i,r)},I.prototype.emit=function(){if(!this._events&&!this._all)return!1;this._events||u.call(this);var e,t,n,i,r,a,s=arguments[0],c=this.wildcard;if("newListener"===s&&!this._newListener&&!this._events.newListener)return!1;if(c&&(e=s,"newListener"!==s&&"removeListener"!==s&&"object"==typeof s)){if(n=s.length,o)for(i=0;i3)for(t=new Array(f-1),r=1;r3)for(n=new Array(d-1),a=1;a0&&this._events[e].length>this._maxListeners&&(this._events[e].warned=!0,f.call(this,this._events[e].length,e))):this._events[e]=n,a)},I.prototype.off=function(e,t){if("function"!=typeof t)throw new Error("removeListener only takes instances of Function");var n,r=[];if(this.wildcard){var o="string"==typeof e?e.split(this.delimiter):e.slice();if(!(r=k.call(this,null,o,this.listenerTree,0)))return this}else{if(!this._events[e])return this;n=this._events[e],r.push({_listeners:n})}for(var a=0;a0){for(n=0,i=(t=this._all).length;n0;)"function"==typeof(i=s[n[o]])?r.push(i):r.push.apply(r,i);return r}if(this.wildcard){if(!(a=this.listenerTree))return[];var u=[],l="string"==typeof e?e.split(this.delimiter):e.slice();return k.call(this,u,l,a,0),u}return s&&(i=s[e])?"function"==typeof i?[i]:i:[]},I.prototype.eventNames=function(e){var t=this._events;return this.wildcard?C.call(this,this.listenerTree,[],null,e):t?c(t):[]},I.prototype.listenerCount=function(e){return this.listeners(e).length},I.prototype.hasListeners=function(e){if(this.wildcard){var n=[],i="string"==typeof e?e.split(this.delimiter):e.slice();return k.call(this,n,i,this.listenerTree,0),n.length>0}var r=this._events,o=this._all;return!!(o&&o.length||r&&(e===t?c(r).length:r[e]))},I.prototype.listenersAny=function(){return this._all?this._all:[]},I.prototype.waitFor=function(e,n){var i=this,r=typeof n;return"number"===r?n={timeout:n}:"function"===r&&(n={filter:n}),w((n=g(n,{timeout:0,filter:t,handleError:!1,Promise:Promise,overload:!1},{filter:_,Promise:v})).Promise,(function(t,r,o){function a(){var o=n.filter;if(!o||o.apply(i,arguments))if(i.off(e,a),n.handleError){var s=arguments[0];s?r(s):t(d.apply(null,arguments).slice(1))}else t(d.apply(null,arguments))}o((function(){i.off(e,a)})),i._on(e,a,!1)}),{timeout:n.timeout,overload:n.overload})};var x=I.prototype;Object.defineProperties(I,{defaultMaxListeners:{get:function(){return x._maxListeners},set:function(e){if("number"!=typeof e||e<0||Number.isNaN(e))throw TypeError("n must be a non-negative number");x._maxListeners=e},enumerable:!0},once:{value:function(e,t,n){return w((n=g(n,{Promise:Promise,timeout:0,overload:!1},{Promise:v})).Promise,(function(n,i,r){var o;if("function"==typeof e.addEventListener)return o=function(){n(d.apply(null,arguments))},r((function(){e.removeEventListener(t,o)})),void e.addEventListener(t,o,{once:!0});var a,s=function(){a&&e.removeListener("error",a),n(d.apply(null,arguments))};"error"!==t&&(a=function(n){e.removeListener(t,s),i(n)},e.once("error",a)),r((function(){a&&e.removeListener("error",a),e.removeListener(t,s)})),e.once(t,s)}),{timeout:n.timeout,overload:n.overload})},writable:!0,configurable:!0}}),Object.defineProperties(x,{_maxListeners:{value:10,writable:!0,configurable:!0},_observers:{value:null,writable:!0,configurable:!0}}),e.exports=I}()})),ar="mp_app_onlaunch_beigin",sr="mp_app_onlaunch_end",cr="mp_app_onshow_begin",ur="mp_app_onshow_end",lr="mp_page_first_set_data",fr="appservice_create_page_start",dr="appservice_create_page_end",pr="appservice_on_app_route",hr="mp_block_first_set_data",gr="appservice_create_block_start",vr="appservice_create_block_end",mr="pageFrame_first_get_data",_r="pageFrame_get_screen_cache_data",yr="pageFrame_cache_dirty_data",wr="webview_evaluateJavascript_begin",br="webview_evaluateJavascript_end",kr="pageFrame_receive_render_snapshot_message",Sr="pageFrame_func_ready",Cr="pageFrame_snapshot_frame_show",Er="pageFrame_cache_re_render_end",Tr="pageFrame_first_render_begin",zr="pageFrame_first_render_end",Ir="pageFrame_create_virtual_tree_begin",xr="pageFrame_create_virtual_tree_end",Ar="pageFrame_create_element_tree_begin",Or="pageFrame_create_element_tree_end",Lr="pageFrame_apply_child_to_body_begin",Pr="pageFrame_apply_child_to_body_end",Dr="pageFrame_first_frame_show",Mr="pageFrame_cache_create_virtual_tree_begin",Br="pageFrame_cache_diff_virtual_tree_begin",jr="pageFrame_cache_virtual_patch_begin",Nr="pageFrame_cache_virtual_patch_end",Fr="pageFrame_cache_dirty_path",Rr="pageFrame_cache_re_render_begin",Vr="pageFrame_cache_json_diff_end",Wr="pageFrame_app_fmp",Ur="js.open_platform.gadget",qr="js.open_platform.blockit",Hr=Ur,Jr=((ir={appServiceSDKScriptError:{domain:Hr+".js_runtime_error",code:10001,level:j.error,message:"app_service_sdk_script_error"},webviewSDKScriptError:{domain:Hr+".js_runtime_error",code:10002,level:j.error,message:"webview_sdk_script_error"},jsEngineScriptError:{domain:Hr+".js_runtime_error",code:100003,level:j.error,message:"js_engine_script_error"},thirdScriptError:{domain:Hr+".js_runtime_error",code:100004,level:j.warn,message:"third_script_error"},webviewScriptError:{domain:Hr+".js_runtime_error",code:100005,level:j.error,message:"webview_script_error"},parserScriptError:{domain:Hr+".js_runtime_error",code:100006,level:j.error,message:"parser_script_error"},loadScriptError:{domain:Hr+".js_runtime_error",code:10007,level:j.error,message:"load_script_error"},commentWarn:{domain:Hr+".js_runtime_error",code:10008,level:j.warn,message:"comment_warn"}})[ar]={domain:Hr,code:1e4,level:j.normal,message:"mp_app_onlaunch_begin"},ir[sr]={domain:Hr,code:10001,level:j.normal,message:"mp_app_onlaunch_end"},ir[cr]={domain:Hr,code:10002,level:j.normal,message:"mp_app_onshow_begin"},ir[ur]={domain:Hr,code:10003,level:j.normal,message:"mp_app_onshow_end"},ir[lr]={domain:Hr,code:10004,level:j.normal,message:"mp_page_first_set_data"},ir[fr]={domain:Hr,code:10005,level:j.normal,message:"appservice_create_page_start"},ir[dr]={domain:Hr,code:10006,level:j.normal,message:"appservice_create_page_end"},ir[pr]={domain:Hr,code:10007,level:j.normal,message:"appservice_on_app_route"},ir[mr]={domain:Hr,code:10008,level:j.normal,message:"pageframe_first_get_data"},ir[_r]={domain:Hr,code:10009,level:j.normal,message:"pageframe_get_screen_cache_data"},ir[yr]={domain:Hr,code:10010,level:j.normal,message:"pageframe_cache_dirty_data"},ir[wr]={domain:Hr,code:10011,level:j.normal,message:"webview_evaluateJavascript_begin"},ir[br]={domain:Hr,code:10012,level:j.normal,message:"webview_evaluateJavascript_end"},ir[kr]={domain:Hr,code:10013,level:j.normal,message:"pageframe_receive_render_snapshot_message"},ir[Sr]={domain:Hr,code:10014,level:j.normal,message:"pageframe_func_ready"},ir[Cr]={domain:Hr,code:10015,level:j.normal,message:"pageframe_snapshot_frame_show"},ir[Er]={domain:Hr,code:10016,level:j.normal,message:"pageframe_cache_re_render_end"},ir[Tr]={domain:Hr,code:10017,level:j.normal,message:"pageframe_first_render_begin"},ir[zr]={domain:Hr,code:10018,level:j.normal,message:"pageFrame_first_render_end"},ir[Ir]={domain:Hr,code:10019,level:j.normal,message:"pageframe_create_virtual_tree_begin"},ir[xr]={domain:Hr,code:10020,level:j.normal,message:"pageframe_create_virtual_tree_end"},ir[Ar]={domain:Hr,code:10021,level:j.normal,message:"pageframe_create_element_tree_begin"},ir[Or]={domain:Hr,code:10022,level:j.normal,message:"pageframe_create_element_tree_end"},ir[Lr]={domain:Hr,code:10023,level:j.normal,message:"pageframe_apply_child_to_body_begin"},ir[Pr]={domain:Hr,code:10024,level:j.normal,message:"pageframe_apply_child_to_body_end"},ir[Dr]={domain:Hr,code:10025,level:j.normal,message:"pageframe_first_frame_show"},ir[Mr]={domain:Hr,code:10026,level:j.normal,message:"pageframe_cache_create_virtual_tree_begin"},ir[Br]={domain:Hr,code:10027,level:j.normal,message:"pageframe_cache_diff_virtual_tree_begin"},ir[jr]={domain:Hr,code:10028,level:j.normal,message:"pageframe_cache_virtual_patch_begin"},ir[Nr]={domain:Hr,code:10029,level:j.normal,message:"pageframe_cache_virtual_patch_end"},ir[Fr]={domain:Hr,code:10030,level:j.normal,message:"pageframe_cache_dirty_path"},ir[Rr]={domain:Hr,code:10031,level:j.normal,message:"pageframe_cache_re_render_begin"},ir[Vr]={domain:Hr,code:10032,level:j.normal,message:"pageframe_cache_json_diff_end"},ir[Wr]={domain:Hr,code:10033,level:j.normal,message:"pageFrame_app_fmp"},ir.webview_longest_pubsub={domain:Ur+".jssdk_performance",code:10033,level:j.normal,message:"webview_longest_pubsub"},ir.webview_slowest_pubsub={domain:Ur+".jssdk_performance",code:10034,level:j.normal,message:"webview_slowest_pubsub"},ir.webview_pubsub_length_statistic={domain:Ur+".jssdk_performance",code:10035,level:j.normal,message:"webview_pubsub_lenth_statistic"},ir.webview_pubsub_timecost_statistic={domain:Ur+".jssdk_performance",code:10036,level:j.normal,message:"webview_pubsub_timecost_statistic"},ir.appservice_longest_pubsub={domain:Ur+".jssdk_performance",code:10037,level:j.normal,message:"appservice_longest_pubsub"},ir.appservice_slowest_pubsub={domain:Ur+".jssdk_performance",code:10038,level:j.normal,message:"appservice_slowest_pubsub"},ir.appservice_pubsub_length_statistic={domain:Ur+".jssdk_performance",code:10039,level:j.normal,message:"appservice_pubsub_lenth_statistic"},ir.appservice_pubsub_timecost_statistic={domain:Ur+".jssdk_performance",code:10040,level:j.normal,message:"appservice_pubsub_timecost_statistic"},ir.webview_work_time_ratio={domain:Ur+".jssdk_performance",code:10041,level:j.normal,message:"webview_work_time_ratio"},ir.appservice_work_time_ratio={domain:Ur+".jssdk_performance",code:10042,level:j.normal,message:"appservice_work_time_ratio"},ir.appservice_reported_tti={domain:Ur+".jssdk_performance",code:10043,level:j.normal,message:"appservice_reported_tti"},ir.webview_detected_tti={domain:Ur+".jssdk_performance",code:10044,level:j.normal,message:"webview_detected_tti"},ir.appservice_using_v8_port={domain:Ur+".jssdk_performance",code:10045,level:j.normal,message:"appservice_using_v8_port"},ir.undefined_default_code={domain:Hr,code:1e4,level:j.warn,message:"undefined_default_code"},ir.api_success={domain:Hr+".api",code:1e4,level:j.normal,message:"api_success"},ir.api_cancel={domain:Hr+".api",code:10001,level:j.warn,message:"api_cancel"},ir.api_fail={domain:Hr+".api",code:10002,level:j.error,message:"api_fail"},ir.api_timeout={domain:Hr+".api",code:10003,level:j.error,message:"api_timeout"},ir.api_queue_timeout={domain:Hr+".api",code:10004,level:j.warn,message:"api_queue_timeout"},ir.api_invoke={domain:"client.open_platform.api.common",code:1e4,level:j.normal,message:"api_jssdk_invoke"},ir.api_callback={domain:"client.open_platform.api.common",code:10001,level:j.normal,message:"api_jssdk_callback"},ir.customComponent_performance={domain:Hr,code:1e4,level:j.normal,message:"customComponent_performance"},ir.request_result={domain:Hr+".network",code:1e4,level:j.normal,message:"request_result"},ir.abort_request={domain:Hr+".network",code:10001,level:j.normal,message:"abort_request"},ir.upload_result={domain:Hr+".network",code:10002,level:j.normal,message:"upload_result"},ir.abort_upload={domain:Hr+".network",code:10003,level:j.normal,message:"abort_upload"},ir.download_result={domain:Hr+".network",code:10004,level:j.normal,message:"download_result"},ir.abort_download={domain:Hr+".network",code:10005,level:j.normal,message:"abort_download"},ir.request_waiting={domain:Hr+".network",code:10006,level:j.normal,message:"request_enter_waiting_queue"},ir.request_long_waiting={domain:Hr+".network",code:10007,level:j.warn,message:"request_waiting_queue_long_time_stopped"},ir.editorInit={domain:Hr+".editor",code:10001,level:j.normal,message:"editor_start"},ir.editorPublish={domain:Hr+".editor",code:10002,level:j.normal,message:"editor_publish"},ir.editorSubscribe={domain:Hr+".editor",code:10003,level:j.normal,message:"editor_subscribe"},ir.canvasDrawTime={domain:Hr+".canvas",code:1e4,level:j.normal,message:"canvas_draw_time"},ir.webviewRenderTime={domain:Hr+".webview_render",code:1e4,level:j.normal,message:"webview_render_time"},ir.webviewSeriesRenderTime={domain:Hr+".webview_render",code:10001,level:j.normal,message:"webview_series_render_time"},ir.onUpdateReady={domain:Hr+".mp_trigger_on_event",code:1e4,level:j.normal,message:"trigger onUpdateReady"},ir.mpPageView={domain:Hr+".mp_page_view",code:1e4,level:j.normal,message:"mp page view"},ir);(rr={user_click:{domain:qr+".event_tracking",code:1e4,level:j.normal,message:"user_click"},block_display:{domain:qr+".event_tracking",code:10001,level:j.normal,message:"block_display"}})[hr]={domain:Hr,code:10046,level:j.normal,message:"mp_block_first_set_data"},rr[gr]={domain:Hr,code:10047,level:j.normal,message:"appservice_create_block_start"},rr[vr]={domain:Hr,code:10048,level:j.normal,message:"appservice_create_block_end"};var Kr,Gr={jsError:"mp_js_runtime_error",executeProcess:"mp_execute_process",api:"mp_api_invoke_result",onCallback:"mp_trigger_on_event",analysis:"op_js_analysis",network:"op_js_network",editorAnalysis:"editor",canvas:"op_api_canvas",api_invoke:"op_api_invoke",detectedTTI:"mp_js_sdk_detected_tti",reportedTTI:"mp_js_sdk_reported_tti",webviewSlowPubsub:"mp_js_sdk_slow_pubsub_webview",serviceSlowPubsub:"mp_js_sdk_slow_pubsub_service",webviewPubsubTimeStat:"mp_js_sdk_pubsub_stat_webview",servicePubsubTimeStat:"mp_js_sdk_pubsub_stat_service",webviewRender:"op_js_webview_render",openplatformMpPageView:"openplatform_mp_page_view"},Qr=["info","warn","error","debug","log"],$r=["error","warn"],Xr=["group","groupEnd"],Yr=new(function(){function e(){var e=this;this.prefix="[TMA]",this.type="",this.deprecated=function(){for(var t=arguments.length,n=new Array(t),i=0;i1?i-1:0),o=1;o= "+t.sdkVersion+" 后移除):"].concat(r))};for(var t,n=l(Qr);!(t=n()).done;){var i=t.value;this[i]=this.createLogMethod(i)}for(var r,o=l(Xr);!(r=o()).done;){var a=r.value;this[a]=this.createControlMethod(a)}}var t=e.prototype;return t.setPrefix=function(e){this.prefix=e},t.createLogMethod=function(e){var t=this;if(!$r.includes(e))return function(){};var n=e.toUpperCase();return function(){for(var i,r=arguments.length,o=new Array(r),a=0;a1e3&&(null==u||u.slowReport({key:r,cost:f,extend:o}))}else i=e.apply(s,t)}catch(e){if(c){if("[object Error]"===Object.prototype.toString.apply(e)){if("AppServiceEngineKnownError"===e.type||"AppServiceSdkKnownError"===e.type||"WebviewSdkKnownError"===e.type)throw e;"ThirdScriptError"===e.type?null==u||u.thirdErrorReport({error:e,extend:o}):null==u||u.errorReport({key:c,error:e,extend:o})}}else null==u||u.thirdErrorReport({error:e,extend:o})}return i}function io(e){return[function(t,n,i){return no(t,n,Object.assign({},e,i))},function(t,n){var i=Object.assign({},e,n);return function(){for(var e=arguments.length,n=new Array(e),r=0;r0?e.split("/"):[],o=0,a=i.length;o=t)return e.substring(0,i);return e}(e.title,14),this.invokeMethod("showToast",e,{beforeAll:function(e){e.errMsg=e.errMsg.replace("showToast","showLoading")}}))}},{kind:"method",decorators:[Wo()],key:"hideLoading",value:function(e){void 0===e&&(e={}),this.invokeMethod("hideToast",e,{beforeAll:function(e){e.errMsg=e.errMsg.replace("hideToast","hideLoading")}})}}]}}),Uo);var ra=ji(null,(function(e,t){return{F:function(t){function n(){for(var n,i=arguments.length,r=new Array(i),o=0;o6?this.beforeInvokeFail("showActionSheet",e,"param.itemList should has at most 6 items"):this.invokeMethod("showActionSheet",e))}}]}}),Uo),oa=ji(null,(function(e,t){return{F:function(t){function n(){for(var n,i=arguments.length,r=new Array(i),o=0;o8?this.beforeInvokeFail("showModal",e,"confirmText length should not larger than 4 Chinese characters"):ta(e.cancelText)>8?this.beforeInvokeFail("showModal",e,"cancelText length should not larger than 4 Chinese characters"):this.invokeMethod("showModal",e))}}]}}),Uo);var aa=function(e){return"string"==typeof e?e.replace(/[^\u0000-\u00ff]/g,"aa").length:0},sa=ji(null,(function(e,t){var n=function(t){function n(){for(var n,i=arguments.length,r=new Array(i),o=0;o0)this.continueShowCount++;else Date.now()-this.lastCloseTime<500?this.continueShowCount++:this.reset();this.continueShowCount>=3?this.tryShowTipModal(e):this.showNormalModal(e)}}},{kind:"field",key:"getShowModalTipInfo",value:function(){return this.createInvokeMethodApi("getShowModalTipInfo")}},{kind:"method",key:"tryShowTipModal",value:function(e){var t=this;void 0===e&&(e={}),this.getShowModalTipInfo({success:function(e){t.showTipModal(e)},fail:function(n){t.showNormalModal(e)}})}},{kind:"method",key:"showNormalModal",value:function(e){var t=this;void 0===e&&(e={});var n=(e=Object.assign({},e)).success,i=e.fail;e.success=function(e){t.lastCloseTime=Date.now(),t.currentShowCount--,n&&n(e)},e.fail=function(e){t.currentShowCount--,i&&i(e)},this.currentShowCount++,this.original.showModal(e)}},{kind:"method",key:"showTipModal",value:function(e){var t=this;this.isTipShowed=!0,this.original.showModal({title:e.title,cancelText:e.cancelText,confirmText:e.confirmText,success:function(e){var n,i=e.confirm,r=e.cancel;if(t.isTipShowed=!1,i){t.reset();var o=t.currentShowCount;t.currentShowCount=0,void 0===(n={fail:function(){t.reset(),t.currentShowCount=o}})&&(n={}),Io("exitMiniProgram",n)}r&&t.reset()},fail:function(e){t.isTipShowed=!1}})}},{kind:"method",key:"reset",value:function(){this.continueShowCount=0,this.lastCloseTime=0,this.isTipShowed=!1}}]}}),Uo),ca=ji(null,(function(e,t){return{F:function(t){function n(){for(var n,i=arguments.length,r=new Array(i),o=0;o30?e.beforeInvokeFail("showPrompt",t,"title length should not larger than 15 Chinese characters"):aa(t.confirmText)>8?e.beforeInvokeFail("showPrompt",t,"confirmText length should not larger than 4 Chinese characters"):aa(t.cancelText)>8?e.beforeInvokeFail("showPrompt",t,"cancelText length should not larger than 4 Chinese characters"):(t.maxLength=function(e){return"number"!=typeof e||isNaN(e)?140:e>=-1?e:140}(t.maxLength),e.invokeMethod("showPrompt",t))}}}]}}),Uo),ua=[],la=!1;function fa(e){0!=ua.length||la||(Io("onUserCaptureScreen",{}),la=!0),ua.push(e)}function da(e){0==(ua=ua.filter((function(t){return t!=e}))).length&&la&&(Io("offUserCaptureScreen",{}),la=!1)}function pa(e){void 0===e&&(e={}),Io("getClipboardData",e)}xo("userCaptureScreenObserved",(function(e){void 0===e&&(e={}),ua.forEach((function(t){var n=So(t,"onUserCaptureScreen");"function"==typeof n&&n(e)}))}));var ha={data:"String"};function ga(e){void 0===e&&(e={}),Po("setClipboardData",e,ha)&&Io("setClipboardData",e)}function va(e){void 0===e&&(e={});Po("startDeviceCredential",e,{authContent:"String"})&&Io("startDeviceCredential",e)}function ma(e){void 0===e&&(e={}),Io("mailto",e)}function _a(e){void 0===e&&(e={}),Io("checkWatermark",e)}var ya=new or,wa="_onWatermarkChange";function ba(e){var t,n,i;if(e)if("function"==typeof e?t=e:"object"==typeof e&&("function"==typeof e.callback&&(t=e.callback),"function"==typeof e.success&&(n=e.success),"function"==typeof e.fail&&(i=e.fail)),t)if(0===ya.listenerCount(wa)){Io("onWatermarkChange",{success:function(e){ya.on(wa,t),n&&n(e)},fail:i})}else ya.on(wa,t),n&&n();else i&&i("have no callback")}function ka(e){var t,n,i;if(e)if("function"==typeof e?t=e:"object"==typeof e&&("function"==typeof e.callback&&(t=e.callback),"function"==typeof e.success&&(n=e.success),"function"==typeof e.fail&&(i=e.fail)),t){n&&n();var r=ya.listenerCount(wa);ya.off(wa,t),1===r&&0===ya.listenerCount(wa)&&Io("offWatermarkChange",{})}else i&&i("have no callback")}function Sa(e){void 0===e&&(e={});Po("setAuthenticationInfo",e,{mobile:"String",identifyCode:"String",identifyName:"String"})&&Io("setAuthenticationInfo",e)}function Ca(e){void 0===e&&(e={}),Io("startFaceIdentify",e)}function Ea(e){void 0===e&&(e={});Po("startFaceVerify",e,{userId:"String"})&&Io("startFaceVerify",e)}xo("onWatermarkChange",(function(e){void 0===e&&(e={}),ya.emit(wa,e)}));var Ta=0,za=[],Ia=Ro("getLocation",{beforeAll:function(){Ta=0},afterAll:function(e){za.forEach((function(t){"function"==typeof t.complete&&So(t.complete,"at getLocation complete callback function")(e)})),za=[]},afterSuccess:function(e){za.forEach((function(t){"function"==typeof t.success&&So(t.success,"at getLocation success callback function")(e)}))},afterFail:function(e){za.forEach((function(t){"function"==typeof t.fail&&So(t.fail,"at getLocation fail callback function")(e)}))}}),xa=function(e){var t;Ta?(za.push(e),Date.now()-Ta>=1e4&&(t=Date.now()-Ta,to(Gr.api,Jr.api_queue_timeout).addMap({api_name:"getLocation",api_queue_length:za.length,api_timeout:t}).flush())):(Ta=Date.now(),Ia(e))},Aa=Ro("openLocation",{checkParams:{latitude:0,longitude:0}}),Oa=Ro("chooseLocation"),La=Ro("getLocationStatus"),Pa=new or.EventEmitter2,Da="onLocationChange";xo("onLocationChange",(function(e){void 0===e&&(e={}),Pa.emit(Da,e)}));var Ma=Ro("startLocationUpdate"),Ba=Ro("stopLocationUpdate"),ja=Co(Pa,Da,(function(e){return So(e)})),Na=ja.on,Fa=ja.off;var Ra=["ascii","base64","binary","hex","ucs2","ucs-2","utf16le","utf-16le","utf-8","utf8","latin1"],Va=function(){function e(e){var t=e.mode,n=void 0===t?0:t,i=e.size,r=void 0===i?0:i,o=e.lastAccessedTime,a=void 0===o?"":o,s=e.lastModifiedTime,c=void 0===s?"":s;this.mode=n,this.size=r,this.lastAccessedTime=a,this.lastModifiedTime=c}var t=e.prototype;return t._checkModeProperty=function(e){return(61440&this.mode)===e},t.isFile=function(){return this._checkModeProperty(32768)},t.isDirectory=function(){return this._checkModeProperty(16384)},e}(),Wa=new(function(){function e(){}var t=e.prototype;return t.getFileInfo=function(e){void 0===e&&(e={}),Po("getFileInfo",e,{filePath:""})&&Io("getFileInfo",e)},t.getSavedFileList=function(e){void 0===e&&(e={}),Io("getSavedFileList",e)},t.removeSavedFile=function(e){void 0===e&&(e={}),Po("removeSavedFile",e,{filePath:""})&&Io("removeSavedFile",e)},t.getSavedFileInfo=function(e){void 0===e&&(e={}),Po("getSavedFileInfo",e,{filePath:""})&&Io("getSavedFileInfo",e)},t.saveFile=function(e){void 0===e&&(e={}),Po("saveFile",e,{tempFilePath:""})&&Io("saveFile",e)},t.saveFileSync=function(e,t){if(!e||"string"!=typeof e)throw new TypeError("tempFilePath must be a string");var n,i;if(Io("saveFileSync",{tempFilePath:e,filePath:t,success:function(e){i=e.savedFilePath},fail:function(e){n=e.errMsg}}),n)throw new Error(n);return i},t.readFile=function(e){void 0===e&&(e={}),Po("readFile",e,{filePath:""})&&Io("readFile",e)},t.readFileSync=function(e,t){if(!e||"string"!=typeof e)throw new TypeError("filePath must be a string");if(t&&"string"!=typeof t)throw new TypeError("encoding must be a string");var n,i,r={filePath:e};if(t&&(r.encoding=t),Io("readFileSync",Object.assign({},r,{success:function(e){i=e.data},fail:function(e){n=e.errMsg}})),n)throw new Error(n);return i},t.writeFile=function(e){void 0===e&&(e={}),Po("writeFile",e,{filePath:""})&&(e.encoding&&-1===Ra.indexOf(e.encoding)?Do("writeFile",e,'invalid encoding "'+e.encoding+'"'):Io("writeFile",e,{}))},t.writeFileSync=function(e,t,n){if(!e||"string"!=typeof e)throw new TypeError("filePath must be a string");if(n&&-1===Ra.indexOf(n))throw new Error('invalid encoding "'+n+'"');var i;if(Io("writeFileSync",{filePath:e,data:t,encoding:n,fail:function(e){i=e.errMsg}}),i)throw new Error(i)},t.mkdir=function(e){void 0===e&&(e={}),Po("mkdir",e,{dirPath:""})&&Io("mkdir",e)},t.mkdirSync=function(e,t){if(void 0===t&&(t=!1),!e||"string"!=typeof e)throw new TypeError("dirPath must be a string");var n;if(Io("mkdirSync",{dirPath:e,recursive:t,fail:function(e){n=e.errMsg}}),n)throw new Error(n)},t.readdir=function(e){void 0===e&&(e={}),Po("readdir",e,{dirPath:""})&&Io("readdir",e)},t.readdirSync=function(e){if(!e||"string"!=typeof e)throw new TypeError("dirPath must be a string");var t,n;if(Io("readdirSync",{dirPath:e,success:function(e){n=e.files},fail:function(e){t=e.errMsg}}),t)throw new Error(t);return n},t.rmdir=function(e){void 0===e&&(e={recursive:!1}),Po("rmdir",e,{dirPath:""})&&Io("rmdir",e)},t.rmdirSync=function(e,t){if(void 0===t&&(t=!1),!e||"string"!=typeof e)throw new TypeError("dirPath must be a string");var n;if(Io("rmdirSync",{dirPath:e,recursive:t,fail:function(e){n=e.errMsg}}),n)throw new Error(n)},t.access=function(e){void 0===e&&(e={});/^(ttfile|http):\/\/(user|temp)$/.test(e.path)&&(e.path+="/"),Po("access",e,{path:""})&&Io("access",e)},t.accessSync=function(e){if(!e||"string"!=typeof e)throw new TypeError("path must be a string");var t;if(/^(ttfile|http):\/\/(user|temp)$/.test(e)&&(e+="/"),Io("accessSync",{path:e,fail:function(e){t=e.errMsg}}),t)throw new Error(t)},t.unlink=function(e){void 0===e&&(e={}),Po("unlink",e,{filePath:""})&&Io("unlink",e)},t.unlinkSync=function(e){if(!e||"string"!=typeof e)throw new TypeError("filePath must be a string");var t;if(Io("unlinkSync",{filePath:e,fail:function(e){t=e.errMsg}}),t)throw new Error(t)},t.stat=function(e){void 0===e&&(e={}),Po("stat",e,{path:""})&&Io("stat",e,{beforeSuccess:function(e){e.stats=e.stat=new Va(e.stat)}})},t.statSync=function(e){if(!e||"string"!=typeof e)throw new TypeError("path must be a string");var t,n;if(Io("statSync",{path:e,success:function(e){n=new Va(e.stat)},fail:function(e){t=e.errMsg}}),t)throw new Error(t);return n},t.rename=function(e){void 0===e&&(e={}),Po("rename",e,{oldPath:"",newPath:""})&&Io("rename",e)},t.renameSync=function(e,t){if(!e||"string"!=typeof e)throw new TypeError("oldPath must be a string");if(!t||"string"!=typeof t)throw new TypeError("newPath must be a string");var n;if(Io("renameSync",{oldPath:e,newPath:t,fail:function(e){n=e.errMsg}}),n)throw new Error(n)},t.copyFile=function(e){void 0===e&&(e={}),Po("copyFile",e,{srcPath:"",destPath:""})&&Io("copyFile",e)},t.copyFileSync=function(e,t){if(!e||"string"!=typeof e)throw new TypeError("srcPath must be a string");if(!t||"string"!=typeof t)throw new TypeError("destPath must be a string");var n;if(Io("copyFileSync",{srcPath:e,destPath:t,fail:function(e){n=e.errMsg}}),n)throw new Error(n)},t.unzip=function(e){void 0===e&&(e={}),Po("unzip",e,{zipFilePath:"",targetPath:""})&&Io("unzip",e,{})},e}());function Ua(){return Wa}var qa=Wa.saveFile;Wa.getFileInfo;var Ha=Wa.getSavedFileList,Ja=Wa.removeSavedFile,Ka="waiting",Ga="sending",Qa="done",$a="aborted",Xa="created",Ya="in_queue",Za=0,es=0;function ts(){var e=ss.get(this);as.set(this,Ga),ps.set(this,Date.now());var t,n=this,i=(new Date).valueOf()%1e6;es===i?Za++:(es=i,Za=0);var r=+(""+i+(Za<10?"0"+Za:Za));Za>=99&&(Za=0),os.set(n,r||i),Io("createDownloadTask",{url:e.url,header:e.header,data:e.data,method:e.method,filePath:e.filePath,taskId:r,success:function(e){us.set(n,e.trace),os.set(n,e.downloadTaskId),gs+=1,ms[e.downloadTaskId]=n},fail:function(e){us.set(n,e.trace),t=e.errMsg,ys(n,"fail",t)},complete:function(){as.set(n,Qa)}}),t?setTimeout((function(){var n={errMsg:t.replace("createDownloadTask","downloadFile")};"function"==typeof e.fail&&e.fail(n),"function"==typeof e.complete&&e.complete(n)}),0):(Yr.log("taskID",this,os.get(this)),_s.on(os.get(this)+"success",(function(t){t.errMsg="downloadFile:ok",t.statusCode=parseInt(t.statusCode,10),-1===[200,304].indexOf(t.statusCode)&&delete t.tempPath,delete t.timeInterval,"function"==typeof e.success&&e.success(t),"function"==typeof e.complete&&e.complete(t)})),_s.on(os.get(this)+"fail",(function(t){t.errMsg="downloadFile:fail "+t.errMsg,"function"==typeof e.fail&&e.fail(t),"function"==typeof e.complete&&e.complete(t)})))}var ns=0,is=new WeakMap,rs=new WeakMap,os=new WeakMap,as=new WeakMap,ss=new WeakMap,cs=new WeakMap,us=new WeakMap,ls=new WeakMap,fs=new WeakMap,ds=new WeakMap,ps=new WeakMap,hs=new WeakMap,gs=0,vs=[],ms={},_s=new or.EventEmitter2;function ys(e,t,n){var i=hs.get(e),r=as.get(e)===$a,o=r?Jr.abort_download:Jr.download_result,a=r?"cancel":t,s=ss.get(e),c=cs.get(e),u=Date.now()-c,l={request_trace:us.get(e)||"",request_url:s.url.split("?")[0],request_method:s.method||"GET",request_biz_invoke_time:cs.get(e),request_push_queue_time:ls.get(e)||0,request_shift_queue_time:ds.get(e)||0,request_queue_length:fs.get(e)||0,request_abort_type:i||"",error_msg:n||"",duration:u,result_type:a};to(Gr.network,o).addMap(l).flush()}xo("onDownloadTaskStateChange",(function(e){void 0===e&&(e={}),"string"==typeof e&&(e=JSON.parse(e));var t=e.state,n=e.downloadTaskId;if(delete e.state,delete e.downloadTaskId,_s.emit(""+n+t,e),"success"===t||"fail"===t){if(gs=Math.max(gs-1,0),vs.length>0){var i=vs.shift();ds.set(i.item,Date.now()),ts.call(i.item)}var r=ms[n];if(r){try{ys(r,t,e.errMsg)}catch(e){}delete ms[n],_s.removeAllListeners(n+"success"),_s.removeAllListeners(n+"fail"),_s.removeAllListeners(n+"progressUpdate")}}}));var ws,bs=function(){function e(e){cs.set(this,Date.now());var t=ns++;rs.set(this,t),is.set(this,t),as.set(this,Ka),["success","fail","complete"].forEach((function(t){var n=e[t];"function"==typeof n&&(e[t]=So(n,"at api downloadFile "+t+" callback function"))})),ss.set(this,e),gs>=5?(ls.set(this,Date.now()),fs.set(this,vs.length),vs.push({id:t,item:this}),function(e){var t=ss.get(e),n={request_trace:us.get(e)||"",request_url:t.url.split("?")[0],request_method:t.method||"GET",request_queue_length:5+vs.length,request_type:"downloadFile"};to(Gr.network,Jr.request_waiting).addMap(n).flush()}(this)):ts.call(this)}var t=e.prototype;return t.abort=function(){var e=this,t=as.get(this),n=ss.get(this);if(as.set(this,$a),t===Ka){var i=vs.findIndex((function(t){return t.id===is.get(e)}));i>-1&&vs.splice(i,1),hs.set(this,Ya),setTimeout((function(){var t="downloadFile:fail abort";"function"==typeof n.fail&&n.fail({errMsg:t}),ys(e,"cancel",t),"function"==typeof n.complete&&n.complete({errMsg:t})}),0)}else t!==$a&&(hs.set(this,Xa),Io("operateDownloadTask",{downloadTaskId:os.get(this),operationType:"abort"}))},t.onProgressUpdate=function(e){_s.on(os.get(this)+"progressUpdate",(function(t){"function"==typeof e&&So(e,"at DownloadTask.onProgressUpdate callback function")(t)}))},e}();function ks(e){if(void 0===e&&(e={}),Po("downloadFile",e,{url:""}))try{return new bs(e)}catch(t){Do("downloadFile",e,t.message)}}function Ss(e){void 0===e&&(e={}),Io("getBlockActionSourceDetail",e)}var Cs={NDEF:"NDEF",A:"NFC-A",B:"NFC-B",F:"NFC-F",V:"NFC-V",MIFARE_CLASSIC:"MIFARE-Classic",MIFARE_ULTRALIGHT:"MIFARE-Ultralight",ISO_DEP:"ISO-DEP"},Es=new or,Ts=new WeakMap,zs="discovered";xo("nfcFoundDevice",(function(e){Es.emit(zs,e)}));var Is=function(){function e(e){this.tech=e}var t=e.prototype;return t.connect=function(e){Io("nfcConnect",Object.assign({tech:this.tech},e))},t.close=function(e){Io("nfcClose",Object.assign({tech:this.tech},e))},t.setTimeout=function(e){Io("nfcSetTimeout",Object.assign({tech:this.tech},e))},t.transceive=function(e){Io("nfcTransceive",Object.assign({tech:this.tech},e))},t.getMaxTransceiveLength=function(e){Io("nfcMaxTransceiveLength",Object.assign({tech:this.tech},e))},e}(),xs=function(e){function t(){return e.call(this,Cs.A)||this}S(t,e);var n=t.prototype;return n.getAtqa=function(e){Io("nfcGetAtqa",e)},n.getSak=function(e){Io("nfcGetSak",e)},t}(Is),As=function(e){function t(){return e.call(this,Cs.MIFARE_CLASSIC)||this}return S(t,e),t}(Is),Os=((ws={})[Cs.A]=xs,ws[Cs.MIFARE_CLASSIC]=As,ws),Ls={};function Ps(e){return function(){return function(e){return Ls[e]||(Ls[e]=new Os[e]),Ls[e]}(e)}}var Ds={tech:Cs,getNfcA:Ps(Cs.A),getMifareClassic:Ps(Cs.MIFARE_CLASSIC),onDiscovered:function(e){var t=Ts.get(e)||So(e,"NFCAdapter.Discovered");Ts.set(e,t),Es.on(zs,t)},offDiscovered:function(e){var t=Ts.get(e);t&&Es.off(zs,t)},startDiscovery:function(e){Io("nfcStartDiscovery",e)},stopDiscovery:function(e){Io("nfcStopDiscovery",e)}};function Ms(){return Ds}var Bs=!1,js=[];function Ns(e){void 0===e&&(e={}),Bs=!0,Io("enableAccelerometer",Object.assign({},e,{enable:Bs}),{beforeAll:function(e){e.errMsg=e.errMsg.replace("enableAccelerometer","startAccelerometer")}})}function Fs(e){void 0===e&&(e={}),Bs=!1,Io("enableAccelerometer",Object.assign({},e,{enable:Bs}),Object.assign({},e,{beforeAll:function(e){e.errMsg=e.errMsg.replace("enableAccelerometer","stopAccelerometer")}}))}function Rs(e){"function"==typeof e&&(Bs||Io("enableAccelerometer",{enable:Bs=!0}),js.push(So(e,"onAccelerometerChange")))}xo("onAccelerometerChange",(function(e){void 0===e&&(e={});for(var t=0;tTu[t.sampleRate][1]||t.encodeBitRate6e5||t.duration<0)&&(t.duration=6e4),Iu(t)},pause:function(){Iu({operationType:"pause",fail:function(e){Eu.emit("onRecorderStateChange_error",e)}})},resume:function(){Iu({operationType:"resume",fail:function(e){Eu.emit("onRecorderStateChange_error",e)}})},stop:function(){Iu({operationType:"stop",fail:function(e){Eu.emit("onRecorderStateChange_error",e)}})},onStart:function(e){Eu.removeAllListeners("onRecorderStateChange_start"),Eu.on("onRecorderStateChange_start",(function(t){"function"==typeof e&&So(e,"at recorderManager.onStart callback function")(t)}))},onResume:function(e){Eu.removeAllListeners("onRecorderStateChange_resume"),Eu.on("onRecorderStateChange_resume",(function(t){"function"==typeof e&&So(e,"at recorderManager.onResume callback function")(t)}))},onPause:function(e){Eu.removeAllListeners("onRecorderStateChange_pause"),Eu.on("onRecorderStateChange_pause",(function(t){"function"==typeof e&&So(e,"at recorderManager.onPause callback function")(t)}))},onStop:function(e){Eu.removeAllListeners("onRecorderStateChange_stop"),Eu.on("onRecorderStateChange_stop",(function(t){"function"==typeof e&&So(e,"at recorderManager.onStop callback function")(t)}))},onFrameRecorded:function(e){Eu.removeAllListeners("onRecorderStateChange_frameRecorded"),Eu.on("onRecorderStateChange_frameRecorded",(function(t){if("function"==typeof e){var n=t.frameBuffer;"string"==typeof n&&(t.frameBuffer=Gi(n)),So(e,"at recorderManager.onFrameRecorded callback function")(t)}}))},onError:function(e){Eu.removeAllListeners("onRecorderStateChange_error"),Eu.on("onRecorderStateChange_error",(function(t){"function"==typeof e&&So(e,"at recorderManager.onError callback function")(t)}))}};function Au(){return xu}var Ou=new or.EventEmitter2,Lu=Symbol("beacon_service_change"),Pu=Symbol("beacon_update");xo("beaconServiceChange",(function(){for(var e=arguments.length,t=new Array(e),n=0;n0?Io("docsPicker",e):Do("docsPicker",e,"no valid maxNum")},filePicker:function(e){void 0===e&&(e={}),Io("filePicker",e)},getLocation:xa,openLocation:Aa,chooseLocation:Oa,getLocationStatus:La,startLocationUpdate:Ma,stopLocationUpdate:Ba,onLocationChange:Na,offLocationChange:Fa,openDocument:function(e){void 0===e&&(e={});var t="";e.hasOwnProperty("fileType")&&(t=yo(e.fileType,"","param.fileType")),t?Do("openDocument",e,t):Po("openDocument",e,{filePath:"String"})&&(/^(tt)?file:\/\//.test(e.filePath)||(e.filePath=wo("",e.filePath)),Io("openDocument",e))},saveFile:qa,removeSavedFile:Ja,getSavedFileList:Ha,downloadFile:ks,getBlockActionSourceDetail:Ss,getNFCAdapter:Ms,startAccelerometer:Ns,stopAccelerometer:Fs,onAccelerometerChange:Rs,startCompass:qs,stopCompass:Hs,onCompassChange:Us,makePhoneCall:Js,vibrateLong:Gs,vibrateShort:Ks,getWifiStatus:Qs,getNetworkType:Xs,getConnectedWifi:Zs,getWifiList:ec,onGetWifiList:tc,offGetWifiList:nc,getNetworkQualityType:rc,onNetworkQualityChange:sc,offNetworkQualityChange:cc,getChatInfo:dc,onChatBadgeChange:lc,offChatBadgeChange:fc,chooseChat:hc,chooseContact:pc,getTriggerContext:gc,sendMessageCard:vc,chooseImage:mc,compressImage:bc,previewImage:_c,saveImageToPhotosAlbum:wc,getImageInfo:yc,chooseVideo:Sc,saveVideoToPhotosAlbum:Cc,getSetting:Ec,openSetting:Tc,getExtConfig:zc,getHostLaunchQuery:function(e){Io("getHostLaunchQuery",e)},setKeepScreenOn:Pc,getDeviceID:gu,getEnvVariable:vu,getUserInfoEx:mu,scanCode:_u,getTenantAppScopes:yu,applyTenantAppScope:wu,checkLocalFaceVerify:bu,prepareLocalFaceVerify:ku,startLocalFaceVerify:Su,share:Cu,getRecorderManager:Au,startBeaconDiscovery:Mu,stopBeaconDiscovery:Bu,onBeaconServiceChange:Fu,onBeaconUpdate:ju,offBeaconServiceChange:Ru,offBeaconUpdate:Nu,getBeacons:Du,getStepCount:Vu,chooseMedia:Wu,reportBadge:Uu,updateBadge:qu,requestAuthCode:Hu,getFileSystemManager:Ua,opmonitor:Ac,getScreenBrightness:Lc,setScreenBrightness:Oc,openBluetoothAdapter:jc,closeBluetoothAdapter:Nc,getBluetoothAdapterState:Fc,startBluetoothDevicesDiscovery:Rc,stopBluetoothDevicesDiscovery:Vc,onBluetoothAdapterStateChange:Uc,offBluetoothAdapterStateChange:qc,onBluetoothDeviceFound:Gc,offBluetoothDeviceFound:Qc,getConnectedBluetoothDevices:$c,getBluetoothDevices:Xc,connectBLEDevice:tu,disconnectBLEDevice:nu,getBLEDeviceCharacteristics:iu,getBLEDeviceServices:ru,notifyBLECharacteristicValueChange:ou,onBLECharacteristicValueChange:su,offBLECharacteristicValueChange:cu,onBLEConnectionStateChange:lu,offBLEConnectionStateChange:fu,readBLECharacteristicValue:du,writeBLECharacteristicValue:pu,setBLEMTU:hu});var Gu=Object.freeze({__proto__:null,filePicker:function(e){void 0===e&&(e={}),Io("filePicker",e)},docsPicker:function(e){void 0===e&&(e={});var t=e.maxNum;void 0===t||t>0?Io("docsPicker",e):Do("docsPicker",e,"no valid maxNum")},openDocument:function(e){void 0===e&&(e={}),Po("openDocument",e,{filePath:"String"})&&Io("openDocument",e)},saveFileAs:function(e){void 0===e&&(e={}),Po("saveFileAs",e,{filePath:"String"})&&Io("saveFileAs",e)},enterChat:function(e){void 0===e&&(e={}),Io("enterChat",e)},enterProfile:function(e){void 0===e&&(e={}),void 0===e.left&&(e.left=0),void 0===e.top&&(e.top=0),Po("enterProfile",e,{openid:"String",left:0,top:0})&&Io("enterProfile",e)},enterBot:function(e){void 0===e&&(e={}),Io("enterBot",e)},toggleChat:function(e){void 0===e&&(e={}),Po("toggleChat",e,{openChatId:""})&&Io("toggleChat",e)},startPasswordVerify:function(e){void 0===e&&(e={}),Io("startPasswordVerify",e)},print:function(e){void 0===e&&(e={}),Po("print",e,{url:""})&&Io("print",e)},getHostLaunchQuery:function(e){void 0===e&&(e={});var t=tt.getHostLaunchQuerySync(e);e.success&&e.success(Object.assign(t,{errMsg:"getHostLaunchQuery:ok"})),e.complete&&e.complete(Object.assign(t,{errMsg:"getHostLaunchQuery:ok"}))},onUserCaptureScreen:fa,offUserCaptureScreen:da,getClipboardData:pa,setClipboardData:ga,startDeviceCredential:va,mailto:ma,checkWatermark:_a,onWatermarkChange:ba,offWatermarkChange:ka,setAuthenticationInfo:Sa,startFaceIdentify:Ca,startFaceVerify:Ea,getLocation:xa,openLocation:Aa,chooseLocation:Oa,getLocationStatus:La,startLocationUpdate:Ma,stopLocationUpdate:Ba,onLocationChange:Na,offLocationChange:Fa,saveFile:qa,removeSavedFile:Ja,getSavedFileList:Ha,downloadFile:ks,getBlockActionSourceDetail:Ss,getNFCAdapter:Ms,startAccelerometer:Ns,stopAccelerometer:Fs,onAccelerometerChange:Rs,startCompass:qs,stopCompass:Hs,onCompassChange:Us,makePhoneCall:Js,vibrateLong:Gs,vibrateShort:Ks,getWifiStatus:Qs,getNetworkType:Xs,getConnectedWifi:Zs,getWifiList:ec,onGetWifiList:tc,offGetWifiList:nc,getNetworkQualityType:rc,onNetworkQualityChange:sc,offNetworkQualityChange:cc,getChatInfo:dc,onChatBadgeChange:lc,offChatBadgeChange:fc,chooseChat:hc,chooseContact:pc,getTriggerContext:gc,sendMessageCard:vc,chooseImage:mc,compressImage:bc,previewImage:_c,saveImageToPhotosAlbum:wc,getImageInfo:yc,chooseVideo:Sc,saveVideoToPhotosAlbum:Cc,getSetting:Ec,openSetting:Tc,getExtConfig:zc,setKeepScreenOn:Pc,getDeviceID:gu,getEnvVariable:vu,getUserInfoEx:mu,scanCode:_u,getTenantAppScopes:yu,applyTenantAppScope:wu,checkLocalFaceVerify:bu,prepareLocalFaceVerify:ku,startLocalFaceVerify:Su,share:Cu,getRecorderManager:Au,startBeaconDiscovery:Mu,stopBeaconDiscovery:Bu,onBeaconServiceChange:Fu,onBeaconUpdate:ju,offBeaconServiceChange:Ru,offBeaconUpdate:Nu,getBeacons:Du,getStepCount:Vu,chooseMedia:Wu,reportBadge:Uu,updateBadge:qu,requestAuthCode:Hu,getFileSystemManager:Ua,opmonitor:Ac,getScreenBrightness:Lc,setScreenBrightness:Oc,openBluetoothAdapter:jc,closeBluetoothAdapter:Nc,getBluetoothAdapterState:Fc,startBluetoothDevicesDiscovery:Rc,stopBluetoothDevicesDiscovery:Vc,onBluetoothAdapterStateChange:Uc,offBluetoothAdapterStateChange:qc,onBluetoothDeviceFound:Gc,offBluetoothDeviceFound:Qc,getConnectedBluetoothDevices:$c,getBluetoothDevices:Xc,connectBLEDevice:tu,disconnectBLEDevice:nu,getBLEDeviceCharacteristics:iu,getBLEDeviceServices:ru,notifyBLECharacteristicValueChange:ou,onBLECharacteristicValueChange:su,offBLECharacteristicValueChange:cu,onBLEConnectionStateChange:lu,offBLEConnectionStateChange:fu,readBLECharacteristicValue:du,writeBLECharacteristicValue:pu,setBLEMTU:hu,apis:Ju}),Qu=/(Android|iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)?Ku:Gu,$u={};for(var Xu in Qu)if("apis"===Xu){var Yu=new Ho({bridge:jo},Qu[Xu]);eo(Yu),Object.assign($u,Yu.exports)}else $u[Xu]=Qu[Xu];!function(){var e=[],t=null,n=function(){ci.invoke("monitorReport",{monitorEvents:e}),e=[],clearTimeout(t),t=null},i=new se({report:function(i){var r=i.name,o=i.metrics,a=void 0===o?{}:o,s=i.categories,c=void 0===s?{}:s,u=c.monitor_level;e.push({name:r,metrics:a,categories:c}),e.length>=20||u>=j.error?n():t||(t=setTimeout((function(){n()}),4e3))},log:function(e){}});ce.setup(i)}();var Zu=function(e){var t,n,i,r;Vn("h5jssdk_enter",{url:null==(t=window)||null==(n=t.location)?void 0:n.href,host:null==(i=window)||null==(r=i.location)?void 0:r.host,eventType:e,client:b(p),larkVersion:p.versions.larkVersion,platform:navigator.platform,browser:navigator.userAgent,time:+new Date,app_id:w()})};Zu(Pn.START_LOAD_SDK),window.dispatchEvent(new CustomEvent("WebViewJSBridgeReady"));var el={biz:pi,device:_i,appCenter:wi};Ii(el,zi);var tl,nl,il=null,rl=[];if(window.ttJSBridge=null,p.versions.mobileFeishu||p.versions.PCFeishu){var ol={setConfig:function(e){Object.assign(Bn,e)},config:function(e){var t={appId:e.appId,timestamp:e.timestamp,nonceStr:e.nonceStr,signature:e.signature,jsApiList:e.jsApiList};return function(e){y=e}(e.appId),il=new Promise(function(){var n=a(s.mark((function n(i,r){return s.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:"string"==typeof p.versions.larkVersion&&m(p.versions.larkVersion,"3.9.0")>=0?si.invoke("config",t,{onSuccess:function(t){i(t),"function"==typeof e.onSuccess&&e.onSuccess(t)},onFail:function(t){r(t),"function"==typeof e.onFail&&rl.push(e.onFail),rl.forEach((function(e){"function"==typeof e&&e(t)})),Vn("h5jssdk_authentication_failure",{error:JSON.stringify(t)}),ye(ve,ge[ue.authenticationFailure]).setError(_(t)).flush()}}):i();case 1:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}())},ready:(nl=a(s.mark((function e(t){return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Rn(),e.prev=1,e.next=4,Ei({api:el,browser:p,build:"cdn",SDK:ol});case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),v(null==e.t0?void 0:e.t0.message,!0);case 9:if(!il){e.next=19;break}return e.prev=10,e.next=13,il;case 13:e.next=17;break;case 15:e.prev=15,e.t1=e.catch(10);case 17:e.next=20;break;case 19:v("please invoke h5sdk.config before invoke h5sdk.ready,otherwise the interface call may fail",!0);case 20:Zu(Pn.SDK_READY),t();case 22:case"end":return e.stop()}}),e,null,[[1,6],[10,15]])}))),function(e){return nl.apply(this,arguments)}),error:(tl=a(s.mark((function e(t){return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:rl.push(t);case 1:case"end":return e.stop()}}),e)}))),function(e){return tl.apply(this,arguments)})};Ei({api:el,browser:p,build:"cdn",SDK:ol}),window.lark?Object.assign(window.lark,ol):window.lark=ol,window.h5sdk?Object.assign(window.h5sdk,ol):window.h5sdk=ol,window.tt?Object.assign(window.tt,$u):window.tt=$u,window.ttJSBridge=ci}})); diff --git a/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/login.html b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/login.html new file mode 100644 index 0000000..a29a07a --- /dev/null +++ b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/login.html @@ -0,0 +1,36 @@ + + + + + + 数据决策系统 + + + + +

报表轻应用跳转

+ + + + + + diff --git a/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/runworkhelp.js b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/runworkhelp.js new file mode 100644 index 0000000..033789c --- /dev/null +++ b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/runworkhelp.js @@ -0,0 +1,24 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).runworkHelp={})}(this,(function(exports){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(e,t){return e(t={exports:{}},t.exports),t.exports}var check=function(e){return e&&e.Math==Math&&e},global_1=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof commonjsGlobal&&commonjsGlobal)||function(){return this}()||Function("return this")(),fails=function(e){try{return!!e()}catch(e){return!0}},descriptors=!fails((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),functionBindNative=!fails((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),call=Function.prototype.call,functionCall=functionBindNative?call.bind(call):function(){return call.apply(call,arguments)},$propertyIsEnumerable={}.propertyIsEnumerable,getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,NASHORN_BUG=getOwnPropertyDescriptor&&!$propertyIsEnumerable.call({1:2},1),f=NASHORN_BUG?function(e){var t=getOwnPropertyDescriptor(this,e);return!!t&&t.enumerable}:$propertyIsEnumerable,objectPropertyIsEnumerable={f:f},createPropertyDescriptor=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},FunctionPrototype=Function.prototype,bind=FunctionPrototype.bind,call$1=FunctionPrototype.call,uncurryThis=functionBindNative&&bind.bind(call$1,call$1),functionUncurryThis=functionBindNative?function(e){return e&&uncurryThis(e)}:function(e){return e&&function(){return call$1.apply(e,arguments)}},toString=functionUncurryThis({}.toString),stringSlice=functionUncurryThis("".slice),classofRaw=function(e){return stringSlice(toString(e),8,-1)},Object$1=global_1.Object,split=functionUncurryThis("".split),indexedObject=fails((function(){return!Object$1("z").propertyIsEnumerable(0)}))?function(e){return"String"==classofRaw(e)?split(e,""):Object$1(e)}:Object$1,TypeError$1=global_1.TypeError,requireObjectCoercible=function(e){if(null==e)throw TypeError$1("Can't call method on "+e);return e},toIndexedObject=function(e){return indexedObject(requireObjectCoercible(e))},isCallable=function(e){return"function"==typeof e},isObject=function(e){return"object"==typeof e?null!==e:isCallable(e)},aFunction=function(e){return isCallable(e)?e:void 0},getBuiltIn=function(e,t){return arguments.length<2?aFunction(global_1[e]):global_1[e]&&global_1[e][t]},objectIsPrototypeOf=functionUncurryThis({}.isPrototypeOf),engineUserAgent=getBuiltIn("navigator","userAgent")||"",process$1=global_1.process,Deno$1=global_1.Deno,versions=process$1&&process$1.versions||Deno$1&&Deno$1.version,v8=versions&&versions.v8,match,version;v8&&(match=v8.split("."),version=match[0]>0&&match[0]<4?1:+(match[0]+match[1])),!version&&engineUserAgent&&(match=engineUserAgent.match(/Edge\/(\d+)/),(!match||match[1]>=74)&&(match=engineUserAgent.match(/Chrome\/(\d+)/),match&&(version=+match[1])));var engineV8Version=version,nativeSymbol=!!Object.getOwnPropertySymbols&&!fails((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&engineV8Version&&engineV8Version<41})),useSymbolAsUid=nativeSymbol&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Object$2=global_1.Object,isSymbol=useSymbolAsUid?function(e){return"symbol"==typeof e}:function(e){var t=getBuiltIn("Symbol");return isCallable(t)&&objectIsPrototypeOf(t.prototype,Object$2(e))},String$1=global_1.String,tryToString=function(e){try{return String$1(e)}catch(e){return"Object"}},TypeError$2=global_1.TypeError,aCallable=function(e){if(isCallable(e))return e;throw TypeError$2(tryToString(e)+" is not a function")},getMethod=function(e,t){var r=e[t];return null==r?void 0:aCallable(r)},TypeError$3=global_1.TypeError,ordinaryToPrimitive=function(e,t){var r,n;if("string"===t&&isCallable(r=e.toString)&&!isObject(n=functionCall(r,e)))return n;if(isCallable(r=e.valueOf)&&!isObject(n=functionCall(r,e)))return n;if("string"!==t&&isCallable(r=e.toString)&&!isObject(n=functionCall(r,e)))return n;throw TypeError$3("Can't convert object to primitive value")},defineProperty=Object.defineProperty,setGlobal=function(e,t){try{defineProperty(global_1,e,{value:t,configurable:!0,writable:!0})}catch(r){global_1[e]=t}return t},SHARED="__core-js_shared__",store=global_1[SHARED]||setGlobal(SHARED,{}),sharedStore=store,shared=createCommonjsModule((function(e){(e.exports=function(e,t){return sharedStore[e]||(sharedStore[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.2",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE",source:"https://github.com/zloirock/core-js"})})),Object$3=global_1.Object,toObject=function(e){return Object$3(requireObjectCoercible(e))},hasOwnProperty=functionUncurryThis({}.hasOwnProperty),hasOwnProperty_1=Object.hasOwn||function(e,t){return hasOwnProperty(toObject(e),t)},id=0,postfix=Math.random(),toString$1=functionUncurryThis(1..toString),uid=function(e){return"Symbol("+(void 0===e?"":e)+")_"+toString$1(++id+postfix,36)},WellKnownSymbolsStore=shared("wks"),Symbol$1=global_1.Symbol,symbolFor=Symbol$1&&Symbol$1.for,createWellKnownSymbol=useSymbolAsUid?Symbol$1:Symbol$1&&Symbol$1.withoutSetter||uid,wellKnownSymbol=function(e){if(!hasOwnProperty_1(WellKnownSymbolsStore,e)||!nativeSymbol&&"string"!=typeof WellKnownSymbolsStore[e]){var t="Symbol."+e;nativeSymbol&&hasOwnProperty_1(Symbol$1,e)?WellKnownSymbolsStore[e]=Symbol$1[e]:WellKnownSymbolsStore[e]=useSymbolAsUid&&symbolFor?symbolFor(t):createWellKnownSymbol(t)}return WellKnownSymbolsStore[e]},TypeError$4=global_1.TypeError,TO_PRIMITIVE=wellKnownSymbol("toPrimitive"),toPrimitive=function(e,t){if(!isObject(e)||isSymbol(e))return e;var r,n=getMethod(e,TO_PRIMITIVE);if(n){if(void 0===t&&(t="default"),r=functionCall(n,e,t),!isObject(r)||isSymbol(r))return r;throw TypeError$4("Can't convert object to primitive value")}return void 0===t&&(t="number"),ordinaryToPrimitive(e,t)},toPropertyKey=function(e){var t=toPrimitive(e,"string");return isSymbol(t)?t:t+""},document$1=global_1.document,EXISTS=isObject(document$1)&&isObject(document$1.createElement),documentCreateElement=function(e){return EXISTS?document$1.createElement(e):{}},ie8DomDefine=!descriptors&&!fails((function(){return 7!=Object.defineProperty(documentCreateElement("div"),"a",{get:function(){return 7}}).a})),$getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,f$1=descriptors?$getOwnPropertyDescriptor:function(e,t){if(e=toIndexedObject(e),t=toPropertyKey(t),ie8DomDefine)try{return $getOwnPropertyDescriptor(e,t)}catch(e){}if(hasOwnProperty_1(e,t))return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f,e,t),e[t])},objectGetOwnPropertyDescriptor={f:f$1},v8PrototypeDefineBug=descriptors&&fails((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),String$2=global_1.String,TypeError$5=global_1.TypeError,anObject=function(e){if(isObject(e))return e;throw TypeError$5(String$2(e)+" is not an object")},TypeError$6=global_1.TypeError,$defineProperty=Object.defineProperty,$getOwnPropertyDescriptor$1=Object.getOwnPropertyDescriptor,ENUMERABLE="enumerable",CONFIGURABLE="configurable",WRITABLE="writable",f$2=descriptors?v8PrototypeDefineBug?function(e,t,r){if(anObject(e),t=toPropertyKey(t),anObject(r),"function"==typeof e&&"prototype"===t&&"value"in r&&WRITABLE in r&&!r[WRITABLE]){var n=$getOwnPropertyDescriptor$1(e,t);n&&n[WRITABLE]&&(e[t]=r.value,r={configurable:CONFIGURABLE in r?r[CONFIGURABLE]:n[CONFIGURABLE],enumerable:ENUMERABLE in r?r[ENUMERABLE]:n[ENUMERABLE],writable:!1})}return $defineProperty(e,t,r)}:$defineProperty:function(e,t,r){if(anObject(e),t=toPropertyKey(t),anObject(r),ie8DomDefine)try{return $defineProperty(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError$6("Accessors not supported");return"value"in r&&(e[t]=r.value),e},objectDefineProperty={f:f$2},createNonEnumerableProperty=descriptors?function(e,t,r){return objectDefineProperty.f(e,t,createPropertyDescriptor(1,r))}:function(e,t,r){return e[t]=r,e},functionToString=functionUncurryThis(Function.toString);isCallable(sharedStore.inspectSource)||(sharedStore.inspectSource=function(e){return functionToString(e)});var inspectSource=sharedStore.inspectSource,WeakMap=global_1.WeakMap,nativeWeakMap=isCallable(WeakMap)&&/native code/.test(inspectSource(WeakMap)),keys=shared("keys"),sharedKey=function(e){return keys[e]||(keys[e]=uid(e))},hiddenKeys={},OBJECT_ALREADY_INITIALIZED="Object already initialized",TypeError$7=global_1.TypeError,WeakMap$1=global_1.WeakMap,set,get,has,enforce=function(e){return has(e)?get(e):set(e,{})},getterFor=function(e){return function(t){var r;if(!isObject(t)||(r=get(t)).type!==e)throw TypeError$7("Incompatible receiver, "+e+" required");return r}};if(nativeWeakMap||sharedStore.state){var store$1=sharedStore.state||(sharedStore.state=new WeakMap$1),wmget=functionUncurryThis(store$1.get),wmhas=functionUncurryThis(store$1.has),wmset=functionUncurryThis(store$1.set);set=function(e,t){if(wmhas(store$1,e))throw new TypeError$7(OBJECT_ALREADY_INITIALIZED);return t.facade=e,wmset(store$1,e,t),t},get=function(e){return wmget(store$1,e)||{}},has=function(e){return wmhas(store$1,e)}}else{var STATE=sharedKey("state");hiddenKeys[STATE]=!0,set=function(e,t){if(hasOwnProperty_1(e,STATE))throw new TypeError$7(OBJECT_ALREADY_INITIALIZED);return t.facade=e,createNonEnumerableProperty(e,STATE,t),t},get=function(e){return hasOwnProperty_1(e,STATE)?e[STATE]:{}},has=function(e){return hasOwnProperty_1(e,STATE)}}var internalState={set:set,get:get,has:has,enforce:enforce,getterFor:getterFor},FunctionPrototype$1=Function.prototype,getDescriptor=descriptors&&Object.getOwnPropertyDescriptor,EXISTS$1=hasOwnProperty_1(FunctionPrototype$1,"name"),PROPER=EXISTS$1&&"something"===function(){}.name,CONFIGURABLE$1=EXISTS$1&&(!descriptors||descriptors&&getDescriptor(FunctionPrototype$1,"name").configurable),functionName={EXISTS:EXISTS$1,PROPER:PROPER,CONFIGURABLE:CONFIGURABLE$1},redefine=createCommonjsModule((function(e){var t=functionName.CONFIGURABLE,r=internalState.get,n=internalState.enforce,o=String(String).split("String");(e.exports=function(e,r,i,a){var s,c=!!a&&!!a.unsafe,u=!!a&&!!a.enumerable,l=!!a&&!!a.noTargetGet,p=a&&void 0!==a.name?a.name:r;isCallable(i)&&("Symbol("===String(p).slice(0,7)&&(p="["+String(p).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!hasOwnProperty_1(i,"name")||t&&i.name!==p)&&createNonEnumerableProperty(i,"name",p),(s=n(i)).source||(s.source=o.join("string"==typeof p?p:""))),e!==global_1?(c?!l&&e[r]&&(u=!0):delete e[r],u?e[r]=i:createNonEnumerableProperty(e,r,i)):u?e[r]=i:setGlobal(r,i)})(Function.prototype,"toString",(function(){return isCallable(this)&&r(this).source||inspectSource(this)}))})),ceil=Math.ceil,floor=Math.floor,toIntegerOrInfinity=function(e){var t=+e;return t!=t||0===t?0:(t>0?floor:ceil)(t)},max=Math.max,min=Math.min,toAbsoluteIndex=function(e,t){var r=toIntegerOrInfinity(e);return r<0?max(r+t,0):min(r,t)},min$1=Math.min,toLength=function(e){return e>0?min$1(toIntegerOrInfinity(e),9007199254740991):0},lengthOfArrayLike=function(e){return toLength(e.length)},createMethod=function(e){return function(t,r,n){var o,i=toIndexedObject(t),a=lengthOfArrayLike(i),s=toAbsoluteIndex(n,a);if(e&&r!=r){for(;a>s;)if((o=i[s++])!=o)return!0}else for(;a>s;s++)if((e||s in i)&&i[s]===r)return e||s||0;return!e&&-1}},arrayIncludes={includes:createMethod(!0),indexOf:createMethod(!1)},indexOf=arrayIncludes.indexOf,push=functionUncurryThis([].push),objectKeysInternal=function(e,t){var r,n=toIndexedObject(e),o=0,i=[];for(r in n)!hasOwnProperty_1(hiddenKeys,r)&&hasOwnProperty_1(n,r)&&push(i,r);for(;t.length>o;)hasOwnProperty_1(n,r=t[o++])&&(~indexOf(i,r)||push(i,r));return i},enumBugKeys=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],hiddenKeys$1=enumBugKeys.concat("length","prototype"),f$3=Object.getOwnPropertyNames||function(e){return objectKeysInternal(e,hiddenKeys$1)},objectGetOwnPropertyNames={f:f$3},f$4=Object.getOwnPropertySymbols,objectGetOwnPropertySymbols={f:f$4},concat=functionUncurryThis([].concat),ownKeys=getBuiltIn("Reflect","ownKeys")||function(e){var t=objectGetOwnPropertyNames.f(anObject(e)),r=objectGetOwnPropertySymbols.f;return r?concat(t,r(e)):t},copyConstructorProperties=function(e,t,r){for(var n=ownKeys(t),o=objectDefineProperty.f,i=objectGetOwnPropertyDescriptor.f,a=0;ao;)for(var s,c=indexedObject(arguments[o++]),u=i?concat$1(objectKeys(c),i(c)):objectKeys(c),l=u.length,p=0;l>p;)s=u[p++],descriptors&&!functionCall(a,c,s)||(r[s]=c[s]);return r}:$assign;_export({target:"Object",stat:!0,forced:Object.assign!==objectAssign},{assign:objectAssign});var isArray=Array.isArray||function(e){return"Array"==classofRaw(e)},createProperty=function(e,t,r){var n=toPropertyKey(t);n in e?objectDefineProperty.f(e,n,createPropertyDescriptor(0,r)):e[n]=r},TO_STRING_TAG=wellKnownSymbol("toStringTag"),test={};test[TO_STRING_TAG]="z";var toStringTagSupport="[object z]"===String(test),TO_STRING_TAG$1=wellKnownSymbol("toStringTag"),Object$4=global_1.Object,CORRECT_ARGUMENTS="Arguments"==classofRaw(function(){return arguments}()),tryGet=function(e,t){try{return e[t]}catch(e){}},classof=toStringTagSupport?classofRaw:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=tryGet(t=Object$4(e),TO_STRING_TAG$1))?r:CORRECT_ARGUMENTS?classofRaw(t):"Object"==(n=classofRaw(t))&&isCallable(t.callee)?"Arguments":n},noop=function(){},empty=[],construct=getBuiltIn("Reflect","construct"),constructorRegExp=/^\s*(?:class|function)\b/,exec=functionUncurryThis(constructorRegExp.exec),INCORRECT_TO_STRING=!constructorRegExp.exec(noop),isConstructorModern=function(e){if(!isCallable(e))return!1;try{return construct(noop,empty,e),!0}catch(e){return!1}},isConstructorLegacy=function(e){if(!isCallable(e))return!1;switch(classof(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return INCORRECT_TO_STRING||!!exec(constructorRegExp,inspectSource(e))}catch(e){return!0}};isConstructorLegacy.sham=!0;var isConstructor=!construct||fails((function(){var e;return isConstructorModern(isConstructorModern.call)||!isConstructorModern(Object)||!isConstructorModern((function(){e=!0}))||e}))?isConstructorLegacy:isConstructorModern,SPECIES=wellKnownSymbol("species"),Array$1=global_1.Array,arraySpeciesConstructor=function(e){var t;return isArray(e)&&(t=e.constructor,(isConstructor(t)&&(t===Array$1||isArray(t.prototype))||isObject(t)&&null===(t=t[SPECIES]))&&(t=void 0)),void 0===t?Array$1:t},arraySpeciesCreate=function(e,t){return new(arraySpeciesConstructor(e))(0===t?0:t)},SPECIES$1=wellKnownSymbol("species"),arrayMethodHasSpeciesSupport=function(e){return engineV8Version>=51||!fails((function(){var t=[];return(t.constructor={})[SPECIES$1]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},IS_CONCAT_SPREADABLE=wellKnownSymbol("isConcatSpreadable"),MAX_SAFE_INTEGER=9007199254740991,MAXIMUM_ALLOWED_INDEX_EXCEEDED="Maximum allowed index exceeded",TypeError$8=global_1.TypeError,IS_CONCAT_SPREADABLE_SUPPORT=engineV8Version>=51||!fails((function(){var e=[];return e[IS_CONCAT_SPREADABLE]=!1,e.concat()[0]!==e})),SPECIES_SUPPORT=arrayMethodHasSpeciesSupport("concat"),isConcatSpreadable=function(e){if(!isObject(e))return!1;var t=e[IS_CONCAT_SPREADABLE];return void 0!==t?!!t:isArray(e)},FORCED=!IS_CONCAT_SPREADABLE_SUPPORT||!SPECIES_SUPPORT;_export({target:"Array",proto:!0,forced:FORCED},{concat:function(e){var t,r,n,o,i,a=toObject(this),s=arraySpeciesCreate(a,0),c=0;for(t=-1,n=arguments.length;tMAX_SAFE_INTEGER)throw TypeError$8(MAXIMUM_ALLOWED_INDEX_EXCEEDED);for(r=0;r=MAX_SAFE_INTEGER)throw TypeError$8(MAXIMUM_ALLOWED_INDEX_EXCEEDED);createProperty(s,c++,i)}return s.length=c,s}});var String$3=global_1.String,toString_1=function(e){if("Symbol"===classof(e))throw TypeError("Cannot convert a Symbol value to a string");return String$3(e)},regexpFlags=function(){var e=anObject(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},$RegExp=global_1.RegExp,UNSUPPORTED_Y=fails((function(){var e=$RegExp("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),MISSED_STICKY=UNSUPPORTED_Y||fails((function(){return!$RegExp("a","y").sticky})),BROKEN_CARET=UNSUPPORTED_Y||fails((function(){var e=$RegExp("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),regexpStickyHelpers={BROKEN_CARET:BROKEN_CARET,MISSED_STICKY:MISSED_STICKY,UNSUPPORTED_Y:UNSUPPORTED_Y},f$5=descriptors&&!v8PrototypeDefineBug?Object.defineProperties:function(e,t){anObject(e);for(var r,n=toIndexedObject(t),o=objectKeys(t),i=o.length,a=0;i>a;)objectDefineProperty.f(e,r=o[a++],n[r]);return e},objectDefineProperties={f:f$5},html=getBuiltIn("document","documentElement"),GT=">",LT="<",PROTOTYPE="prototype",SCRIPT="script",IE_PROTO=sharedKey("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(e){return LT+SCRIPT+GT+e+LT+"/"+SCRIPT+GT},NullProtoObjectViaActiveX=function(e){e.write(scriptTag("")),e.close();var t=e.parentWindow.Object;return e=null,t},NullProtoObjectViaIFrame=function(){var e,t=documentCreateElement("iframe"),r="java"+SCRIPT+":";return t.style.display="none",html.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(scriptTag("document.F=Object")),e.close(),e.F},activeXDocument,NullProtoObject=function(){try{activeXDocument=new ActiveXObject("htmlfile")}catch(e){}NullProtoObject="undefined"!=typeof document?document.domain&&activeXDocument?NullProtoObjectViaActiveX(activeXDocument):NullProtoObjectViaIFrame():NullProtoObjectViaActiveX(activeXDocument);for(var e=enumBugKeys.length;e--;)delete NullProtoObject[PROTOTYPE][enumBugKeys[e]];return NullProtoObject()};hiddenKeys[IE_PROTO]=!0;var objectCreate=Object.create||function(e,t){var r;return null!==e?(EmptyConstructor[PROTOTYPE]=anObject(e),r=new EmptyConstructor,EmptyConstructor[PROTOTYPE]=null,r[IE_PROTO]=e):r=NullProtoObject(),void 0===t?r:objectDefineProperties.f(r,t)},$RegExp$1=global_1.RegExp,regexpUnsupportedDotAll=fails((function(){var e=$RegExp$1(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),$RegExp$2=global_1.RegExp,regexpUnsupportedNcg=fails((function(){var e=$RegExp$2("(?
b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")})),getInternalState=internalState.get,nativeReplace=shared("native-string-replace",String.prototype.replace),nativeExec=RegExp.prototype.exec,patchedExec=nativeExec,charAt=functionUncurryThis("".charAt),indexOf$1=functionUncurryThis("".indexOf),replace=functionUncurryThis("".replace),stringSlice$1=functionUncurryThis("".slice),UPDATES_LAST_INDEX_WRONG=function(){var e=/a/,t=/b*/g;return functionCall(nativeExec,e,"a"),functionCall(nativeExec,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),UNSUPPORTED_Y$1=regexpStickyHelpers.BROKEN_CARET,NPCG_INCLUDED=void 0!==/()??/.exec("")[1],PATCH=UPDATES_LAST_INDEX_WRONG||NPCG_INCLUDED||UNSUPPORTED_Y$1||regexpUnsupportedDotAll||regexpUnsupportedNcg;PATCH&&(patchedExec=function(e){var t,r,n,o,i,a,s,c=this,u=getInternalState(c),l=toString_1(e),p=u.raw;if(p)return p.lastIndex=c.lastIndex,t=functionCall(patchedExec,p,l),c.lastIndex=p.lastIndex,t;var f=u.groups,d=UNSUPPORTED_Y$1&&c.sticky,h=functionCall(regexpFlags,c),g=c.source,y=0,v=l;if(d&&(h=replace(h,"y",""),-1===indexOf$1(h,"g")&&(h+="g"),v=stringSlice$1(l,c.lastIndex),c.lastIndex>0&&(!c.multiline||c.multiline&&"\n"!==charAt(l,c.lastIndex-1))&&(g="(?: "+g+")",v=" "+v,y++),r=new RegExp("^(?:"+g+")",h)),NPCG_INCLUDED&&(r=new RegExp("^"+g+"$(?!\\s)",h)),UPDATES_LAST_INDEX_WRONG&&(n=c.lastIndex),o=functionCall(nativeExec,d?r:c,v),d?o?(o.input=stringSlice$1(o.input,y),o[0]=stringSlice$1(o[0],y),o.index=c.lastIndex,c.lastIndex+=o[0].length):c.lastIndex=0:UPDATES_LAST_INDEX_WRONG&&o&&(c.lastIndex=c.global?o.index+o[0].length:n),NPCG_INCLUDED&&o&&o.length>1&&functionCall(nativeReplace,o[0],r,(function(){for(i=1;i=s?e?"":void 0:(n=charCodeAt(i,a))<55296||n>56319||a+1===s||(o=charCodeAt(i,a+1))<56320||o>57343?e?charAt$1(i,a):n:e?stringSlice$2(i,a,a+2):o-56320+(n-55296<<10)+65536}},stringMultibyte={codeAt:createMethod$1(!1),charAt:createMethod$1(!0)},charAt$2=stringMultibyte.charAt,advanceStringIndex=function(e,t,r){return t+(r?charAt$2(e,t).length:1)},floor$1=Math.floor,charAt$3=functionUncurryThis("".charAt),replace$1=functionUncurryThis("".replace),stringSlice$3=functionUncurryThis("".slice),SUBSTITUTION_SYMBOLS=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,SUBSTITUTION_SYMBOLS_NO_NAMED=/\$([$&'`]|\d{1,2})/g,getSubstitution=function(e,t,r,n,o,i){var a=r+e.length,s=n.length,c=SUBSTITUTION_SYMBOLS_NO_NAMED;return void 0!==o&&(o=toObject(o),c=SUBSTITUTION_SYMBOLS),replace$1(i,c,(function(i,c){var u;switch(charAt$3(c,0)){case"$":return"$";case"&":return e;case"`":return stringSlice$3(t,0,r);case"'":return stringSlice$3(t,a);case"<":u=o[stringSlice$3(c,1,-1)];break;default:var l=+c;if(0===l)return i;if(l>s){var p=floor$1(l/10);return 0===p?i:p<=s?void 0===n[p-1]?charAt$3(c,1):n[p-1]+charAt$3(c,1):i}u=n[l-1]}return void 0===u?"":u}))},TypeError$9=global_1.TypeError,regexpExecAbstract=function(e,t){var r=e.exec;if(isCallable(r)){var n=functionCall(r,e,t);return null!==n&&anObject(n),n}if("RegExp"===classofRaw(e))return functionCall(regexpExec,e,t);throw TypeError$9("RegExp#exec called on incompatible receiver")},REPLACE=wellKnownSymbol("replace"),max$1=Math.max,min$2=Math.min,concat$2=functionUncurryThis([].concat),push$1=functionUncurryThis([].push),stringIndexOf=functionUncurryThis("".indexOf),stringSlice$4=functionUncurryThis("".slice),maybeToString=function(e){return void 0===e?e:String(e)},REPLACE_KEEPS_$0="$0"==="a".replace(/./,"$0"),REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE=!!/./[REPLACE]&&""===/./[REPLACE]("a","$0"),REPLACE_SUPPORTS_NAMED_GROUPS=!fails((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}));fixRegexpWellKnownSymbolLogic("replace",(function(e,t,r){var n=REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE?"$":"$0";return[function(e,r){var n=requireObjectCoercible(this),o=null==e?void 0:getMethod(e,REPLACE);return o?functionCall(o,e,n,r):functionCall(t,toString_1(n),e,r)},function(e,o){var i=anObject(this),a=toString_1(e);if("string"==typeof o&&-1===stringIndexOf(o,n)&&-1===stringIndexOf(o,"$<")){var s=r(t,i,a,o);if(s.done)return s.value}var c=isCallable(o);c||(o=toString_1(o));var u=i.global;if(u){var l=i.unicode;i.lastIndex=0}for(var p=[];;){var f=regexpExecAbstract(i,a);if(null===f)break;if(push$1(p,f),!u)break;""===toString_1(f[0])&&(i.lastIndex=advanceStringIndex(a,toLength(i.lastIndex),l))}for(var d="",h=0,g=0;g=h&&(d+=stringSlice$4(a,h,v)+_,h=v+y.length)}return d+stringSlice$4(a,h)}]}),!REPLACE_SUPPORTS_NAMED_GROUPS||!REPLACE_KEEPS_$0||REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);var UNSCOPABLES=wellKnownSymbol("unscopables"),ArrayPrototype=Array.prototype;null==ArrayPrototype[UNSCOPABLES]&&objectDefineProperty.f(ArrayPrototype,UNSCOPABLES,{configurable:!0,value:objectCreate(null)});var addToUnscopables=function(e){ArrayPrototype[UNSCOPABLES][e]=!0},$includes=arrayIncludes.includes;_export({target:"Array",proto:!0},{includes:function(e){return $includes(this,e,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables("includes");var arrayMethodIsStrict=function(e,t){var r=[][e];return!!r&&fails((function(){r.call(null,t||function(){return 1},1)}))},$IndexOf=arrayIncludes.indexOf,un$IndexOf=functionUncurryThis([].indexOf),NEGATIVE_ZERO=!!un$IndexOf&&1/un$IndexOf([1],1,-0)<0,STRICT_METHOD=arrayMethodIsStrict("indexOf");_export({target:"Array",proto:!0,forced:NEGATIVE_ZERO||!STRICT_METHOD},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return NEGATIVE_ZERO?un$IndexOf(this,e,t)||0:$IndexOf(this,e,t)}});var un$Join=functionUncurryThis([].join),ES3_STRINGS=indexedObject!=Object,STRICT_METHOD$1=arrayMethodIsStrict("join",",");_export({target:"Array",proto:!0,forced:ES3_STRINGS||!STRICT_METHOD$1},{join:function(e){return un$Join(toIndexedObject(this),void 0===e?",":e)}});var objectToString=toStringTagSupport?{}.toString:function(){return"[object "+classof(this)+"]"};toStringTagSupport||redefine(Object.prototype,"toString",objectToString,{unsafe:!0});var engineIsNode="process"==classofRaw(global_1.process),redefineAll=function(e,t,r){for(var n in t)redefine(e,n,t[n],r);return e},String$4=global_1.String,TypeError$a=global_1.TypeError,aPossiblePrototype=function(e){if("object"==typeof e||isCallable(e))return e;throw TypeError$a("Can't set "+String$4(e)+" as a prototype")},objectSetPrototypeOf=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=functionUncurryThis(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return anObject(r),aPossiblePrototype(n),t?e(r,n):r.__proto__=n,r}}():void 0),defineProperty$2=objectDefineProperty.f,TO_STRING_TAG$2=wellKnownSymbol("toStringTag"),setToStringTag=function(e,t,r){e&&!r&&(e=e.prototype),e&&!hasOwnProperty_1(e,TO_STRING_TAG$2)&&defineProperty$2(e,TO_STRING_TAG$2,{configurable:!0,value:t})},SPECIES$3=wellKnownSymbol("species"),setSpecies=function(e){var t=getBuiltIn(e),r=objectDefineProperty.f;descriptors&&t&&!t[SPECIES$3]&&r(t,SPECIES$3,{configurable:!0,get:function(){return this}})},TypeError$b=global_1.TypeError,anInstance=function(e,t){if(objectIsPrototypeOf(t,e))return e;throw TypeError$b("Incorrect invocation")},TypeError$c=global_1.TypeError,aConstructor=function(e){if(isConstructor(e))return e;throw TypeError$c(tryToString(e)+" is not a constructor")},SPECIES$4=wellKnownSymbol("species"),speciesConstructor=function(e,t){var r,n=anObject(e).constructor;return void 0===n||null==(r=anObject(n)[SPECIES$4])?t:aConstructor(r)},bind$1=functionUncurryThis(functionUncurryThis.bind),functionBindContext=function(e,t){return aCallable(e),void 0===t?e:functionBindNative?bind$1(e,t):function(){return e.apply(t,arguments)}},arraySlice=functionUncurryThis([].slice),TypeError$d=global_1.TypeError,validateArgumentsLength=function(e,t){if(e=51&&/native code/.test(e))return!1;var r=new promiseNativeConstructor((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(r.constructor={})[SPECIES$5]=n,!(SUBCLASSING=r.then((function(){}))instanceof n)||!t&&engineIsBrowser&&!NATIVE_PROMISE_REJECTION_EVENT})),promiseConstructorDetection={CONSTRUCTOR:FORCED_PROMISE_CONSTRUCTOR,REJECTION_EVENT:NATIVE_PROMISE_REJECTION_EVENT,SUBCLASSING:SUBCLASSING},PromiseCapability=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=aCallable(t),this.reject=aCallable(r)},f$6=function(e){return new PromiseCapability(e)},newPromiseCapability={f:f$6},task$1=task.set,PROMISE="Promise",FORCED_PROMISE_CONSTRUCTOR$1=promiseConstructorDetection.CONSTRUCTOR,NATIVE_PROMISE_REJECTION_EVENT$1=promiseConstructorDetection.REJECTION_EVENT,NATIVE_PROMISE_SUBCLASSING=promiseConstructorDetection.SUBCLASSING,getInternalPromiseState=internalState.getterFor(PROMISE),setInternalState=internalState.set,NativePromisePrototype$1=promiseNativeConstructor&&promiseNativeConstructor.prototype,PromiseConstructor=promiseNativeConstructor,PromisePrototype=NativePromisePrototype$1,TypeError$e=global_1.TypeError,document$3=global_1.document,process$4=global_1.process,newPromiseCapability$1=newPromiseCapability.f,newGenericPromiseCapability=newPromiseCapability$1,DISPATCH_EVENT=!!(document$3&&document$3.createEvent&&global_1.dispatchEvent),UNHANDLED_REJECTION="unhandledrejection",REJECTION_HANDLED="rejectionhandled",PENDING=0,FULFILLED=1,REJECTED=2,HANDLED=1,UNHANDLED=2,Internal,OwnPromiseCapability,PromiseWrapper,nativeThen,isThenable=function(e){var t;return!(!isObject(e)||!isCallable(t=e.then))&&t},callReaction=function(e,t){var r,n,o,i=t.value,a=t.state==FULFILLED,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,l=e.domain;try{s?(a||(t.rejection===UNHANDLED&&onHandleUnhandled(t),t.rejection=HANDLED),!0===s?r=i:(l&&l.enter(),r=s(i),l&&(l.exit(),o=!0)),r===e.promise?u(TypeError$e("Promise-chain cycle")):(n=isThenable(r))?functionCall(n,r,c,u):c(r)):u(i)}catch(e){l&&!o&&l.exit(),u(e)}},notify$1=function(e,t){e.notified||(e.notified=!0,microtask((function(){for(var r,n=e.reactions;r=n.get();)callReaction(r,e);e.notified=!1,t&&!e.rejection&&onUnhandled(e)})))},dispatchEvent=function(e,t,r){var n,o;DISPATCH_EVENT?((n=document$3.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),global_1.dispatchEvent(n)):n={promise:t,reason:r},!NATIVE_PROMISE_REJECTION_EVENT$1&&(o=global_1["on"+e])?o(n):e===UNHANDLED_REJECTION&&hostReportErrors("Unhandled promise rejection",r)},onUnhandled=function(e){functionCall(task$1,global_1,(function(){var t,r=e.facade,n=e.value;if(isUnhandled(e)&&(t=perform((function(){engineIsNode?process$4.emit("unhandledRejection",n,r):dispatchEvent(UNHANDLED_REJECTION,r,n)})),e.rejection=engineIsNode||isUnhandled(e)?UNHANDLED:HANDLED,t.error))throw t.value}))},isUnhandled=function(e){return e.rejection!==HANDLED&&!e.parent},onHandleUnhandled=function(e){functionCall(task$1,global_1,(function(){var t=e.facade;engineIsNode?process$4.emit("rejectionHandled",t):dispatchEvent(REJECTION_HANDLED,t,e.value)}))},bind$2=function(e,t,r){return function(n){e(t,n,r)}},internalReject=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=REJECTED,notify$1(e,!0))},internalResolve=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw TypeError$e("Promise can't be resolved itself");var n=isThenable(t);n?microtask((function(){var r={done:!1};try{functionCall(n,t,bind$2(internalResolve,r,e),bind$2(internalReject,r,e))}catch(t){internalReject(r,t,e)}})):(e.value=t,e.state=FULFILLED,notify$1(e,!1))}catch(t){internalReject({done:!1},t,e)}}};if(FORCED_PROMISE_CONSTRUCTOR$1&&(PromiseConstructor=function(e){anInstance(this,PromisePrototype),aCallable(e),functionCall(Internal,this);var t=getInternalPromiseState(this);try{e(bind$2(internalResolve,t),bind$2(internalReject,t))}catch(e){internalReject(t,e)}},PromisePrototype=PromiseConstructor.prototype,Internal=function(e){setInternalState(this,{type:PROMISE,done:!1,notified:!1,parent:!1,reactions:new queue$1,rejection:!1,state:PENDING,value:void 0})},Internal.prototype=redefineAll(PromisePrototype,{then:function(e,t){var r=getInternalPromiseState(this),n=newPromiseCapability$1(speciesConstructor(this,PromiseConstructor));return r.parent=!0,n.ok=!isCallable(e)||e,n.fail=isCallable(t)&&t,n.domain=engineIsNode?process$4.domain:void 0,r.state==PENDING?r.reactions.add(n):microtask((function(){callReaction(n,r)})),n.promise}}),OwnPromiseCapability=function(){var e=new Internal,t=getInternalPromiseState(e);this.promise=e,this.resolve=bind$2(internalResolve,t),this.reject=bind$2(internalReject,t)},newPromiseCapability.f=newPromiseCapability$1=function(e){return e===PromiseConstructor||e===PromiseWrapper?new OwnPromiseCapability(e):newGenericPromiseCapability(e)},isCallable(promiseNativeConstructor)&&NativePromisePrototype$1!==Object.prototype)){nativeThen=NativePromisePrototype$1.then,NATIVE_PROMISE_SUBCLASSING||redefine(NativePromisePrototype$1,"then",(function(e,t){var r=this;return new PromiseConstructor((function(e,t){functionCall(nativeThen,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete NativePromisePrototype$1.constructor}catch(e){}objectSetPrototypeOf&&objectSetPrototypeOf(NativePromisePrototype$1,PromisePrototype)}_export({global:!0,wrap:!0,forced:FORCED_PROMISE_CONSTRUCTOR$1},{Promise:PromiseConstructor}),setToStringTag(PromiseConstructor,PROMISE,!1),setSpecies(PROMISE);var iterators={},ITERATOR=wellKnownSymbol("iterator"),ArrayPrototype$1=Array.prototype,isArrayIteratorMethod=function(e){return void 0!==e&&(iterators.Array===e||ArrayPrototype$1[ITERATOR]===e)},ITERATOR$1=wellKnownSymbol("iterator"),getIteratorMethod=function(e){if(null!=e)return getMethod(e,ITERATOR$1)||getMethod(e,"@@iterator")||iterators[classof(e)]},TypeError$f=global_1.TypeError,getIterator=function(e,t){var r=arguments.length<2?getIteratorMethod(e):t;if(aCallable(r))return anObject(functionCall(r,e));throw TypeError$f(tryToString(e)+" is not iterable")},iteratorClose=function(e,t,r){var n,o;anObject(e);try{if(!(n=getMethod(e,"return"))){if("throw"===t)throw r;return r}n=functionCall(n,e)}catch(e){o=!0,n=e}if("throw"===t)throw r;if(o)throw n;return anObject(n),r},TypeError$g=global_1.TypeError,Result=function(e,t){this.stopped=e,this.result=t},ResultPrototype=Result.prototype,iterate=function(e,t,r){var n,o,i,a,s,c,u,l=r&&r.that,p=!(!r||!r.AS_ENTRIES),f=!(!r||!r.IS_ITERATOR),d=!(!r||!r.INTERRUPTED),h=functionBindContext(t,l),g=function(e){return n&&iteratorClose(n,"normal",e),new Result(!0,e)},y=function(e){return p?(anObject(e),d?h(e[0],e[1],g):h(e[0],e[1])):d?h(e,g):h(e)};if(f)n=e;else{if(!(o=getIteratorMethod(e)))throw TypeError$g(tryToString(e)+" is not iterable");if(isArrayIteratorMethod(o)){for(i=0,a=lengthOfArrayLike(e);a>i;i++)if((s=y(e[i]))&&objectIsPrototypeOf(ResultPrototype,s))return s;return new Result(!1)}n=getIterator(e,o)}for(c=n.next;!(u=functionCall(c,n)).done;){try{s=y(u.value)}catch(e){iteratorClose(n,"throw",e)}if("object"==typeof s&&s&&objectIsPrototypeOf(ResultPrototype,s))return s}return new Result(!1)},ITERATOR$2=wellKnownSymbol("iterator"),SAFE_CLOSING=!1;try{var called=0,iteratorWithReturn={next:function(){return{done:!!called++}},return:function(){SAFE_CLOSING=!0}};iteratorWithReturn[ITERATOR$2]=function(){return this},Array.from(iteratorWithReturn,(function(){throw 2}))}catch(e){}var checkCorrectnessOfIteration=function(e,t){if(!t&&!SAFE_CLOSING)return!1;var r=!1;try{var n={};n[ITERATOR$2]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(e){}return r},FORCED_PROMISE_CONSTRUCTOR$2=promiseConstructorDetection.CONSTRUCTOR,promiseStaticsIncorrectIteration=FORCED_PROMISE_CONSTRUCTOR$2||!checkCorrectnessOfIteration((function(e){promiseNativeConstructor.all(e).then(void 0,(function(){}))}));_export({target:"Promise",stat:!0,forced:promiseStaticsIncorrectIteration},{all:function(e){var t=this,r=newPromiseCapability.f(t),n=r.resolve,o=r.reject,i=perform((function(){var r=aCallable(t.resolve),i=[],a=0,s=1;iterate(e,(function(e){var c=a++,u=!1;s++,functionCall(r,t,e).then((function(e){u||(u=!0,i[c]=e,--s||n(i))}),o)})),--s||n(i)}));return i.error&&o(i.value),r.promise}});var FORCED_PROMISE_CONSTRUCTOR$3=promiseConstructorDetection.CONSTRUCTOR,NativePromisePrototype$2=promiseNativeConstructor&&promiseNativeConstructor.prototype;if(_export({target:"Promise",proto:!0,forced:FORCED_PROMISE_CONSTRUCTOR$3,real:!0},{catch:function(e){return this.then(void 0,e)}}),isCallable(promiseNativeConstructor)){var method=getBuiltIn("Promise").prototype.catch;NativePromisePrototype$2.catch!==method&&redefine(NativePromisePrototype$2,"catch",method,{unsafe:!0})}_export({target:"Promise",stat:!0,forced:promiseStaticsIncorrectIteration},{race:function(e){var t=this,r=newPromiseCapability.f(t),n=r.reject,o=perform((function(){var o=aCallable(t.resolve);iterate(e,(function(e){functionCall(o,t,e).then(r.resolve,n)}))}));return o.error&&n(o.value),r.promise}});var FORCED_PROMISE_CONSTRUCTOR$4=promiseConstructorDetection.CONSTRUCTOR;_export({target:"Promise",stat:!0,forced:FORCED_PROMISE_CONSTRUCTOR$4},{reject:function(e){var t=newPromiseCapability.f(this);return functionCall(t.reject,void 0,e),t.promise}});var promiseResolve=function(e,t){if(anObject(e),isObject(t)&&t.constructor===e)return t;var r=newPromiseCapability.f(e);return(0,r.resolve)(t),r.promise},FORCED_PROMISE_CONSTRUCTOR$5=promiseConstructorDetection.CONSTRUCTOR,PromiseConstructorWrapper=getBuiltIn("Promise");_export({target:"Promise",stat:!0,forced:FORCED_PROMISE_CONSTRUCTOR$5},{resolve:function(e){return promiseResolve(this,e)}});var DatePrototype=Date.prototype,INVALID_DATE="Invalid Date",TO_STRING="toString",un$DateToString=functionUncurryThis(DatePrototype[TO_STRING]),getTime=functionUncurryThis(DatePrototype.getTime);String(new Date(NaN))!=INVALID_DATE&&redefine(DatePrototype,TO_STRING,(function(){var e=getTime(this);return e==e?un$DateToString(this):INVALID_DATE}));var runtime=createCommonjsModule((function(e){!function(t){var r=Object.prototype,n=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag",c=t.regeneratorRuntime;if(c)e.exports=c;else{(c=t.regeneratorRuntime=e.exports).wrap=h;var u={},l={};l[i]=function(){return this};var p=Object.getPrototypeOf,f=p&&p(p(O([])));f&&f!==r&&n.call(f,i)&&(l=f);var d=m.prototype=y.prototype=Object.create(l);v.prototype=d.constructor=m,m.constructor=v,m[s]=v.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===v||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s in e||(e[s]="GeneratorFunction")),e.prototype=Object.create(d),e},c.awrap=function(e){return{__await:e}},b(S.prototype),S.prototype[a]=function(){return this},c.AsyncIterator=S,c.async=function(e,t,r,n){var o=new S(h(e,t,r,n));return c.isGeneratorFunction(t)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},b(d),d[s]="Generator",d[i]=function(){return this},d.toString=function(){return"[object Generator]"},c.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},c.values=O,I.prototype={constructor:I,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;T(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:O(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}}}function h(e,t,r,n){var o=t&&t.prototype instanceof y?t:y,i=Object.create(o.prototype),a=new I(n||[]);return i._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return R()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=E(a,r);if(s){if(s===u)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=g(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===u)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(e,r,a),i}function g(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function y(){}function v(){}function m(){}function b(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function S(e){var t;this._invoke=function(r,o){function i(){return new Promise((function(t,i){!function t(r,o,i,a){var s=g(e[r],e,o);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&n.call(u,"__await")?Promise.resolve(u.__await).then((function(e){t("next",e,i,a)}),(function(e){t("throw",e,i,a)})):Promise.resolve(u).then((function(e){c.value=e,i(c)}),a)}a(s.arg)}(r,o,t,i)}))}return t=t?t.then(i,i):i()}}function E(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var n=g(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,u;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function _(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(_,this),this.reset(!0)}function O(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0)return;o[t]="set-cookie"===t?(o[t]?o[t]:[]).concat([r]):o[t]?o[t]+", "+r:r}})),o):o},isURLSameOrigin=utils.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function n(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=n(window.location.href),function(t){var r=utils.isString(t)?n(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},cookies=utils.isStandardBrowserEnv()?{write:function(e,t,r,n,o,i){var a=[];a.push(e+"="+encodeURIComponent(t)),utils.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),utils.isString(n)&&a.push("path="+n),utils.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},xhr=function(e){return new Promise((function(t,r){var n=e.data,o=e.headers;utils.isFormData(n)&&delete o["Content-Type"];var i=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",s=e.auth.password||"";o.Authorization="Basic "+btoa(a+":"+s)}var c=buildFullPath(e.baseURL,e.url);if(i.open(e.method.toUpperCase(),buildURL(c,e.params,e.paramsSerializer),!0),i.timeout=e.timeout,i.onreadystatechange=function(){if(i&&4===i.readyState&&(0!==i.status||i.responseURL&&0===i.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in i?parseHeaders(i.getAllResponseHeaders()):null,o={data:e.responseType&&"text"!==e.responseType?i.response:i.responseText,status:i.status,statusText:i.statusText,headers:n,config:e,request:i};settle(t,r,o),i=null}},i.onabort=function(){i&&(r(createError("Request aborted",e,"ECONNABORTED",i)),i=null)},i.onerror=function(){r(createError("Network Error",e,null,i)),i=null},i.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(createError(t,e,"ECONNABORTED",i)),i=null},utils.isStandardBrowserEnv()){var u=cookies,l=(e.withCredentials||isURLSameOrigin(c))&&e.xsrfCookieName?u.read(e.xsrfCookieName):void 0;l&&(o[e.xsrfHeaderName]=l)}if("setRequestHeader"in i&&utils.forEach(o,(function(e,t){void 0===n&&"content-type"===t.toLowerCase()?delete o[t]:i.setRequestHeader(t,e)})),utils.isUndefined(e.withCredentials)||(i.withCredentials=!!e.withCredentials),e.responseType)try{i.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&i.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&i.upload&&i.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){i&&(i.abort(),r(e),i=null)})),void 0===n&&(n=null),i.send(n)}))},DEFAULT_CONTENT_TYPE={"Content-Type":"application/x-www-form-urlencoded"};function setContentTypeIfUnset(e,t){!utils.isUndefined(e)&&utils.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function getDefaultAdapter(){var e;return("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(e=xhr),e}var defaults={adapter:getDefaultAdapter(),transformRequest:[function(e,t){return normalizeHeaderName(t,"Accept"),normalizeHeaderName(t,"Content-Type"),utils.isFormData(e)||utils.isArrayBuffer(e)||utils.isBuffer(e)||utils.isStream(e)||utils.isFile(e)||utils.isBlob(e)?e:utils.isArrayBufferView(e)?e.buffer:utils.isURLSearchParams(e)?(setContentTypeIfUnset(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):utils.isObject(e)?(setContentTypeIfUnset(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};utils.forEach(["delete","get","head"],(function(e){defaults.headers[e]={}})),utils.forEach(["post","put","patch"],(function(e){defaults.headers[e]=utils.merge(DEFAULT_CONTENT_TYPE)}));var defaults_1=defaults;function throwIfCancellationRequested(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var dispatchRequest=function(e){return throwIfCancellationRequested(e),e.headers=e.headers||{},e.data=transformData(e.data,e.headers,e.transformRequest),e.headers=utils.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),utils.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||defaults_1.adapter)(e).then((function(t){return throwIfCancellationRequested(e),t.data=transformData(t.data,t.headers,e.transformResponse),t}),(function(t){return isCancel(t)||(throwIfCancellationRequested(e),t&&t.response&&(t.response.data=transformData(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},mergeConfig=function(e,t){t=t||{};var r={},n=["url","method","params","data"],o=["headers","auth","proxy"],i=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];utils.forEach(n,(function(e){void 0!==t[e]&&(r[e]=t[e])})),utils.forEach(o,(function(n){utils.isObject(t[n])?r[n]=utils.deepMerge(e[n],t[n]):void 0!==t[n]?r[n]=t[n]:utils.isObject(e[n])?r[n]=utils.deepMerge(e[n]):void 0!==e[n]&&(r[n]=e[n])})),utils.forEach(i,(function(n){void 0!==t[n]?r[n]=t[n]:void 0!==e[n]&&(r[n]=e[n])}));var a=n.concat(o).concat(i),s=Object.keys(t).filter((function(e){return-1===a.indexOf(e)}));return utils.forEach(s,(function(n){void 0!==t[n]?r[n]=t[n]:void 0!==e[n]&&(r[n]=e[n])})),r};function Axios(e){this.defaults=e,this.interceptors={request:new InterceptorManager_1,response:new InterceptorManager_1}}Axios.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=mergeConfig(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[dispatchRequest,void 0],r=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)r=r.then(t.shift(),t.shift());return r},Axios.prototype.getUri=function(e){return e=mergeConfig(this.defaults,e),buildURL(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},utils.forEach(["delete","get","head","options"],(function(e){Axios.prototype[e]=function(t,r){return this.request(utils.merge(r||{},{method:e,url:t}))}})),utils.forEach(["post","put","patch"],(function(e){Axios.prototype[e]=function(t,r,n){return this.request(utils.merge(n||{},{method:e,url:t,data:r}))}}));var Axios_1=Axios;function Cancel(e){this.message=e}Cancel.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Cancel.prototype.__CANCEL__=!0;var Cancel_1=Cancel;function CancelToken(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new Cancel_1(e),t(r.reason))}))}CancelToken.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},CancelToken.source=function(){var e;return{token:new CancelToken((function(t){e=t})),cancel:e}};var CancelToken_1=CancelToken,spread=function(e){return function(t){return e.apply(null,t)}};function createInstance(e){var t=new Axios_1(e),r=bind$3(Axios_1.prototype.request,t);return utils.extend(r,Axios_1.prototype,t),utils.extend(r,t),r}var axios=createInstance(defaults_1);axios.Axios=Axios_1,axios.create=function(e){return createInstance(mergeConfig(axios.defaults,e))},axios.Cancel=Cancel_1,axios.CancelToken=CancelToken_1,axios.isCancel=isCancel,axios.all=function(e){return Promise.all(e)},axios.spread=spread;var axios_1=axios,default_1=axios;axios_1.default=default_1;var axios$1=axios_1;function request(e){var t=e.url,r=e.headers,n=void 0===r?{}:r,o=e.data,i=void 0===o?"":o,a=e.responseType,s=void 0===a?"json":a,c=e.timeout,u=void 0===c?3e4:c,l=e.method,p=void 0===l?"POST":l,f=e.params,d=void 0===f?{}:f;return axios$1(Object.assign(Object.assign({},e),{url:t,headers:Object.assign({"content-type":"application/json;charset=UTF-8"},n),data:i,responseType:s,timeout:u,method:p,params:d}))}var MATCH=wellKnownSymbol("match"),isRegexp=function(e){var t;return isObject(e)&&(void 0!==(t=e[MATCH])?!!t:"RegExp"==classofRaw(e))},Array$2=global_1.Array,max$2=Math.max,arraySliceSimple=function(e,t,r){for(var n=lengthOfArrayLike(e),o=toAbsoluteIndex(t,n),i=toAbsoluteIndex(void 0===r?n:r,n),a=Array$2(max$2(i-o,0)),s=0;o1||"".split(/.?/).length?function(e,r){var n=toString_1(requireObjectCoercible(this)),o=void 0===r?MAX_UINT32:r>>>0;if(0===o)return[];if(void 0===e)return[n];if(!isRegexp(e))return functionCall(t,n,e,o);for(var i,a,s,c=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,p=new RegExp(e.source,u+"g");(i=functionCall(regexpExec,p,n))&&!((a=p.lastIndex)>l&&(push$2(c,stringSlice$5(n,l,i.index)),i.length>1&&i.index=o));)p.lastIndex===i.index&&p.lastIndex++;return l===n.length?!s&&exec$1(p,"")||push$2(c,""):push$2(c,stringSlice$5(n,l)),c.length>o?arraySliceSimple(c,0,o):c}:"0".split(void 0,0).length?function(e,r){return void 0===e&&0===r?[]:functionCall(t,this,e,r)}:t,[function(t,r){var o=requireObjectCoercible(this),i=null==t?void 0:getMethod(t,e);return i?functionCall(i,t,o,r):functionCall(n,toString_1(o),t,r)},function(e,o){var i=anObject(this),a=toString_1(e),s=r(n,i,a,o,n!==t);if(s.done)return s.value;var c=speciesConstructor(i,RegExp),u=i.unicode,l=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(UNSUPPORTED_Y$2?"g":"y"),p=new c(UNSUPPORTED_Y$2?"^(?:"+i.source+")":i,l),f=void 0===o?MAX_UINT32:o>>>0;if(0===f)return[];if(0===a.length)return null===regexpExecAbstract(p,a)?[a]:[];for(var d=0,h=0,g=[];h=0:s>c;c+=u)c in a&&(o=r(o,a[c],c,i));return o}},arrayReduce={left:createMethod$2(!1),right:createMethod$2(!0)},$reduce=arrayReduce.left,STRICT_METHOD$2=arrayMethodIsStrict("reduce"),CHROME_BUG=!engineIsNode&&engineV8Version>79&&engineV8Version<83;_export({target:"Array",proto:!0,forced:!STRICT_METHOD$2||CHROME_BUG},{reduce:function(e){var t=arguments.length;return $reduce(this,e,t,t>1?arguments[1]:void 0)}});var ssdp={app:{test:"https://ecsb-uat.crcloud.com:8443/ecsb/gw/app//",production:"https://ssdp.crc.com.cn/ssdp/app//"},cls:{test:"https://ecsb-uat.crcloud.com:8443/ecsb/gw/cls/rf/",production:"https://ssdp.crc.com.cn/ssdp/cls/rf/",runwork:{sit:{App_Sub_ID:"0000000303DM",App_Token:"6debaf0da23340daaac8659144ebed7a",Partner_ID:"00000000",Sys_ID:"00000003"},uat:{App_Sub_ID:"0000000309OK",App_Token:"5643f1d9d86c43c9ae72069c243dbf86",Partner_ID:"00000000",Sys_ID:"00000003"},pre:{App_Sub_ID:"0000000311VF",App_Token:"9472173cc8d5463fb6311db361c8a72f",Partner_ID:"00000000",Sys_ID:"00000003"},production:{App_Sub_ID:"0000000401RH",App_Token:"2bbc84f3bde54df488b4b0133989956c",Partner_ID:"00000000",Sys_ID:"00000004"}}},dtgw:{test:"https://dtgw-uat.crcloud.com/dtgw/api/",production:"https://dtgw-ps.crcloud.com/dtgw/api/",runwork:{sit:{"s-crc-app-id":"10012","s-crc-token":"0ed1fe39709f4c9f9e7fe8071fb8f4f1","s-crc-tpl-code":"EMAP_FILE_DOWN"},uat:{"s-crc-app-id":"10013","s-crc-token":"616451486c7c4b46b21c24d35f1f6f9b","s-crc-tpl-code":"EMAP_FILE_DOWN"},production:{"s-crc-app-id":"10012","s-crc-token":"e893a9d21a2a4fe5a50833de3b99f8e1","s-crc-tpl-code":"EMAP_FILE_DOWN"}}},api:{sit:{hrInfo:{api:"crc.rgz.lark0sit.getUserInfoJWT",version:"1.0"},avatar:{api:"crc.rgz.lark0sit.getEmpImage",version:"1.0"},avatarAuth:{api:"crc.rgz.lark0sit.getEmpImageWithNoLadpAuth",version:"1.0"},gettoken:{api:"crc.rgz.lark0sit.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.lark0sit.getJsapiTicketByAppid",version:"1.0"},run3track:{api:"crc.rgz.run3uat.run3_track",version:"1.0"},users:{api:"crc.rgz.lark0sit.feishu.users",version:"1.0"}},uat:{hrInfo:{api:"crc.rgz.run3uat.getUserInfoJWT",version:"1.0"},avatar:{api:"crc.rgz.run3uat.getEmpImage",version:"1.0"},avatarAuth:{api:"crc.rgz.run3uat.getEmpImageWithNoLadpAuth",version:"1.0"},gettoken:{api:"crc.rgz.run3uat.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.run3uat.getJsapiTicketByAppid",version:"1.0"},run3track:{api:"crc.rgz.run3uat.run3_track",version:"1.0"},users:{api:"crc.rgz.lark0sit.feishu.users",version:"1.0"}},pre:{hrInfo:{api:"crc.rgz.run3uat.getUserInfoJWT",version:"1.0"},avatar:{api:"crc.rgz.run3uat.getEmpImage",version:"1.0"},avatarAuth:{api:"crc.rgz.run3uat.getEmpImageWithNoLadpAuth",version:"1.0"},gettoken:{api:"crc.rgz.run3uat.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.run3pre.getJsapiTicketByAppid",version:"1.0"}},test:{gettoken:{api:"crc.rgz.lark0sit.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.lark0sit.getJsapiTicketByAppid",version:"1.0"}},production:{ssdpPostToken:{api:"crc.ssdp.public.apptoken",version:"1.0"},gettoken:{api:"crc.rgz.app.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.app.getClsJsapiTicket",version:"1.0"},hrInfo:{api:"crc.rgz.app.getUserInfoJWT",version:"1.0"},avatar:{api:"crc.rgz.app.getEmpImage",version:"1.0"},avatarAuth:{api:"crc.rgz.app.getEmpImageWithNoLadpAuth",version:"1.0"},run3track:{api:"crc.rgz.app.run3_track",version:"1.0"},users:{api:"crc.rgz.app.feishu.users",version:"1.0"}}}},h5DB=[{name:"ssdpPostToken",store:{keyPath:"id",autoIncrement:!1},index:["token","expires"]},{name:"sys",store:{keyPath:"id",autoIncrement:!1},index:["appVersion","deviceID","system","platform"]},{name:"user",store:{keyPath:"id",autoIncrement:!1},index:["App_Sub_ID","App_Token","App_key","Partner_ID","external_token","open_id"]},{name:"hrInfo",store:{keyPath:"id",autoIncrement:!1},index:["jobCodeDescr","fullPath","businessUnit","gender","avatarUrl","fullDescPath","deptId","employeeId","birthDate","nameFormal","join_time","nameAc","deptDesc","userType","email","seniorityPayDtMap","businessUnitDesc","expires","mobilePhoneNumber","businessUnitDescShort"]},{name:"avatar",store:{keyPath:"id",autoIncrement:!1},index:["imageUrl","expires"]}],cacheKeys={localStorage:{feishu:{tenantAccessToken:"FS_TenantAccessToken",ticket:"FS_Ticket"}},indexeddb:{name:"runworkH5",version:3,store:{sys:"sys",user:"user",hrInfo:"hrInfo",avatar:"avatar",postToken:"ssdpPostToken",network:"network",track:"track"}}},feishu={redirectUrl:{production:"https://runworkauth.crc.com.cn/runworksso/sso/auth",sit:"https://runwork-h5-sit.test.crdigital.com.cn/runworksso/sso/auth",uat:"https://runwork-h5-uat.test.crdigital.com.cn/runworksso/sso/auth"}},apis={getSSOUserInfo:{production:"https://runworkauth.crc.com.cn/runworksso/sso/getSSOUserInfo",sit:"https://runwork-h5-sit.test.crdigital.com.cn/runworksso/sso/getSSOUserInfo",uat:"https://runwork-h5-uat.test.crdigital.com.cn/runworksso/sso/getSSOUserInfo"},createDebugJwttoken:{production:"https://runworkauth.crc.com.cn/runworksso/sso/createDebugJwttoken",sit:"https://runwork-h5-sit.test.crdigital.com.cn/runworksso/sso/createDebugJwttoken",uat:"https://runwork-h5-uat.test.crdigital.com.cn/runworksso/sso/createDebugJwttoken"}},constant={ssdp:ssdp,h5DB:h5DB,cacheKeys:cacheKeys,feishu:feishu,apis:apis};function getConstant(e){return e.split(".").reduce((function(e,t){return e[t]}),constant)}var inheritIfRequired=function(e,t,r){var n,o;return objectSetPrototypeOf&&isCallable(n=t.constructor)&&n!==r&&isObject(o=n.prototype)&&o!==r.prototype&&objectSetPrototypeOf(e,o),e},RegExpPrototype$1=RegExp.prototype,regexpGetFlags=function(e){var t=e.flags;return void 0!==t||"flags"in RegExpPrototype$1||hasOwnProperty_1(e,"flags")||!objectIsPrototypeOf(RegExpPrototype$1,e)?t:functionCall(regexpFlags,e)},defineProperty$3=objectDefineProperty.f,proxyAccessor=function(e,t,r){r in e||defineProperty$3(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})},getOwnPropertyNames=objectGetOwnPropertyNames.f,enforceInternalState=internalState.enforce,MATCH$1=wellKnownSymbol("match"),NativeRegExp=global_1.RegExp,RegExpPrototype$2=NativeRegExp.prototype,SyntaxError=global_1.SyntaxError,exec$2=functionUncurryThis(RegExpPrototype$2.exec),charAt$4=functionUncurryThis("".charAt),replace$2=functionUncurryThis("".replace),stringIndexOf$1=functionUncurryThis("".indexOf),stringSlice$6=functionUncurryThis("".slice),IS_NCG=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,re1=/a/g,re2=/a/g,CORRECT_NEW=new NativeRegExp(re1)!==re1,MISSED_STICKY$1=regexpStickyHelpers.MISSED_STICKY,UNSUPPORTED_Y$3=regexpStickyHelpers.UNSUPPORTED_Y,BASE_FORCED=descriptors&&(!CORRECT_NEW||MISSED_STICKY$1||regexpUnsupportedDotAll||regexpUnsupportedNcg||fails((function(){return re2[MATCH$1]=!1,NativeRegExp(re1)!=re1||NativeRegExp(re2)==re2||"/a/i"!=NativeRegExp(re1,"i")}))),handleDotAll=function(e){for(var t,r=e.length,n=0,o="",i=!1;n<=r;n++)"\\"!==(t=charAt$4(e,n))?i||"."!==t?("["===t?i=!0:"]"===t&&(i=!1),o+=t):o+="[\\s\\S]":o+=t+charAt$4(e,++n);return o},handleNCG=function(e){for(var t,r=e.length,n=0,o="",i=[],a={},s=!1,c=!1,u=0,l="";n<=r;n++){if("\\"===(t=charAt$4(e,n)))t+=charAt$4(e,++n);else if("]"===t)s=!1;else if(!s)switch(!0){case"["===t:s=!0;break;case"("===t:exec$2(IS_NCG,stringSlice$6(e,n+1))&&(n+=2,c=!0),o+=t,u++;continue;case">"===t&&c:if(""===l||hasOwnProperty_1(a,l))throw new SyntaxError("Invalid capture group name");a[l]=!0,i[i.length]=[l,u],c=!1,l="";continue}c?l+=t:o+=t}return[o,i]};if(isForced_1("RegExp",BASE_FORCED)){for(var RegExpWrapper=function(e,t){var r,n,o,i,a,s,c=objectIsPrototypeOf(RegExpPrototype$2,this),u=isRegexp(e),l=void 0===t,p=[],f=e;if(!c&&u&&l&&e.constructor===RegExpWrapper)return e;if((u||objectIsPrototypeOf(RegExpPrototype$2,e))&&(e=e.source,l&&(t=regexpGetFlags(f))),e=void 0===e?"":toString_1(e),t=void 0===t?"":toString_1(t),f=e,regexpUnsupportedDotAll&&"dotAll"in re1&&(n=!!t&&stringIndexOf$1(t,"s")>-1)&&(t=replace$2(t,/s/g,"")),r=t,MISSED_STICKY$1&&"sticky"in re1&&(o=!!t&&stringIndexOf$1(t,"y")>-1)&&UNSUPPORTED_Y$3&&(t=replace$2(t,/y/g,"")),regexpUnsupportedNcg&&(e=(i=handleNCG(e))[0],p=i[1]),a=inheritIfRequired(NativeRegExp(e,t),c?this:RegExpPrototype$2,RegExpWrapper),(n||o||p.length)&&(s=enforceInternalState(a),n&&(s.dotAll=!0,s.raw=RegExpWrapper(handleDotAll(e),r)),o&&(s.sticky=!0),p.length&&(s.groups=p)),e!==f)try{createNonEnumerableProperty(a,"source",""===f?"(?:)":f)}catch(e){}return a},keys$1=getOwnPropertyNames(NativeRegExp),index=0;keys$1.length>index;)proxyAccessor(RegExpWrapper,NativeRegExp,keys$1[index++]);RegExpPrototype$2.constructor=RegExpWrapper,RegExpWrapper.prototype=RegExpPrototype$2,redefine(global_1,"RegExp",RegExpWrapper)}setSpecies("RegExp");var PROPER_FUNCTION_NAME=functionName.PROPER,TO_STRING$1="toString",RegExpPrototype$3=RegExp.prototype,n$ToString=RegExpPrototype$3[TO_STRING$1],NOT_GENERIC=fails((function(){return"/a/b"!=n$ToString.call({source:"a",flags:"b"})})),INCORRECT_NAME=PROPER_FUNCTION_NAME&&n$ToString.name!=TO_STRING$1;function getTimeStamp(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-MM-dd hh:mm:ss:S",r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};for(var o in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length))),n)new RegExp("("+o+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?n[o]:("00"+n[o]).substr((""+n[o]).length)));var i=-e.getTimezoneOffset()/60,a=i>=0?"+":"-";i=Math.abs(i);var s="".concat(a).concat(i<10?"0".concat(i):i,"00");return"".concat(t).concat(r?s:"")}(NOT_GENERIC||INCORRECT_NAME)&&redefine(RegExp.prototype,TO_STRING$1,(function(){var e=anObject(this);return"/"+toString_1(e.source)+"/"+toString_1(regexpGetFlags(e))}),{unsafe:!0});var base64encodechars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",base64decodechars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1),base64encode=function(){var e,t,r,n,o,i,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(r=a.length,t=0,e="";t>2),e+=base64encodechars.charAt((3&n)<<4),e+="==";break}if(o=a.charCodeAt(t++),t==r){e+=base64encodechars.charAt(n>>2),e+=base64encodechars.charAt((3&n)<<4|(240&o)>>4),e+=base64encodechars.charAt((15&o)<<2),e+="=";break}i=a.charCodeAt(t++),e+=base64encodechars.charAt(n>>2),e+=base64encodechars.charAt((3&n)<<4|(240&o)>>4),e+=base64encodechars.charAt((15&o)<<2|(192&i)>>6),e+=base64encodechars.charAt(63&i)}return e},base64decode=function(){var e,t,r,n,o,i,a,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(i=s.length,o=0,a="";o>4);do{if(61==(r=255&s.charCodeAt(o++)))return a;r=base64decodechars[r]}while(o>2);do{if(61==(n=255&s.charCodeAt(o++)))return a;n=base64decodechars[n]}while(o0&&void 0!==arguments[0]?arguments[0]:"";for(e="",r=o.length,t=0;t=1&&n<=127?e+=o.charAt(t):n>2047?(e+=String.fromCharCode(224|n>>12&15),e+=String.fromCharCode(128|n>>6&63),e+=String.fromCharCode(128|n>>0&63)):(e+=String.fromCharCode(192|n>>6&31),e+=String.fromCharCode(128|n>>0&63));return e},utf8to16=function(){var e,t,r,n,o,i,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(e="",r=a.length,t=0;t>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=a.charAt(t-1);break;case 12:case 13:o=a.charCodeAt(t++),e+=String.fromCharCode((31&n)<<6|63&o);break;case 14:o=a.charCodeAt(t++),i=a.charCodeAt(t++),e+=String.fromCharCode((15&n)<<12|(63&o)<<6|(63&i)<<0)}return e},base64={encode:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return base64encode(utf16to8(e))},decode:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return utf8to16(base64decode(e))}};function jssdk(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return console.log("jssdk",e),new Promise((function(r,n){window.h5sdk.ready((function(){var o=e.split(".").reduce((function(e,t){return e[t]||{}}),window.h5sdk);"function"!=typeof o&&n(),o.call(window.h5sdk,Object.assign({onSuccess:function(e){r(e)},onFail:function(t){errorHandle(e),console.error("调用原生方法失败:"+e,t),n(t)}},t))})).catch((function(e){return console.error("h5sdk.ready error",e),Promise.reject(e)}))}))}function errorHandle(e){switch(e){case"biz.user.getUserInfoEx":navigator.userAgent.match(/android/i)?alert("认证信息失效,请重新登录"):jssdk("device.notification.confirm",{title:"温馨提示",message:"认证信息失效,请重新登录",buttonLabels:["好的"]}).then((function(){jssdk("biz.navigation.close")}))}}fixRegexpWellKnownSymbolLogic("match",(function(e,t,r){return[function(t){var r=requireObjectCoercible(this),n=null==t?void 0:getMethod(t,e);return n?functionCall(n,t,r):new RegExp(t)[e](toString_1(r))},function(e){var n=anObject(this),o=toString_1(e),i=r(t,n,o);if(i.done)return i.value;if(!n.global)return regexpExecAbstract(n,o);var a=n.unicode;n.lastIndex=0;for(var s,c=[],u=0;null!==(s=regexpExecAbstract(n,o));){var l=toString_1(s[0]);c[u]=l,""===l&&(n.lastIndex=advanceStringIndex(o,toLength(n.lastIndex),a)),u++}return 0===u?null:c}]}));var isIphonex=function(){return/iphone/gi.test(window.navigator.userAgent)};function logger(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info";"[object Array]"!==Object.prototype.toString.call(e)&&(e=[e]),(t=console)[r].apply(t,["runwork-help2.0"].concat(_toConsumableArray(e)))}var MSIE=/MSIE .\./.test(engineUserAgent),Function$2=global_1.Function,wrap=function(e){return MSIE?function(t,r){var n=validateArgumentsLength(arguments.length,1)>2,o=isCallable(t)?t:Function$2(t),i=n?arraySlice(arguments,2):void 0;return e(n?function(){functionApply(o,this,i)}:o,r)}:e},schedulersFix={setTimeout:wrap(global_1.setTimeout),setInterval:wrap(global_1.setInterval)},setInterval$1=schedulersFix.setInterval;_export({global:!0,bind:!0,forced:global_1.setInterval!==setInterval$1},{setInterval:setInterval$1});var setTimeout$1=schedulersFix.setTimeout;function sleep(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;return new Promise((function(t){setTimeout((function(){t()}),e)}))}_export({global:!0,bind:!0,forced:global_1.setTimeout!==setTimeout$1},{setTimeout:setTimeout$1});var whitespaces="\t\n\v\f\r                 \u2028\u2029\ufeff",replace$3=functionUncurryThis("".replace),whitespace="["+whitespaces+"]",ltrim=RegExp("^"+whitespace+whitespace+"*"),rtrim=RegExp(whitespace+whitespace+"*$"),createMethod$3=function(e){return function(t){var r=toString_1(requireObjectCoercible(t));return 1&e&&(r=replace$3(r,ltrim,"")),2&e&&(r=replace$3(r,rtrim,"")),r}},stringTrim={start:createMethod$3(1),end:createMethod$3(2),trim:createMethod$3(3)},trim$1=stringTrim.trim,charAt$5=functionUncurryThis("".charAt),n$ParseFloat=global_1.parseFloat,Symbol$2=global_1.Symbol,ITERATOR$3=Symbol$2&&Symbol$2.iterator,FORCED$1=1/n$ParseFloat(whitespaces+"-0")!=-1/0||ITERATOR$3&&!fails((function(){n$ParseFloat(Object(ITERATOR$3))})),numberParseFloat=FORCED$1?function(e){var t=trim$1(toString_1(e)),r=n$ParseFloat(t);return 0===r&&"-"==charAt$5(t,0)?-0:r}:n$ParseFloat;function isBroswer(){var e={},t=navigator.userAgent,r=t.indexOf("Opera")>-1;if(r){if("Opera"==navigator.appName)e.version=parseFloat(navigator.appVersion);else new RegExp("Opera (\\d+.\\d+)").test(t),e.version=parseFloat(RegExp.$1);e.name="opera"}var n=t.indexOf("Chrome")>-1;n&&(new RegExp("Chrome/(\\d+\\.\\d+(?:\\.\\d+\\.\\d+))?").test(t),e.version=parseFloat(RegExp.$1),e.name="chrome");var o=(t.indexOf("KHTML")>-1||t.indexOf("Konqueror")>-1||t.indexOf("AppleWebKit")>-1)&&!n;if(o){var i=t.indexOf("AppleWebKit")>-1,a=t.indexOf("Konqueror")>-1;if(i)new RegExp("Version/(\\d+(?:\\.\\d*)?)").test(t),e.version=parseFloat(RegExp.$1),e.safari=!0,e.name="safari";else if(a){new RegExp("Konqueror/(\\d+(?:\\.\\d+(?\\.\\d)?)?)").test(t),e.version=parseFloat(RegExp.$1),e.name="konqueror"}}t.indexOf("compatible")>-1&&t.indexOf("MSIE")>-1&&!r&&(new RegExp("MSIE (\\d+\\.\\d+);").test(t),e.version=parseFloat(RegExp.$1),e.name="msie");t.indexOf("Gecko")>-1&&!n&&!o&&(new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)").test(t),e.version=parseFloat(RegExp.$1),e.name="mozilla");return e}_export({global:!0,forced:parseFloat!=numberParseFloat},{parseFloat:numberParseFloat});var floor$2=Math.floor,mergeSort=function(e,t){var r=e.length,n=floor$2(r/2);return r<8?insertionSort(e,t):merge$1(e,mergeSort(arraySliceSimple(e,0,n),t),mergeSort(arraySliceSimple(e,n),t),t)},insertionSort=function(e,t){for(var r,n,o=e.length,i=1;i0;)e[n]=e[--n];n!==i++&&(e[n]=r)}return e},merge$1=function(e,t,r,n){for(var o=t.length,i=r.length,a=0,s=0;a3)){if(engineIsIeOrEdge)return!0;if(engineWebkitVersion)return engineWebkitVersion<603;var e,t,r,n,o="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)test$1.push({k:t+n,v:r})}for(test$1.sort((function(e,t){return t.v-e.v})),n=0;ntoString_1(r)?1:-1}};_export({target:"Array",proto:!0,forced:FORCED$2},{sort:function(e){void 0!==e&&aCallable(e);var t=toObject(this);if(STABLE_SORT)return void 0===e?un$Sort(t):un$Sort(t,e);var r,n,o=[],i=lengthOfArrayLike(t);for(n=0;nm;m++)if((s||m in g)&&(d=y(f=g[m],m,h),e))if(t)S[m]=d;else if(d)switch(e){case 3:return!0;case 5:return f;case 6:return m;case 2:push$4(S,f)}else switch(e){case 4:return!1;case 7:push$4(S,f)}return i?-1:n||o?o:S}},arrayIteration={forEach:createMethod$4(0),map:createMethod$4(1),filter:createMethod$4(2),some:createMethod$4(3),every:createMethod$4(4),find:createMethod$4(5),findIndex:createMethod$4(6),filterReject:createMethod$4(7)},$map=arrayIteration.map,HAS_SPECIES_SUPPORT=arrayMethodHasSpeciesSupport("map");_export({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT},{map:function(e){return $map(this,e,arguments.length>1?arguments[1]:void 0)}});var md5=createCommonjsModule((function(e){!function(t){function r(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function n(e,t,n,o,i,a){return r((s=r(r(t,e),r(o,a)))<<(c=i)|s>>>32-c,n);var s,c}function o(e,t,r,o,i,a,s){return n(t&r|~t&o,e,t,i,a,s)}function i(e,t,r,o,i,a,s){return n(t&o|r&~o,e,t,i,a,s)}function a(e,t,r,o,i,a,s){return n(t^r^o,e,t,i,a,s)}function s(e,t,r,o,i,a,s){return n(r^(t|~o),e,t,i,a,s)}function c(e,t){var n,c,u,l,p;e[t>>5]|=128<>>9<<4)]=t;var f=1732584193,d=-271733879,h=-1732584194,g=271733878;for(n=0;n>5]>>>t%32&255);return r}function l(e){var t,r=[];for(r[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<>>4&15)+"0123456789abcdef".charAt(15&t);return n}function f(e){return unescape(encodeURIComponent(e))}function d(e){return function(e){return u(c(l(e),8*e.length))}(f(e))}function h(e,t){return function(e,t){var r,n,o=l(e),i=[],a=[];for(i[15]=a[15]=void 0,o.length>16&&(o=c(o,8*e.length)),r=0;r<16;r+=1)i[r]=909522486^o[r],a[r]=1549556828^o[r];return n=c(i.concat(l(t)),512+8*t.length),u(c(a.concat(n),640))}(f(e),f(t))}function g(e,t,r){return t?r?h(t,e):p(h(t,e)):r?d(e):p(d(e))}e.exports?e.exports=g:t.md5=g}(commonjsGlobal)}));function generateSysSign(e){var t=e.App_Sub_ID,r=e.App_Token,n=e.User_Token,o=void 0===n?"":n,i=e.Api_ID,a=e.Api_Version,s=e.Time_Stamp,c=e.Partner_ID,u=e.REQUEST_DATA,l=e.App_ID,p=e.App_Version,f=e.Divice_ID,d=e.Divice_Version,h=e.OS_Version,g=e.App_key,y=[["App_Sub_ID",t],["App_Token",r],["User_Token",o],["Api_ID",i],["Api_Version",a],["Time_Stamp",s],["Partner_ID",c],["REQUEST_DATA","string"==typeof u?u:JSON.stringify(u)],["App_ID",l],["App_Version",p],["Divice_ID",f],["Divice_Version",d],["OS_Version",h]];return y.sort(),console.log("SSDP签名参数","".concat(y.map((function(e){return e.join("=")})).join("&"),"&").concat(g)),md5("".concat(y.map((function(e){return e.join("=")})).join("&"),"&").concat(g)).toUpperCase()}var SSDPConfigMode=_createClass((function e(t){var r=t.App_Sub_ID,n=t.App_Token,o=t.App_ID,i=t.App_key,a=t.App_Version,s=t.Divice_ID,c=t.Divice_Version,u=t.OS_Version,l=t.Partner_ID,p=t.User_Token;_classCallCheck(this,e),this.App_Sub_ID=r,this.App_Token=n,this.App_ID=o,this.App_key=i,this.App_Version=a,this.Divice_ID=s,this.Divice_Version=c,this.OS_Version=u,this.Partner_ID=l,this.User_Token=p||""})),SSDPApp=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"test",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];_classCallCheck(this,e),this.CacheDBKey=getConstant("cacheKeys.indexeddb.store.postToken"),this.isLogin=!1,this.config=new SSDPConfigMode(t),this.isLogin=n,this.url=getConstant("ssdp.app.".concat(r)),this.env=r,this.CacheStoreKey="PostToken_".concat(this.env)}return _createClass(e,[{key:"init",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAccessToken();case 2:this.postToken=e.sent;case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getPostToken",value:function(){return this.postToken}},{key:"request",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function r(){var n,o,i,a,s,c,u,l,p,f,d,h,g,y,v,m,b,S,E,_,T,I;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n=e.api,o=void 0===n?"":n,i=e.version,a=void 0===i?"1.0":i,s=e.data,c=void 0===s?"":s,u=e.params,l=void 0===u?{}:u,p=e.headers,f=void 0===p?{}:p,e.isFormatData,d=e.type,h=void 0===d?"rs":d,g=e.method,y=void 0===g?"POST":g,v=e.uri,m=this.getApiAttrs(o,a),r.next=4,request(Object.assign(Object.assign({},e),{url:"".concat(this.url.replace("",h)).concat(v||"","?ssdp=").concat(this.generateUrlParam("post"===y.toLowerCase()&&"rs"==h?{Api_ID:o,Api_Version:a,App_Sub_ID:this.config.App_Sub_ID,Time_Stamp:m.Time_Stamp}:Object.assign(Object.assign({},m),{Sign:generateSysSign(Object.assign(Object.assign({},m),{REQUEST_DATA:c}))}))),params:l,method:y,headers:Object.assign({},f),data:"rs"==h?this.generateCommonParam(o,a,c):c}));case 4:b=r.sent,S=void 0,E=void 0;try{_=b.data.RESPONSE,T=_.RETURN_CODE,I=_.RETURN_DESC,S=T,E=I}catch(e){logger(["非标准响应报文格式",b.data],"warn")}if(void 0!==S){r.next=10;break}return r.abrupt("return",b);case 10:if(!((["E0MI0006","E0MI0003"].includes(S)||"string"==typeof E&&~E.toLocaleLowerCase().indexOf("app_token"))&&t<=3)){r.next=15;break}return r.next=13,this.getAccessTokenByPost();case 13:return this.postToken=r.sent,r.abrupt("return",this.request({api:o,version:a,data:c,headers:f},++t));case 15:return r.abrupt("return",b);case 16:case"end":return r.stop()}}),r,this)})))}},{key:"generateCommonParam",value:function(e,t,r,n){var o=this.getApiAttrs(e,t,n);if(o=Object.assign(Object.assign({},o),{Sign:generateSysSign(Object.assign(Object.assign({},o),{REQUEST_DATA:r,App_key:this.config.App_key}))}),this.isLogin&&"crc.ssdp.public.apptoken"!==o.Api_ID){var i=r.BUS_DATA;(i=JSON.parse(base64.decode(i))).appToken=o.App_Token,r={BUS_DATA:base64.encode(JSON.stringify(i))}}return{REQUEST:{REQUEST_DATA:r,API_ATTRS:o}}}},{key:"getApiAttrs",value:function(e,t,r){return Object.assign(Object.assign({},this.config),{App_key:void 0,App_Token:r||this.postToken,Time_Stamp:getTimeStamp(),Api_ID:e,Api_Version:t})}},{key:"generateUrlParam",value:function(e){var t=[];for(var r in e){var n=e[r];n&&t.push("".concat(r,"=").concat(n))}return base64.encode(t.join("&"))}},{key:"getAccessToken",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAccessTokenByCache();case 2:if(!(t=e.sent)){e.next=5;break}return e.abrupt("return",Promise.resolve(t));case 5:return e.abrupt("return",this.getAccessTokenByPost());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessTokenByPost",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,r,n,o,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,request({url:this.generateUrlByAccessToken(),data:this.generateCommonParam("crc.ssdp.public.apptoken","1.0",{App_Type:"",App_key:this.config.App_key,Remarks:"",Scope:""},this.config.App_Token)});case 2:if(t=e.sent,r=t.data,n=r.RESPONSE,o=n.RETURN_DATA,"S"===(i=n.RETURN_CODE).charAt(0)||"MS000A000"===i){e.next=7;break}return e.abrupt("return",Promise.reject(r.RESPONSE));case 7:if(a=o.App_Token,s=o.Token_Expires,!this.isLogin){e.next=10;break}return e.abrupt("return",a);case 10:return this.setPostTokenCache({token:a,expires:(new Date).getTime()+1e3*s}),e.abrupt("return",a);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessTokenByCache",value:function(){if(this.isLogin)return Promise.resolve();var e=localStorage.getItem(this.CacheDBKey),t="string"==typeof e?JSON.parse(e):void 0;return e&&this.checkPostTokenExpires(t.expires)?t.value:void 0}},{key:"setPostTokenCache",value:function(e){var t=e.expires,r=e.token;localStorage.setItem(this.CacheDBKey,JSON.stringify({expires:t,value:r}))}},{key:"checkPostTokenExpires",value:function(e){return e-(new Date).getTime()>3e5}},{key:"generateUrlByAccessToken",value:function(){var e=getConstant("ssdp.api.production.ssdpPostToken"),t=e.api,r=e.version;return"".concat(this.url.replace("","rs"),"?ssdp=").concat(this.generateUrlParam({Api_ID:t,Api_Version:r,App_Sub_ID:this.config.App_Sub_ID}))}},{key:"setUserToken",value:function(e){this.config.User_Token=e}}]),e}();SSDPApp.isIndexedDB="indexedDB"in window;var FAILS_ON_PRIMITIVES=fails((function(){objectKeys(1)}));_export({target:"Object",stat:!0,forced:FAILS_ON_PRIMITIVES},{keys:function(e){return objectKeys(toObject(e))}});var Function$3=global_1.Function,concat$3=functionUncurryThis([].concat),join=functionUncurryThis([].join),factories={},construct$1=function(e,t,r){if(!hasOwnProperty_1(factories,t)){for(var n=[],o=0;o1?arguments[1]:void 0)}});var HAS_SPECIES_SUPPORT$1=arrayMethodHasSpeciesSupport("slice"),SPECIES$6=wellKnownSymbol("species"),Array$3=global_1.Array,max$3=Math.max;_export({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT$1},{slice:function(e,t){var r,n,o,i=toIndexedObject(this),a=lengthOfArrayLike(i),s=toAbsoluteIndex(e,a),c=toAbsoluteIndex(void 0===t?a:t,a);if(isArray(i)&&(r=i.constructor,(isConstructor(r)&&(r===Array$3||isArray(r.prototype))||isObject(r)&&null===(r=r[SPECIES$6]))&&(r=void 0),r===Array$3||void 0===r))return arraySlice(i,s,c);for(n=new(void 0===r?Array$3:r)(max$3(c-s,0)),o=0;s=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values"),values=iterators.Arguments=iterators.Array;if(addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries"),descriptors&&"values"!==values.name)try{defineProperty$5(values,"name",{value:"values"})}catch(e){}var charAt$6=stringMultibyte.charAt,STRING_ITERATOR="String Iterator",setInternalState$2=internalState.set,getInternalState$2=internalState.getterFor(STRING_ITERATOR);defineIterator(String,"String",(function(e){setInternalState$2(this,{type:STRING_ITERATOR,string:toString_1(e),index:0})}),(function(){var e,t=getInternalState$2(this),r=t.string,n=t.index;return n>=r.length?{value:void 0,done:!0}:(e=charAt$6(r,n),t.index+=e.length,{value:e,done:!1})}));var domIterables={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},classList=documentCreateElement("span").classList,DOMTokenListPrototype=classList&&classList.constructor&&classList.constructor.prototype,domTokenListPrototype=DOMTokenListPrototype===Object.prototype?void 0:DOMTokenListPrototype,ITERATOR$6=wellKnownSymbol("iterator"),TO_STRING_TAG$3=wellKnownSymbol("toStringTag"),ArrayValues=es_array_iterator.values,handlePrototype=function(e,t){if(e){if(e[ITERATOR$6]!==ArrayValues)try{createNonEnumerableProperty(e,ITERATOR$6,ArrayValues)}catch(t){e[ITERATOR$6]=ArrayValues}if(e[TO_STRING_TAG$3]||createNonEnumerableProperty(e,TO_STRING_TAG$3,t),domIterables[t])for(var r in es_array_iterator)if(e[r]!==es_array_iterator[r])try{createNonEnumerableProperty(e,r,es_array_iterator[r])}catch(t){e[r]=es_array_iterator[r]}}};for(var COLLECTION_NAME in domIterables)handlePrototype(global_1[COLLECTION_NAME]&&global_1[COLLECTION_NAME].prototype,COLLECTION_NAME);handlePrototype(domTokenListPrototype,"DOMTokenList");var $findIndex=arrayIteration.findIndex,FIND_INDEX="findIndex",SKIPS_HOLES=!0;FIND_INDEX in[]&&Array(1)[FIND_INDEX]((function(){SKIPS_HOLES=!1})),_export({target:"Array",proto:!0,forced:SKIPS_HOLES},{findIndex:function(e){return $findIndex(this,e,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables(FIND_INDEX);var $filter=arrayIteration.filter,HAS_SPECIES_SUPPORT$2=arrayMethodHasSpeciesSupport("filter");_export({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT$2},{filter:function(e){return $filter(this,e,arguments.length>1?arguments[1]:void 0)}});var PROPER_FUNCTION_NAME$2=functionName.PROPER,non="​…᠎",stringTrimForced=function(e){return fails((function(){return!!whitespaces[e]()||non[e]()!==non||PROPER_FUNCTION_NAME$2&&whitespaces[e].name!==e}))},$trim=stringTrim.trim;_export({target:"String",proto:!0,forced:stringTrimForced("trim")},{trim:function(){return $trim(this)}});var RunworkH5Mode=_createClass((function e(t){var r=t.isLocal,n=void 0!==r&&r,o=t.devUser,i=t.env,a=void 0===i?"sit":i,s=t.jsApiList,c=void 0===s?[]:s,u=t.log,l=void 0!==u&&u,p=t.appId,f=t.appSecret,d=t.isLogin,h=void 0!==d&&d,g=t.isHrInfo,y=void 0!==g&&g,v=t.isAvatar,m=void 0!==v&&v,b=t.isPrivate,S=void 0!==b&&b,E=t.isHrInfoCache,_=void 0===E||E,T=t.isVue3,I=void 0!==T&&T,O=t.larkexpires,R=void 0!==O&&O,A=t.isJssdkAuth,P=void 0===A||A,C=t.SSDPConfig,w=void 0===C?{}:C,x=t.isCross,k=void 0!==x&&x;_classCallCheck(this,e),this.env="sit",this.jsApiList=[],this.domain=["https://runwork-h5.crc.com.cn","https://runwork-h5-uat.crc.com.cn"],this.isLocal=n,this.devUser=o,this.env=a,RunWorkH5.env=this.env,this.log=l,this.appId=p,this.appSecret=f,this.isLogin=h,this.isHrInfo=y,this.isAvatar=m,this.isPrivate=S,this.isHrInfoCache=_,this.isVue3=I,this.larkexpires=R,this.isJssdkAuth=P,this.SSDPConfig=w,this.isCross=k,this.jsApiList=["device.base.getSystemInfo","biz.user.getUserInfoEx","biz.util.openDocument","biz.user.getUserInfo"].concat(c)}));function getTicket(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function o(){var i,a,s,c,u,l,p,f,d,h,g,y,v,m;return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(i="".concat(getConstant("cacheKeys.localStorage.feishu.ticket"),"_").concat(e),!0===r&&(logger("清空【Ticket】缓存"),localStorage.setItem(i,"")),a=localStorage.getItem(i),s=a?JSON.parse(a):void 0,!((c="object"===_typeof(s)?s.expire-(new Date).getTime():-1)>9e4)){o.next=8;break}return logger(["从缓存获取【Ticket】",c,s.value]),o.abrupt("return",s.value);case 8:return logger(["从远端获取【Ticket】",JSON.stringify({appId:e,appSecret:t,refresh:1==n?"true":void 0})]),u=getConstant("ssdp.api.".concat(RunWorkH5.env,".ticket")),l=u.api,u.version,o.next=12,RunWorkH5.ssdpCls.request({method:"POST",api:l,version:"1.0",data:{Biz_Data:base64.encode(JSON.stringify({appId:e,appSecret:t,refresh:1==n?"true":void 0}))}});case 12:if(p=o.sent,f=p.data,d=f.RESPONSE.RETURN_DATA,h=d.data,g=d.code,y=d.msg,0==g){o.next=17;break}return o.abrupt("return",Promise.reject("get ticket error "+y));case 17:return v=h.ticket,m=h.expire_in,localStorage.setItem(i,JSON.stringify({expire:(new Date).getTime()+1e3*m,value:v})),o.abrupt("return",v);case 20:case"end":return o.stop()}}),o)})))}var sameValue=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};fixRegexpWellKnownSymbolLogic("search",(function(e,t,r){return[function(t){var r=requireObjectCoercible(this),n=null==t?void 0:getMethod(t,e);return n?functionCall(n,t,r):new RegExp(t)[e](toString_1(r))},function(e){var n=anObject(this),o=toString_1(e),i=r(t,n,o);if(i.done)return i.value;var a=n.lastIndex;sameValue(a,0)||(n.lastIndex=0);var s=regexpExecAbstract(n,o);return sameValue(n.lastIndex,a)||(n.lastIndex=a),null===s?-1:s.index}]}));var sha1=createCommonjsModule((function(module){ +/* + * [js-sha1]{@link https://github.com/emn178/js-sha1} + * + * @version 0.6.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ +!function(){var root="object"==typeof window?window:{},NODE_JS=!root.JS_SHA1_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS&&(root=commonjsGlobal);var COMMON_JS=!root.JS_SHA1_NO_COMMON_JS&&module.exports,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[],createOutputMethod=function(e){return function(t){return new Sha1(!0).update(t)[e]()}},createMethod=function(){var e=createOutputMethod("hex");NODE_JS&&(e=nodeWrap(e)),e.create=function(){return new Sha1},e.update=function(t){return e.create().update(t)};for(var t=0;t>2]|=e[o]<>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(a[n>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<=64?(this.block=a[16],this.start=n-64,this.hash(),this.hashed=!0):this.start=n}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha1.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>2]|=EXTRA[3&t],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},Sha1.prototype.hash=function(){var e,t,r=this.h0,n=this.h1,o=this.h2,i=this.h3,a=this.h4,s=this.blocks;for(e=16;e<80;++e)t=s[e-3]^s[e-8]^s[e-14]^s[e-16],s[e]=t<<1|t>>>31;for(e=0;e<20;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n&o|~n&i)+a+1518500249+s[e]<<0)<<5|a>>>27)+(r&(n=n<<30|n>>>2)|~r&o)+i+1518500249+s[e+1]<<0)<<5|i>>>27)+(a&(r=r<<30|r>>>2)|~a&n)+o+1518500249+s[e+2]<<0)<<5|o>>>27)+(i&(a=a<<30|a>>>2)|~i&r)+n+1518500249+s[e+3]<<0)<<5|n>>>27)+(o&(i=i<<30|i>>>2)|~o&a)+r+1518500249+s[e+4]<<0,o=o<<30|o>>>2;for(;e<40;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n^o^i)+a+1859775393+s[e]<<0)<<5|a>>>27)+(r^(n=n<<30|n>>>2)^o)+i+1859775393+s[e+1]<<0)<<5|i>>>27)+(a^(r=r<<30|r>>>2)^n)+o+1859775393+s[e+2]<<0)<<5|o>>>27)+(i^(a=a<<30|a>>>2)^r)+n+1859775393+s[e+3]<<0)<<5|n>>>27)+(o^(i=i<<30|i>>>2)^a)+r+1859775393+s[e+4]<<0,o=o<<30|o>>>2;for(;e<60;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n&o|n&i|o&i)+a-1894007588+s[e]<<0)<<5|a>>>27)+(r&(n=n<<30|n>>>2)|r&o|n&o)+i-1894007588+s[e+1]<<0)<<5|i>>>27)+(a&(r=r<<30|r>>>2)|a&n|r&n)+o-1894007588+s[e+2]<<0)<<5|o>>>27)+(i&(a=a<<30|a>>>2)|i&r|a&r)+n-1894007588+s[e+3]<<0)<<5|n>>>27)+(o&(i=i<<30|i>>>2)|o&a|i&a)+r-1894007588+s[e+4]<<0,o=o<<30|o>>>2;for(;e<80;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n^o^i)+a-899497514+s[e]<<0)<<5|a>>>27)+(r^(n=n<<30|n>>>2)^o)+i-899497514+s[e+1]<<0)<<5|i>>>27)+(a^(r=r<<30|r>>>2)^n)+o-899497514+s[e+2]<<0)<<5|o>>>27)+(i^(a=a<<30|a>>>2)^r)+n-899497514+s[e+3]<<0)<<5|n>>>27)+(o^(i=i<<30|i>>>2)^a)+r-899497514+s[e+4]<<0,o=o<<30|o>>>2;this.h0=this.h0+r<<0,this.h1=this.h1+n<<0,this.h2=this.h2+o<<0,this.h3=this.h3+i<<0,this.h4=this.h4+a<<0},Sha1.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,o=this.h4;return HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[15&o]},Sha1.prototype.toString=Sha1.prototype.hex,Sha1.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,o=this.h4;return[e>>24&255,e>>16&255,e>>8&255,255&e,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,o>>24&255,o>>16&255,o>>8&255,255&o]},Sha1.prototype.array=Sha1.prototype.digest,Sha1.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(20),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),e};var exports=createMethod();COMMON_JS?module.exports=exports:root.sha1=exports}()}));function generateFeishuSignature(e,t,r,n){var o={jsapi_ticket:e,noncestr:t,timestamp:r,url:n||"".concat(location.origin).concat(location.pathname).concat(location.search)},i=Object.keys(o).map((function(e){return"".concat(e,"=").concat(o[e])})).join("&");return logger(["飞书签名参数",i]),sha1(i)}function callFeishuIdentity(e){return new Promise((function(t,r){var n=setTimeout((function(){r("config timeout")}),5e3);window.h5sdk.error((function(e){console.error("config error",e),r(e)})),window.h5sdk.config(e).then((function(){clearTimeout(n),console.info("jssdk identity success",e.jsApiList),t(!0)})).catch((function(e){clearTimeout(n),console.error("identity error",e),r(e)}))}))}function identity(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"",a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,s=arguments.length>7&&void 0!==arguments[7]&&arguments[7];return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function c(){var u,l,p,f;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.prev=0,c.next=3,getTicket(e,t,a>0,o,s);case 3:return u=c.sent,l=(new Date).getTime(),p=base64.encode("".concat(e).concat(l)),f=generateFeishuSignature(u,p,l,i),logger(["callFeishuIdentity"]),c.next=10,callFeishuIdentity({appId:e,timestamp:l,nonceStr:p,signature:f,jsApiList:r});case 10:return"function"==typeof n&&n({success:!0}),c.abrupt("return",!0);case 14:if(c.prev=14,c.t0=c.catch(0),333449!=c.t0.errorCode){c.next=18;break}return c.abrupt("return",Promise.reject("当前用户无此应用权限【".concat(c.t0.errorMessage,"】")));case 18:if(!(a<=3)){c.next=21;break}return logger(["重新调用【config】",a,c.t0],"warn"),c.abrupt("return",identity(e,t,r,n,o,i,++a,a>1));case 21:return"function"==typeof n&&n({success:!1,error:c.t0}),c.abrupt("return",Promise.reject(c.t0));case 23:case"end":return c.stop()}}),c,null,[[0,14]])})))}var trim$2=stringTrim.trim,$parseInt=global_1.parseInt,Symbol$3=global_1.Symbol,ITERATOR$7=Symbol$3&&Symbol$3.iterator,hex=/^[+-]?0x/i,exec$3=functionUncurryThis(hex.exec),FORCED$3=8!==$parseInt(whitespaces+"08")||22!==$parseInt(whitespaces+"0x16")||ITERATOR$7&&!fails((function(){$parseInt(Object(ITERATOR$7))})),numberParseInt=FORCED$3?function(e,t){var r=trim$2(toString_1(e));return $parseInt(r,t>>>0||(exec$3(hex,r)?16:10))}:$parseInt;function browseFile(e){var t=e.fileType,r=void 0===t?"":t,n=e.data,o=void 0===n?{}:n,i=e.headers,a=void 0===i?{}:i,s=e.code,c=void 0===s?"":s,u=e.onProgress,l=e.method,p=void 0===l?"POST":l,f=e.isNewMethod,d=void 0===f||f,h=e.showMenu,g=void 0===h||h,y=e.native,v=void 0===y||y;if(a=Object.assign(Object.assign({"content-type":"application/json;charset=UTF-8",run3token:RunWorkH5.runWorkToken,"s-crc-ds-codes":c},RunWorkH5.ssdpDtgw.getRunworkStaticKeys()),a),["jpg","jpeg","png","gif"].includes(r.toLowerCase())||!1===v)return RunWorkH5.ssdpDtgw.request({code:c,headers:a,responseType:"blob",onDownloadProgress:u,data:o}).then((function(e){return e})).catch((function(e){return console.error(e),Promise.reject(e)}));var m=parseInt(RunWorkH5.appVersion.split(".").slice(0,2).join(""));return logger(["判断下载方式",RunWorkH5.appVersion,m]),openDocument({fileType:r,data:o,headers:a,onDownloadProgress:u,isNewMethod:!0===d&&m>=335,method:p,showMenu:g})}function openDocument(e){return e.isNewMethod?openDocumentBy335(e):openDocumentBy322(e)}function openDocumentBy335(e){var t=e.fileType,r=e.data,n=void 0===r?{}:r,o=e.headers,i=e.method,a=void 0===i?"POST":i,s=e.showMenu,c=void 0===s||s,u=e.onDownloadProgress;return clearFile(),new Promise((function(e,r){logger(["tt.downloadFile",a,o]),window.tt.downloadFile({url:RunWorkH5.ssdpDtgw.url,method:a,data:"object"===_typeof(n)?JSON.stringify(n):n,header:o,success:function(n){logger(["下载附件成功",n]),RunWorkH5.filePath.push(n.tempFilePath),window.tt.openDocument({filePath:n.tempFilePath,fileType:t,showMenu:c,success:function(t){e(),logger(["附件预览完成",t])},fail:function(e){r(e),logger(["附件预览失败",e],"error")}})},fail:function(e){r(e),logger(["下载附件失败",e],"error")}}).onProgressUpdate((function(e){"function"==typeof u&&u(e)}))}))}function openDocumentBy322(e){var t=e.fileType,r=e.data,n=void 0===r?{}:r,o=e.headers,i=e.method,a=void 0===i?"POST":i,s=e.onDownloadProgress;return jssdk("biz.util.openDocument",{method:a,fileType:t,body:"object"===_typeof(n)?JSON.stringify(n):n,header:o,url:RunWorkH5.ssdpDtgw.url,onProgress:s}).then((function(){return!0})).catch((function(e){return console.error(e),Promise.reject(e)}))}function clearFile(){if(0!==RunWorkH5.filePath.length)for(var e=function(){var e=RunWorkH5.filePath.pop();window.tt.removeSavedFile({filePath:e,success:function(){logger(["删除附件成功",e])},fail:function(t){logger(["删除附件失败:".concat(e),t],"error")}})};RunWorkH5.filePath.length>0;)e()}_export({global:!0,forced:parseInt!=numberParseInt},{parseInt:numberParseInt});var sitMockData={user:{open_id:"",external_token:"local",App_Sub_ID:"0000000303DM",App_Token:"6debaf0da23340daaac8659144ebed7a",App_key:"a59eacd0661d4ebb8a2b86aa02d2335f",Partner_ID:"00000000"},sys:{appVersion:"0.0.1",deviceID:"1A283E7B-F167-41E3-8974-493D57B74581",system:"local",platform:"local"}},uatMockData={user:{open_id:"",external_token:"local",App_Sub_ID:"0000000309OK",App_Token:"5643f1d9d86c43c9ae72069c243dbf86",App_key:"52e219166c7c41a68b490ac4efc22fa2",Partner_ID:"00000000"},sys:{appVersion:"1.0.0",deviceID:"1A283E7B-F167-41E3-8974-493D57B74581",system:"local",platform:"local"},network:{networkType:"local"}},preMockData={user:{open_id:"",external_token:void 0,App_Sub_ID:"0000000311VF",App_Token:"9472173cc8d5463fb6311db361c8a72f",App_key:"a48b2cb558de4093a2651d5da2c4c5fb",Partner_ID:"00000000"},sys:{appVersion:"0.0.1",deviceID:"1A283E7B-F167-41E3-8974-493D57B74581",system:"local",platform:"local"}},productionMockData={user:{open_id:"",external_token:void 0,App_Sub_ID:"0000000401RH",App_Token:"2bbc84f3bde54df488b4b0133989956c",App_key:"8c33a5babafd4f1197a6880a960ab91b",Partner_ID:"00000000"},sys:{appVersion:"0.0.1",deviceID:"1A283E7B-F167-41E3-8974-493D57B74581",system:"local",platform:"local"}};function mock(e){switch(e){case"sit":return sitMockData;case"uat":return uatMockData;case"pre":return preMockData;case"production":return productionMockData;default:return{}}}var HrInfoMode=_createClass((function e(t){var r=t.jobCodeDescr,n=t.fullPath,o=t.businessUnit,i=t.gender,a=t.avatarUrl,s=t.fullDescPath,c=t.deptId,u=t.employeeId,l=t.birthDate,p=t.nameFormal,f=t.join_time,d=t.nameAc,h=t.deptDesc,g=t.userType,y=t.email,v=t.seniorityPayDtMap,m=t.businessUnitDesc,b=t.mobilePhoneNumber,S=t.businessUnitDescShort;_classCallCheck(this,e),this.jobCodeDescr=r,this.fullPath=n,this.businessUnit=o,this.gender=i,this.avatarUrl=a,this.fullDescPath=s,this.deptId=c,this.employeeId=u,this.birthDate=l,this.nameFormal=p,this.join_time=f,this.nameAc=d,this.deptDesc=h,this.userType=g,this.email=y,this.seniorityPayDtMap=v,this.businessUnitDesc=m,this.mobilePhoneNumber=b,this.businessUnitDescShort=S})),IndexedDB=function(){function e(t){var r=t.dbname,n=void 0===r?"":r,o=t.onupgradeneeded,i=void 0===o?void 0:o,a=t.version,s=void 0===a?1:a;_classCallCheck(this,e),this.dbname=n,this.version=s,this.onupgradeneeded=i,this.init()}return _createClass(e,[{key:"init",value:function(){var e=this;if(!("indexedDB"in window))throw this.error="当前环境不支持 indexedDB",Error(this.error);return new Promise((function(t,r){e.DBRequestLink=window.indexedDB.open(e.dbname,e.version),e.DBRequestLink.onsuccess=function(r){e.DBInstance=r.target.result,e.isReady=!0,t(r)},e.DBRequestLink.onerror=function(t){console.error("indexedDB open error",t),e.error=t,r(t)},e.DBRequestLink.onupgradeneeded=e.onupgradeneeded}))}},{key:"initReady",value:function(){var e=this;return this.isReady?Promise.resolve(this.DBInstance):this.error?Promise.reject(this.error):new Promise((function(t,r){var n=0,o=setInterval((function(){e.isReady||n>=6?(clearInterval(o),e.isReady?t(e.DBInstance):r("IndexedDB init time out")):e.error&&(r(e.error),clearInterval(o)),n++}),100)}))}}]),e}();function get$1(e,t){return new Promise((function(r,n){var o=e[t?"get":"getAll"](t);o.onsuccess=function(e){r(e.target.result)},o.onerror=function(e){n(e)}}))}function put(e,t){return new Promise((function(r,n){var o=e.put(t);o.onsuccess=function(e){r(e)},o.onerror=function(e){n(e)}}))}var SSDPDtgw=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"test";_classCallCheck(this,e),this.env=t,this.url=getConstant("ssdp.dtgw.".concat(this.getEnv()))}return _createClass(e,[{key:"request",value:function(e){var t=e.code,r=e.data,n=e.headers,o=e.responseType,i=void 0===o?"json":o,a=e.timeout,s=e.method,c=void 0===s?"post":s,u=e.params,l=e.onUploadProgress,p=e.onDownloadProgress;return request({url:this.url,data:r,method:c,params:u,headers:Object.assign(Object.assign({"s-crc-ds-codes":t,run3token:RunWorkH5.runWorkToken},this.getRunworkStaticKeys()),n),timeout:a,onUploadProgress:l,onDownloadProgress:p,responseType:i})}},{key:"getRunworkStaticKeys",value:function(){return getConstant("ssdp.dtgw.runwork.".concat(this.env))}},{key:"getEnv",value:function(){switch(this.env){case"production":return"production";default:return"test"}}},{key:"generateUrlParam",value:function(e){return""}}]),e}(),Factory=_createClass((function e(){_classCallCheck(this,e)}));function getIndexedDB(){return Factory.indexedDB||(console.info("实例化 indexedDB"),Factory.indexedDB=new IndexedDB({dbname:getConstant("cacheKeys.indexeddb.name"),version:getConstant("cacheKeys.indexeddb.version"),onupgradeneeded:function(e){console.info("indexedDB onupgradeneeded");var t,r=e.target.result,n=_createForOfIteratorHelper(getConstant("h5DB"));try{for(n.s();!(t=n.n()).done;){var o=t.value,i=o.name,a=o.store,s=o.index;r.objectStoreNames.contains(i)&&r.deleteObjectStore(i);var c,u=r.createObjectStore(i,a),l=_createForOfIteratorHelper(s);try{for(l.s();!(c=l.n()).done;){var p=c.value;u.createIndex(p,p)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){n.e(e)}finally{n.f()}}})),Factory.indexedDB}function getSsdpCls(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"sit";return Factory.ssdpCls||(Factory.ssdpCls=new SSDPCls(e)),Factory.ssdpCls}function getSsdpDtgw(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"test";return Factory.ssdpDtgw||(Factory.ssdpDtgw=new SSDPDtgw(e)),Factory.ssdpDtgw}function getTenantAccessToken(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function o(){var i,a,s,c,u,l,p,f,d,h,g;return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(i="".concat(getConstant("cacheKeys.localStorage.feishu.tenantAccessToken"),"_").concat(e),!0===r&&(logger("清空【TenantAccessToken】缓存"),localStorage.setItem(i,"")),a=localStorage.getItem(i),s=a?JSON.parse(a):void 0,!((c="object"===_typeof(s)?s.expire-(new Date).getTime():-1)>9e4)){o.next=8;break}return logger(["从缓存获取【TenantAccessToken】",c]),o.abrupt("return",s.value);case 8:return u=getConstant("ssdp.api.".concat(RunWorkH5.env,".gettoken")),l=u.api,p=u.version,console.info("TenantAccessToken",n,n||(RunWorkH5.isPrivate?"2.0":p)),o.next=12,RunWorkH5.ssdpCls.request({method:"POST",api:l,version:n||(RunWorkH5.isPrivate?"2.0":p),headers:{"Access-Control-Expose-Headers":"RETURN_CODE"},data:JSON.stringify({app_id:e,app_secret:t})});case 12:return f=o.sent,d=f.data,f.headers,h=d.tenant_access_token,d.code,d.msg,g=d.expire,localStorage.setItem(i,JSON.stringify({expire:(new Date).getTime()+1e3*g,value:h})),o.abrupt("return",h);case 18:case"end":return o.stop()}}),o)})))}Factory.getIndexedDB=getIndexedDB,Factory.getSsdpCls=getSsdpCls,Factory.getSsdpDtgw=getSsdpDtgw;var RunWorkH5=function(e){_inherits(r,e);var t=_createSuper(r);function r(e){var n;_classCallCheck(this,r),(n=t.call(this,e)).ready=!1,n.isJssdkReady=!1,n.browseFile=browseFile,r.ssdpCls=Factory.getSsdpCls(r.env),r.ssdpDtgw=Factory.getSsdpDtgw(r.env),r.isPrivate=e.isPrivate,n.ssdpRequestCls=r.ssdpCls.request.bind(r.ssdpCls),n.ssdpRequestDtgw=r.ssdpDtgw.request.bind(r.ssdpDtgw);var o=(new Date).getTime();return n.init().then((function(e){if(!1!==e){localStorage.removeItem("RELOAD_SSO_COUNT");var t=e.ldap,r=e.hrInfo;logger(["初始化完成",t]),n.ready=!0,n.ldap=t,r&&(n.hrInfo=new HrInfoMode(r)),!0===n.isJssdkAuth&&(n.run3track({category:"runwork-single-loign",action:"init",value:(new Date).getTime()-o}),n.onNetworkQualityChange()),n.callCacheTrackFail()}})).catch((function(e){n.ready=!1,n.error=e,logger(n.error,"error"),e="object"===_typeof(e)?JSON.stringify(e):e,n.setCacheTrackFail({type:"error",category:"runwork-help init error",action:"request",data:{errorInfo:e},networkResend:1})})),n}return _createClass(r,[{key:"init",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,o,i,a,s,c,u,l,p,f,d,h,g,y,v,m,b,S,E,_,T,I;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.checkOption()){e.next=2;break}return e.abrupt("return",Promise.reject(this.error));case 2:if(this.runWorkToken=this.getRunWorkToken(),this.runWorkToken||1!=this.isLocal){e.next=10;break}return e.next=6,this.createDebugJwttoken(this.devUser);case 6:t=e.sent,this.runWorkToken=t,e.next=13;break;case 10:if(this.runWorkToken){e.next=13;break}return e.next=13,this.redirectFeishu();case 13:return r.runWorkToken=this.runWorkToken,n={},e.prev=15,e.next=18,this.getSSOUserInfo();case 18:n=e.sent,e.next=26;break;case 21:return e.prev=21,e.t0=e.catch(15),console.error(e.t0),e.next=26,this.redirectFeishu(e.t0);case 26:if(i=(o=n).access_token,a=o.avatar_thumb,s=o.avatar_url,c=o.avatar_big,u=o.user_id,l=o.name,p=o.en_name,f=o.open_id,d=o.App_Sub_ID,h=o.Partner_ID,g=o.App_key,y=o.App_Token,d){e.next=29;break}return e.abrupt("return",Promise.reject({error:"App_Sub_ID is undefined",message:JSON.stringify(n)}));case 29:if(this.user={access_token:i,avatar_thumb:a,avatar_url:s,avatar_big:c,user_id:u,name:l,en_name:p,open_id:f},!0!==this.isJssdkAuth){e.next=34;break}return e.next=33,this.getBaseInfoByNative();case 33:v=e.sent;case 34:return logger(["getBaseInfoByNative",v],"info"),b=(m=v||{}).appVersion,S=m.deviceID,E=m.system,_=m.platform,T=m.model,r.sysInfo={deviceID:S,platform:_,model:T,system:E},r.appVersion=b,this.ssdpApp=new SSDPApp(Object.assign({App_ID:"002601",App_Sub_ID:d,App_Token:y,App_key:g,App_Version:b,Partner_ID:h,Divice_ID:S,Divice_Version:E,OS_Version:_,User_Token:"-"},this.SSDPConfig),r.getEnv(),this.isLogin),e.next=41,this.ssdpApp.init();case 41:if(logger(["ssdpApp 初始化完成"]),!this.isHrInfo||this.isLogin){e.next=47;break}return logger(["获取用户Hr信息"]),e.next=46,this.getHrInfo(u);case 46:I=e.sent;case 47:return e.abrupt("return",{ldap:u,hrInfo:I});case 48:case"end":return e.stop()}}),e,this,[[15,21]])})))}},{key:"initReady",value:function(){var e=this;return this.ready?Promise.resolve():this.error?Promise.reject(this.error):new Promise((function(t,r){var n=0,o=setInterval((function(){e.error&&(logger(["初始化失败",e.error],"error"),clearInterval(o),r(e.error)),(e.ready||n>=300)&&(logger(["初始化结束",e.ready,e.error]),clearInterval(o),!e.ready&&logger("初始化超时","error"),e.ready?t():r("初始化超时,请稍后重试")),n++}),100)}))}},{key:"jssdkReady",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isJssdkReady){e.next=4;break}return e.abrupt("return",!0);case 4:if(!this.jssdkIdentityError){e.next=7;break}return logger(["jssdk鉴权失败",this.jssdkIdentityError],"error"),e.abrupt("return",Promise.reject(this.jssdkIdentityError));case 7:return e.abrupt("return",new Promise((function(e,r){var n=0,o=setInterval((function(){t.jssdkIdentityError&&(clearInterval(o),r(t.jssdkIdentityError)),(t.isJssdkReady||n>=50)&&(clearInterval(o),logger(["jssdk鉴权结束",t.isJssdkReady]),t.isJssdkReady?e():r("jssdk鉴权超时")),n++}),300)})));case 8:case"end":return e.stop()}}),e,this)})))}},{key:"ssdpRequestApp",value:function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function n(){var o,i,a,s,c,u,l,p,f,d,h,g,y,v,m,b,S,E,_,T,I=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=e.api,i=e.version,a=e.data,s=void 0===a?{}:a,c=e.headers,u=void 0===c?{}:c,l=e.isFormatData,p=void 0===l||l,f=e.type,d=void 0===f?"rs":f,h=e.method,g=void 0===h?"POST":h,y=e.params,v=void 0===y?{}:y,n.next=3,this.ssdpApp.request(Object.assign(Object.assign({},e),{api:o,version:i,data:s,headers:Object.assign({run3token:this.runWorkToken},u),isFormatData:p,method:g,type:d,params:v})).catch((function(t){var r;return!1===(null===(r=e.api)||void 0===r?void 0:r.includes("run3_track"))&&I.run3track({type:"error",category:"runwork-request-ecsb",action:"request",data:{pageOverTime:o,errorInfo:"object"===_typeof(t)?JSON.stringify(t):t}}),Promise.reject(t)}));case 3:if(m=n.sent,b=m.data,!1!==p){n.next=7;break}return n.abrupt("return",m);case 7:if(S=b.RESPONSE,E=S.RETURN_CODE,_=S.RETURN_DESC,T=S.RETURN_DATA,("E0MI0007"===E||"string"==typeof _&&~_.indexOf("User_Token"))&&r<=3&&logger(["请关闭ecsb服务用户身份校验"],"warn"),"resolve"!==("S"===E.charAt(0)||"MS000A000"===E?"resolve":"reject")){n.next=14;break}return n.abrupt("return",Promise.resolve({RETURN_CODE:E,RETURN_DESC:_,RETURN_DATA:T}));case 14:return!1===(null===(t=e.api)||void 0===t?void 0:t.includes("run3_track"))&&(logger(["请求ecsb服务异常",b.RESPONSE],"error"),this.run3track({type:"error",category:"runwork-request-ecsb",action:"request",data:{pageOverTime:o,errorInfo:JSON.stringify(b.RESPONSE)}})),n.abrupt("return",Promise.reject({RETURN_CODE:E,RETURN_DESC:_,RETURN_DATA:T,api:o,common:this.ssdpApp.config}));case 16:case"end":return n.stop()}}),n,this)})))}},{key:"getBaseInfoByNative",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,o,i,a=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isLocal){e.next=3;break}return t=mock(r.env),n=t.sys,e.abrupt("return",Promise.resolve(n));case 3:return e.next=5,this.getBaseInfoByCache();case 5:if(o=e.sent,i=null==o.appVersion,logger(["从缓存中获取系统信息",o]),logger(["是否启用异步鉴权",!i]),!i){e.next=21;break}return e.prev=10,e.next=13,identity(this.appId,this.appSecret,this.jsApiList);case 13:this.isJssdkReady=!0,e.next=19;break;case 16:return e.prev=16,e.t0=e.catch(10),e.abrupt("return",Promise.reject(e.t0));case 19:e.next=22;break;case 21:identity(this.appId,this.appSecret,this.jsApiList,(function(e){var t=e.success,r=e.error;a.isJssdkReady=t,a.jssdkIdentityError=r}));case 22:return e.abrupt("return",1==i?this.getSystemInfo():Promise.resolve(o));case 23:case"end":return e.stop()}}),e,this,[[10,16]])})))}},{key:"getSystemInfo",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=0,jssdk("device.base.getSystemInfo").then((function(e){n=e})),o=(new Date).getTime(),e.abrupt("return",new Promise((function(e,i){var a=setInterval((function(){(new Date).getTime()-o>1e3&&null==n?(++t,o=(new Date).getTime(),logger(["重新调用【getSystemInfo】",t],"warn"),jssdk("device.base.getSystemInfo").then((function(e){n=e})).catch((function(e){clearInterval(a),i(e)}))):t>3&&!n?(clearInterval(a),i("device.base.getSystemInfo timeout")):n&&(clearInterval(a),r.isIndexedDB&&Factory.getIndexedDB().initReady().then((function(e){var t=getConstant("cacheKeys.indexeddb.store.sys"),r=e.transaction(t,"readwrite").objectStore(t);logger(["getSystemInfo",n]),put(r,Object.assign(Object.assign({},n),{id:t}))})).catch((function(e){logger(["更新IndexedDB【sys】失败",e],"warn")})),e(n))}),50)})));case 4:case"end":return e.stop()}}),e)})))}},{key:"getUserInfoEx",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=0,jssdk("biz.user.getUserInfoEx").then((function(e){n=e})),o=(new Date).getTime(),e.abrupt("return",new Promise((function(e,i){var a=setInterval((function(){(new Date).getTime()-o>1e3&&null==n?(++t,o=(new Date).getTime(),logger(["重新调用【getUserInfoEx】",t],"warn"),jssdk("biz.user.getUserInfoEx").then((function(e){n=e})).catch((function(e){clearInterval(a),i(e)}))):t>3&&!n?(clearInterval(a),i("biz.user.getUserInfoEx timeout")):n&&(clearInterval(a),r.isIndexedDB&&Factory.getIndexedDB().initReady().then((function(e){var t=getConstant("cacheKeys.indexeddb.store.user"),r=e.transaction(t,"readwrite").objectStore(t);logger(["getUserInfoEx",n]),put(r,Object.assign(Object.assign({},n),{id:t}))})).catch((function(e){logger(["更新IndexedDB【UserInfoEx】失败",e],"warn")})),e(n))}),50)})));case 4:case"end":return e.stop()}}),e)})))}},{key:"getBaseInfoByCache",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,o,i,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r.isIndexedDB){e.next=3;break}return logger(["不启用缓存获取系统信息(不支持 IndexedDB)"],"warn"),e.abrupt("return",Promise.resolve());case 3:return e.prev=3,t=getConstant("cacheKeys.indexeddb.store.sys"),e.next=7,Factory.getIndexedDB().initReady();case 7:return n=e.sent,o=n.transaction([t],"readwrite"),i=o.objectStore(t),e.next=12,get$1(i,t);case 12:return a=e.sent,e.abrupt("return",a||{});case 16:return e.prev=16,e.t0=e.catch(3),e.abrupt("return",Promise.resolve({}));case 19:case"end":return e.stop()}}),e,null,[[3,16]])})))}},{key:"getHrInfo",value:function(e){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,o,i,a,s,c,u,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getHrInfoByCache(e);case 2:if(logger(["getHrInfoByCache",n=t.sent]),!n){t.next=6;break}return t.abrupt("return",new HrInfoMode(n));case 6:return t.next=8,this.ssdpRequestApp(Object.assign(Object.assign({},getConstant("ssdp.api.".concat(r.env,".hrInfo"))),{headers:{appid:this.appId},data:{BUS_DATA:base64.encode(JSON.stringify({ldap:e,isRequireAvatar:!0===this.isAvatar?"1":"0"}))}}));case 8:if(o=t.sent,i=o.RETURN_DATA,(a=new HrInfoMode(JSON.parse(base64.decode(i)))).employeeId){t.next=13;break}return t.abrupt("return",a);case 13:return t.prev=13,t.next=16,Factory.getIndexedDB().initReady();case 16:s=t.sent,c=getConstant("cacheKeys.indexeddb.store.hrInfo"),u=s.transaction(c,"readwrite"),l=u.objectStore(c),e&&(logger(["更新 HrInfo",a]),put(l,Object.assign(Object.assign({},a),{id:e,expires:(new Date).getTime()+864e5}))),t.next=26;break;case 23:t.prev=23,t.t0=t.catch(13),logger(["更新IndexedDB【hrInfo】失败",t.t0],"warn");case 26:return t.abrupt("return",a);case 27:case"end":return t.stop()}}),t,this,[[13,23]])})))}},{key:"getHrInfoByCache",value:function(e){if(logger(["从缓存中获取Hr信息"]),!r.isIndexedDB||!1===this.isHrInfoCache||!this.domain.includes(location.origin))return Promise.resolve();var t=getConstant("cacheKeys.indexeddb.store.hrInfo");return logger(["从缓存中获取Hr信息 storeKey",t]),Factory.getIndexedDB().initReady().then((function(r){logger(["从缓存中获取Hr信息 db",r]);var n=r.transaction(t,"readwrite");logger(["从缓存中获取Hr信息 transaction",n]);var o=n.objectStore(t);return logger(["从缓存中获取Hr信息 store",o]),get$1(o,e)})).then((function(e){if(logger(["从缓存中获取Hr信息 res",e]),!e)return Promise.resolve();var t=e.expires-(new Date).getTime();return logger(["HrInfo 缓存有效期",t/1e3/60/60]),Promise.resolve(t>0?e:void 0)})).catch((function(e){return logger(["获取IndexedDB【getHrInfoByCache】失败",e],"warn"),Promise.resolve()}))}},{key:"getAvatarAuthByUserId",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ldap";return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function o(){return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.abrupt("return",this.getAvatarByUserId(e,t,r,n,!0));case 1:case"end":return o.stop()}}),o,this)})))}},{key:"getAvatarByUserId",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ldap",i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function a(){var s,c,u,l,p,f,d,h,g,y,v;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this.getAvatarByCache(e,n);case 2:if(s=a.sent,c=s.includes,0!==s.exclusion.length){a.next=7;break}return a.abrupt("return",c);case 7:for(u=Math.ceil(e.length/t),l=[],p=1;p<=u;p++)f=(p-1)*t,l.push(this.ssdpRequestApp(Object.assign(Object.assign({},getConstant("ssdp.api.".concat(r.env,".").concat(!0===i?"avatarAuth":"avatar"))),{data:{BUS_DATA:base64.encode(JSON.stringify(_defineProperty({},o,e.slice(f,f+t))))}})));return a.next=12,Promise.all(l);case 12:d=a.sent,h=[],g=_createForOfIteratorHelper(d);try{for(g.s();!(y=g.n()).done;)v=y.value,h=h.concat(JSON.parse(base64.decode(v.RETURN_DATA)))}catch(e){g.e(e)}finally{g.f()}return this.addAvatarCache(h),a.abrupt("return",c.concat(h));case 18:case"end":return a.stop()}}),a,this)})))}},{key:"getAvatarByEmail",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.getAvatarByUserId(e,t,r,"emailList")}},{key:"addAvatarCache",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=getConstant("cacheKeys.indexeddb.store.avatar");Factory.getIndexedDB().initReady().then((function(r){for(var n=r.transaction(t,"readwrite").objectStore(t),o=0;o0&&void 0!==arguments[0]?arguments[0]:[],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!1===t)return Promise.resolve({includes:[],exclusion:e});var r=getConstant("cacheKeys.indexeddb.store.avatar");return Factory.getIndexedDB().initReady().then((function(e){return get$1(e.transaction(r,"readwrite").objectStore(r))})).then((function(t){if(!t)return Promise.resolve({exclusion:[]});for(var r=[],n=[],o=function(o){var i=e[o],a=t.findIndex((function(e){return e.id===i})),s=~a?t[a]:void 0;s&&s.expires-(new Date).getTime()>0?r.push(Object.assign(Object.assign({},s),{account:s.id})):n.push(i)},i=0;i=3)){t.next=3;break}return t.abrupt("return",Promise.reject("超过最大重试次数 - ".concat("object"===_typeof(e)?JSON.stringify(e):e)));case 3:return localStorage.setItem("RELOAD_SSO_COUNT",JSON.stringify({count:++n,time:(new Date).getTime()})),o=location.href,location.replace("https://open.rwork.crc.com.cn/open-apis/authen/v1/index?redirect_uri=".concat(encodeURIComponent(getConstant("feishu.redirectUrl.".concat(r.env))),"&app_id=").concat(this.appId,"&state=").concat(base64.encode(JSON.stringify({url:o,appCode:this.appId,larkexpires:this.larkexpires,isCross:this.isCross})))),t.next=8,sleep(6e4);case 8:case"end":return t.stop()}}),t,this)})))}},{key:"getReloadSSOCount",value:function(){try{var e=JSON.parse(localStorage.getItem("RELOAD_SSO_COUNT")||"{}"),t=e.count,r=e.time,n=void 0===r?0:r;return(new Date).getTime()-n>15e3?(localStorage.removeItem("RELOAD_SSO_COUNT"),0):t}catch(e){return localStorage.removeItem("RELOAD_SSO_COUNT"),0}}},{key:"getSSOUserInfo",value:function(){return request({url:getConstant("apis.getSSOUserInfo.".concat(r.env)),method:"GET",headers:{run3token:this.runWorkToken,appCode:this.appId}}).then((function(e){var t=e.data,r=t.RESPONSE,n=r.RETURN_CODE,o=(r.RETURN_DESC,r.RETURN_DATA);return"S0A00000"!==n?Promise.reject(t):Promise.resolve(o)})).catch((function(e){return Promise.reject(e)}))}},{key:"createDebugJwttoken",value:function(e){return request({url:getConstant("apis.createDebugJwttoken.".concat(r.env)),method:"GET",headers:{ldap:e,appCode:this.appId}}).then((function(e){var t=e.data,r=t.RESPONSE,n=r.RETURN_CODE,o=r.RETURN_DATA;return"S0A00000"!==n?Promise.reject(t):Promise.resolve(o.run3token)}))}},{key:"getNetworkType",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,o,i,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=0,!this.isLocal){e.next=4;break}return o=mock(r.env),i=o.network,e.abrupt("return",Promise.resolve(i));case 4:return jssdk("device.connection.getNetworkType").then((function(e){n=e})),a=(new Date).getTime(),e.abrupt("return",new Promise((function(e,o){var i=setInterval((function(){(new Date).getTime()-a>1e3&&null==n?(++t,a=(new Date).getTime(),logger(["重新调用【getNetworkType】",t],"warn"),jssdk("device.connection.getNetworkType").then((function(e){n=e})).catch((function(e){clearInterval(i),o(e)}))):t>3&&!n?(clearInterval(i),o("device.connection.getNetworkType timeout")):n&&(clearInterval(i),r.isIndexedDB&&Factory.getIndexedDB().initReady().then((function(e){var t=getConstant("cacheKeys.indexeddb.store.network"),r=e.transaction(t,"readwrite").objectStore(t);logger(["getNetworkType",n]),put(r,Object.assign(Object.assign({},n),{id:t}))})).catch((function(e){logger(["更新IndexedDB【sys】失败",e],"warn")})),e(n))}),50)})));case 7:case"end":return e.stop()}}),e,this)})))}},{key:"run3track",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,o,i,a,s,c,u,l,p,f,d,h,g,y,v=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(logger(["调用埋点",e.type]),"sit"!==r.env){t.next=3;break}return t.abrupt("return");case 3:if(n={},1===e.networkResend)n=e;else{o=navigator&&navigator.userAgent?isBroswer():{},i=e.type,a=void 0===i?"log":i,s=e.namespace,c=void 0===s?"runwork":s,u=this.appId,l=this.ldap,p=this.hrInfo,f=r.sysInfo||{},d=f.deviceID,h=f.platform,g=f.system;try{y=navigator.connection.effectiveType,o=navigator&&navigator.userAgent?isBroswer():{}}catch(e){y="",o={}}n=Object.assign({type:a||"log",namespace:c||"runwork",appId:u,userId:l,url:location.href,orgId:p?p.deptId:"",buName:p?p.businessUnitDesc:"",deviceType:h,deviceId:d,deviceVersion:g,clientVersion:r.appVersion,ipAddress:"",activityTime:getTimeStamp(new Date,"yyyy-MM-dd hh:mm:ss",!1),browser:o.name,browserVersion:o.version,networkType:y},e)}return logger(["run3track埋点参数",n]),t.abrupt("return",this.ssdpRequestApp(Object.assign(Object.assign({},getConstant("ssdp.api.".concat(r.env,".run3track"))),{data:n})).then((function(e){return Promise.resolve(e)})).catch((function(t){return logger(["埋点 fail",t],"error"),"object"===_typeof(t)&&"string"==typeof t.message&&(t=t.message),v.setCacheTrackFail(Object.assign(Object.assign({},n),{type:"error",category:"runwork-request-ecsb",action:"request",data:{pageOverTime:e.api,errorInfo:"object"===_typeof(t)?JSON.stringify(t):t},networkResend:1})),Promise.reject(t)})));case 7:case"end":return t.stop()}}),t,this)})))}},{key:"setCacheTrackFail",value:function(e){var t=[];try{t=JSON.parse(localStorage.getItem("RUNWORK_TRACK_FAIL")||"[]")}catch(e){t=[]}t.push(e),localStorage.setItem("RUNWORK_TRACK_FAIL",JSON.stringify(t))}},{key:"callCacheTrackFail",value:function(){var e;try{e=JSON.parse(localStorage.getItem("RUNWORK_TRACK_FAIL")||"[]")}catch(t){e=[]}if(e.length>0)for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"sit",r=arguments.length>1?arguments[1]:void 0;_classCallCheck(this,e),this.url=getConstant("ssdp.cls.".concat("production"===t?"production":"test")),this.env=t,this.commonParam=r?Object.assign({},r):Object.assign({},getConstant("ssdp.cls.runwork.".concat(this.env)))}return _createClass(e,[{key:"request",value:function(e){var t=e.api,r=void 0===t?"":t,n=e.version,o=void 0===n?"":n,i=e.data,a=void 0===i?"":i,s=e.params,c=void 0===s?{}:s,u=e.headers,l=void 0===u?{}:u,p=e.method,f=void 0===p?"GET":p;return request({url:"".concat(this.url,"?ssdp=").concat(this.generateUrlParam(Object.assign({Api_ID:r,Api_Version:o,Sign:"NO_SIGN",User_Token:"null",Time_Stamp:getTimeStamp()},this.commonParam))),method:f,params:c,headers:Object.assign({run3token:RunWorkH5.runWorkToken},l),data:a})}},{key:"generateUrlParam",value:function(e){return base64.encode(Object.keys(e).map((function(t){return"".concat(t,"=").concat(e[t])})).join("&"))}},{key:"setSysOption",value:function(e){var t=e.App_Sub_ID,r=e.App_Token,n=e.Partner_ID,o=e.Sys_ID;this.App_Sub_ID=t,this.App_Token=r,this.Partner_ID=n,this.Sys_ID=o}}]),e}();exports.RunWorkH5=RunWorkH5,exports.SSDPApp=SSDPApp,exports.SSDPCls=SSDPCls,exports.SSDPDtgw=SSDPDtgw,exports.base64=base64,exports.identity=identity,exports.isIphonex=isIphonex,exports.jssdk=jssdk,Object.defineProperty(exports,"__esModule",{value:!0})})); diff --git a/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/vconsole.min.js b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/vconsole.min.js new file mode 100644 index 0000000..a0d85a5 --- /dev/null +++ b/src/main/resources/com/fr/plugin/third/party/jsdjjed/sdk/vconsole.min.js @@ -0,0 +1,10 @@ +/*! + * vConsole v3.14.6 (https://github.com/Tencent/vConsole) + * + * Tencent is pleased to support the open source community by making vConsole available. + * Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ +!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("VConsole",[],n):"object"==typeof exports?exports.VConsole=n():t.VConsole=n()}(this||self,(function(){return function(){var __webpack_modules__={4264:function(t,n,e){t.exports=e(7588)},5036:function(t,n,e){e(1719),e(5677),e(6394),e(5334),e(6969),e(2021),e(8328),e(2129);var r=e(1287);t.exports=r.Promise},2582:function(t,n,e){e(1646),e(6394),e(2004),e(462),e(8407),e(2429),e(1172),e(8288),e(1274),e(8201),e(6626),e(3211),e(9952),e(15),e(9831),e(7521),e(2972),e(6956),e(5222),e(2257);var r=e(1287);t.exports=r.Symbol},8257:function(t,n,e){var r=e(7583),o=e(9212),i=e(5637),a=r.TypeError;t.exports=function(t){if(o(t))return t;throw a(i(t)+" is not a function")}},1186:function(t,n,e){var r=e(7583),o=e(2097),i=e(5637),a=r.TypeError;t.exports=function(t){if(o(t))return t;throw a(i(t)+" is not a constructor")}},9882:function(t,n,e){var r=e(7583),o=e(9212),i=r.String,a=r.TypeError;t.exports=function(t){if("object"==typeof t||o(t))return t;throw a("Can't set "+i(t)+" as a prototype")}},6288:function(t,n,e){var r=e(3649),o=e(3590),i=e(4615),a=r("unscopables"),c=Array.prototype;null==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},4761:function(t,n,e){var r=e(7583),o=e(2447),i=r.TypeError;t.exports=function(t,n){if(o(n,t))return t;throw i("Incorrect invocation")}},2569:function(t,n,e){var r=e(7583),o=e(794),i=r.String,a=r.TypeError;t.exports=function(t){if(o(t))return t;throw a(i(t)+" is not an object")}},5766:function(t,n,e){var r=e(2977),o=e(6782),i=e(1825),a=function(t){return function(n,e,a){var c,u=r(n),s=i(u),l=o(a,s);if(t&&e!=e){for(;s>l;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((t||l in u)&&u[l]===e)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},4805:function(t,n,e){var r=e(2938),o=e(7386),i=e(5044),a=e(1324),c=e(1825),u=e(4822),s=o([].push),l=function(t){var n=1==t,e=2==t,o=3==t,l=4==t,f=6==t,d=7==t,v=5==t||f;return function(p,h,g,m){for(var _,b,y=a(p),w=i(y),E=r(h,g),L=c(w),T=0,O=m||u,C=n?O(p,L):e||d?O(p,0):void 0;L>T;T++)if((v||T in w)&&(b=E(_=w[T],T,y),t))if(n)C[T]=b;else if(b)switch(t){case 3:return!0;case 5:return _;case 6:return T;case 2:s(C,_)}else switch(t){case 4:return!1;case 7:s(C,_)}return f?-1:o||l?l:C}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},9269:function(t,n,e){var r=e(6544),o=e(3649),i=e(4061),a=o("species");t.exports=function(t){return i>=51||!r((function(){var n=[];return(n.constructor={})[a]=function(){return{foo:1}},1!==n[t](Boolean).foo}))}},4546:function(t,n,e){var r=e(7583),o=e(6782),i=e(1825),a=e(5999),c=r.Array,u=Math.max;t.exports=function(t,n,e){for(var r=i(t),s=o(n,r),l=o(void 0===e?r:e,r),f=c(u(l-s,0)),d=0;s0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),t.exports=o},5690:function(t){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},1178:function(t,n,e){var r=e(6544),o=e(4677);t.exports=!r((function(){var t=Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)}))},7263:function(t,n,e){var r=e(7583),o=e(6683).f,i=e(57),a=e(1270),c=e(460),u=e(3478),s=e(4451);t.exports=function(t,n){var e,l,f,d,v,p=t.target,h=t.global,g=t.stat;if(e=h?r:g?r[p]||c(p,{}):(r[p]||{}).prototype)for(l in n){if(d=n[l],f=t.noTargetGet?(v=o(e,l))&&v.value:e[l],!s(h?l:p+(g?".":"#")+l,t.forced)&&void 0!==f){if(typeof d==typeof f)continue;u(d,f)}(t.sham||f&&f.sham)&&i(d,"sham",!0),a(e,l,d,t)}}},6544:function(t){t.exports=function(t){try{return!!t()}catch(t){return!0}}},1611:function(t,n,e){var r=e(8987),o=Function.prototype,i=o.apply,a=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},2938:function(t,n,e){var r=e(7386),o=e(8257),i=e(8987),a=r(r.bind);t.exports=function(t,n){return o(t),void 0===n?t:i?a(t,n):function(){return t.apply(n,arguments)}}},8987:function(t,n,e){var r=e(6544);t.exports=!r((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},8262:function(t,n,e){var r=e(8987),o=Function.prototype.call;t.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},4340:function(t,n,e){var r=e(8494),o=e(2870),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,c=o(i,"name"),u=c&&"something"===function(){}.name,s=c&&(!r||r&&a(i,"name").configurable);t.exports={EXISTS:c,PROPER:u,CONFIGURABLE:s}},7386:function(t,n,e){var r=e(8987),o=Function.prototype,i=o.bind,a=o.call,c=r&&i.bind(a,a);t.exports=r?function(t){return t&&c(t)}:function(t){return t&&function(){return a.apply(t,arguments)}}},5897:function(t,n,e){var r=e(7583),o=e(9212),i=function(t){return o(t)?t:void 0};t.exports=function(t,n){return arguments.length<2?i(r[t]):r[t]&&r[t][n]}},8272:function(t,n,e){var r=e(3058),o=e(911),i=e(339),a=e(3649)("iterator");t.exports=function(t){if(null!=t)return o(t,a)||o(t,"@@iterator")||i[r(t)]}},6307:function(t,n,e){var r=e(7583),o=e(8262),i=e(8257),a=e(2569),c=e(5637),u=e(8272),s=r.TypeError;t.exports=function(t,n){var e=arguments.length<2?u(t):n;if(i(e))return a(o(e,t));throw s(c(t)+" is not iterable")}},911:function(t,n,e){var r=e(8257);t.exports=function(t,n){var e=t[n];return null==e?void 0:r(e)}},7583:function(t,n,e){var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e.g&&e.g)||function(){return this}()||Function("return this")()},2870:function(t,n,e){var r=e(7386),o=e(1324),i=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,n){return i(o(t),n)}},4639:function(t){t.exports={}},2716:function(t,n,e){var r=e(7583);t.exports=function(t,n){var e=r.console;e&&e.error&&(1==arguments.length?e.error(t):e.error(t,n))}},482:function(t,n,e){var r=e(5897);t.exports=r("document","documentElement")},275:function(t,n,e){var r=e(8494),o=e(6544),i=e(6668);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},5044:function(t,n,e){var r=e(7583),o=e(7386),i=e(6544),a=e(9624),c=r.Object,u=o("".split);t.exports=i((function(){return!c("z").propertyIsEnumerable(0)}))?function(t){return"String"==a(t)?u(t,""):c(t)}:c},9734:function(t,n,e){var r=e(7386),o=e(9212),i=e(1314),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},4402:function(t,n,e){var r=e(794),o=e(57);t.exports=function(t,n){r(n)&&"cause"in n&&o(t,"cause",n.cause)}},2743:function(t,n,e){var r,o,i,a=e(9491),c=e(7583),u=e(7386),s=e(794),l=e(57),f=e(2870),d=e(1314),v=e(9137),p=e(4639),h="Object already initialized",g=c.TypeError,m=c.WeakMap;if(a||d.state){var _=d.state||(d.state=new m),b=u(_.get),y=u(_.has),w=u(_.set);r=function(t,n){if(y(_,t))throw new g(h);return n.facade=t,w(_,t,n),n},o=function(t){return b(_,t)||{}},i=function(t){return y(_,t)}}else{var E=v("state");p[E]=!0,r=function(t,n){if(f(t,E))throw new g(h);return n.facade=t,l(t,E,n),n},o=function(t){return f(t,E)?t[E]:{}},i=function(t){return f(t,E)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(n){var e;if(!s(n)||(e=o(n)).type!==t)throw g("Incompatible receiver, "+t+" required");return e}}}},114:function(t,n,e){var r=e(3649),o=e(339),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},4521:function(t,n,e){var r=e(9624);t.exports=Array.isArray||function(t){return"Array"==r(t)}},9212:function(t){t.exports=function(t){return"function"==typeof t}},2097:function(t,n,e){var r=e(7386),o=e(6544),i=e(9212),a=e(3058),c=e(5897),u=e(9734),s=function(){},l=[],f=c("Reflect","construct"),d=/^\s*(?:class|function)\b/,v=r(d.exec),p=!d.exec(s),h=function(t){if(!i(t))return!1;try{return f(s,l,t),!0}catch(t){return!1}},g=function(t){if(!i(t))return!1;switch(a(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!v(d,u(t))}catch(t){return!0}};g.sham=!0,t.exports=!f||o((function(){var t;return h(h.call)||!h(Object)||!h((function(){t=!0}))||t}))?g:h},4451:function(t,n,e){var r=e(6544),o=e(9212),i=/#|\.prototype\./,a=function(t,n){var e=u[c(t)];return e==l||e!=s&&(o(n)?r(n):!!n)},c=a.normalize=function(t){return String(t).replace(i,".").toLowerCase()},u=a.data={},s=a.NATIVE="N",l=a.POLYFILL="P";t.exports=a},794:function(t,n,e){var r=e(9212);t.exports=function(t){return"object"==typeof t?null!==t:r(t)}},6268:function(t){t.exports=!1},5871:function(t,n,e){var r=e(7583),o=e(5897),i=e(9212),a=e(2447),c=e(7786),u=r.Object;t.exports=c?function(t){return"symbol"==typeof t}:function(t){var n=o("Symbol");return i(n)&&a(n.prototype,u(t))}},4026:function(t,n,e){var r=e(7583),o=e(2938),i=e(8262),a=e(2569),c=e(5637),u=e(114),s=e(1825),l=e(2447),f=e(6307),d=e(8272),v=e(7093),p=r.TypeError,h=function(t,n){this.stopped=t,this.result=n},g=h.prototype;t.exports=function(t,n,e){var r,m,_,b,y,w,E,L=e&&e.that,T=!(!e||!e.AS_ENTRIES),O=!(!e||!e.IS_ITERATOR),C=!(!e||!e.INTERRUPTED),x=o(n,L),I=function(t){return r&&v(r,"normal",t),new h(!0,t)},D=function(t){return T?(a(t),C?x(t[0],t[1],I):x(t[0],t[1])):C?x(t,I):x(t)};if(O)r=t;else{if(!(m=d(t)))throw p(c(t)+" is not iterable");if(u(m)){for(_=0,b=s(t);b>_;_++)if((y=D(t[_]))&&l(g,y))return y;return new h(!1)}r=f(t,m)}for(w=r.next;!(E=i(w,r)).done;){try{y=D(E.value)}catch(t){v(r,"throw",t)}if("object"==typeof y&&y&&l(g,y))return y}return new h(!1)}},7093:function(t,n,e){var r=e(8262),o=e(2569),i=e(911);t.exports=function(t,n,e){var a,c;o(t);try{if(!(a=i(t,"return"))){if("throw"===n)throw e;return e}a=r(a,t)}catch(t){c=!0,a=t}if("throw"===n)throw e;if(c)throw a;return o(a),e}},2365:function(t,n,e){"use strict";var r,o,i,a=e(6544),c=e(9212),u=e(3590),s=e(729),l=e(1270),f=e(3649),d=e(6268),v=f("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(o=s(s(i)))!==Object.prototype&&(r=o):p=!0),null==r||a((function(){var t={};return r[v].call(t)!==t}))?r={}:d&&(r=u(r)),c(r[v])||l(r,v,(function(){return this})),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},339:function(t){t.exports={}},1825:function(t,n,e){var r=e(97);t.exports=function(t){return r(t.length)}},2095:function(t,n,e){var r,o,i,a,c,u,s,l,f=e(7583),d=e(2938),v=e(6683).f,p=e(8117).set,h=e(7020),g=e(3256),m=e(6846),_=e(5354),b=f.MutationObserver||f.WebKitMutationObserver,y=f.document,w=f.process,E=f.Promise,L=v(f,"queueMicrotask"),T=L&&L.value;T||(r=function(){var t,n;for(_&&(t=w.domain)&&t.exit();o;){n=o.fn,o=o.next;try{n()}catch(t){throw o?a():i=void 0,t}}i=void 0,t&&t.enter()},h||_||m||!b||!y?!g&&E&&E.resolve?((s=E.resolve(void 0)).constructor=E,l=d(s.then,s),a=function(){l(r)}):_?a=function(){w.nextTick(r)}:(p=d(p,f),a=function(){p(r)}):(c=!0,u=y.createTextNode(""),new b(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c})),t.exports=T||function(t){var n={fn:t,next:void 0};i&&(i.next=n),o||(o=n,a()),i=n}},783:function(t,n,e){var r=e(7583);t.exports=r.Promise},8640:function(t,n,e){var r=e(4061),o=e(6544);t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},9491:function(t,n,e){var r=e(7583),o=e(9212),i=e(9734),a=r.WeakMap;t.exports=o(a)&&/native code/.test(i(a))},5084:function(t,n,e){"use strict";var r=e(8257),o=function(t){var n,e;this.promise=new t((function(t,r){if(void 0!==n||void 0!==e)throw TypeError("Bad Promise constructor");n=t,e=r})),this.resolve=r(n),this.reject=r(e)};t.exports.f=function(t){return new o(t)}},2764:function(t,n,e){var r=e(8320);t.exports=function(t,n){return void 0===t?arguments.length<2?"":n:r(t)}},3590:function(t,n,e){var r,o=e(2569),i=e(8728),a=e(5690),c=e(4639),u=e(482),s=e(6668),l=e(9137),f=l("IE_PROTO"),d=function(){},v=function(t){return"