提交 928bdbc1 编写于 作者: O o2null

Merge branch 'feature/messages' into 'develop'

升级messages配置文件

See merge request o2oa/o2oa!866
...@@ -27,11 +27,11 @@ import com.x.base.core.project.config.ConfigObject; ...@@ -27,11 +27,11 @@ import com.x.base.core.project.config.ConfigObject;
import com.x.base.core.project.config.Dingding; import com.x.base.core.project.config.Dingding;
import com.x.base.core.project.config.DumpRestoreData; import com.x.base.core.project.config.DumpRestoreData;
import com.x.base.core.project.config.Exmail; import com.x.base.core.project.config.Exmail;
import com.x.base.core.project.config.General;
import com.x.base.core.project.config.HuaweiPushConfig; import com.x.base.core.project.config.HuaweiPushConfig;
import com.x.base.core.project.config.JpushConfig; import com.x.base.core.project.config.JpushConfig;
import com.x.base.core.project.config.MPweixin; import com.x.base.core.project.config.MPweixin;
import com.x.base.core.project.config.Messages; import com.x.base.core.project.config.Messages;
import com.x.base.core.project.config.General;
import com.x.base.core.project.config.Node; import com.x.base.core.project.config.Node;
import com.x.base.core.project.config.Person; import com.x.base.core.project.config.Person;
import com.x.base.core.project.config.Portal; import com.x.base.core.project.config.Portal;
...@@ -55,8 +55,6 @@ import com.x.base.core.project.tools.DefaultCharset; ...@@ -55,8 +55,6 @@ import com.x.base.core.project.tools.DefaultCharset;
*/ */
public class CreateConfigSample { public class CreateConfigSample {
private static final Logger LOGGER = LoggerFactory.getLogger(CreateConfigSample.class);
private static final String DEFAULTINSTANCE = "defaultInstance"; private static final String DEFAULTINSTANCE = "defaultInstance";
public static void main(String... args) throws Exception { public static void main(String... args) throws Exception {
......
...@@ -28,26 +28,15 @@ public class Message extends GsonPropertyObject { ...@@ -28,26 +28,15 @@ public class Message extends GsonPropertyObject {
Gson gson = XGsonBuilder.instance(); Gson gson = XGsonBuilder.instance();
if (null != consumers) { if (null != consumers) {
for (String arg : conusmers) { for (String arg : conusmers) {
// this.consumersV2.put(arg, "");
this.consumers.add(gson.toJsonTree(concreteConsumer(arg))); this.consumers.add(gson.toJsonTree(concreteConsumer(arg)));
} }
} }
} }
// public Message(Map<String, String> map) {
// if (map != null) {
// this.consumersV2.putAll(map);
// }
// }
public static Message defaultInstance() { public static Message defaultInstance() {
return new Message(); return new Message();
} }
// @FieldDescribe("早期配置,已经废弃")
// @Deprecated
// private Map<String, String> consumersV2 = new HashMap<>();
@FieldDescribe("消费通道配置") @FieldDescribe("消费通道配置")
private List<JsonElement> consumers = new ArrayList<>(); private List<JsonElement> consumers = new ArrayList<>();
...@@ -62,14 +51,6 @@ public class Message extends GsonPropertyObject { ...@@ -62,14 +51,6 @@ public class Message extends GsonPropertyObject {
return consumers; return consumers;
} }
// public Map<String, String> getConsumersV2() {
// return consumersV2;
// }
//
// public void setConsumersV2(Map<String, String> consumersV2) {
// this.consumersV2 = consumersV2;
// }
public static class Consumer implements Serializable { public static class Consumer implements Serializable {
private static final long serialVersionUID = 392932139617988800L; private static final long serialVersionUID = 392932139617988800L;
...@@ -81,11 +62,14 @@ public class Message extends GsonPropertyObject { ...@@ -81,11 +62,14 @@ public class Message extends GsonPropertyObject {
private static final String DEFAULT_LOADER = ""; private static final String DEFAULT_LOADER = "";
private static final String DEFAULT_FILTER = ""; private static final String DEFAULT_FILTER = "";
private static final String DEFAULT_CONSUMER = "";
public Consumer() { public Consumer() {
this.type = DEFAULT_TYPE; this.type = DEFAULT_TYPE;
this.enable = DEFAULT_ENABLE; this.enable = DEFAULT_ENABLE;
this.loader = DEFAULT_LOADER; this.loader = DEFAULT_LOADER;
this.filter = DEFAULT_FILTER; this.filter = DEFAULT_FILTER;
this.consumer = DEFAULT_CONSUMER;
} }
public Consumer(String type, boolean enable) { public Consumer(String type, boolean enable) {
...@@ -93,6 +77,7 @@ public class Message extends GsonPropertyObject { ...@@ -93,6 +77,7 @@ public class Message extends GsonPropertyObject {
this.enable = enable; this.enable = enable;
this.loader = DEFAULT_LOADER; this.loader = DEFAULT_LOADER;
this.filter = DEFAULT_FILTER; this.filter = DEFAULT_FILTER;
this.consumer = DEFAULT_CONSUMER;
} }
public Consumer(String type) { public Consumer(String type) {
...@@ -109,6 +94,8 @@ public class Message extends GsonPropertyObject { ...@@ -109,6 +94,8 @@ public class Message extends GsonPropertyObject {
private String loader; private String loader;
@FieldDescribe("过滤脚本") @FieldDescribe("过滤脚本")
private String filter; private String filter;
@FieldDescribe("配置项")
private String consumer;
public Boolean getEnable() { public Boolean getEnable() {
return (null == this.enable) ? DEFAULT_ENABLE : this.enable; return (null == this.enable) ? DEFAULT_ENABLE : this.enable;
...@@ -125,6 +112,10 @@ public class Message extends GsonPropertyObject { ...@@ -125,6 +112,10 @@ public class Message extends GsonPropertyObject {
public String getLoader() { public String getLoader() {
return StringUtils.isBlank(this.loader) ? DEFAULT_LOADER : this.loader; return StringUtils.isBlank(this.loader) ? DEFAULT_LOADER : this.loader;
} }
public String getConsumer() {
return StringUtils.isBlank(this.consumer) ? DEFAULT_CONSUMER: this.consumer;
}
} }
......
package com.x.base.core.project.message; package com.x.base.core.project.message;
import java.util.Collections;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import com.google.common.collect.Sets;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.x.base.core.project.Context; import com.x.base.core.project.Context;
...@@ -149,13 +152,13 @@ public class MessageConnector { ...@@ -149,13 +152,13 @@ public class MessageConnector {
public static final String TYPE_TEAMWORK_TASKUPDATE = "teamwork_taskUpdate"; public static final String TYPE_TEAMWORK_TASKUPDATE = "teamwork_taskUpdate";
// 工作管理任务删除 // 工作管理任务删除
public static final String TYPE_TEAMWORK_TASKDELETE = "teamwork_taskDelelte"; public static final String TYPE_TEAMWORK_TASKDELETE = "teamwork_taskDelete";
// 工作管理任务超时 // 工作管理任务超时
public static final String TYPE_TEAMWORK_TASKOVERTIME = "teamwork_taskOvertime"; public static final String TYPE_TEAMWORK_TASKOVERTIME = "teamwork_taskOvertime";
// 工作管理聊天 // 工作管理聊天
public static final String TYPE_TEAMWORK_CHAT = "teamwork_taskChat"; public static final String TYPE_TEAMWORK_CHAT = "teamwork_chat";
// 内容管理发布 // 内容管理发布
public static final String TYPE_CMS_PUBLISH = "cms_publish"; public static final String TYPE_CMS_PUBLISH = "cms_publish";
...@@ -175,12 +178,12 @@ public class MessageConnector { ...@@ -175,12 +178,12 @@ public class MessageConnector {
// 脑图文件分享 // 脑图文件分享
public static final String TYPE_MIND_FILESHARE = "mind_fileShare"; public static final String TYPE_MIND_FILESHARE = "mind_fileShare";
// 审计日志通知
public static final String TYPE_AUDIT_LOG = "audit_log";
// IM 聊天消息发送 // IM 聊天消息发送
public static final String TYPE_IM_CREATE = "im_create"; public static final String TYPE_IM_CREATE = "im_create";
// 审计日志通知
// public static final String TYPE_AUDIT_LOG = "audit_log";
public static final String CONSUME_WS = "ws"; public static final String CONSUME_WS = "ws";
public static final String CONSUME_PMS_INNER = "pmsinner"; public static final String CONSUME_PMS_INNER = "pmsinner";
...@@ -215,6 +218,20 @@ public class MessageConnector { ...@@ -215,6 +218,20 @@ public class MessageConnector {
// 自定消费者类型前缀 // 自定消费者类型前缀
public static final String CONSUME_CUSTOM_PREFIX = "custom_"; public static final String CONSUME_CUSTOM_PREFIX = "custom_";
public static final Set<String> TYPES = Collections.unmodifiableSet(Sets.newHashSet(TYPE_APPLICATION_CREATE,
TYPE_APPLICATION_UPDATE, TYPE_APPLICATION_DELETE, TYPE_PROCESS_CREATE, TYPE_PROCESS_UPDATE,
TYPE_PROCESS_DELETE, TYPE_ACTIVITY_MESSAGE, TYPE_WORK_TO_WORKCOMPLETED, TYPE_WORK_CREATE, TYPE_WORK_DELETE,
TYPE_WORKCOMPLETED_CREATE, TYPE_WORKCOMPLETED_DELETE, TYPE_TASK_TO_TASKCOMPLETED, TYPE_TASK_CREATE,
TYPE_TASK_DELETE, TYPE_TASK_URGE, TYPE_TASK_EXPIRE, TYPE_TASK_PRESS, TYPE_TASKCOMPLETED_CREATE,
TYPE_TASKCOMPLETED_DELETE, TYPE_READ_TO_READCOMPLETED, TYPE_READ_CREATE, TYPE_READ_DELETE,
TYPE_READCOMPLETED_CREATE, TYPE_READCOMPLETED_DELETE, TYPE_REVIEW_CREATE, TYPE_REVIEW_DELETE,
TYPE_MEETING_INVITE, TYPE_MEETING_DELETE, TYPE_MEETING_ACCEPT, TYPE_MEETING_REJECT, TYPE_ATTACHMENT_CREATE,
TYPE_ATTACHMENT_DELETE, TYPE_ATTACHMENT_SHARE, TYPE_ATTACHMENT_SHARECANCEL, TYPE_ATTACHMENT_EDITOR,
TYPE_ATTACHMENT_EDITORCANCEL, TYPE_ATTACHMENT_EDITORMODIFY, TYPE_CALENDAR_ALARM, TYPE_CUSTOM_CREATE,
TYPE_TEAMWORK_TASKCREATE, TYPE_TEAMWORK_TASKUPDATE, TYPE_TEAMWORK_TASKDELETE, TYPE_TEAMWORK_TASKOVERTIME,
TYPE_TEAMWORK_CHAT, TYPE_CMS_PUBLISH, TYPE_CMS_PUBLISH_TO_CREATOR, TYPE_BBS_SUBJECTCREATE,
TYPE_BBS_REPLYCREATE, TYPE_MIND_FILESEND, TYPE_MIND_FILESHARE, TYPE_IM_CREATE));
private static Context context; private static Context context;
private static LinkedBlockingQueue<Wrap> connectQueue = new LinkedBlockingQueue<>(10000); private static LinkedBlockingQueue<Wrap> connectQueue = new LinkedBlockingQueue<>(10000);
...@@ -249,7 +266,7 @@ public class MessageConnector { ...@@ -249,7 +266,7 @@ public class MessageConnector {
} }
} }
public static class ConnectorThread extends Thread { private static class ConnectorThread extends Thread {
@Override @Override
public void run() { public void run() {
while (true) { while (true) {
...@@ -320,7 +337,7 @@ public class MessageConnector { ...@@ -320,7 +337,7 @@ public class MessageConnector {
} }
public static class StopSignal extends Wrap { private static class StopSignal extends Wrap {
private static final long serialVersionUID = -5631247237688117035L; private static final long serialVersionUID = -5631247237688117035L;
......
package com.x.message.assemble.communicate.jaxrs.connector; package com.x.message.assemble.communicate.jaxrs.connector;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.script.Bindings; import javax.script.Bindings;
...@@ -17,6 +12,7 @@ import javax.script.ScriptContext; ...@@ -17,6 +12,7 @@ import javax.script.ScriptContext;
import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
...@@ -46,8 +42,6 @@ class ActionCreate extends BaseAction { ...@@ -46,8 +42,6 @@ class ActionCreate extends BaseAction {
private static final Logger LOGGER = LoggerFactory.getLogger(ActionCreate.class); private static final Logger LOGGER = LoggerFactory.getLogger(ActionCreate.class);
private static ConcurrentMap<String, CompiledScript> scriptMap = new ConcurrentHashMap<>();
ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception { ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
LOGGER.debug("execute:{}, jsonElement:{}.", effectivePerson::getDistinguishedName, () -> jsonElement); LOGGER.debug("execute:{}, jsonElement:{}.", effectivePerson::getDistinguishedName, () -> jsonElement);
...@@ -56,405 +50,25 @@ class ActionCreate extends BaseAction { ...@@ -56,405 +50,25 @@ class ActionCreate extends BaseAction {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class); Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
List<Consumer> consumers = Config.messages().getConsumers(wi.getType()); List<Consumer> consumers = Config.messages().getConsumers(wi.getType());
consumers = consumers.stream().filter(Consumer::getEnable).collect(Collectors.toList()); consumers = consumers.stream().filter(Consumer::getEnable).collect(Collectors.toList());
// if (!ListTools.isEmpty(consumers)) {
Instant instant = v3instant(wi); Instant instant = v3instant(wi);
List<Message> messages = v3Assemble(wi, instant, consumers); List<Message> messages = v3Assemble(wi, instant, consumers);
v3Save(instant, messages); v3Save(instant, messages);
this.v3SendMessage(messages); this.v3SendMessage(messages);
// } else {
// Map<String, String> consumersV2 = Config.messages().getConsumersV2(wi.getType());
// Instant instant = this.instant(wi, new ArrayList<>(consumersV2.keySet()));
// List<Message> messages = assemble(wi, consumersV2, instant);
// save(instant, messages);
// this.sendMessage(messages);
// }
Wo wo = new Wo(); Wo wo = new Wo();
wo.setValue(true); wo.setValue(true);
result.setData(wo); result.setData(wo);
return result; return result;
} }
// @Deprecated
// private void save(Instant instant, List<Message> messages) throws Exception {
// try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
// emc.beginTransaction(Instant.class);
// emc.persist(instant, CheckPersistType.all);
// if (ListTools.isNotEmpty(messages)) {
// emc.beginTransaction(Message.class);
// for (Message message : messages) {
// emc.persist(message, CheckPersistType.all);
// }
// }
// emc.commit();
// }
// }
//
// @Deprecated
// private List<Message> assemble(Wi wi, Map<String, String> consumersV2, Instant instant) throws Exception {
// List<Message> messages = new ArrayList<>();
// if (!consumersV2.isEmpty()) {
// for (Map.Entry<String, String> en : consumersV2.entrySet()) {
// String func = consumersV2.get(en.getKey());
// Wi cpWi = this.executeFun(wi, func, en.getKey());
// if (cpWi != null) {
// Message message = this.assembleMessage(en.getKey(), cpWi, instant);
// if (message != null) {
// messages.add(message);
// }
// }
// }
// }
// return messages;
// }
//
// @Deprecated
// private Wi executeFun(Wi wi, String func, String consumer) {
// Wi cpWi = wi;
// try {
// if (StringUtils.isNoneBlank(func)) {
// cpWi = (Wi) BeanUtils.cloneBean(wi);
// JsonObject body = cpWi.getBody().deepCopy().getAsJsonObject();
// CompiledScript compiledScript = scriptMap.get(func);
// if (compiledScript == null) {
// String eval = Config.messageSendRuleScript();
// if (StringUtils.isNotEmpty(eval)) {
// eval = eval + "\r\n return " + func + "();";
// compiledScript = ScriptingFactory.functionalizationCompile(eval);
// scriptMap.put(func, compiledScript);
// }
// }
// if (compiledScript != null) {
// ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
// Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
// bindings.put(ScriptingFactory.BINDING_NAME_SERVICE_BODY, body);
// bindings.put(ScriptingFactory.BINDING_NAME_SERVICE_MESSAGE, cpWi);
// Boolean ifSend = JsonScriptingExecutor.evalBoolean(compiledScript, scriptContext);
// if (BooleanUtils.isNotTrue(ifSend)) {
// LOGGER.info("消息类型{}.{}的消息[{}]不满足发送条件.", wi.getType(), consumer, wi.getTitle());
// cpWi = null;
// } else {
// cpWi.setBody(body);
// }
// }
// }
// } catch (Exception e) {
// LOGGER.warn("执行消息发送脚本[{}]方法异常:{}", func, e.getMessage());
// }
// return cpWi;
// }
//
// @Deprecated
// private Message assembleMessage(String consumer, Wi cpWi, Instant instant) throws Exception {
// Message message = null;
// String type = StringUtils.lowerCase(Objects.toString(consumer, ""));
// switch (type) {
// case MessageConnector.CONSUME_WS:
// message = this.wsMessage(cpWi, instant);
// break;
// case MessageConnector.CONSUME_PMS_INNER:
// message = this.pmsInnerMessage(cpWi, instant);
// break;
// case MessageConnector.CONSUME_DINGDING:
// message = this.dingdingMessage(cpWi, instant);
// break;
// case MessageConnector.CONSUME_ZHENGWUDINGDING:
// message = this.zhengwudingdingMessage(cpWi, instant);
// break;
// case MessageConnector.CONSUME_QIYEWEIXIN:
// message = this.qiyeweixinMessage(cpWi, instant);
// break;
// case MessageConnector.CONSUME_CALENDAR:
// message = this.calendarMessage(cpWi, instant);
// break;
// case MessageConnector.CONSUME_WELINK:
// message = this.weLinkMessage(cpWi, instant);
// break;
// case MessageConnector.CONSUME_MPWEIXIN:
// message = this.mpweixinMessage(cpWi, instant);
// break;
// default:
// break;
// }
// return message;
//
// }
//
// @Deprecated
// private void sendMessage(List<Message> messages) throws Exception {
// for (Message message : messages) {
// switch (StringUtils.lowerCase(message.getConsumer())) {
// case MessageConnector.CONSUME_WS:
// sendMessageWs(message);
// break;
// case MessageConnector.CONSUME_CALENDAR:
// sendMessageCalendar(message);
// break;
// case MessageConnector.CONSUME_DINGDING:
// sendMessageDingding(message);
// break;
// case MessageConnector.CONSUME_WELINK:
// sendMessageWeLink(message);
// break;
// case MessageConnector.CONSUME_ZHENGWUDINGDING:
// sendMessageZhengwuDingding(message);
// break;
// case MessageConnector.CONSUME_QIYEWEIXIN:
// sendMessageQiyeweixin(message);
// break;
// case MessageConnector.CONSUME_PMS_INNER:
// sendMessagePmsInner(message);
// break;
// case MessageConnector.CONSUME_MPWEIXIN:
// sendMessageMPWeixin(message);
// break;
// default:
// break;
// }
// }
// }
//
// @Deprecated
// private void sendMessageMPWeixin(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.mPweixin().getEnable())
// && BooleanUtils.isTrue(Config.mPweixin().getMessageEnable())) {
// ThisApplication.mpweixinConsumeQueue.send(message);
// }
// }
//
// @Deprecated
// private void sendMessagePmsInner(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.pushConfig().getEnable())) {
// ThisApplication.pmsinnerConsumeQueue.send(message);
// }
//
// }
//
// @Deprecated
// private void sendMessageQiyeweixin(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.qiyeweixin().getEnable())
// && BooleanUtils.isTrue(Config.qiyeweixin().getMessageEnable())) {
// ThisApplication.qiyeweixinConsumeQueue.send(message);
// }
// }
//
// @Deprecated
// private void sendMessageZhengwuDingding(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.zhengwuDingding().getEnable())
// && BooleanUtils.isTrue(Config.zhengwuDingding().getMessageEnable())) {
// ThisApplication.zhengwudingdingConsumeQueue.send(message);
// }
// }
//
// @Deprecated
// private void sendMessageWeLink(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.weLink().getEnable())
// && BooleanUtils.isTrue(Config.weLink().getMessageEnable())) {
// ThisApplication.welinkConsumeQueue.send(message);
// }
// }
//
// @Deprecated
// private void sendMessageDingding(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.dingding().getEnable())
// && BooleanUtils.isTrue(Config.dingding().getMessageEnable())) {
// ThisApplication.dingdingConsumeQueue.send(message);
// }
// }
//
// @Deprecated
// private void sendMessageCalendar(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.communicate().calendarEnable())) {
// ThisApplication.calendarConsumeQueue.send(message);
// }
// }
//
// @Deprecated
// private void sendMessageWs(Message message) throws Exception {
// if (BooleanUtils.isTrue(Config.communicate().wsEnable())) {
// ThisApplication.wsConsumeQueue.send(message);
// }
// }
//
// @Deprecated
// private Instant instant(Wi wi, List<String> consumers) {
// Instant instant = new Instant();
// instant.setBody(Objects.toString(wi.getBody()));
// instant.setType(wi.getType());
// instant.setPerson(wi.getPerson());
// instant.setTitle(wi.getTitle());
// instant.setConsumerList(consumers);
// instant.setConsumed(false);
// return instant;
// }
//
// @Deprecated
// private Message wsMessage(Wi wi, Instant instant) throws Exception {
// Message message = null;
// if (BooleanUtils.isTrue(Config.communicate().wsEnable())) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_WS);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// return message;
// }
//
// @Deprecated
// private Message pmsInnerMessage(Wi wi, Instant instant) {
// Message message = null;
// try {
// if (BooleanUtils.isTrue(Config.pushConfig().getEnable())) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_PMS_INNER);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// } catch (Exception e) {
// LOGGER.error(e);
// }
// return message;
// }
//
// @Deprecated
// private Message dingdingMessage(Wi wi, Instant instant) {
// Message message = null;
// try {
// if (BooleanUtils.isTrue(Config.dingding().getEnable())
// && BooleanUtils.isTrue(Config.dingding().getMessageEnable())) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_DINGDING);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// } catch (Exception e) {
// LOGGER.error(e);
// }
// return message;
// }
//
// @Deprecated
// private Message weLinkMessage(Wi wi, Instant instant) {
// Message message = null;
// try {
// if (BooleanUtils.isTrue(Config.weLink().getEnable())
// && BooleanUtils.isTrue(Config.weLink().getMessageEnable())) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_WELINK);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// } catch (Exception e) {
// LOGGER.error(e);
// }
// return message;
// }
//
// @Deprecated
// private Message zhengwudingdingMessage(Wi wi, Instant instant) {
// Message message = null;
// try {
// if (Config.zhengwuDingding().getEnable() && Config.zhengwuDingding().getMessageEnable()) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_ZHENGWUDINGDING);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// } catch (Exception e) {
// LOGGER.error(e);
// }
// return message;
// }
//
// @Deprecated
// private Message qiyeweixinMessage(Wi wi, Instant instant) {
// Message message = null;
// try {
// if (BooleanUtils.isTrue(Config.qiyeweixin().getEnable())
// && BooleanUtils.isTrue(Config.qiyeweixin().getMessageEnable())) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_QIYEWEIXIN);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// } catch (Exception e) {
// LOGGER.error(e);
// }
// return message;
// }
//
// @Deprecated
// private Message mpweixinMessage(Wi wi, Instant instant) {
// Message message = null;
// try {
// if (BooleanUtils.isTrue(Config.mPweixin().getEnable())
// && BooleanUtils.isTrue(Config.mPweixin().getMessageEnable())) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_MPWEIXIN);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// } catch (Exception e) {
// LOGGER.error(e);
// }
// return message;
// }
//
// @Deprecated
// private Message calendarMessage(Wi wi, Instant instant) {
// Message message = null;
// try {
// if (BooleanUtils.isTrue(Config.communicate().calendarEnable())) {
// message = new Message();
// message.setBody(Objects.toString(wi.getBody()));
// message.setType(wi.getType());
// message.setPerson(wi.getPerson());
// message.setTitle(wi.getTitle());
// message.setConsumer(MessageConnector.CONSUME_CALENDAR);
// message.setConsumed(false);
// message.setInstant(instant.getId());
// }
// } catch (Exception e) {
// LOGGER.error(e);
// }
// return message;
// }
public static class Wi extends MessageConnector.Wrap { public static class Wi extends MessageConnector.Wrap {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 4821344908870350699L;
} }
public static class Wo extends WrapBoolean { public static class Wo extends WrapBoolean {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 7383440916383187868L;
} }
...@@ -663,9 +277,7 @@ class ActionCreate extends BaseAction { ...@@ -663,9 +277,7 @@ class ActionCreate extends BaseAction {
private Message v3CalendarMessage(Wi wi, Consumer consumer) { private Message v3CalendarMessage(Wi wi, Consumer consumer) {
Message message = null; Message message = null;
try { try {
// if (BooleanUtils.isTrue(Config.communicate().calendarEnable())) {
message = this.v3Message(wi, consumer); message = this.v3Message(wi, consumer);
// }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error(e); LOGGER.error(e);
} }
...@@ -675,16 +287,18 @@ class ActionCreate extends BaseAction { ...@@ -675,16 +287,18 @@ class ActionCreate extends BaseAction {
private boolean v3Filter(Wi wi, String filter) { private boolean v3Filter(Wi wi, String filter) {
try { try {
if (StringUtils.isNotBlank(filter)) { if (StringUtils.isNotBlank(filter)) {
CacheKey cacheKey = new CacheKey(this.getClass(), filter); CacheKey cacheKey = new CacheKey(this.getClass(), "filter:" + filter);
Optional<?> optional = CacheManager.get(cacheCategory, cacheKey); Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
CompiledScript compiledScript = null; CompiledScript compiledScript = null;
if (optional.isPresent()) { if (optional.isPresent()) {
compiledScript = (CompiledScript) optional.get(); compiledScript = (CompiledScript) optional.get();
} else { } else {
Path path = Config.dir_config().toPath().resolve(filter); String text = Config.messages().getFilter(filter);
compiledScript = ScriptingFactory if (StringUtils.isNotBlank(text)) {
.functionalizationCompile(Files.readString(path, StandardCharsets.UTF_8)); compiledScript = ScriptingFactory
CacheManager.put(cacheCategory, cacheKey, compiledScript); .functionalizationCompile(StringEscapeUtils.unescapeJson(text));
CacheManager.put(cacheCategory, cacheKey, compiledScript);
}
} }
if (compiledScript != null) { if (compiledScript != null) {
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript(); ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
...@@ -712,16 +326,18 @@ class ActionCreate extends BaseAction { ...@@ -712,16 +326,18 @@ class ActionCreate extends BaseAction {
private EvalMessage v3Load(Wi wi, String loader) { private EvalMessage v3Load(Wi wi, String loader) {
try { try {
if (StringUtils.isNotBlank(loader)) { if (StringUtils.isNotBlank(loader)) {
CacheKey cacheKey = new CacheKey(this.getClass(), loader); CacheKey cacheKey = new CacheKey(this.getClass(), "loader:" + loader);
Optional<?> optional = CacheManager.get(cacheCategory, cacheKey); Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
CompiledScript compiledScript = null; CompiledScript compiledScript = null;
if (optional.isPresent()) { if (optional.isPresent()) {
compiledScript = (CompiledScript) optional.get(); compiledScript = (CompiledScript) optional.get();
} else { } else {
Path path = Config.dir_config().toPath().resolve(loader); String text = Config.messages().getLoader(loader);
compiledScript = ScriptingFactory if (StringUtils.isNotBlank(text)) {
.functionalizationCompile(Files.readString(path, StandardCharsets.UTF_8)); compiledScript = ScriptingFactory
CacheManager.put(cacheCategory, cacheKey, compiledScript); .functionalizationCompile(StringEscapeUtils.unescapeJson(text));
CacheManager.put(cacheCategory, cacheKey, compiledScript);
}
} }
if (compiledScript != null) { if (compiledScript != null) {
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript(); ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
......
...@@ -10,7 +10,7 @@ import com.x.base.core.project.x_message_assemble_communicate; ...@@ -10,7 +10,7 @@ import com.x.base.core.project.x_message_assemble_communicate;
import com.x.base.core.project.annotation.FieldDescribe; import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.bean.WrapCopier; import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory; import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.config.Config; import com.x.base.core.project.config.Messages;
import com.x.base.core.project.gson.GsonPropertyObject; import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
...@@ -27,16 +27,16 @@ class ActionCustomCreate extends BaseAction { ...@@ -27,16 +27,16 @@ class ActionCustomCreate extends BaseAction {
private static final String CUSTOM_PREFIX = "custom_"; private static final String CUSTOM_PREFIX = "custom_";
ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception { ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
LOGGER.debug("execute:{}.", effectivePerson::getDistinguishedName); LOGGER.debug("execute:{}.", effectivePerson::getDistinguishedName);
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>(); ActionResult<Wo> result = new ActionResult<>();
Wi wi = this.convertToWrapIn(jsonElement, Wi.class); Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
if (!StringUtils.startsWith(wi.getType(), CUSTOM_PREFIX)) { if (!StringUtils.startsWith(wi.getType(), CUSTOM_PREFIX)) {
throw new ExceptionNotCustomMessage(wi.getType()); throw new ExceptionNotCustomMessage(wi.getType());
} }
if (!Config.messages().containsKey(wi.getType())) { if (!MessageConnector.TYPES.contains(wi.getType())) {
throw new ExceptionUndefinedMessageType(wi.getType()); throw new ExceptionUndefinedMessageType(wi.getType());
} }
Wo wo = ThisApplication.context().applications() Wo wo = ThisApplication.context().applications()
...@@ -52,7 +52,7 @@ class ActionCustomCreate extends BaseAction { ...@@ -52,7 +52,7 @@ class ActionCustomCreate extends BaseAction {
static WrapCopier<Wi, MessageConnector.Wrap> copier = WrapCopierFactory.wi(Wi.class, static WrapCopier<Wi, MessageConnector.Wrap> copier = WrapCopierFactory.wi(Wi.class,
MessageConnector.Wrap.class, null, JpaObject.FieldsUnmodify); MessageConnector.Wrap.class, null, JpaObject.FieldsUnmodify);
@FieldDescribe("类型") @FieldDescribe("类型")
private String type; private String type;
......
package com.x.organization.assemble.authentication.jaxrs.authentication; package com.x.organization.assemble.authentication.jaxrs.authentication;
import java.io.IOException;
import java.net.URISyntaxException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.x.base.core.project.config.Config; import com.x.base.core.project.config.Config;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger; import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory; import com.x.base.core.project.logger.LoggerFactory;
import com.x.organization.core.express.assemble.authentication.jaxrs.authentication.ActionCaptchaLoginRSAPublicKeyWo; import com.x.organization.core.express.assemble.authentication.jaxrs.authentication.ActionCaptchaRSAPublicKeyWo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
public class ActionCaptchaLoginRSAPublicKey extends BaseAction { public class ActionCaptchaRSAPublicKey extends BaseAction {
private static final Logger LOGGER = LoggerFactory.getLogger(ActionCaptchaLoginRSAPublicKey.class); private static final Logger LOGGER = LoggerFactory.getLogger(ActionCaptchaRSAPublicKey.class);
ActionResult<Wo> execute(HttpServletRequest request, HttpServletResponse response, EffectivePerson effectivePerson) ActionResult<Wo> execute(EffectivePerson effectivePerson) throws Exception {
throws IOException, URISyntaxException {
LOGGER.debug("execute:{}.", effectivePerson::getDistinguishedName); LOGGER.debug("execute:{}.", effectivePerson::getDistinguishedName);
ActionResult<Wo> result = new ActionResult<>(); ActionResult<Wo> result = new ActionResult<>();
Wo wo = new Wo(); Wo wo = new Wo();
wo.setPublicKey(Config.publicKey()); wo.setPublicKey(Config.publicKey());
wo.setRsaEnable(Config.token().getRsaEnable());
result.setData(wo); result.setData(wo);
return result; return result;
} }
@Schema(name = "com.x.organization.assemble.authentication.jaxrs.authentication.ActionCaptchaLoginRSAPublicKey$Wo") @Schema(name = "com.x.organization.assemble.authentication.jaxrs.authentication.ActionCaptchaRSAPublicKey$Wo")
public static class Wo extends ActionCaptchaLoginRSAPublicKeyWo { public static class Wo extends ActionCaptchaRSAPublicKeyWo {
private static final long serialVersionUID = 4078969835023141099L; private static final long serialVersionUID = 4078969835023141099L;
......
...@@ -181,17 +181,17 @@ public class AuthenticationAction extends StandardJaxrsAction { ...@@ -181,17 +181,17 @@ public class AuthenticationAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
} }
@JaxrsMethodDescribe(value = "获取公钥publicKey", action = ActionCaptchaLoginRSAPublicKey.class) @JaxrsMethodDescribe(value = "获取公钥publicKey", action = ActionCaptchaRSAPublicKey.class)
@GET @GET
@Path("captchaRSAPublicKey") @Path("captchaRSAPublicKey")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8) @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
public void captchaRSAPublicKey(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, public void captchaRSAPublicKey(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@Context HttpServletResponse response) { @Context HttpServletResponse response) {
ActionResult<ActionCaptchaLoginRSAPublicKey.Wo> result = new ActionResult<>(); ActionResult<ActionCaptchaRSAPublicKey.Wo> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request); EffectivePerson effectivePerson = this.effectivePerson(request);
try { try {
result = new ActionCaptchaLoginRSAPublicKey().execute(request, response, effectivePerson); result = new ActionCaptchaRSAPublicKey().execute(effectivePerson);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error(e, effectivePerson, request, null); LOGGER.error(e, effectivePerson, request, null);
result.error(e); result.error(e);
......
...@@ -103,6 +103,7 @@ abstract class BaseAction extends StandardJaxrsAction { ...@@ -103,6 +103,7 @@ abstract class BaseAction extends StandardJaxrsAction {
} }
public static class WoPersonAbstract extends Person { public static class WoPersonAbstract extends Person {
private static final long serialVersionUID = -8698017750369215370L; private static final long serialVersionUID = -8698017750369215370L;
@FieldDescribe("对个人的操作权限") @FieldDescribe("对个人的操作权限")
...@@ -119,6 +120,8 @@ abstract class BaseAction extends StandardJaxrsAction { ...@@ -119,6 +120,8 @@ abstract class BaseAction extends StandardJaxrsAction {
public static class Control extends GsonPropertyObject { public static class Control extends GsonPropertyObject {
private static final long serialVersionUID = -7663080651519557860L;
private Boolean allowEdit = false; private Boolean allowEdit = false;
private Boolean allowDelete = false; private Boolean allowDelete = false;
......
...@@ -5,7 +5,7 @@ import com.x.base.core.project.gson.GsonPropertyObject; ...@@ -5,7 +5,7 @@ import com.x.base.core.project.gson.GsonPropertyObject;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
public class ActionCaptchaLoginRSAPublicKeyWo extends GsonPropertyObject { public class ActionCaptchaRSAPublicKeyWo extends GsonPropertyObject {
private static final long serialVersionUID = 8305484005167999793L; private static final long serialVersionUID = 8305484005167999793L;
...@@ -13,6 +13,18 @@ public class ActionCaptchaLoginRSAPublicKeyWo extends GsonPropertyObject { ...@@ -13,6 +13,18 @@ public class ActionCaptchaLoginRSAPublicKeyWo extends GsonPropertyObject {
@Schema(description = "RSA公钥.") @Schema(description = "RSA公钥.")
private String publicKey; private String publicKey;
@FieldDescribe("是否启用rsa加密.")
@Schema(description = "是否启用rsa加密.")
private Boolean rsaEnable;
public Boolean getRsaEnable() {
return rsaEnable;
}
public void setRsaEnable(Boolean rsaEnable) {
this.rsaEnable = rsaEnable;
}
public String getPublicKey() { public String getPublicKey() {
return publicKey; return publicKey;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册