diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Dingding.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Dingding.java index 6c755210fd598b5620f390e9aacb5b16d64d82ee..7184c5b164fdb941d059f9f29b4df9ec543e4efb 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Dingding.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Dingding.java @@ -31,7 +31,7 @@ public class Dingding extends ConfigObject { @FieldDescribe("应用的密钥") private String appSecret; - @FieldDescribe("组织同步cron,默认每10分钟同步一次.") + @FieldDescribe("回调信号触发同步检查,默认每10分钟运行一次,如果期间内有钉钉回调信号接收到,那么触发同步任务进行人员同步.") private String syncCron; @FieldDescribe("强制拉入同步cron,默认在每天的8点和12点强制进行同步.") diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Qiyeweixin.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Qiyeweixin.java index 94dd9fb4122c37a8242abb801b0fb0515dc4fe39..b6f13582a1bf12067e14b37b769bf0526b44638f 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Qiyeweixin.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Qiyeweixin.java @@ -19,7 +19,7 @@ public class Qiyeweixin extends ConfigObject { @FieldDescribe("是否启用.") private Boolean enable; - @FieldDescribe("拉入同步cron,默认每10分钟同步一次.") + @FieldDescribe("回调信号触发同步检查,默认每10分钟运行一次,如果期间内有企业微信回调信号接收到,那么触发同步任务进行人员同步.") private String syncCron; @FieldDescribe("强制拉入同步cron,默认在每天的8点和12点强制进行同步.") private String forceSyncCron; @@ -420,7 +420,6 @@ public class Qiyeweixin extends ConfigObject { this.scanLoginEnable = scanLoginEnable; } - public Boolean getAttendanceSyncEnable() { return attendanceSyncEnable; } @@ -451,8 +450,7 @@ public class Qiyeweixin extends ConfigObject { BaseTools.executeSyncFile(Config.PATH_CONFIG_QIYEWEIXIN); } - - //企业微信的logo 企业微信扫码登录的时候显示用 + // 企业微信的logo 企业微信扫码登录的时候显示用 // public static final String qywxLogo = "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"; public static final String qywxLogo = "https://app.o2oa.net/download/qywx-logo.png"; } diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java index 711e28be27b3bb5e5a4968e6edf2fc646e8ae8a8..4b65117c4803838c4f067b010ec93fabc64f7c63 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java @@ -10,231 +10,228 @@ import java.util.Calendar; import java.util.Date; /** - * Created by fancyLou on 2020-07-24. - * Copyright © 2020 O2. All rights reserved. + * Created by fancyLou on 2020-07-24. Copyright © 2020 O2. All rights reserved. */ public class WeLink extends ConfigObject { - @FieldDescribe("是否启用") - private Boolean enable; + @FieldDescribe("是否启用") + private Boolean enable; - @FieldDescribe("WeLink应用的client_id") - private String clientId; + @FieldDescribe("WeLink应用的client_id") + private String clientId; - @FieldDescribe("WeLink应用的client_secret") - private String clientSecret; + @FieldDescribe("WeLink应用的client_secret") + private String clientSecret; + @FieldDescribe("回调信号触发同步检查,默认每10分钟运行一次,如果期间内有WeLink回调信号接收到,那么触发同步任务进行人员同步.") + private String syncCron; - @FieldDescribe("组织同步cron,默认每10分钟同步一次.") - private String syncCron; + @FieldDescribe("强制拉入同步cron,默认在每天的8点和12点强制进行同步.") + private String forceSyncCron; - @FieldDescribe("强制拉入同步cron,默认在每天的8点和12点强制进行同步.") - private String forceSyncCron; + @FieldDescribe("WeLink api服务器地址") + private String oapiAddress; - @FieldDescribe("WeLink api服务器地址") - private String oapiAddress; + @FieldDescribe("是否启用消息推送") + private Boolean messageEnable; - @FieldDescribe("是否启用消息推送") - private Boolean messageEnable; - - @FieldDescribe("WeLink消息打开工作的url地址,如:http://dev.o2oa.net/x_desktop/") - private String workUrl = ""; - - @FieldDescribe("WeLink消息处理完成后跳转到特定的门户页面的Id") - private String messageRedirectPortal = ""; - - - - public static WeLink defaultInstance() { - return new WeLink(); - } - - public static final Boolean default_enable = false; - public static final String default_clientId = ""; - public static final String default_clientSecret = ""; - public static final String default_syncCron = "10 0/10 * * * ?"; - public static final String default_forceSyncCron = "10 45 8,12 * * ?"; - public static final String default_oapiAddress = "https://open.welink.huaweicloud.com/api"; - public static final Boolean default_messageEnable = false; - public static final String default_workUrl = ""; - public static final String default_messageRedirectPortal = ""; - - - public WeLink() { - this.enable = default_enable; - this.clientId = default_clientId; - this.clientSecret = default_clientSecret; - this.syncCron = default_syncCron; - this.forceSyncCron = default_forceSyncCron; - this.oapiAddress = default_oapiAddress; - this.messageEnable = default_messageEnable; - this.workUrl = default_workUrl; - this.messageRedirectPortal = default_messageRedirectPortal; - } - - public static String WeLink_Auth_Head_Key = "x-wlk-Authorization"; - - private static String cachedAccessToken; - private static Date cachedAccessTokenDate; - - public static class AccessTokenReq { - private String client_id; - private String client_secret; - - public String getClient_id() { - return client_id; - } - - public void setClient_id(String client_id) { - this.client_id = client_id; - } - - public String getClient_secret() { - return client_secret; - } - - public void setClient_secret(String client_secret) { - this.client_secret = client_secret; - } - } - public static class AccessTokenResp { - - private String access_token; - private String code; - private String message; - private Integer expires_in; - - public String getAccess_token() { - return access_token; - } - - public void setAccess_token(String access_token) { - this.access_token = access_token; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public Integer getExpires_in() { - return expires_in; - } - - public void setExpires_in(Integer expires_in) { - this.expires_in = expires_in; - } - } - - /** - * 获取WeLink AccessToken - * @return - * @throws Exception - */ - public String accessToken() throws Exception { - if ((StringUtils.isNotEmpty(cachedAccessToken) && (null != cachedAccessTokenDate)) - && (cachedAccessTokenDate.after(new Date()))) { - return cachedAccessToken; - } else { - String address = this.getOapiAddress() + "/auth/v2/tickets"; - AccessTokenReq req = new AccessTokenReq(); - req.setClient_id(this.getClientId()); - req.setClient_secret(this.getClientSecret()); - AccessTokenResp resp = HttpConnection.postAsObject(address, null, XGsonBuilder.instance().toJson(req), AccessTokenResp.class); - if (!resp.getCode().equals("0")) { - throw new ExceptionWeLinkAccessToken(resp.getCode(), resp.getMessage()); - } - cachedAccessToken = resp.getAccess_token(); - Integer second = resp.expires_in;//过期时间 秒 - Calendar cal = Calendar.getInstance(); - cal.add(Calendar.SECOND, (second - 300)); - cachedAccessTokenDate = cal.getTime(); - return cachedAccessToken; - } - } - - - - public Boolean getEnable() { - return BooleanUtils.isTrue(this.enable); - } - - public void setEnable(Boolean enable) { - this.enable = enable; - } - - public String getClientId() { - return StringUtils.isEmpty(this.clientId) ? default_clientId : this.clientId; - } - - public void setClientId(String clientId) { - this.clientId = clientId; - } - - public String getClientSecret() { - return StringUtils.isEmpty(this.clientSecret) ? default_clientSecret : this.clientSecret; - } - - public void setClientSecret(String clientSecret) { - this.clientSecret = clientSecret; - } - - public String getSyncCron() { - return StringUtils.isEmpty(this.syncCron) ? default_syncCron : this.syncCron; - } - - public void setSyncCron(String syncCron) { - this.syncCron = syncCron; - } - - public String getForceSyncCron() { - return StringUtils.isEmpty(this.forceSyncCron) ? default_forceSyncCron : this.forceSyncCron; - } - - public void setForceSyncCron(String forceSyncCron) { - this.forceSyncCron = forceSyncCron; - } - - public String getOapiAddress() { - return StringUtils.isEmpty(this.oapiAddress) ? default_oapiAddress : this.oapiAddress; - } - - public void setOapiAddress(String oapiAddress) { - this.oapiAddress = oapiAddress; - } - - public Boolean getMessageEnable() { - return BooleanUtils.isTrue(this.messageEnable); - } - - public void setMessageEnable(Boolean messageEnable) { - this.messageEnable = messageEnable; - } - - public String getWorkUrl() { - return StringUtils.isEmpty(this.workUrl) ? default_workUrl : this.workUrl; - } - - public void setWorkUrl(String workUrl) { - this.workUrl = workUrl; - } - - public String getMessageRedirectPortal() { - return StringUtils.isEmpty(this.messageRedirectPortal) ? default_messageRedirectPortal : this.messageRedirectPortal; - } - - public void setMessageRedirectPortal(String messageRedirectPortal) { - this.messageRedirectPortal = messageRedirectPortal; - } + @FieldDescribe("WeLink消息打开工作的url地址,如:http://dev.o2oa.net/x_desktop/") + private String workUrl = ""; + + @FieldDescribe("WeLink消息处理完成后跳转到特定的门户页面的Id") + private String messageRedirectPortal = ""; + + public static WeLink defaultInstance() { + return new WeLink(); + } + + public static final Boolean default_enable = false; + public static final String default_clientId = ""; + public static final String default_clientSecret = ""; + public static final String default_syncCron = "10 0/10 * * * ?"; + public static final String default_forceSyncCron = "10 45 8,12 * * ?"; + public static final String default_oapiAddress = "https://open.welink.huaweicloud.com/api"; + public static final Boolean default_messageEnable = false; + public static final String default_workUrl = ""; + public static final String default_messageRedirectPortal = ""; + + public WeLink() { + this.enable = default_enable; + this.clientId = default_clientId; + this.clientSecret = default_clientSecret; + this.syncCron = default_syncCron; + this.forceSyncCron = default_forceSyncCron; + this.oapiAddress = default_oapiAddress; + this.messageEnable = default_messageEnable; + this.workUrl = default_workUrl; + this.messageRedirectPortal = default_messageRedirectPortal; + } + + public static String WeLink_Auth_Head_Key = "x-wlk-Authorization"; + + private static String cachedAccessToken; + private static Date cachedAccessTokenDate; + + public static class AccessTokenReq { + private String client_id; + private String client_secret; + + public String getClient_id() { + return client_id; + } + + public void setClient_id(String client_id) { + this.client_id = client_id; + } + + public String getClient_secret() { + return client_secret; + } + + public void setClient_secret(String client_secret) { + this.client_secret = client_secret; + } + } + + public static class AccessTokenResp { + + private String access_token; + private String code; + private String message; + private Integer expires_in; + + public String getAccess_token() { + return access_token; + } + + public void setAccess_token(String access_token) { + this.access_token = access_token; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Integer getExpires_in() { + return expires_in; + } + + public void setExpires_in(Integer expires_in) { + this.expires_in = expires_in; + } + } + + /** + * 获取WeLink AccessToken + * + * @return + * @throws Exception + */ + public String accessToken() throws Exception { + if ((StringUtils.isNotEmpty(cachedAccessToken) && (null != cachedAccessTokenDate)) + && (cachedAccessTokenDate.after(new Date()))) { + return cachedAccessToken; + } else { + String address = this.getOapiAddress() + "/auth/v2/tickets"; + AccessTokenReq req = new AccessTokenReq(); + req.setClient_id(this.getClientId()); + req.setClient_secret(this.getClientSecret()); + AccessTokenResp resp = HttpConnection.postAsObject(address, null, XGsonBuilder.instance().toJson(req), + AccessTokenResp.class); + if (!resp.getCode().equals("0")) { + throw new ExceptionWeLinkAccessToken(resp.getCode(), resp.getMessage()); + } + cachedAccessToken = resp.getAccess_token(); + Integer second = resp.expires_in;// 过期时间 秒 + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.SECOND, (second - 300)); + cachedAccessTokenDate = cal.getTime(); + return cachedAccessToken; + } + } + + public Boolean getEnable() { + return BooleanUtils.isTrue(this.enable); + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public String getClientId() { + return StringUtils.isEmpty(this.clientId) ? default_clientId : this.clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getClientSecret() { + return StringUtils.isEmpty(this.clientSecret) ? default_clientSecret : this.clientSecret; + } + + public void setClientSecret(String clientSecret) { + this.clientSecret = clientSecret; + } + + public String getSyncCron() { + return StringUtils.isEmpty(this.syncCron) ? default_syncCron : this.syncCron; + } + + public void setSyncCron(String syncCron) { + this.syncCron = syncCron; + } + + public String getForceSyncCron() { + return StringUtils.isEmpty(this.forceSyncCron) ? default_forceSyncCron : this.forceSyncCron; + } + + public void setForceSyncCron(String forceSyncCron) { + this.forceSyncCron = forceSyncCron; + } + + public String getOapiAddress() { + return StringUtils.isEmpty(this.oapiAddress) ? default_oapiAddress : this.oapiAddress; + } + + public void setOapiAddress(String oapiAddress) { + this.oapiAddress = oapiAddress; + } + + public Boolean getMessageEnable() { + return BooleanUtils.isTrue(this.messageEnable); + } + + public void setMessageEnable(Boolean messageEnable) { + this.messageEnable = messageEnable; + } + + public String getWorkUrl() { + return StringUtils.isEmpty(this.workUrl) ? default_workUrl : this.workUrl; + } + + public void setWorkUrl(String workUrl) { + this.workUrl = workUrl; + } + + public String getMessageRedirectPortal() { + return StringUtils.isEmpty(this.messageRedirectPortal) ? default_messageRedirectPortal + : this.messageRedirectPortal; + } + + public void setMessageRedirectPortal(String messageRedirectPortal) { + this.messageRedirectPortal = messageRedirectPortal; + } } diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ZhengwuDingding.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ZhengwuDingding.java index 25bb631baa11edab2aa9a135be462b7b1be2c45d..d74780b9b93c82c49a651d975a0aacbae71a3625 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ZhengwuDingding.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ZhengwuDingding.java @@ -22,7 +22,7 @@ public class ZhengwuDingding extends ConfigObject { private String appSecret; @FieldDescribe("政务钉钉agentId") private String agentId; - @FieldDescribe("拉入同步cron,默认每10分钟同步一次.") + @FieldDescribe("回调信号触发同步检查,默认每10分钟运行一次,如果期间内有政务钉钉回调信号接收到,那么触发同步任务进行人员同步.") private String syncCron; @FieldDescribe("强制拉入同步cron,默认在每天的8点和12点强制进行同步.") private String forceSyncCron; diff --git a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/oauth/ActionToken.java b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/oauth/ActionToken.java index 46fdd4becfd03f2f74daf4095a93883921a22507..811a2c4afbe70e5d177221367cbb17f2ed82b6f2 100644 --- a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/oauth/ActionToken.java +++ b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/oauth/ActionToken.java @@ -52,6 +52,15 @@ class ActionToken extends StandardJaxrsAction { public static class WoToken extends GsonPropertyObject { private String access_token; private Integer expires_in; + private String token_type = "bearer"; + + public String getToken_type() { + return token_type; + } + + public void setToken_type(String token_type) { + this.token_type = token_type; + } public String getAccess_token() { return access_token; diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionCreateWithWork.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionCreateWithWork.java index 8fab25ba734305cb71322d0ee4bd4b56be964694..035d2ed4c47debd5d83ad3a65da5b9b34add5de7 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionCreateWithWork.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionCreateWithWork.java @@ -1,12 +1,12 @@ package com.x.processplatform.assemble.surface.jaxrs.read; -import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import com.google.gson.JsonElement; import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.factory.EntityManagerContainerFactory; +import com.x.base.core.project.Applications; import com.x.base.core.project.x_processplatform_service_processing; import com.x.base.core.project.annotation.FieldDescribe; import com.x.base.core.project.exception.ExceptionAccessDenied; @@ -15,7 +15,6 @@ import com.x.base.core.project.gson.GsonPropertyObject; import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.jaxrs.WoId; -import com.x.base.core.project.tools.DefaultCharset; import com.x.base.core.project.tools.ListTools; import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.ThisApplication; @@ -49,7 +48,7 @@ class ActionCreateWithWork extends BaseAction { List wos = ThisApplication.context().applications() .postQuery(effectivePerson.getDebugger(), x_processplatform_service_processing.class, - "read/work/" + URLEncoder.encode(work.getId(), DefaultCharset.name), wi, work.getJob()) + Applications.joinQueryUri("read", "work", work.getId()), wi, work.getJob()) .getDataAsList(Wo.class); result.setData(wos); return result;