diff --git a/JSD-8433-配置使用文档.docx b/JSD-8433-配置使用文档.docx new file mode 100644 index 0000000..2c3a72d Binary files /dev/null and b/JSD-8433-配置使用文档.docx differ diff --git a/JSD-8433-需求确认书V1.docx b/JSD-8433-需求确认书V1.docx new file mode 100644 index 0000000..d0c09b2 Binary files /dev/null and b/JSD-8433-需求确认书V1.docx differ diff --git a/lib/commons-codec-1.15.jar b/lib/commons-codec-1.15.jar new file mode 100644 index 0000000..f14985a Binary files /dev/null and b/lib/commons-codec-1.15.jar differ diff --git a/lib/finekit-10.0.jar b/lib/finekit-10.0.jar new file mode 100644 index 0000000..f4482fc Binary files /dev/null and b/lib/finekit-10.0.jar differ diff --git a/lib/lippi-oapi-encrpt.jar b/lib/lippi-oapi-encrpt.jar new file mode 100644 index 0000000..f112223 Binary files /dev/null and b/lib/lippi-oapi-encrpt.jar differ diff --git a/lib/taobao-sdk-java-auto_1479188381469-20210421.jar b/lib/taobao-sdk-java-auto_1479188381469-20210421.jar new file mode 100644 index 0000000..2978668 Binary files /dev/null and b/lib/taobao-sdk-java-auto_1479188381469-20210421.jar differ diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..ccc3553 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,28 @@ + + + com.fr.plugin.mqh.dingtalksyn.job + + yes + 1.1 + 10.0 + 2018-07-31 + fr.open + + + 1.用户单点登陆功能
+ ]]>
+ com.fr.plugin.mqh.dingtalksyn + + com.fanruan.api + org.apache.commons.codec + + + + + + + + + +
\ No newline at end of file diff --git a/src/main/java/com/fr/plugin/mqh/dingtalksyn/config/DingSynConfig.java b/src/main/java/com/fr/plugin/mqh/dingtalksyn/config/DingSynConfig.java new file mode 100644 index 0000000..9d2698e --- /dev/null +++ b/src/main/java/com/fr/plugin/mqh/dingtalksyn/config/DingSynConfig.java @@ -0,0 +1,73 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: DingSynConfig + * Author: Louis + * Date: 2021/3/30 9:38 + */ + package com.fr.plugin.mqh.dingtalksyn.config; + + import com.fanruan.api.util.StringKit; + import com.fr.config.*; + import com.fr.config.holder.Conf; + import com.fr.config.holder.factory.Holders; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @Visualization(category = "Plugin-dingtalksyn_Group") + public class DingSynConfig extends DefaultConfiguration { + + private static volatile DingSynConfig config = null; + + public static DingSynConfig getInstance() { + if (config == null) { + config = ConfigContext.getConfigInstance(DingSynConfig.class); + } + return config; + } + + @Identifier(value = "appKey", name = "Plugin-dingtalksyn_Config_appKey", description = "Plugin-dingtalksyn_Config_appKey_Description", status = Status.SHOW) + private Conf appKey = Holders.simple(StringKit.EMPTY); + @Identifier(value = "appSecret", name = "Plugin-dingtalksyn_Config_appSecret", description = "Plugin-dingtalksyn_Config_appSecret_Description", status = Status.SHOW) + private Conf appSecret = Holders.simple(StringKit.EMPTY); + @Identifier(value = "corpId", name = "Plugin-dingtalksyn_Config_corpId", description = "Plugin-dingtalksyn_Config_corpId_Description", status = Status.SHOW) + private Conf corpId = Holders.simple(StringKit.EMPTY); + private Conf ssoEnable = Holders.simple(true); + + public String getAppKey() { + return appKey.get(); + } + + public void setAppKey(String appKey) { + this.appKey.set(appKey); + } + + public String getAppSecret() { + return appSecret.get(); + } + + public void setAppSecret(String appSecret) { + this.appSecret.set(appSecret); + } + + public String getCorpId() { + return corpId.get(); + } + + public void setCorpId(String corpId) { + this.corpId.set(corpId); + } + + public boolean getSsoEnable() { + return ssoEnable.get(); + } + + public void setSsoEnable(boolean ssoEnable) { + this.ssoEnable.set(ssoEnable); + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/mqh/dingtalksyn/provider/LifeCycleMonitorImpl.java b/src/main/java/com/fr/plugin/mqh/dingtalksyn/provider/LifeCycleMonitorImpl.java new file mode 100644 index 0000000..5425164 --- /dev/null +++ b/src/main/java/com/fr/plugin/mqh/dingtalksyn/provider/LifeCycleMonitorImpl.java @@ -0,0 +1,42 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: LifeCycleMonitorImpl + * Author: Louis + * Date: 2021/3/30 15:10 + */ + package com.fr.plugin.mqh.dingtalksyn.provider; + + import com.fanruan.api.log.LogKit; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.mqh.dingtalksyn.config.DingSynConfig; +import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; +import com.fr.stable.fun.Authorize; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @Authorize(callSignKey = LocaleFinder.PLUGIN_ID) + public class LifeCycleMonitorImpl extends AbstractPluginLifecycleMonitor { + public LifeCycleMonitorImpl() { + } + + @Override + public void afterRun(PluginContext pluginContext) { + DingSynConfig config = DingSynConfig.getInstance(); + if (pluginContext.isAvailable()) { + config.setSsoEnable(true); + } else { + config.setSsoEnable(false); + LogKit.error("dingtalksyn-Plugin License is expired!"); + } + } + + @Override + public void beforeStop(PluginContext pluginContext) { + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/mqh/dingtalksyn/provider/LocaleFinder.java b/src/main/java/com/fr/plugin/mqh/dingtalksyn/provider/LocaleFinder.java new file mode 100644 index 0000000..da38b8d --- /dev/null +++ b/src/main/java/com/fr/plugin/mqh/dingtalksyn/provider/LocaleFinder.java @@ -0,0 +1,36 @@ + /* + * Copyright (C), 2018-2020 + * Project: starter + * FileName: LocaleFinder + * Author: Louis + * Date: 2020/8/31 22:19 + */ + package com.fr.plugin.mqh.dingtalksyn.provider; + + import com.fr.intelli.record.Focus; + import com.fr.intelli.record.Original; + import com.fr.record.analyzer.EnableMetrics; + import com.fr.stable.fun.impl.AbstractLocaleFinder; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @EnableMetrics + public class LocaleFinder extends AbstractLocaleFinder { + public static final String PLUGIN_ID = "com.fr.plugin.mqh.dingtalksyn.job"; + + @Override + @Focus(id = PLUGIN_ID, text = "Plugin-dingtalksyn", source = Original.PLUGIN) + public String find() { + return "com/fr/plugin/mqh/dingtalksyn/locale/lang"; + } + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/mqh/dingtalksyn/request/GlobalRequestFilterBridge.java b/src/main/java/com/fr/plugin/mqh/dingtalksyn/request/GlobalRequestFilterBridge.java new file mode 100644 index 0000000..88dcfac --- /dev/null +++ b/src/main/java/com/fr/plugin/mqh/dingtalksyn/request/GlobalRequestFilterBridge.java @@ -0,0 +1,212 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: GlobalRequestFilterBridge + * Author: Louis + * Date: 2021/3/30 22:09 + */ + package com.fr.plugin.mqh.dingtalksyn.request; + + import com.dingtalk.api.response.OapiV2UserGetResponse; + import com.fanruan.api.decision.login.LoginKit; + import com.fanruan.api.log.LogKit; + import com.fanruan.api.net.NetworkKit; + import com.fanruan.api.net.http.HttpKit; + import com.fanruan.api.util.IOKit; + import com.fanruan.api.util.StringKit; + import com.fr.base.TemplateUtils; + import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; + import com.fr.decision.webservice.utils.DecisionServiceConstants; + import com.fr.decision.webservice.v10.login.LoginService; + import com.fr.json.JSONObject; + import com.fr.plugin.mqh.dingtalksyn.config.DingSynConfig; + import com.fr.web.utils.WebUtils; + + import javax.servlet.FilterChain; + import javax.servlet.FilterConfig; + import javax.servlet.http.HttpServletRequest; + import javax.servlet.http.HttpServletResponse; + import java.util.HashMap; + import java.util.Map; + + import static com.fr.plugin.mqh.dingtalksyn.utils.DingAPI.*; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + public class GlobalRequestFilterBridge extends AbstractGlobalRequestFilterProvider { + public static final String TPL_PATH = "/com/fr/plugin/mqh/dingtalksyn/web/codePage.html"; + public static final String DINGTALK_OPEN_JS = "/com/fr/plugin/mqh/dingtalksyn/web/dingtalk.open.js"; + public static final String CODE = "code"; + public static final String DING_TALK_LOGIN = "dt"; + + private DingSynConfig config; + + /** + * 过滤器名称 + * + * @return + */ + @Override + public String filterName() { + return "DingTalkSynFilter"; + } + + /** + * 过滤规则 + * + * @return + */ + @Override + public String[] urlPatterns() { + return new String[]{"/decision/*"}; + } + + /** + * 过滤器初始化 + * + * @param filterConfig + */ + @Override + public void init(FilterConfig filterConfig) { + this.config = DingSynConfig.getInstance(); + super.init(filterConfig); + } + + /** + * 过滤器处理 + * + * @param request + * @param response + * @param filterChain + */ + @Override + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) { + try { + if (operation(request, response)) { + filterChain.doFilter(request, response); + } + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + } + } + + /** + * 用户验证登陆操作 + * + * @param req + * @param res + * @throws Exception + */ + private boolean operation(HttpServletRequest req, HttpServletResponse res) throws Exception { + // 判断单点功能是否开启 + if (!this.config.getSsoEnable()) { + return true; + } + String pathInfo = (req.getPathInfo() != null) ? req.getPathInfo() : StringKit.EMPTY; + if (StringKit.equals(DINGTALK_OPEN_JS, pathInfo)) { + WebUtils.printAsString(res, IOKit.readResourceAsString(DINGTALK_OPEN_JS)); + return false; + } + //DingTalk登陆参数 + String dt = NetworkKit.getHTTPRequestParameter(req, DING_TALK_LOGIN); + if (StringKit.isBlank(dt)) { + return true; + } + // 已登录 + if (LoginService.getInstance().isLogged(req)) { + return true; + } + String code = NetworkKit.getHTTPRequestParameter(req, CODE); + LogKit.info("dingtalksyn-GlobalRequestFilterBridge-operation-code:{}", code); + if (StringKit.isEmpty(code)) { + loginPage(req, res); + return false; + } + String accessToken = getAccessToken(code); + String username = getUsername(code, accessToken); + LogKit.info("dingtalksyn-GlobalRequestFilterBridge-operation-username:{}", username); + if (StringKit.isEmpty(username)) { + return true; + } + String tokenFR = LoginKit.login(req, res, username); + req.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, tokenFR); + return true; + } + + /** + * 钉钉获取code页面 + * + * @param req + * @param res + * @return + * @throws Exception + */ + private void loginPage(HttpServletRequest req, HttpServletResponse res) throws Exception { + Map parameterMap = new HashMap<>(); + parameterMap.put("corpId", this.config.getCorpId()); + parameterMap.put("openJs", WebUtils.createServletURL(req) + DINGTALK_OPEN_JS); + parameterMap.put("remoteServletURL", getRemoteServletURL(WebUtils.getOriginalURL(req))); + String codePage = TemplateUtils.renderTemplate(TPL_PATH, parameterMap); + WebUtils.printAsString(res, codePage); + } + + /** + * 处理请求url加入code参数 + * + * @param url + * @return + */ + private String getRemoteServletURL(String url) { + if (url.contains("?")) { + return url + "&" + CODE + "="; + } + return url + "?" + CODE + "="; + } + + /** + * 获取access_token + * + * @param code + * @return + * @throws Exception + */ + private String getAccessToken(String code) throws Exception { + Map tokenParams = new HashMap<>(); + tokenParams.put("appkey", this.config.getAppKey()); + tokenParams.put("appsecret", this.config.getAppSecret()); + tokenParams.put("code", code); + LogKit.info("dingtalksyn-GlobalRequestFilterBridge-getAccessToken-params:{}", tokenParams); + String res = HttpKit.get(GETTOKEN, tokenParams); + LogKit.info("dingtalksyn-GlobalRequestFilterBridge-getAccessToken-res:{}", res); + if (StringKit.isEmpty(res)) { + return StringKit.EMPTY; + } + return new JSONObject(res).getString("access_token"); + } + + /** + * 通过凭证获得username + * + * @param code + * @param accessToken + * @return + */ + private String getUsername(String code, String accessToken) throws Exception { + Map userInfoParams = new HashMap<>(); + userInfoParams.put("access_token", accessToken); + userInfoParams.put("code", code); + String userRes = HttpKit.get(GET_USER_INFO, userInfoParams); + LogKit.info("dingtalksyn-GlobalRequestFilterBridge-getUsername-userRes:{}", userRes); + String userId = new JSONObject(userRes).getString("userid"); + OapiV2UserGetResponse.UserGetResponse userGetResponse = getUserResponse(userId); + if (userGetResponse.getExtension() == null) { + return userId; + } + return new JSONObject(userGetResponse.getExtension()).getString("编号"); + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/mqh/dingtalksyn/utils/DingAPI.java b/src/main/java/com/fr/plugin/mqh/dingtalksyn/utils/DingAPI.java new file mode 100644 index 0000000..7d176ff --- /dev/null +++ b/src/main/java/com/fr/plugin/mqh/dingtalksyn/utils/DingAPI.java @@ -0,0 +1,152 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: DingAPI + * Author: Louis + * Date: 2021/5/13 16:16 + */ + package com.fr.plugin.mqh.dingtalksyn.utils; + + import com.dingtalk.api.DefaultDingTalkClient; +import com.dingtalk.api.DingTalkClient; +import com.dingtalk.api.request.*; +import com.dingtalk.api.response.*; + import com.fanruan.api.log.LogKit; + import com.fr.plugin.mqh.dingtalksyn.config.DingSynConfig; +import com.taobao.api.ApiException; + +import java.util.List; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + public class DingAPI { + public static final int TOKEN_EXPIRE_TIME = 3600000; + /** + * 获取企业内部应用的access_token + */ + public static final String GETTOKEN = "https://oapi.dingtalk.com/gettoken"; + /** + * 通过免登码获取用户信息 + */ + public static final String GET_USER_INFO = "https://oapi.dingtalk.com/user/getuserinfo"; + public static final String USER_GET = "https://oapi.dingtalk.com/topapi/v2/user/get"; + public static final String DEPARTMENT_LIST = "https://oapi.dingtalk.com/topapi/v2/department/listsub"; + public static final String GET_DEPT_MEMBER = "https://oapi.dingtalk.com/topapi/user/listid"; + public static final String GET_DEPT = "https://oapi.dingtalk.com/topapi/v2/department/get"; + public static final String ROLE_LIST = "https://oapi.dingtalk.com/topapi/role/list"; + public static final String GETROLE = "https://oapi.dingtalk.com/topapi/role/getrole"; + + /** + * 根据deptId获取用户详情 + * + * @param deptId + * @return + * @throws ApiException + */ + public static OapiV2DepartmentGetResponse.DeptGetResponse getDeptResponse(long deptId) throws ApiException { + DingTalkClient client = new DefaultDingTalkClient(GET_DEPT); + OapiV2DepartmentGetRequest req = new OapiV2DepartmentGetRequest(); + req.setDeptId(deptId); + req.setLanguage("zh_CN"); + OapiV2DepartmentGetResponse rsp = client.execute(req, DingTokenUtils.getAccessToken()); + return rsp.getResult(); + } + + /** + * 获取部门用户userid列表 + * + * @param deptId + * @return + * @throws ApiException + */ + public static List getDeptMember(long deptId) throws ApiException { + DingTalkClient client = new DefaultDingTalkClient(GET_DEPT_MEMBER); + OapiUserListidRequest req = new OapiUserListidRequest(); + req.setDeptId(deptId); + OapiUserListidResponse rsp = client.execute(req, DingTokenUtils.getAccessToken()); + return rsp.getResult().getUseridList(); + } + + /** + * 获取部门列表 + * + * @return + * @throws ApiException + */ + public static List getDepartmentList(long deptId) throws ApiException { + DingTalkClient client = new DefaultDingTalkClient(DEPARTMENT_LIST); + OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest(); + req.setDeptId(deptId); + req.setLanguage("zh_CN"); + OapiV2DepartmentListsubResponse rsp = client.execute(req, DingTokenUtils.getAccessToken()); + return rsp.getResult(); + } + + /** + * 根据roleId获取角色详情 + * + * @param roleId + * @return + * @throws ApiException + */ + public static OapiRoleGetroleResponse.OpenRole getRoleResponse(long roleId) throws ApiException { + DingTalkClient client = new DefaultDingTalkClient(GETROLE); + OapiRoleGetroleRequest req = new OapiRoleGetroleRequest(); + req.setRoleId(roleId); + OapiRoleGetroleResponse rsp = client.execute(req, DingTokenUtils.getAccessToken()); + return rsp.getRole(); + } + + /** + * 获取角色列表 + * + * @return + * @throws ApiException + */ + public static List getOapiRoleList() throws ApiException { + DingTalkClient client = new DefaultDingTalkClient(ROLE_LIST); + OapiRoleListRequest req = new OapiRoleListRequest(); + req.setSize(200L); + req.setOffset(0L); + OapiRoleListResponse rsp = client.execute(req, DingTokenUtils.getAccessToken()); + return rsp.getResult().getList(); + } + + /** + * 根据userid获取用户详情 + * + * @param userId + * @return + * @throws ApiException + */ + public static OapiV2UserGetResponse.UserGetResponse getUserResponse(String userId) throws ApiException { + DingTalkClient client = new DefaultDingTalkClient(USER_GET); + OapiV2UserGetRequest req = new OapiV2UserGetRequest(); + req.setUserid(userId); + req.setLanguage("zh_CN"); + OapiV2UserGetResponse rsp = client.execute(req, DingTokenUtils.getAccessToken()); + LogKit.info("dingtalksyn-DingAPI-getUserResponse-rsp:{}", rsp.getBody()); + return rsp.getResult(); + } + + /** + * 获取企业内部应用的access_token + * + * @return + * @throws ApiException + */ + public static String getAccessToken() throws ApiException { + DingTalkClient client = new DefaultDingTalkClient(GETTOKEN); + OapiGettokenRequest request = new OapiGettokenRequest(); + request.setAppkey(DingSynConfig.getInstance().getAppKey()); + request.setAppsecret(DingSynConfig.getInstance().getAppSecret()); + request.setHttpMethod("GET"); + OapiGettokenResponse response = client.execute(request); + return response.getAccessToken(); + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/mqh/dingtalksyn/utils/DingTokenUtils.java b/src/main/java/com/fr/plugin/mqh/dingtalksyn/utils/DingTokenUtils.java new file mode 100644 index 0000000..e4b165d --- /dev/null +++ b/src/main/java/com/fr/plugin/mqh/dingtalksyn/utils/DingTokenUtils.java @@ -0,0 +1,67 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: DingTokenUtils + * Author: Louis + * Date: 2021/5/14 14:23 + */ + package com.fr.plugin.mqh.dingtalksyn.utils; + + import com.fanruan.api.log.LogKit; + import com.fanruan.api.util.StringKit; + import com.fr.plugin.mqh.dingtalksyn.config.DingSynConfig; + import com.fr.store.StateHubManager; + import com.fr.store.StateHubService; + + import static com.fr.plugin.mqh.dingtalksyn.utils.DingAPI.TOKEN_EXPIRE_TIME; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + public class DingTokenUtils { + + public static final String DINGTALKSYN_ACCESS_TOKEN = "dingtalksyn_access_token"; + public static final String DINGTALKSYN_SUITE_TICKET = "dingtalksyn_suite_ticket"; + + private static final StateHubService tokenService = StateHubManager.applyForService(DINGTALKSYN_ACCESS_TOKEN); + private static final StateHubService ticketService = StateHubManager.applyForService(DINGTALKSYN_SUITE_TICKET); + + public DingTokenUtils() { + } + + /** + * 缓存钉钉端AccessToken + * + * @return + */ + public static String getAccessToken() { + String appKey = DingSynConfig.getInstance().getAppKey(); + try { + if (StringKit.isBlank(tokenService.get(appKey))) { + tokenService.put(appKey, DingAPI.getAccessToken(), TOKEN_EXPIRE_TIME); + } + return tokenService.get(appKey); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + return StringKit.EMPTY; + } + } + + /** + * 缓存钉钉端SuiteTicket + * + * @return + */ + public static void setSuiteTicket(String suiteTicket) { + String appKey = DingSynConfig.getInstance().getAppKey(); + try { + ticketService.put(appKey, suiteTicket, TOKEN_EXPIRE_TIME); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + } + } + } \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/mqh/dingtalksyn/locale/lang.properties b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/locale/lang.properties new file mode 100644 index 0000000..91c8296 --- /dev/null +++ b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/locale/lang.properties @@ -0,0 +1,188 @@ +Plugin-dingtalksyn=DingTalk syn Plugin +Plugin-dingtalksyn_Group=DingTalk syn Plugin +Plugin-dingtalksyn_Config_CronCondition=Cron Condition +Plugin-dingtalksyn_Config_CronCondition_Description=Cron Condition +Plugin-dingtalksyn_Config_appKey=APPKEY +Plugin-dingtalksyn_Config_appKey_Description=APPKEY +Plugin-dingtalksyn_Config_appSecret=appSecret +Plugin-dingtalksyn_Config_appSecret_Description=appSecret +Plugin-dingtalksyn_Config_corpId=Corp Id +Plugin-dingtalksyn_Config_corpId_Description=Corp Id +Plugin-dingtalksyn_Config_rootDepId=Root Department ID +Plugin-dingtalksyn_Config_rootDepId_Description=Root Department ID +Plugin-dingtalksyn_Config_Token=Token +Plugin-dingtalksyn_Config_Token_Description=Token +Plugin-dingtalksyn_Config_AesKey=AesKey +Plugin-dingtalksyn_Config_AesKey_Description=AesKey +Plugin-dingtalksyn_Config_SsoEnable=Sso Enable +Plugin-dingtalksyn_Config_SsoEnable_Description=Sso Enable +Plugin-dingtalksyn_Error_500=error +Plugin-dingtalksyn_Error_501=DingTalkSyn Plugin License Expired! +## \u524D\u7AEFjs +Plugin-dingtalksyn_DingTalk_Manager=DingTalk Sync + +Dec-Module-DingTalkSyn_Manager=Dec-Module-DingTalkSyn_Manager +Dec-DingTalkSyn_Basic=Dec-DingTalkSyn_Basic +Dec-DingTalkSyn_Recive_Data_URL=Dec-DingTalkSyn_Recive_Data_URL +Dec-DingTalkSyn_Corp_ID=Dec-DingTalkSyn_Corp_ID +Dec-DingTalkSyn_Secret=Dec-DingTalkSyn_Secret +Dec-DingTalkSyn_Member_Management=Dec-DingTalkSyn_Member_Management +Dec-DingTalkSyn_User-Same-With-FS=Dec-DingTalkSyn_User-Same-With-FS +Dec-DingTalkSyn_Mobile-Same-With-FS=Dec-DingTalkSyn_Mobile-Same-With-FS +Dec-DingTalkSyn_Manual-Matching-FS=Dec-DingTalkSyn_Manual-Matching-FS +Dec-DingTalkSyn_Custom-Matching-FS=Dec-DingTalkSyn_Custom-Matching-FS +Dec-DingTalkSyn_UserID=Dec-DingTalkSyn_UserID +Dec-DingTalkSyn_DecUserName=Dec-DingTalkSyn_DecUserName +Dec-DingTalkSyn_Name=Dec-DingTalkSyn_Name +Dec-DingTalkSyn_Department=Dec-DingTalkSyn_Department +Dec-DingTalkSyn_User_Job_Name=Dec-DingTalkSyn_User_Job_Name +Dec-Schedule-Notification_DingTalkSyn=Dec-Schedule-Notification_DingTalkSyn +Dec-Schedule-Notification_DingTalkSyn_CorpID=Dec-Schedule-Notification_DingTalkSyn_CorpID +Dec-Schedule-Notification_DingTalkSyn_Users=Dec-Schedule-Notification_DingTalkSyn_Users +Dec-Schedule-Notification_DingTalkSyn_DepID=Dec-Schedule-Notification_DingTalkSyn_DepID +Dec-Schedule-Notification_DingTalkSyn_Content=Dec-Schedule-Notification_DingTalkSyn_Content +Dec-Schedule-Notification_DingTalkSyn_WithLink=Dec-Schedule-Notification_DingTalkSyn_WithLink +Dec-Schedule_Mobile-Push-DingTalkSynId-Not-Null=Dec-Schedule_Mobile-Push-DingTalkSynId-Not-Null +Dec-DingTalkSyn_UrlHint=Dec-DingTalkSyn_UrlHint +Dec-DingTalkSyn_Token_Path=Dec-DingTalkSyn_Token_Path +Dec-DingTalkSyn_Refresh_User=Dec-DingTalkSyn_Refresh_User +Dec-DingTalkSyn_Mobile=Dec-DingTalkSyn_Mobile +Dec-DingTalkSyn_Matching_Way=Dec-DingTalkSyn_Matching_Way +Dec-DingTalkSyn_Hint=Dec-DingTalkSyn_Hint +Dec-DingTalkSyn_Loading=Dec-DingTalkSyn_Loading +Dec-DingTalkSyn_Mobile_Not_Supported=Dec-DingTalkSyn_Mobile_Not_Supported +Dec-DingTalkSyn_Mobile-Push-DingTalkSyn-Terminal=DingTalkSyn +Dec-DingTalkSyn_Addressee_Chat_Group=Dec-DingTalkSyn_Addressee_Chat_Group +Dec-DingTalkSyn_Addressee_Chat_Group_Disable_Tip=Dec-DingTalkSyn_Addressee_Chat_Group_Disable_Tip +Dec-DingTalkSyn_Mobile-Push-DingTalkSyn-AgentId=AgentID +Dec-DingTalkSyn_Expired_Error=Dec-DingTalkSyn_Expired_Error +Dec-DingTalkSyn_Expired_Solution=Dec-DingTalkSyn_Expired_Solution +Dec-DingTalkSyn_Agent-Management=Dec-DingTalkSyn_Agent-Management +Dec-DingTalkSyn_Member-Management=Dec-DingTalkSyn_Member-Management +Dec-DingTalkSyn_Agent-Config=Dec-DingTalkSyn_Agent-Config +Dec-DingTalkSyn_Agent-Name=Dec-DingTalkSyn_Agent-Name +Dec-DingTalkSyn_Agent-Id=Dec-DingTalkSyn_Agent-Id +Dec-DingTalkSyn_Organizational-Structure=Dec-DingTalkSyn_Organizational-Structure +Dec-DingTalkSyn_Tag=Dec-DingTalkSyn_Tag +Dec-DingTalkSyn_Server=Dec-DingTalkSyn_Server +Dec-DingTalkSyn_Save=Dec-DingTalkSyn_Save +Dec-DingTalkSyn_Start_With_Http=Dec-DingTalkSyn_Start_With_Http +Dec-DingTalkSyn_Server_Url=Dec-DingTalkSyn_Server_Url +Dec-DingTalkSyn_Server_Tip=Dec-DingTalkSyn_Server_Tip +Dec-DingTalkSyn_Enterprise-DingDing=Dec-DingTalkSyn_Enterprise-DingDing +Dec-DingTalkSyn_New-Agent=Dec-DingTalkSyn_New-Agent +Dec-DingTalkSyn_Non-Adapted-Agent=Dec-DingTalkSyn_Non-Adapted-Agent +Dec-DingTalkSyn_Modify-Agent=Dec-DingTalkSyn_Modify-Agent +Dec-DingTalkSyn_DeleteAgent-Confirm-Popup=Dec-DingTalkSyn_DeleteAgent-Confirm-Popup +Dec-DingTalkSyn_Confirm=Dec-DingTalkSyn_Confirm +Dec-DingTalkSyn_Cancel=Dec-DingTalkSyn_Cancel +Dec-DingTalkSyn_Save-Agent-Fail=Dec-DingTalkSyn_Save-Agent-Fail +Dec-DingTalkSyn_Unknown-Agent=Dec-DingTalkSyn_Unknown-Agent +Dec-DingTalkSyn_Agent-Name-Exist=Dec-DingTalkSyn_Agent-Name-Exist +Dec-DingTalkSyn_Match-Way=Dec-DingTalkSyn_Match-Way +Dec-DingTalkSyn_Match-Setting=Dec-DingTalkSyn_Match-Setting +Dec-DingTalkSyn_DataSet=Dec-DingTalkSyn_DataSet +Dec-DingTalkSyn_Address-Book=Dec-DingTalkSyn_Address-Book +Dec-DingTalkSyn_Member-Update=Dec-DingTalkSyn_Member-Update +Dec-DingTalkSyn_Set-Update=Dec-DingTalkSyn_Set-Update +Dec-DingTalkSyn_Not-Null=Dec-DingTalkSyn_Not-Null +Dec-DingTalkSyn_Start-Update=Dec-DingTalkSyn_Start-Update +Dec-DingTalkSyn_Per=Dec-DingTalkSyn_Per +Dec-DingTalkSyn_Day=Dec-DingTalkSyn_Day +Dec-DingTalkSyn_Week=Dec-DingTalkSyn_Week +Dec-DingTalkSyn_Monday=Dec-DingTalkSyn_Monday +Dec-DingTalkSyn_Tuesday=Dec-DingTalkSyn_Tuesday +Dec-DingTalkSyn_Wednesday=Dec-DingTalkSyn_Wednesday +Dec-DingTalkSyn_Thursday=Dec-DingTalkSyn_Thursday +Dec-DingTalkSyn_Friday=Dec-DingTalkSyn_Friday +Dec-DingTalkSyn_Saturday=Dec-DingTalkSyn_Saturday +Dec-DingTalkSyn_Sunday=Dec-DingTalkSyn_Sunday +Dec-DingTalkSyn_Hour=Dec-DingTalkSyn_Hour +Dec-DingTalkSyn_Minute=Dec-DingTalkSyn_Minute +Dec-DingTalkSyn_Update-Once=Dec-DingTalkSyn_Update-Once +Dec-DingTalkSyn_Illegal=Dec-DingTalkSyn_Illegal +Dec-DingTalkSyn_Proxy=Dec-DingTalkSyn_Proxy +Dec-DingTalkSyn_Proxy_Address=Dec-DingTalkSyn_Proxy_Address +Dec-DingTalkSyn_Proxy_Address_Tip=Dec-DingTalkSyn_Proxy_Address_Tip +Dec-DingTalkSyn_Test-Proxy-Address=Dec-DingTalkSyn_Test-Proxy-Address +Dec-DingTalkSyn_Start-With-Http=Dec-DingTalkSyn_Start-With-Http +Dec-DingTalkSyn_Test-Connection=Dec-DingTalkSyn_Test-Connection +Dec-DingTalkSyn_Connection-Success=Dec-DingTalkSyn_Connection-Success +Dec-DingTalkSyn_Connection-Fail=Dec-DingTalkSyn_Connection-Fail +Dec-DingTalkSyn_Unknown-Agent-Id=Dec-DingTalkSyn_Unknown-Agent-Id +Dec-DingTalkSyn_Delete-Agent-Fail=Dec-DingTalkSyn_Delete-Agent-Fail +Dec-DingTalkSyn_Agent-Id-Exist=Dec-DingTalkSyn_Agent-Id-Exist +Dec-DingTalkSyn_Save-ReportServer-Url-Fail=Dec-DingTalkSyn_Save-ReportServer-Url-Fail +Dec-DingTalkSyn_Save-Timing-Task-Fail=Dec-DingTalkSyn_Save-Timing-Task-Fail +Dec-DingTalkSyn_Error-AppKey-And-AppSecret=Dec-DingTalkSyn_Error-AppKey-And-AppSecret +Dec-DingTalkSyn_Error-AppKey-And-AgentId=Dec-DingTalkSyn_Error-AppKey-And-AgentId +Dec-DingTalkSyn_Duplicate-Agent-Name=Dec-DingTalkSyn_Duplicate-Agent-Name +Dec-DingTalkSyn_Save-Match-Method-Fail=Dec-DingTalkSyn_Save-Match-Method-Fail +Dec-DingTalkSyn_Duplicate-Agent-Id=Dec-DingTalkSyn_Duplicate-Agent-Id +Dec-DingTalkSyn_Save-Proxy-Server-Fail=Dec-DingTalkSyn_Save-Proxy-Server-Fail +Dec-DingTalkSyn_Connect-Proxy-Server-Fail=Dec-DingTalkSyn_Connect-Proxy-Server-Fail +Dec-DingTalkSyn_NetWork-Anomaly=Dec-DingTalkSyn_NetWork-Anomaly +Dec-DingTalkSyn_Create-DingTalkSyn-Url=Dec-DingTalkSyn_Create-DingTalkSyn-Url +Dec-DingTalkSyn_Platform-Page=Dec-DingTalkSyn_Platform_Page +Dec-DingTalkSyn_Platform-Report=Dec-DingTalkSyn_Platform-Report +Dec-DingTalkSyn_Platform=Dec-DingTalkSyn_Platform +Dec-DingTalkSyn_Parameter_Setting=Dec-DingTalkSyn_Parameter_Setting +Dec-DingTalkSyn_Create-Url=Dec-DingTalkSyn_Create-Url +Dec-DingTalkSyn_DingTalkSyn_Url=Dec-DingTalkSyn_DingTalkSyn_Url +Dec-DingTalkSyn_Copy-Url=Dec-DingTalkSyn_Copy-Url +Dec-DingTalkSyn_Copy-Success=Dec-DingTalkSyn_Copy-Success +Dec-DingTalkSyn_Input-Hint=Dec-DingTalkSyn_Input-Hint +Dec-DingTalkSyn_Save-User-Relation-Fail=Dec-DingTalkSyn_Save-User-Relation-Fail +BI-Basic_Search=BI-Basic_Search +Dec-DingTalkSyn_Match-Way-Not-Null=Dec-DingTalkSyn_Match-Way-Not-Null +Dec-DingTalkSyn_Not-Select=Dec-DingTalkSyn_Not-Select +Dec-DingTalkSyn_Tip-Get-ReportServer-Url-Fail=Dec-DingTalkSyn_Tip-Get-ReportServer-Url-Fail +Dec-DingTalkSyn_Create-Agent-Tip=Dec-DingTalkSyn_Create-Agent-Tip +Dec-DingTalkSyn_IP-Config-Not-Available=Dec-DingTalkSyn_IP-Config-Not-Available +Dec-DingTalkSyn_NetWork-Invalid=Dec-DingTalkSyn_NetWork-Invalid +Dec-DingTalkSyn_Not_Trusted_Domain_Error=Dec-DingTalkSyn_Not_Trusted_Domain_Error +Dec-DingTalkSyn_Not_Trusted_Domain_Exception=Dec-DingTalkSyn_Not_Trusted_Domain_Exception +Dec-DingTalkSyn_Debugger-Set-Level=Dec-DingTalkSyn_Debugger-Set-Level +Dec-DingTalkSyn_Debugger-Level=Dec-DingTalkSyn_Debugger-Level +Dec-DingTalkSyn_Debugger-Parameter-List=Dec-DingTalkSyn_Debugger-Parameter-List +Dec-DingTalkSyn_Debugger-Content=Dec-DingTalkSyn_Debugger-Content +Dec-DingTalkSyn_Debugger-Type-Get-Access-Token=Dec-DingTalkSyn_Debugger-Type-Get-Access-Token +Dec-DingTalkSyn_Debugger-Type-Check-Ip=Dec-DingTalkSyn_Debugger-Type-Check-Ip +Dec-DingTalkSyn_Debugger-Start-Check=Dec-DingTalkSyn_Debugger-Start-Check +Dec-DingTalkSyn_Debugger-Show-Result=Dec-DingTalkSyn_Debugger-Show-Result +Dec-DingTalkSyn_Debugger-Type-Check-Request-Time=Dec-DingTalkSyn_Debugger-Type-Check-Request-Time +Dec-DingTalkSyn_Debugger-Type-Check-Request-Time-Result=Dec-DingTalkSyn_Debugger-Type-Check-Request-Time-Result +Dec-DingTalkSyn_Debugger-Tip-Curl-Invalid=Dec-DingTalkSyn_Debugger-Tip-Curl-Invalid +Dec-DingTalkSyn_Debugger-DownLoad_Log=Dec-DingTalkSyn_Debugger-DownLoad_Log +Dec-DingTalkSyn_Click-To-Download=Dec-DingTalkSyn_Click-To-Download +Dec-DingTalkSyn_Download-Fail=Dec-DingTalkSyn_Download-Fail +Dec-DingTalkSyn_Not_Null=Dec-DingTalkSyn_Not_Null +Dec-DingTalkSyn_ErrorDetail=Dec-DingTalkSyn_ErrorDetail +Dec-DingTalkSyn_Debugger-Check-Ip-Result=Dec-DingTalkSyn_Debugger-Check-Ip-Result +Dec-DingTalkSyn_Debugger-Get-Token=Dec-DingTalkSyn_Debugger-Get-Token +Dec-DingTalkSyn_Agent_Deleted_Tip=Dec-DingTalkSyn_Agent_Deleted_Tip +Dec-DingTalkSyn_Parse_Parameters=Dec-DingTalkSyn_Parse_Parameters +Dec-DingTalkSyn_Parse_Parameters_Tip=Dec-DingTalkSyn_Parse_Parameters_Tip +Dec-DingTalkSyn_Enterprise_Agent=Dec-DingTalkSyn_Enterprise_Agent +Dec-DingTalkSyn_Chatgroup_Name=Dec-DingTalkSyn_Chatgroup_Name +Dec-DingTalkSyn_Chat_Group=Dec-DingTalkSyn_Chat_Group +Dec-DingTalkSyn_New_Chat_Group=Dec-DingTalkSyn_New_Chat_Group +Dec-DingTalkSyn_Delete_ChatGroup_Confirm=Dec-DingTalkSyn_Delete_ChatGroup_Confirm +Dec-DingTalkSyn_Chat_Group_Member_Tip=Dec-DingTalkSyn_Chat_Group_Member_Tip +Dec-DingTalkSyn_Chat_Group_Leader=Dec-DingTalkSyn_Chat_Group_Leader +Dec-DingTalkSyn_Chat_Group_Member=Dec-DingTalkSyn_Chat_Group_Member +Dec-DingTalkSyn_New_Chat_Group_Tip1=Dec-DingTalkSyn_New_Chat_Group_Tip1 +Dec-DingTalkSyn_New_Chat_Group_Tip2=Dec-DingTalkSyn_New_Chat_Group_Tip2 +Dec-DingTalkSyn_New_Chat_Group_Message=Dec-DingTalkSyn_New_Chat_Group_Message +Dec-DingTalkSyn_Common_Error_Tip=Dec-DingTalkSyn_Common_Error_Tip +Dec-DingTalkSyn_Chat_Group_Name_Length_Tip=Dec-DingTalkSyn_Chat_Group_Name_Length_Tip +Dec-DingTalkSyn_Create-Chat-Group-Fail=Dec-DingTalkSyn_Create-Chat-Group-Fail +Dec-DingTalkSyn_Output_User_Empty=Dec-DingTalkSyn_Output_User_Empty +Dec-DingTalkSyn_Message_Agent=Dec-DingTalkSyn_Message_Agent +Dec-DingTalkSyn_Message_Group=Dec-DingTalkSyn_Message_Group +Dec-DingTalkSyn_DingTalkSyn=Dec-DingTalkSyn_DingTalkSyn +Dec-DingTalkSyn_Output_User_Fail_Partly_Header=Dec-DingTalkSyn_Output_User_Fail_Partly_Header +Dec-DingTalkSyn_Output_User_Fail_Partly_Tip=Dec-DingTalkSyn_Output_User_Fail_Partly_Tip +Dec-DingTalkSyn_Output_Group_Fail_Partly_Header=Dec-DingTalkSyn_Output_Group_Fail_Partly_Header +Dec-DingTalkSyn_Output_Group_Fail_Partly_Tip=Dec-DingTalkSyn_Output_Group_Fail_Partly_Tip +Dec-DingTalkSyn_User_Match_Dec_User_Fail=Dec-DingTalkSyn_User_Match_Dec_User_Fail \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/mqh/dingtalksyn/locale/lang_zh_CN.properties b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/locale/lang_zh_CN.properties new file mode 100644 index 0000000..6e991ee --- /dev/null +++ b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/locale/lang_zh_CN.properties @@ -0,0 +1,188 @@ +Plugin-dingtalksyn=\u9489\u9489\u6570\u636E\u540C\u6B65\u63D2\u4EF6 +Plugin-dingtalksyn_Group=\u9489\u9489\u6570\u636E\u540C\u6B65\u63D2\u4EF6 +Plugin-dingtalksyn_Config_CronCondition=Cron\u8868\u8FBE\u5F0F +Plugin-dingtalksyn_Config_CronCondition_Description=Cron\u8868\u8FBE\u5F0F +Plugin-dingtalksyn_Config_appKey=\u5E94\u7528\u7CFB\u7EDF\u7684APPKEY +Plugin-dingtalksyn_Config_appKey_Description=\u5E94\u7528\u7CFB\u7EDF\u7684APPKEY +Plugin-dingtalksyn_Config_appSecret=\u5E94\u7528\u7CFB\u7EDF\u7684appSecret +Plugin-dingtalksyn_Config_appSecret_Description=\u5E94\u7528\u7CFB\u7EDF\u7684appSecret +Plugin-dingtalksyn_Config_corpId=Corp Id +Plugin-dingtalksyn_Config_corpId_Description=Corp Id +Plugin-dingtalksyn_Config_rootDepId=\u6839\u90E8\u95E8ID +Plugin-dingtalksyn_Config_rootDepId_Description=\u6839\u90E8\u95E8ID +Plugin-dingtalksyn_Config_Token=\u7B7E\u540DToken +Plugin-dingtalksyn_Config_Token_Description=\u7B7E\u540DToken +Plugin-dingtalksyn_Config_AesKey=\u52A0\u5BC6aes_key +Plugin-dingtalksyn_Config_AesKey_Description=\u52A0\u5BC6aes_key +Plugin-dingtalksyn_Config_SsoEnable=\u5355\u70B9\u529F\u80FD\u5F00\u5173 +Plugin-dingtalksyn_Config_SsoEnable_Description=\u5355\u70B9\u529F\u80FD\u5F00\u5173 +Plugin-dingtalksyn_Error_500=error +Plugin-dingtalksyn_Error_501=DingTalkSyn\u63D2\u4EF6\u8BB8\u53EF\u5931\u6548! +## \u524D\u7AEFjs +Plugin-dingtalksyn_DingTalk_Manager=\u9489\u9489\u540C\u6B65 + +Dec-Module-DingTalkSyn_Manager=\u9489\u9489\u7BA1\u7406 +Dec-DingTalkSyn_Basic=\u57FA\u672C\u4FE1\u606F +Dec-Schedule-Notification_DingTalkSyn=\u63A8\u9001\u9489\u9489\u6D88\u606F +Dec-Schedule-Notification_DingTalkSyn_CorpID=\u5E94\u7528AgentID\uFF1A +Dec-Schedule-Notification_DingTalkSyn_Users=\u9489\u9489\u7528\u6237\uFF1A +Dec-Schedule-Notification_DingTalkSyn_DepID=\u90E8\u95E8ID\uFF1A +Dec-Schedule-Notification_DingTalkSyn_Content=\u6D88\u606F\u5185\u5BB9\uFF1A +Dec-Schedule-Notification_DingTalkSyn_WithLink=\u5B9A\u65F6\u7ED3\u679C\u8BBF\u95EE\u94FE\u63A5 +Dec-Schedule_Mobile-Push-DingTalkSynId-Not-Null=\u8BF7\u8BBE\u7F6E\u63A8\u9001\u7684\u9489\u9489\u5E94\u7528 +Dec-DingTalkSyn_Recive_Data_URL=\u63A5\u6536\u6570\u636EURL +Dec-DingTalkSyn_Corp_ID=\u9489\u9489\u4F01\u4E1A\u53F7ID +Dec-DingTalkSyn_Secret=\u7BA1\u7406\u7EC4\u51ED\u8BC1\u5BC6\u94A5 +Dec-DingTalkSyn_Member_Management=\u9489\u9489\u6210\u5458\u7BA1\u7406 +Dec-DingTalkSyn_User-Same-With-FS=\u9489\u9489\u5DE5\u53F7\u5339\u914D +Dec-DingTalkSyn_Mobile-Same-With-FS=\u624B\u673A\u53F7\u5339\u914D +Dec-DingTalkSyn_Manual-Matching-FS=\u624B\u52A8\u5339\u914D +Dec-DingTalkSyn_Custom-Matching-FS=\u81EA\u5B9A\u4E49\u5339\u914D +Dec-DingTalkSyn_UserID=\u9489\u9489\u6210\u5458ID +Dec-DingTalkSyn_DecUserName=\u7528\u6237\u540D +Dec-DingTalkSyn_Name=\u59D3\u540D +Dec-DingTalkSyn_Department=\u9489\u9489\u90E8\u95E8 +Dec-DingTalkSyn_UrlHint=\u670D\u52A1\u5668\u4FDD\u5B58\u7684Url\uFF1A +Dec-DingTalkSyn_User_Job_Name=\u9489\u9489\u5DE5\u53F7 +Dec-DingTalkSyn_Token_Path=\u8BBE\u7F6EToken\u83B7\u53D6\u8DEF\u5F84 +Dec-DingTalkSyn_Refresh_User=\u66F4\u65B0\u901A\u8BAF\u5F55 +Dec-DingTalkSyn_Mobile=\u9489\u9489\u6210\u5458\u624B\u673A\u53F7 +Dec-DingTalkSyn_Matching_Way=\u7528\u6237\u5339\u914D\u65B9\u5F0F +Dec-DingTalkSyn_Hint=\u63D0\u793A +Dec-DingTalkSyn_Loading=\u6B63\u5728\u52A0\u8F7D\u7528\u6237... +Dec-DingTalkSyn_Mobile_Not_Supported=\u5F53\u524DHTML5\u62A5\u8868\u4E0D\u652F\u6301\u6839\u636E\u624B\u673A\u53F7\u5339\u914D\uFF0C\u8BF7\u5347\u7EA7HTML5\u63D2\u4EF6 +Dec-DingTalkSyn_Mobile-Push-DingTalkSyn-Terminal=\u9489\u9489\u901A\u77E5 +Dec-DingTalkSyn_Addressee_Chat_Group=\u9489\u9489\u7FA4 +Dec-DingTalkSyn_Addressee_Chat_Group_Disable_Tip=\u5982\u679C\u6839\u636E\u9ED8\u8BA4\u7528\u6237\u7EC4\u5185\u7684\u7528\u6237\u5355\u72EC\u751F\u6210\u7ED3\u679C\uFF0C\u5219\u65E0\u6CD5\u901A\u77E5\u5230\u9489\u9489\u7FA4 +Dec-DingTalkSyn_Mobile-Push-DingTalkSyn-AgentId=\u5E94\u7528ID +Dec-DingTalkSyn_Expired_Error=\u9519\u8BEF\u4EE3\u7801:11100016 \u60A8\u4F7F\u7528\u4E86\u672A\u6CE8\u518C\u7684\u529F\u80FD\u2014\u2014\u9489\u9489\u96C6\u6210 +Dec-DingTalkSyn_Expired_Solution=\u9489\u9489\u529F\u80FD\u672A\u6CE8\u518C\uFF0C\u5982\u9700\u4F7F\u7528\u8BF7\u8054\u7CFB\u9500\u552E +Dec-DingTalkSyn_Agent-Management=\u5E94\u7528\u7BA1\u7406 +Dec-DingTalkSyn_Member-Management=\u6210\u5458\u7BA1\u7406 +Dec-DingTalkSyn_Agent-Config=\u5E94\u7528\u5FEB\u6377\u914D\u7F6E +Dec-DingTalkSyn_Agent-Name=\u9489\u9489\u5E94\u7528\u540D\u79F0 +Dec-DingTalkSyn_Agent-Id=\u9489\u9489\u5E94\u7528ID +Dec-DingTalkSyn_Organizational-Structure=\u7EC4\u7EC7\u67B6\u6784 +Dec-DingTalkSyn_Tag=\u6807\u7B7E +Dec-DingTalkSyn_Server=\u670D\u52A1\u5668 +Dec-DingTalkSyn_Save=\u4FDD\u5B58 +Dec-DingTalkSyn_Start_With_Http=\u670D\u52A1\u5668\u5730\u5740\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934 +Dec-DingTalkSyn_Server_Url=\u670D\u52A1\u5668\u5730\u5740 +Dec-DingTalkSyn_Server_Tip=1\u3001\u8BE5\u5730\u5740\u5C06\u7528\u4E8E\u5FEB\u6377\u914D\u7F6E\u4E2D\u751F\u6210\u5E73\u53F0\u5355\u70B9\u94FE\u63A5\u3001\u6A21\u677F\u5355\u70B9\u94FE\u63A5\uFF0C\u4EE5\u53CA\u63A8\u9001\u7684\u7ED3\u679C\u94FE\u63A5\uFF1B\n2\u3001\u8BE5\u5730\u5740\u9700\u8981\u5916\u7F51\u53EF\u8BBF\u95EE\uFF0C\u5730\u5740\u683C\u5F0F\u4E3Ahttp://\u57DF\u540D:\u7AEF\u53E3/decision\u6216https://\u57DF\u540D:\u7AEF\u53E3/decision\uFF0C\u914D\u7F6E\u540E\u8BF7\u4FDD\u5B58 +Dec-DingTalkSyn_Enterprise-DingDing=\u4F01\u4E1A\u9489\u9489 +Dec-DingTalkSyn_New-Agent=\u65B0\u5EFA\u9489\u9489\u5E94\u7528 +Dec-DingTalkSyn_Non-Adapted-Agent=\u63D0\u793A\uFF1A\u8BF7\u786E\u8BA4\u5E94\u7528id\u662F\u5426\u6B63\u786E +Dec-DingTalkSyn_Modify-Agent=\u4FEE\u6539\u9489\u9489\u5E94\u7528 +Dec-DingTalkSyn_DeleteAgent-Confirm-Popup=\u786E\u5B9A\u5220\u9664\u6B64\u4F01\u4E1A\u9489\u9489\u5E94\u7528 +Dec-DingTalkSyn_Confirm=\u786E\u5B9A +Dec-DingTalkSyn_Cancel=\u53D6\u6D88 +Dec-DingTalkSyn_Save-Agent-Fail=\u5B58\u50A8\u5E94\u7528\u4FE1\u606F\u5931\u8D25 +Dec-DingTalkSyn_Unknown-Agent=\u7F51\u7EDC\u5F02\u5E38\u6216\u8005\u8BF7\u786E\u8BA4\u5F53\u524D\u4F7F\u7528\u7684CorpId\u548CSecret\u662F\u5426\u6B63\u786E +Dec-DingTalkSyn_Agent-Name-Exist=\u5E94\u7528\u540D\u79F0\u5DF2\u5B58\u5728 +Dec-DingTalkSyn_Match-Way=\u5339\u914D\u65B9\u5F0F +Dec-DingTalkSyn_Match-Setting=\u5339\u914D\u8BBE\u7F6E +Dec-DingTalkSyn_DataSet=\u6570\u636E\u96C6 +Dec-DingTalkSyn_Address-Book=\u9489\u9489\u901A\u8BAF\u5F55 +Dec-DingTalkSyn_Member-Update=\u7ACB\u5373\u66F4\u65B0 +Dec-DingTalkSyn_Set-Update=\u8BBE\u7F6E\u81EA\u52A8\u66F4\u65B0 +Dec-DingTalkSyn_Not-Null=\u4E0D\u5141\u8BB8\u4E3A\u7A7A +Dec-DingTalkSyn_Start-Update=\u542F\u7528\u81EA\u52A8\u66F4\u65B0 +Dec-DingTalkSyn_Per=\u6BCF +Dec-DingTalkSyn_Day=\u5929 +Dec-DingTalkSyn_Week=\u5468 +Dec-DingTalkSyn_Monday=\u5468\u4E00 +Dec-DingTalkSyn_Tuesday=\u5468\u4E8C +Dec-DingTalkSyn_Wednesday=\u5468\u4E09 +Dec-DingTalkSyn_Thursday=\u5468\u56DB +Dec-DingTalkSyn_Friday=\u5468\u4E94 +Dec-DingTalkSyn_Saturday=\u5468\u516D +Dec-DingTalkSyn_Sunday=\u5468\u65E5 +Dec-DingTalkSyn_Hour=\u65F6 +Dec-DingTalkSyn_Minute=\u5206 +Dec-DingTalkSyn_Update-Once=\u5B9A\u65F6\u540C\u6B65\u4E00\u6B21 +Dec-DingTalkSyn_Illegal=\u4E0D\u5408\u6CD5 +Dec-DingTalkSyn_Proxy=\u9489\u9489\u4EE3\u7406\u8DF3\u8F6C +Dec-DingTalkSyn_Proxy_Address=\u4EE3\u7406\u670D\u52A1\u5668\u5730\u5740 +Dec-DingTalkSyn_Proxy_Address_Tip=1\u3001\u8BE5\u5730\u5740\u586B\u5199\u5E06\u8F6F\u6240\u5728\u5E94\u7528\u670D\u52A1\u5668\u8BBF\u95EE\u4EE3\u7406\u670D\u52A1\u5668\u7684\u5730\u5740\uFF0C\u5373\u6B63\u5411\u4EE3\u7406\u5730\u5740\uFF0C\u4ECE\u800C\u4F7F\u5E06\u8F6F\u5E94\u7528\u670D\u52A1\u5668\u80FD\u591F\u901A\u8FC7\u4EE3\u7406\u670D\u52A1\u5668\u8BBF\u95EE\u5230\u5916\u7F51\u9489\u9489\u670D\u52A1\u5668\uFF1B\n2\u3001\u5730\u5740\u683C\u5F0F\u4E3Ahttp://\u57DF\u540D:\u7AEF\u53E3 +Dec-DingTalkSyn_Test-Proxy-Address=\u6D4B\u8BD5\u8FDE\u63A5 +Dec-DingTalkSyn_Start-With-Http=\u670D\u52A1\u5668\u5730\u5740\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934 +Dec-DingTalkSyn_Test-Connection=\u6D4B\u8BD5\u8FDE\u63A5\u4E2D... +Dec-DingTalkSyn_Connection-Success=\u8FDE\u63A5\u6210\u529F +Dec-DingTalkSyn_Connection-Fail=\u8FDE\u63A5\u5931\u8D25 +Dec-DingTalkSyn_Unknown-Agent-Id=\u5E94\u7528ID\u4E0D\u6B63\u786E +Dec-DingTalkSyn_Delete-Agent-Fail=\u5220\u9664\u5E94\u7528\u5931\u8D25 +Dec-DingTalkSyn_Agent-Id-Exist=\u5E94\u7528ID\u5DF2\u5B58\u5728 +Dec-DingTalkSyn_Save-ReportServer-Url-Fail=\u4FDD\u5B58\u670D\u52A1\u5668\u5730\u5740\u5931\u8D25 +Dec-DingTalkSyn_Save-Timing-Task-Fail=\u4FDD\u5B58\u5B9A\u65F6\u4EFB\u52A1\u5931\u8D25 +Dec-DingTalkSyn_Error-AppKey-And-AppSecret=\u8BF7\u786E\u8BA4\u5F53\u524D\u4F7F\u7528\u7684AppKey\u548CAppSecret\u662F\u5426\u6B63\u786E +Dec-DingTalkSyn_Error-AppKey-And-AgentId=\u8BF7\u786E\u8BA4\u5F53\u524D\u5E94\u7528ID\u548CAppKey\u662F\u5426\u5BF9\u5E94 +Dec-DingTalkSyn_Duplicate-Agent-Name=\u5E94\u7528\u540D\u79F0\u5DF2\u5B58\u5728 +Dec-DingTalkSyn_Save-Match-Method-Fail=\u5B58\u50A8\u6210\u5458\u7BA1\u7406\u914D\u7F6E\u4FE1\u606F\u5931\u8D25 +Dec-DingTalkSyn_Duplicate-Agent-Id=\u5E94\u7528ID\u5DF2\u5B58\u5728 +Dec-DingTalkSyn_Save-Proxy-Server-Fail=\u4FDD\u5B58\u4EE3\u7406\u670D\u52A1\u5668\u5931\u8D25 +Dec-DingTalkSyn_Connect-Proxy-Server-Fail=\u9489\u9489\u4EE3\u7406\u670D\u52A1\u5668\u6D4B\u8BD5\u8FDE\u63A5\u5931\u8D25 +Dec-DingTalkSyn_NetWork-Anomaly=\u7F51\u7EDC\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u914D\u7F6E +Dec-DingTalkSyn_Create-DingTalkSyn-Url=\u751F\u6210\u9489\u9489\u94FE\u63A5 +Dec-DingTalkSyn_Platform-Page=\u94FE\u63A5\u9875\u9762 +Dec-DingTalkSyn_Platform-Report=\u5355\u4E2A\u6A21\u677F +Dec-DingTalkSyn_Platform=\u51B3\u7B56\u5E73\u53F0 +Dec-DingTalkSyn_Parameter_Setting=\u53C2\u6570\u8BBE\u7F6E +Dec-DingTalkSyn_Create-Url=\u751F\u6210\u94FE\u63A5 +Dec-DingTalkSyn_DingTalkSyn_Url=\u9489\u9489\u94FE\u63A5 +Dec-DingTalkSyn_Copy-Url=\u590D\u5236 +Dec-DingTalkSyn_Copy-Success=\u590D\u5236\u6210\u529F +Dec-DingTalkSyn_Input-Hint=\u8BF7\u8F93\u5165 +Dec-DingTalkSyn_Save-User-Relation-Fail=\u624B\u52A8\u5339\u914D\u5931\u8D25 +BI-Basic_Search=\u641C\u7D22 +Dec-DingTalkSyn_Match-Way-Not-Null=\u5339\u914D\u8BBE\u7F6E\u4E0D\u80FD\u4E3A\u7A7A +Dec-DingTalkSyn_Not-Select=\u4E0D\u9009 +Dec-DingTalkSyn_Tip-Get-ReportServer-Url-Fail=\u8BF7\u914D\u7F6E\u670D\u52A1\u5668\u5730\u5740 +Dec-DingTalkSyn_Create-Agent-Tip=\u82E5\u65E0AppKey\uFF0C\u8BF7\u5728Appkey\u548CAppSecret\u4E2D\u5206\u522B\u586B\u5199CorpId\u548CCorpSecret +Dec-DingTalkSyn_IP-Config-Not-Available=\u8BBF\u95EEIP\u4E0D\u5728\u767D\u540D\u5355\u4E4B\u4E2D +Dec-DingTalkSyn_NetWork-Invalid=\u7F51\u7EDC\u5F02\u5E38 +Dec-DingTalkSyn_Not_Trusted_Domain_Error=\u9519\u8BEF\u4EE3\u7801\uFF1A11205040\uFF0CredirectUrl\u57DF\u540D\u4E0E\u540E\u53F0\u914D\u7F6E\u4E0D\u4E00\u81F4 +Dec-DingTalkSyn_Not_Trusted_Domain_Exception=\u68C0\u67E5\u57DF\u540D\u4E0E\u670D\u52A1\u5668\u5730\u5740\u662F\u5426\u4E00\u81F4 +Dec-DingTalkSyn_Debugger-Set-Level=\u8BBE\u7F6E\u65E5\u5FD7\u7EA7\u522B +Dec-DingTalkSyn_Debugger-Level=\u65E5\u5FD7\u7EA7\u522B +Dec-DingTalkSyn_Debugger-Parameter-List=\u53C2\u6570\u5217\u8868 +Dec-DingTalkSyn_Debugger-Content=\u8C03\u8BD5\u5185\u5BB9 +Dec-DingTalkSyn_Debugger-Type-Get-Access-Token=\u83B7\u53D6access_token +Dec-DingTalkSyn_Debugger-Type-Check-Ip=\u68C0\u67E5ip\u767D\u540D\u5355 +Dec-DingTalkSyn_Debugger-Start-Check=\u5F00\u59CB\u68C0\u6D4B +Dec-DingTalkSyn_Debugger-Show-Result=\u68C0\u6D4B\u7ED3\u679C +Dec-DingTalkSyn_Debugger-Type-Check-Request-Time=\u68C0\u6D4B\u8BF7\u6C42\u8017\u65F6 +Dec-DingTalkSyn_Debugger-Type-Check-Request-Time-Result=\u68C0\u6D4B\u7ED3\u679C +Dec-DingTalkSyn_Debugger-Tip-Curl-Invalid=\u63D0\u793A\uFF1A\u670D\u52A1\u5668\u7CFB\u7EDF\u82E5\u4E3Awindows\u5219\u9700\u8981\u5B89\u88C5curl\u5DE5\u5177\u624D\u80FD\u652F\u6301\u68C0\u6D4B +Dec-DingTalkSyn_Debugger-DownLoad_Log=\u4E0B\u8F7D\u65E5\u5FD7 +Dec-DingTalkSyn_Click-To-Download=\u70B9\u51FB\u4E0B\u8F7D +Dec-DingTalkSyn_Download-Fail=\u4E0B\u8F7D\u5931\u8D25 +Dec-DingTalkSyn_Not_Null=\u4E0D\u53EF\u4E3A\u7A7A +Dec-DingTalkSyn_ErrorDetail=\u9519\u8BEF\u4FE1\u606F +Dec-DingTalkSyn_Debugger-Check-Ip-Result=\u68C0\u67E5\u7ED3\u679C +Dec-DingTalkSyn_Debugger-Get-Token=access_token +Dec-DingTalkSyn_Agent_Deleted_Tip=\u65E0\u6CD5\u83B7\u53D6\u8BE5\u9489\u9489\u5E94\u7528\uFF0C\u8BF7\u68C0\u67E5\u914D\u7F6E\u9879\u662F\u5426\u6709\u8BEF +Dec-DingTalkSyn_Parse_Parameters=\u89E3\u6790\u53C2\u6570\u503C +Dec-DingTalkSyn_Parse_Parameters_Tip=\u5FAE\u4FE1\uFF0F\u9489\u9489\u96C6\u6210\u94FE\u63A5\u5FC5\u987B\u52FE\u9009\u89E3\u6790\u53C2\u6570\u503C\uFF0C\u5426\u5219\u5C06\u5BFC\u81F4\u53C2\u6570\u4E22\u5931\uFF1B\u6A21\u677F\u6D88\u606F\u63A8\u9001\u7684\u6D88\u606F\u94FE\u63A5\u53EF\u9009\u62E9\u4E0D\u89E3\u6790\u53C2\u6570\u503C\uFF0C\u4ECE\u800C\u5B9E\u73B0\u63A8\u9001\u65F6\u7684\u5B9E\u65F6\u516C\u5F0F\u8BA1\u7B97\u3002 +Dec-DingTalkSyn_Enterprise_Agent=\u9489\u9489\u5E94\u7528 +Dec-DingTalkSyn_Chatgroup_Name=\u9489\u9489\u7FA4\u540D\u79F0 +Dec-DingTalkSyn_Chat_Group=\u9489\u9489\u7FA4 +Dec-DingTalkSyn_New_Chat_Group=\u65B0\u5EFA\u9489\u9489\u7FA4 +Dec-DingTalkSyn_Delete_ChatGroup_Confirm=\u786E\u8BA4\u5220\u9664\u9489\u9489\u7FA4\uFF1F +Dec-DingTalkSyn_Chat_Group_Member_Tip=\u9664\u7FA4\u4E3B\u5916\uFF0C\u4E0D\u53EF\u5C11\u4E8E2\u4EBA +Dec-DingTalkSyn_Chat_Group_Leader=\u7FA4\u4E3B +Dec-DingTalkSyn_Chat_Group_Member=\u7FA4\u6210\u5458 +Dec-DingTalkSyn_New_Chat_Group_Tip1=\u7FA4\u6210\u5458\u8D85\u8FC730\u4EBA\u65F6\uFF0C\u5EFA\u8BAE\u5728\u9489\u9489\u5BA2\u6237\u7AEF\u6DFB\u52A0\u66F4\u591A\u7FA4\u6210\u5458\u3002 +Dec-DingTalkSyn_New_Chat_Group_Tip2=\u5BA2\u6237\u7AEF\u6DFB\u52A0\u7684\u6210\u5458\u82E5\u4E0D\u5728\u5E94\u7528\u53EF\u89C1\u8303\u56F4\u5185\uFF0C\u5C06\u65E0\u6CD5\u5355\u70B9\u767B\u5F55\u67E5\u770B\u6A21\u677F\u3002 +Dec-DingTalkSyn_New_Chat_Group_Message=\u60A8\u5DF2\u52A0\u5165\u7FA4\u804A +Dec-DingTalkSyn_Common_Error_Tip=\u53D1\u751F\u9519\u8BEF\uFF0C\u9519\u8BEF\u7801\u4E3A\uFF1A +Dec-DingTalkSyn_Chat_Group_Name_Length_Tip=\u7FA4\u540D\u79F0\u957F\u5EA6\u965020\u4E2A\u5B57\u7B26 +Dec-DingTalkSyn_Create-Chat-Group-Fail=\u521B\u5EFA\u9489\u9489\u7FA4\u5931\u8D25 +Dec-DingTalkSyn_Output_User_Empty=\u63A8\u9001\u4EBA\u4E3A\u7A7A\uFF01 +Dec-DingTalkSyn_Message_Agent=\u5E94\u7528\u6D88\u606F +Dec-DingTalkSyn_Message_Group=\u7FA4\u6D88\u606F +Dec-DingTalkSyn_DingTalkSyn=\u9489\u9489 +Dec-DingTalkSyn_Output_User_Fail_Partly_Header=\u4E2A\u7528\u6237\u63A8\u9001\u5931\u8D25\uFF1A +Dec-DingTalkSyn_Output_User_Fail_Partly_Tip=...\uFF0C\u53EF\u5728\u65E5\u5FD7\u4E2D\u67E5\u770B\u5B8C\u6574\u7528\u6237\u540D\u5355 +Dec-DingTalkSyn_Output_Group_Fail_Partly_Header=\u4E2A\u7FA4\u63A8\u9001\u5931\u8D25\uFF1A +Dec-DingTalkSyn_Output_Group_Fail_Partly_Tip=...\uFF0C\u53EF\u5728\u65E5\u5FD7\u4E2D\u67E5\u770B\u5B8C\u6574\u7FA4\u540D\u5355 +Dec-DingTalkSyn_User_Match_Dec_User_Fail=\u9489\u9489\u7528\u6237\u5339\u914D\u5E73\u53F0\u7528\u6237\u5931\u8D25\uFF01 \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/mqh/dingtalksyn/web/codePage.html b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/web/codePage.html new file mode 100644 index 0000000..064ed88 --- /dev/null +++ b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/web/codePage.html @@ -0,0 +1,24 @@ + + + + + + + DingTalk + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/mqh/dingtalksyn/web/dingtalk.open.js b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/web/dingtalk.open.js new file mode 100644 index 0000000..3d1ed4d --- /dev/null +++ b/src/main/resources/com/fr/plugin/mqh/dingtalksyn/web/dingtalk.open.js @@ -0,0 +1 @@ +(function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dd=t():e.dd=t()})(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=707)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),o=n(180),i=n(2);t.ENV_ENUM=i.ENV_ENUM,t.ENV_ENUM_SUB=i.ENV_ENUM_SUB;var a=n(3);n(186),t.ddSdk=new a.Sdk(r.getENV(),o.log)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addWatchParamsDeal=function(e){var t=Object.assign({},e);return t.watch=!0,t},t.addDefaultCorpIdParamsDeal=function(e){var t=Object.assign({},e);return t.corpId="corpId",t},t.genDefaultParamsDealFn=function(e){var t=Object.assign({},e);return function(e){return Object.assign({},t,e)}},t.forceChangeParamsDealFn=function(e){var t=Object.assign({},e);return function(e){return Object.assign(e,t)}},t.genBoolResultDealFn=function(e){return function(t){var n=Object.assign({},t);return e.forEach(function(e){void 0!==n[e]&&(n[e]=!!n[e])}),n}},t.genBizStoreParamsDealFn=function(e){var t=Object.assign({},e);return"string"!=typeof t.params?(t.params=JSON.stringify(t),t):t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3),o=n(3);t.ENV_ENUM=o.ENV_ENUM,t.APP_TYPE=o.APP_TYPE,t.ENV_ENUM_SUB=o.ENV_ENUM_SUB;var i,a=n(183);(function(e){e.singlePage="singlePage",e.miniApp="miniApp",e.miniWidget="miniWidget"})(i||(i={})),t.getUA=function(){var e="";try{"undefined"!=typeof navigator&&(e=navigator&&(navigator.userAgent||navigator.swuserAgent)||"")}catch(t){e=""}return e},t.getENV=function(){var e=t.getUA(),n=/iPhone|iPad|iPod|iOS/i.test(e),o=/Android/i.test(e),s=/Nebula/i.test(e),d=/DingTalk/i.test(e),u=/dd-web/i.test(e),c="object"==typeof nuva,l="object"==typeof dd&&"function"==typeof dd.dtBridge,f=l&&n||c&&n,v=d||a.default.isDingTalk,p=n&&v||a.default.isWeexiOS||f,_=o&&v||a.default.isWeexAndroid,E=s&&v||l,N=u,P=r.APP_TYPE.WEB;if(N)P=r.APP_TYPE.WEBVIEW_IN_MINIAPP;else if(E)P=r.APP_TYPE.MINI_APP;else if(a.default.isWeexiOS||a.default.isWeexAndroid)try{var M=weex.config.ddWeexEnv;P=M===i.miniWidget?r.APP_TYPE.WEEX_WIDGET:r.APP_TYPE.WEEX}catch(e){P=r.APP_TYPE.WEEX}var h,m="*",k=e.match(/AliApp\(\w+\/([a-zA-Z0-9.-]+)\)/);null===k&&(k=e.match(/DingTalk\/([a-zA-Z0-9.-]+)/));var b;k&&k[1]&&(b=k[1]);var g="";if("undefined"!=typeof name&&(g=name),g)try{var I=JSON.parse(g);I.hostVersion&&(b=I.hostVersion),m=I.language||navigator.language||"*",h=I.containerId}catch(e){}var y=!!h;y&&!b&&(k=e.match(/DingTalk\(([a-zA-Z0-9\.-]+)\)/))&&k[1]&&(b=k[1]);var A,S=r.ENV_ENUM_SUB.noSub;if(p)A=r.ENV_ENUM.ios;else if(_)A=r.ENV_ENUM.android;else if(y){var V=e.indexOf("Macintosh; Intel Mac OS")>-1;S=V?r.ENV_ENUM_SUB.mac:r.ENV_ENUM_SUB.win,A=r.ENV_ENUM.pc}else A=r.ENV_ENUM.notInDingTalk;return{platform:A,platformSub:S,version:b,appType:P,language:m}}},function(e,t,n){"use strict";function r(e,t){var n=e&&e.vs;return"object"==typeof n&&(n=n[t.platformSub]),n}Object.defineProperty(t,"__esModule",{value:!0});var o=n(189);t.APP_TYPE=o.APP_TYPE,t.LogLevel=o.LogLevel,t.isFunction=o.isFunction,t.compareVersion=o.compareVersion,t.ENV_ENUM=o.ENV_ENUM,t.ENV_ENUM_SUB=o.ENV_ENUM_SUB;var i=function(){function e(e,t){var n=this;this.configJsApiList=[],this.hadConfig=!1,this.p={},this.config$=new Promise(function(e,t){n.p.reject=t,n.p.resolve=e}),this.logQueue=[],this.devConfig={debug:!1},this.platformConfigMap={},this.invokeAPIConfigMapByMethod={},this.isBridgeDrity=!0,this.getExportSdk=function(){return n.exportSdk},this.setAPI=function(e,t){n.invokeAPIConfigMapByMethod[e]=t},this.setPlatform=function(e){n.isBridgeDrity=!0,n.platformConfigMap[e.platform]=e,e.platform===n.env.platform&&e.bridgeInit().catch(function(e){n.customLog(o.LogLevel.WARNING,["auto bridgeInit error",e||""])})},this.getPlatformConfigMap=function(){return n.platformConfigMap},this.deleteApiConfig=function(e,t){var r=n.invokeAPIConfigMapByMethod[e];r&&delete r[t]},this.invokeAPI=function(e,t,i){void 0===t&&(t={}),void 0===i&&(i=!0),n.customLog(o.LogLevel.INFO,['==> "'+e+'" params: ',t]);var a=+new Date,s=a+"_"+Math.floor(1e3*Math.random());if(n.devConfig.onBeforeInvokeAPI)try{n.devConfig.onBeforeInvokeAPI({invokeId:s,method:e,params:t,startTime:a})}catch(e){n.customLog(o.LogLevel.ERROR,["call Hook:onBeforeInvokeAPI failed, reason:",e])}return!1===n.devConfig.isAuthApi&&(i=!1),n.bridgeInitFn().then(function(d){var u=n.invokeAPIConfigMapByMethod[e],c=n.devConfig.forceEnableDealApiFnMap&&n.devConfig.forceEnableDealApiFnMap[e]&&!0===n.devConfig.forceEnableDealApiFnMap[e](t),l=!c&&(!0===n.devConfig.isDisableDeal||n.devConfig.disbaleDealApiWhiteList&&-1!==n.devConfig.disbaleDealApiWhiteList.indexOf(e));if(u||!i){var f;if(u&&(f=u[n.env.platform]),f||!i){var v={};v=!l&&f&&f.paramsDeal&&o.isFunction(f.paramsDeal)?f.paramsDeal(t):Object.assign({},t);var p=function(e){return!l&&f&&f.resultDeal&&o.isFunction(f.resultDeal)?f.resultDeal(e):e};if(o.isFunction(v.onSuccess)){var _=v.onSuccess;v.onSuccess=function(e){_(p(e))}}return d(e,v).then(p,function(t){var a=n.hadConfig&&void 0===n.isReady&&-1!==n.configJsApiList.indexOf(e),s="object"==typeof t&&"string"==typeof t.errorCode&&t.errorCode===o.ERROR_CODE.no_permission,u="object"==typeof t&&"string"==typeof t.errorCode&&t.errorCode===o.ERROR_CODE.cancel,c=r(f,n.env),l=c&&n.env.version&&o.compareVersion(n.env.version,c),_=(n.env.platform===o.ENV_ENUM.ios||n.env.platform===o.ENV_ENUM.android)&&a&&s,E=n.env.platform===o.ENV_ENUM.pc&&a&&(l&&!u&&i||s);return _||E?n.config$.then(function(){return d(e,v).then(p)}):Promise.reject(t)}).then(function(r){if(n.devConfig.onAfterInvokeAPI)try{n.devConfig.onAfterInvokeAPI({invokeId:s,method:e,params:t,payload:r,isSuccess:!0,startTime:a,duration:+new Date-a})}catch(e){n.customLog(o.LogLevel.ERROR,["call Hook:onAfterInvokeAPI failed, reason:",e])}return n.customLog(o.LogLevel.INFO,['<== "'+e+'" success result: ',r]),r},function(r){if(n.devConfig.onAfterInvokeAPI)try{n.devConfig.onAfterInvokeAPI({invokeId:s,method:e,params:t,payload:r,startTime:a,duration:+new Date-a,isSuccess:!1})}catch(r){n.customLog(o.LogLevel.ERROR,["call Hook:onAfterInvokeAPI failed, reason:",r])}return n.customLog(o.LogLevel.WARNING,['<== "'+e+'" fail result: ',r]),Promise.reject(r)})}var E='"'+e+'" do not support the current platform ('+n.env.platform+")";return n.customLog(o.LogLevel.ERROR,[E]),Promise.reject({errorCode:o.ERROR_CODE.jsapi_internal_error,errorMessage:E})}var E="This API method is not configured for the platform ("+n.env.platform+")";return n.customLog(o.LogLevel.ERROR,[E]),Promise.reject({errorCode:o.ERROR_CODE.jsapi_internal_error,errorMessage:E})})},this.customLog=function(e,t){var r={level:e,text:t,time:new Date};if(!0===n.devConfig.debug)n.customLogInstance(r);else{n.logQueue.push(r);n.logQueue.length>10&&(n.logQueue=n.logQueue.slice(n.logQueue.length-10))}},this.clearLogQueue=function(){n.logQueue.forEach(function(e){n.customLogInstance(e)}),n.logQueue=[]},this.customLogInstance=t,this.env=e,this.bridgeInitFn=function(){if(n.bridgeInitFnPromise&&!n.isBridgeDrity)return n.bridgeInitFnPromise;n.isBridgeDrity=!1;var t=n.platformConfigMap[e.platform];if(t)n.bridgeInitFnPromise=t.bridgeInit().catch(function(e){return n.customLog(o.LogLevel.ERROR,["\b\b\b\b\bJsBridge initialization fails, jsapi will not work"]),Promise.reject(e)});else{var r="Do not support the current environment:"+e.platform;n.customLog(o.LogLevel.WARNING,[r]),n.bridgeInitFnPromise=Promise.reject(new Error(r))}return n.bridgeInitFnPromise};var i=function(e){void 0===e&&(e={}),n.devConfig=Object.assign(n.devConfig,e),!0===e.debug&&n.clearLogQueue(),e.extraPlatform&&n.setPlatform(e.extraPlatform)};this.exportSdk={config:function(t){void 0===t&&(t={});var r=!0;Object.keys(t).forEach(function(e){-1===["debug","usePromise"].indexOf(e)&&(r=!1)}),r?(n.customLog(o.LogLevel.WARNING,["This is a deprecated feature, recommend use dd.devConfig"]),i(t)):n.hadConfig?n.customLog(o.LogLevel.WARNING,["Config has been executed"]):(t.jsApiList&&(n.configJsApiList=t.jsApiList),n.hadConfig=!0,n.bridgeInitFn().then(function(r){var o=n.platformConfigMap[e.platform],i=t;o.authParamsDeal&&(i=o.authParamsDeal(i)),r(o.authMethod,i).then(function(e){n.isReady=!0,n.p.resolve(e)}).catch(function(e){n.isReady=!1,n.p.reject(e)})},function(){n.customLog(o.LogLevel.ERROR,['\b\b\b\b\bJsBridge initialization failed and "dd.config" failed to call'])}))},devConfig:i,ready:function(e){!1===n.hadConfig?(n.customLog(o.LogLevel.WARNING,["You don 't use a dd.config, so you don't need to wrap dd.ready, recommend remove dd.ready"]),n.bridgeInitFn().then(function(){e()})):n.config$.then(function(t){e()})},error:function(e){n.config$.catch(function(t){e(t)})},on:function(t,r){n.bridgeInitFn().then(function(){n.platformConfigMap[e.platform].event.on(t,r)})},off:function(t,r){n.bridgeInitFn().then(function(){n.platformConfigMap[e.platform].event.off(t,r)})},env:e,checkJsApi:function(t){void 0===t&&(t={});var i={};return t.jsApiList&&t.jsApiList.forEach(function(t){var a=n.invokeAPIConfigMapByMethod[t];if(a){var s=a[e.platform],d=r(s,e);d&&e.version&&o.compareVersion(e.version,d)&&(i[t]=!0)}i[t]||(i[t]=!1)}),Promise.resolve(i)},_invoke:function(e,t){return void 0===t&&(t={}),n.invokeAPI(e,t,!1)}}}return e}();t.Sdk=i},function(e,t,n){(function(t,n){e.exports=n()})(0,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=579)}({179:function(e,t,n){"use strict";var r=n(181);e.exports=r},181:function(e,t,n){"use strict";var r=n(183),o=n(184),i=n(182),a=n(185),s=new i,d=!1,u="",c=null,l={},f=/{.*}/;try{var v=window.name.match(f);if(v&&v[0])var l=JSON.parse(v[0])}catch(e){l={}}l.hostOrigin&&".dingtalk.com"===l.hostOrigin.split(":")[1].slice(0-".dingtalk.com".length)&&l.containerId&&(d=!0,u=l.hostOrigin,c=l.containerId);var p={},_=new Promise(function(e,t){p._resolve=e,p._reject=t}),E={},N=null;window.top!==window&&(N=window.top,p._resolve()),E[a.SYS_INIT]=function(e){N=e.frameWindow,p._resolve(),e.respond({})},window.addEventListener("message",function(e){var t=e.data,n=e.origin;if(n===u)if("response"===t.type&&t.msgId){var r=t.msgId,i=s.getMsyById(r);i&&i.receiveResponse(t.body,!t.success)}else if("event"===t.type&&t.msgId){var r=t.msgId,i=s.getMsyById(r);i&&i.receiveEvent(t.eventName,t.body)}else if("request"===t.type&&t.msgId){var i=new o(e.source,n,t);E[i.methodName]&&E[i.methodName](i)}}),t.invokeAPI=function(e,t){var n=new r(c,e,t);return d&&_.then(function(){N&&N.postMessage(n.getPayload(),u),s.addPending(n)}),n};var P=null;t.addEventListener=function(e,n){P||(P=t.invokeAPI(a.SYS_EVENT,{})),P.addEventListener(e,n)},t.removeEventListener=function(e,t){P&&P.removeEventListener(e,t)}},182:function(e,t,n){"use strict";var r=function(){this.pendingMsgs={}};r.prototype.addPending=function(e){this.pendingMsgs[e.id]=e;var t=function(){delete this.pendingMsgs[e.id],e.removeEventListener("_finish",t)}.bind(this);e.addEventListener("_finish",t)},r.prototype.getMsyById=function(e){return this.pendingMsgs[e]},e.exports=r},183:function(e,t,n){"use strict";var r=n(574),o=n(573),i=0,a=Math.floor(1e3*Math.random()),s=function(){return 1e3*(1e3*a+Math.floor(1e3*Math.random()))+ ++i%1e3},d={code:408,reason:"timeout"},u={TIMEOUT:"_timeout",FINISH:"_finish"},c={timeout:-1},l=function(e,t,n,r){this.id=s(),this.methodName=t,this.containerId=e,this.option=o({},c,r);var n=n||{};this._p={},this.result=new Promise(function(e,t){this._p._resolve=e,this._p._reject=t}.bind(this)),this.callbacks={},this.plainMsg=this._handleMsg(n),this._eventsHandle={},this._timeoutTimer=null,this._initTimeout(),this.isFinish=!1};l.prototype._initTimeout=function(){this._clearTimeout(),this.option.timeout>0&&(this._timeoutTimer=setTimeout(function(){this.receiveEvent(u.TIMEOUT),this.receiveResponse(d,!0)}.bind(this),this.option.timeout))},l.prototype._clearTimeout=function(){clearTimeout(this._timeoutTimer)},l.prototype._handleMsg=function(e){var t={};return Object.keys(e).forEach(function(n){var o=e[n];"function"==typeof o&&"on"===n.slice(0,2)?this.callbacks[n]=o:t[n]=r(o)}.bind(this)),t},l.prototype.getPayload=function(){return{msgId:this.id,containerId:this.containerId,methodName:this.methodName,body:this.plainMsg,type:"request"}},l.prototype.receiveEvent=function(e,t){if(this.isFinish&&e!==u.FINISH)return!1;e!==u.FINISH&&e!==u.TIMEOUT&&this._initTimeout(),Array.isArray(this._eventsHandle[e])&&this._eventsHandle[e].forEach(function(e){try{e(t)}catch(e){console.error(t)}});var n="on"+e.charAt(0).toUpperCase()+e.slice(1);return this.callbacks[n]&&this.callbacks[n](t),!0},l.prototype.addEventListener=function(e,t){if(!e||"function"!=typeof t)throw"eventName is null or handle is not a function, addEventListener fail";Array.isArray(this._eventsHandle[e])||(this._eventsHandle[e]=[]),this._eventsHandle[e].push(t)},l.prototype.removeEventListener=function(e,t){if(!e||!t)throw"eventName is null or handle is null, invoke removeEventListener fail";if(Array.isArray(this._eventsHandle[e])){var n=this._eventsHandle[e].indexOf(t);-1!==n&&this._eventsHandle[e].splice(n,1)}},l.prototype.receiveResponse=function(e,t){if(!0===this.isFinish)return!1;this._clearTimeout();var t=!!t;return t?this._p._reject(e):this._p._resolve(e),setTimeout(function(){this.receiveEvent(u.FINISH)}.bind(this),0),this.isFinish=!0,!0},e.exports=l},184:function(e,t,n){"use strict";var r=function(e,t,n){if(this._msgId=n.msgId,this.frameWindow=e,this.methodName=n.methodName,this.clientOrigin=t,this.containerId=n.containerId,this.params=n.body,!this._msgId)throw"msgId not exist";if(!this.frameWindow)throw"frameWindow not exist";if(!this.methodName)throw"methodName not exits";if(!this.clientOrigin)throw"clientOrigin not exist";this.hasResponded=!1};r.prototype.respond=function(e,t){var t=!!t;if(!0!==this.hasResponded){var n={type:"response",success:!t,body:e,msgId:this._msgId};this.frameWindow.postMessage(n,this.clientOrigin),this.hasResponded=!0}},r.prototype.emit=function(e,t){var n={type:"event",eventName:e,body:t,msgId:this._msgId};this.frameWindow.postMessage(n,this.clientOrigin)},e.exports=r},185:function(e,t,n){"use strict";e.exports={SYS_EVENT:"SYS_openAPIContainerInitEvent",SYS_INIT:"SYS_openAPIContainerInit"}},4:function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},572:function(e,t,n){(function(e,n){function r(e,t){return e.set(t[0],t[1]),e}function o(e,t){return e.add(t),e}function i(e,t){for(var n=-1,r=e.length;++n-1}function g(e,t){var n=this.__data__,r=W(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}function I(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=Ve}function ke(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function be(e){return!!e&&"object"==typeof e}function ge(e){return!!ke(e)&&(he(e)||c(e)?Pt:tt).test(_e(e))}function Ie(e){return"string"==typeof e||!Lt(e)&&be(e)&&Nt.call(e)==xe}function ye(e){var t=pe(e);if(!t&&!Pe(e))return z(e);var n=le(e),r=!!n,o=n||[],i=o.length;for(var a in e)!B(e,a)||r&&("length"==a||fe(a,i))||t&&"constructor"==a||o.push(a);return o}var Ae=200,Se="__lodash_hash_undefined__",Ve=9007199254740991,Ue="[object Arguments]",Oe="[object Boolean]",je="[object Date]",$e="[object Function]",we="[object GeneratorFunction]",De="[object Map]",Ce="[object Number]",Te="[object Object]",We="[object RegExp]",Re="[object Set]",xe="[object String]",Fe="[object Symbol]",Le="[object ArrayBuffer]",Be="[object DataView]",ze="[object Float32Array]",qe="[object Float64Array]",Ye="[object Int8Array]",Je="[object Int16Array]",Ge="[object Int32Array]",He="[object Uint8Array]",Xe="[object Uint8ClampedArray]",Ke="[object Uint16Array]",Qe="[object Uint32Array]",Ze=/[\\^$.*+?()[\]{}|]/g,et=/\w*$/,tt=/^\[object .+?Constructor\]$/,nt=/^(?:0|[1-9]\d*)$/,rt={};rt[Ue]=rt["[object Array]"]=rt[Le]=rt[Be]=rt[Oe]=rt[je]=rt[ze]=rt[qe]=rt[Ye]=rt[Je]=rt[Ge]=rt[De]=rt[Ce]=rt[Te]=rt[We]=rt[Re]=rt[xe]=rt[Fe]=rt[He]=rt[Xe]=rt[Ke]=rt[Qe]=!0,rt["[object Error]"]=rt[$e]=rt["[object WeakMap]"]=!1;var ot={function:!0,object:!0},it=ot[typeof t]&&t&&!t.nodeType?t:void 0,at=ot[typeof e]&&e&&!e.nodeType?e:void 0,st=at&&at.exports===it?it:void 0,dt=u(it&&at&&"object"==typeof n&&n),ut=u(ot[typeof self]&&self),ct=u(ot[typeof window]&&window),lt=u(ot[typeof this]&&this),ft=dt||ct!==(lt&<.window)&&ct||ut||lt||Function("return this")(),vt=Array.prototype,pt=Object.prototype,_t=Function.prototype.toString,Et=pt.hasOwnProperty,Nt=pt.toString,Pt=RegExp("^"+_t.call(Et).replace(Ze,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Mt=st?ft.Buffer:void 0,ht=ft.Symbol,mt=ft.Uint8Array,kt=Object.getOwnPropertySymbols,bt=Object.create,gt=pt.propertyIsEnumerable,It=vt.splice,yt=Object.getPrototypeOf,At=Object.keys,St=oe(ft,"DataView"),Vt=oe(ft,"Map"),Ut=oe(ft,"Promise"),Ot=oe(ft,"Set"),jt=oe(ft,"WeakMap"),$t=oe(Object,"create"),wt=_e(St),Dt=_e(Vt),Ct=_e(Ut),Tt=_e(Ot),Wt=_e(jt),Rt=ht?ht.prototype:void 0,xt=Rt?Rt.valueOf:void 0;v.prototype.clear=p,v.prototype.delete=_,v.prototype.get=E,v.prototype.has=N,v.prototype.set=P,M.prototype.clear=h,M.prototype.delete=m,M.prototype.get=k,M.prototype.has=b,M.prototype.set=g,I.prototype.clear=y,I.prototype.delete=A,I.prototype.get=S,I.prototype.has=V,I.prototype.set=U,O.prototype.clear=j,O.prototype.delete=$,O.prototype.get=w,O.prototype.has=D,O.prototype.set=C;var Ft=function(e){return function(e){return null==e?void 0:e.length}}();kt||(ae=function(){return[]}),(St&&se(new St(new ArrayBuffer(1)))!=Be||Vt&&se(new Vt)!=De||Ut&&"[object Promise]"!=se(Ut.resolve())||Ot&&se(new Ot)!=Re||jt&&"[object WeakMap]"!=se(new jt))&&(se=function(e){var t=Nt.call(e),n=t==Te?e.constructor:void 0,r=n?_e(n):void 0;if(r)switch(r){case wt:return Be;case Dt:return De;case Ct:return"[object Promise]";case Tt:return Re;case Wt:return"[object WeakMap]"}return t});var Lt=Array.isArray,Bt=Mt?function(e){return e instanceof Mt}:function(e){return function(){return!1}}();e.exports=x}).call(t,n(577)(e),n(4))},573:function(e,t,n){function r(e,t,n){var r=e[t];h.call(e,t)&&d(r,n)&&(void 0!==n||t in e)||(e[t]=n)}function o(e,t,n,o){n||(n={});for(var i=-1,a=t.length;++i-1&&e%1==0&&e-1&&e%1==0&&e<=_}function f(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}var v=n(575),p=n(576),_=9007199254740991,E="[object Function]",N="[object GeneratorFunction]",P=/^(?:0|[1-9]\d*)$/,M=Object.prototype,h=M.hasOwnProperty,m=M.toString,k=M.propertyIsEnumerable,b=!k.call({valueOf:1},"valueOf"),g=function(e){return function(e){return null==e?void 0:e.length}}(),I=function(e){return p(function(t,n){var r=-1,o=n.length,i=o>1?n[o-1]:void 0,s=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,s&&a(n[0],n[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r-1&&e%1==0&&e-1&&e%1==0&&e<=_}function f(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function v(e){return!!e&&"object"==typeof e}function p(e){return d(e)?r(e):o(e)}var _=9007199254740991,E="[object Arguments]",N="[object Function]",P="[object GeneratorFunction]",M=/^(?:0|[1-9]\d*)$/,h=Object.prototype,m=h.hasOwnProperty,k=h.toString,b=h.propertyIsEnumerable,g=function(e,t){return function(n){return e(t(n))}}(Object.keys,Object),I=Array.isArray;e.exports=p},576:function(e,t){function n(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function r(e,t){return t=b(void 0===t?e.length-1:t,0),function(){for(var r=arguments,o=-1,i=b(r.length-t,0),a=Array(i);++o0;)o=a.shift(),i=s.shift();return n?(i||0)>=(o||0):(i||0)>(o||0)},t.language=o.language,t.version=o.version},function(e,t,n){"use strict";function r(e,t,n){var r="Web"===n.platform,i="iOS"===n.platform,a="android"===n.platform,s=a||i,d=function(){return r?window.navigator.userAgent.toLowerCase():""}(),u=function(){var e={};if(r){var t=window.name;try{var n=JSON.parse(t);e.containerId=n.containerId,e.version=n.hostVersion,e.language=n.language||"*"}catch(e){}}return e}(),c=function(){return s?"DingTalk"===n.appName||"com.alibaba.android.rimet"===n.appName:d.indexOf("dingtalk")>-1||!!u.containerId}(),l=function(){if(r){if(u.version)return u.version;var e=d.match(/aliapp\(\w+\/([a-zA-Z0-9.-]+)\)/);null===e&&(e=d.match(/dingtalk\/([a-zA-Z0-9.-]+)/));return e&&e[1]||"Unknown"}return n.appVersion}(),f=!!u.containerId,v=/iphone|ipod|ios/.test(d),p=/ipad/.test(d),_=d.indexOf("android")>-1,E=d.indexOf("mac")>-1&&f,N=d.indexOf("win")>-1&&f,P=!E&&!N&&f,M=f,h="";return h=c?v||i?o.PLATFORM.IOS:_||a?o.PLATFORM.ANDROID:p?o.PLATFORM.IPAD:E?o.PLATFORM.MAC:N?o.PLATFORM.WINDOWS:P?o.PLATFORM.BROWSER:o.PLATFORM.UNKNOWN:o.PLATFORM.UNKNOWN,{isDingTalk:c,isWebiOS:v,isWebAndroid:_,isWeexiOS:i,isWeexAndroid:a,isDingTalkPCMac:E,isDingTalkPCWeb:P,isDingTalkPCWindows:N,isDingTalkPC:M,runtime:e,framework:t,platform:h,version:l,isWeex:s}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(11);t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(184),o=n(182),i=n(11),a=r.default().split("."),s=a[0],d=a[1],u=function(){var e={};switch(d){case i.FRAMEWORK.VUE:var t=weex.config,n=t.env;e.platform=n.platform,i.RUNTIME.WEEX===s&&(e.appVersion=n.appVersion,e.appName=n.appName);break;case i.FRAMEWORK.RAX:i.RUNTIME.WEEX===s&&(e.platform=navigator.platform,e.appName=navigator.appName,e.appVersion=navigator.appVersion);break;case i.FRAMEWORK.UNKNOWN:i.RUNTIME.WEB===s&&(e.platform=i.RUNTIME.WEB),i.RUNTIME.UNKNOWN===s&&(e.platform=i.RUNTIME.UNKNOWN)}return e}(),c=o.default(s,d,u);t.default=c},function(e,t,n){"use strict";function r(e,t){for(var n=e.length,r=0,o=!0;ro[i])return!0}return!0}Object.defineProperty(t,"__esModule",{value:!0}),t.isFunction=r,t.compareVersion=o;(function(e){e.cancel="-1",e.not_exist="1",e.no_permission="7",e.jsapi_internal_error="22"})(t.ERROR_CODE||(t.ERROR_CODE={}));(function(e){e.pc="pc",e.android="android",e.ios="ios",e.notInDingTalk="notInDingTalk"})(t.ENV_ENUM||(t.ENV_ENUM={}));(function(e){e.mac="mac",e.win="win",e.noSub="noSub"})(t.ENV_ENUM_SUB||(t.ENV_ENUM_SUB={}));(function(e){e.WEB="WEB",e.MINI_APP="MINI_APP",e.WEEX="WEEX",e.WEBVIEW_IN_MINIAPP="WEBVIEW_IN_MINIAPP",e.WEEX_WIDGET="WEEX_WIDGET"})(t.APP_TYPE||(t.APP_TYPE={}));(function(e){e[e.INFO=1]="INFO",e[e.WARNING=2]="WARNING",e[e.ERROR=3]="ERROR"})(t.LogLevel||(t.LogLevel={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(2),i=n(3),a=n(5),s=n(9),d=n(176),u=n(6),c=n(8),l=n(10);r.ddSdk.setPlatform({platform:o.ENV_ENUM.android,bridgeInit:function(){var e=o.getENV();return e.appType===i.APP_TYPE.MINI_APP?Promise.resolve(a.default):e.appType===i.APP_TYPE.WEBVIEW_IN_MINIAPP?Promise.resolve(s.default):e.appType===i.APP_TYPE.WEEX?u.androidWeexBridge():d.h5AndroidbridgeInit().then(function(){return d.default})},authMethod:"runtime.permission.requestJsApis",event:{on:function(e,t){var n=o.getENV();switch(n.appType){case i.APP_TYPE.WEB:case i.APP_TYPE.WEBVIEW_IN_MINIAPP:c.on(e,t);break;case i.APP_TYPE.WEEX:l.on(e,t);break;default:throw new Error("Not support global event in the platfrom: "+n.appType)}},off:function(e,t){var n=o.getENV();switch(n.appType){case i.APP_TYPE.WEB:case i.APP_TYPE.WEBVIEW_IN_MINIAPP:c.off(e,t);break;case i.APP_TYPE.WEEX:l.off(e,t);break;default:throw new Error("Not support global event in the platfrom: "+n.appType)}}}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(193),n(190),n(192)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(2),i=n(3),a=n(5),s=n(9),d=n(177),u=n(6),c=n(8),l=n(10);r.ddSdk.setPlatform({platform:o.ENV_ENUM.ios,bridgeInit:function(){var e=o.getENV();return e.appType===i.APP_TYPE.MINI_APP?Promise.resolve(a.default):e.appType===i.APP_TYPE.WEBVIEW_IN_MINIAPP?Promise.resolve(s.default):e.appType===i.APP_TYPE.WEEX?u.iosWeexBridge():d.h5IosBridgeInit().then(function(){return d.default})},authMethod:"runtime.permission.requestJsApis",event:{on:function(e,t){var n=o.getENV();switch(n.appType){case i.APP_TYPE.WEB:case i.APP_TYPE.WEBVIEW_IN_MINIAPP:c.on(e,t);break;case i.APP_TYPE.WEEX:l.on(e,t);break;default:throw new Error("Not support global event in the platfrom: "+n.appType)}},off:function(e,t){var n=o.getENV();switch(n.appType){case i.APP_TYPE.WEB:case i.APP_TYPE.WEBVIEW_IN_MINIAPP:c.off(e,t);break;case i.APP_TYPE.WEEX:l.off(e,t);break;default:throw new Error("Not support global event in the platfrom: "+n.appType)}}}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(2),i=n(178),a=n(5),s=n(3),d=n(179);r.ddSdk.setPlatform({platform:o.ENV_ENUM.pc,bridgeInit:function(){switch(o.getENV().appType){case s.APP_TYPE.MINI_APP:return Promise.resolve(a.default);default:return i.h5PcBridgeInit().then(function(){return i.default})}},authMethod:"config",authParamsDeal:function(e){var t=Object.assign({},e);return t.url=window.location.href.split("#")[0],t},event:{on:function(e,t){if(o.getENV().appType===s.APP_TYPE.WEB)return d.on(e,t)},off:function(e,t){if(o.getENV().appType===s.APP_TYPE.WEB)return d.off(e,t)}}})},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function i(e){if(l===clearTimeout)return clearTimeout(e);if((l===r||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function a(){_&&v&&(_=!1,v.length?p=v.concat(p):E=-1,p.length&&s())}function s(){if(!_){var e=o(a);_=!0;for(var t=p.length;t;){for(v=p,p=[];++E1)for(var n=1;n=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(196),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(t,n(7))},,function(e,t,n){"use strict";var r=n(175),o=n(665),i=Object.assign(r,o.apiObj);e.exports=i},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(12),o=n(13),i=n(14),a=n(15),s=n(16),d=n(17),u=n(18),c=n(19),l=n(20),f=n(21),v=n(22),p=n(23),_=n(24),E=n(25),N=n(26),P=n(27),M=n(28),h=n(29),m=n(30),k=n(31),b=n(32),g=n(33),I=n(34),y=n(35),A=n(36),S=n(37),V=n(38),U=n(39),O=n(40),j=n(41),$=n(42),w=n(43),D=n(44),C=n(45),T=n(46),W=n(47),R=n(48),x=n(49),F=n(50),L=n(51),B=n(52),z=n(53),q=n(54),Y=n(55),J=n(56),G=n(57),H=n(58),X=n(59),K=n(60),Q=n(61),Z=n(62),ee=n(63),te=n(64),ne=n(65),re=n(66),oe=n(67),ie=n(68),ae=n(69),se=n(70),de=n(71),ue=n(72),ce=n(73),le=n(74),fe=n(75),ve=n(76),pe=n(77),_e=n(78),Ee=n(79),Ne=n(80),Pe=n(81),Me=n(82),he=n(83),me=n(84),ke=n(85),be=n(86),ge=n(87),Ie=n(88),ye=n(89),Ae=n(90),Se=n(91),Ve=n(92),Ue=n(93),Oe=n(94),je=n(95),$e=n(96),we=n(97),De=n(98),Ce=n(99),Te=n(100),We=n(101),Re=n(102),xe=n(103),Fe=n(104),Le=n(105),Be=n(106),ze=n(107),qe=n(108),Ye=n(109),Je=n(110),Ge=n(111),He=n(112),Xe=n(113),Ke=n(114),Qe=n(115),Ze=n(116),et=n(117),tt=n(118),nt=n(119),rt=n(120),ot=n(121),it=n(122),at=n(123),st=n(124),dt=n(125),ut=n(126),ct=n(127),lt=n(128),ft=n(129),vt=n(130),pt=n(131),_t=n(132),Et=n(133),Nt=n(134),Pt=n(135),Mt=n(136),ht=n(137),mt=n(138),kt=n(139),bt=n(140),gt=n(141),It=n(142),yt=n(143),At=n(144),St=n(145),Vt=n(146),Ut=n(147),Ot=n(148),jt=n(149),$t=n(150),wt=n(151),Dt=n(152),Ct=n(153),Tt=n(154),Wt=n(155),Rt=n(156),xt=n(157),Ft=n(158),Lt=n(159),Bt=n(160),zt=n(161),qt=n(162),Yt=n(163),Jt=n(164),Gt=n(165),Ht=n(166),Xt=n(167),Kt=n(168),Qt=n(169),Zt=n(170),en=n(171),tn=n(172),nn=n(173);t.apiObj={biz:{ATMBle:{beaconPicker:r.beaconPicker$,faceManager:o.faceManager$,punchModePicker:i.punchModePicker$},alipay:{pay:a.pay$},calendar:{chooseDateTime:s.chooseDateTime$,chooseHalfDay:d.chooseHalfDay$,chooseInterval:u.chooseInterval$,chooseOneDay:c.chooseOneDay$},chat:{chooseConversationByCorpId:l.chooseConversationByCorpId$,collectSticker:f.collectSticker$,createSceneGroup:v.createSceneGroup$,getRealmCid:p.getRealmCid$,locationChatMessage:_.locationChatMessage$,openSingleChat:E.openSingleChat$,pickConversation:N.pickConversation$,sendEmotion:P.sendEmotion$,toConversation:M.toConversation$},clipboardData:{setData:h.setData$},conference:{videoConfCall:m.videoConfCall$},contact:{choose:k.choose$,chooseMobileContacts:b.chooseMobileContacts$,complexPicker:g.complexPicker$,createGroup:I.createGroup$,departmentsPicker:y.departmentsPicker$,externalComplexPicker:A.externalComplexPicker$,externalEditForm:S.externalEditForm$,setRule:V.setRule$},cspace:{chooseSpaceDir:U.chooseSpaceDir$,delete:O.delete$,preview:j.preview$,saveFile:$.saveFile$},customContact:{choose:w.choose$,multipleChoose:D.multipleChoose$},ding:{create:C.create$,post:T.post$},event:{notifyWeex:W.notifyWeex$},intent:{fetchData:R.fetchData$},iot:{bind:x.bind$,bindMeetingRoom:F.bindMeetingRoom$,getDeviceProperties:L.getDeviceProperties$,invokeThingService:B.invokeThingService$,queryMeetingRoomList:z.queryMeetingRoomList$,setDeviceProperties:q.setDeviceProperties$,unbind:Y.unbind$},map:{locate:J.locate$,search:G.search$,view:H.view$},media:{compressVideo:X.compressVideo$},microApp:{openApp:K.openApp$},navigation:{close:Q.close$,goBack:Z.goBack$,hideBar:ee.hideBar$,quit:te.quit$,replace:ne.replace$,setIcon:re.setIcon$,setLeft:oe.setLeft$,setMenu:ie.setMenu$,setRight:ae.setRight$,setTitle:se.setTitle$},realm:{subscribe:de.subscribe$,unsubscribe:ue.unsubscribe$},shortCut:{addShortCut:ce.addShortCut$},store:{closeUnpayOrder:le.closeUnpayOrder$,createOrder:fe.createOrder$,getPayUrl:ve.getPayUrl$,inquiry:pe.inquiry$},telephone:{call:_e.call$,checkBizCall:Ee.checkBizCall$,quickCallList:Ne.quickCallList$,showCallMenu:Pe.showCallMenu$},user:{checkPassword:Me.checkPassword$,get:he.get$},util:{chosen:me.chosen$,datepicker:ke.datepicker$,datetimepicker:be.datetimepicker$,decrypt:ge.decrypt$,downloadFile:Ie.downloadFile$,encrypt:ye.encrypt$,isLocalFileExist:Ae.isLocalFileExist$,multiSelect:Se.multiSelect$,open:Ve.open$,openLink:Ue.openLink$,openLocalFile:Oe.openLocalFile$,openModal:je.openModal$,openSlidePanel:$e.openSlidePanel$,presentWindow:we.presentWindow$,previewImage:De.previewImage$,previewVideo:Ce.previewVideo$,scan:Te.scan$,scanCard:We.scanCard$,setScreenBrightnessAndKeepOn:Re.setScreenBrightnessAndKeepOn$,share:xe.share$,startDocSign:Fe.startDocSign$,systemShare:Le.systemShare$,timepicker:Be.timepicker$,uploadAttachment:ze.uploadAttachment$,uploadImage:qe.uploadImage$,uploadImageFromCamera:Ye.uploadImageFromCamera$,ut:Je.ut$},verify:{openBindIDCard:Ge.openBindIDCard$,startAuth:He.startAuth$}},channel:{permission:{requestAuthCode:Xe.requestAuthCode$}},device:{accelerometer:{clearShake:Ke.clearShake$,watchShake:Qe.watchShake$},audio:{download:Ze.download$,onPlayEnd:et.onPlayEnd$,onRecordEnd:tt.onRecordEnd$,pause:nt.pause$,play:rt.play$,resume:ot.resume$,startRecord:it.startRecord$,stop:at.stop$,stopRecord:st.stopRecord$,translateVoice:dt.translateVoice$},base:{getInterface:ut.getInterface$,getPhoneInfo:ct.getPhoneInfo$,getUUID:lt.getUUID$,getWifiStatus:ft.getWifiStatus$},connection:{getNetworkType:vt.getNetworkType$},geolocation:{checkPermission:pt.checkPermission$,get:_t.get$,start:Et.start$,status:Nt.status$,stop:Pt.stop$},launcher:{checkInstalledApps:Mt.checkInstalledApps$,launchApp:ht.launchApp$},nfc:{nfcRead:mt.nfcRead$,nfcStop:kt.nfcStop$,nfcWrite:bt.nfcWrite$},notification:{actionSheet:gt.actionSheet$,alert:It.alert$,confirm:yt.confirm$,extendModal:At.extendModal$,hidePreloader:St.hidePreloader$,modal:Vt.modal$,prompt:Ut.prompt$,showPreloader:Ot.showPreloader$,toast:jt.toast$,vibrate:$t.vibrate$},screen:{insetAdjust:wt.insetAdjust$,resetView:Dt.resetView$,rotateView:Ct.rotateView$}},net:{bjGovApn:{loginGovNet:Tt.loginGovNet$}},runtime:{message:{fetch:Wt.fetch$,post:Rt.post$},permission:{requestAuthCode:xt.requestAuthCode$,requestOperateAuthCode:Ft.requestOperateAuthCode$}},ui:{input:{plain:Lt.plain$},nav:{close:Bt.close$,getCurrentId:zt.getCurrentId$,go:qt.go$,preload:Yt.preload$,recycle:Jt.recycle$},progressBar:{setColors:Gt.setColors$},pullToRefresh:{disable:Ht.disable$,enable:Xt.enable$,stop:Kt.stop$},webViewBounce:{disable:Qt.disable$,enable:Zt.enable$}},util:{domainStorage:{getItem:en.getItem$,removeItem:tn.removeItem$,setItem:nn.setItem$}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){e.exports=n(199)}])}); \ No newline at end of file