提交 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;
import com.x.base.core.project.config.Dingding;
import com.x.base.core.project.config.DumpRestoreData;
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.JpushConfig;
import com.x.base.core.project.config.MPweixin;
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.Person;
import com.x.base.core.project.config.Portal;
......@@ -55,8 +55,6 @@ import com.x.base.core.project.tools.DefaultCharset;
*/
public class CreateConfigSample {
private static final Logger LOGGER = LoggerFactory.getLogger(CreateConfigSample.class);
private static final String DEFAULTINSTANCE = "defaultInstance";
public static void main(String... args) throws Exception {
......
......@@ -28,26 +28,15 @@ public class Message extends GsonPropertyObject {
Gson gson = XGsonBuilder.instance();
if (null != consumers) {
for (String arg : conusmers) {
// this.consumersV2.put(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() {
return new Message();
}
// @FieldDescribe("早期配置,已经废弃")
// @Deprecated
// private Map<String, String> consumersV2 = new HashMap<>();
@FieldDescribe("消费通道配置")
private List<JsonElement> consumers = new ArrayList<>();
......@@ -62,14 +51,6 @@ public class Message extends GsonPropertyObject {
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 {
private static final long serialVersionUID = 392932139617988800L;
......@@ -81,11 +62,14 @@ public class Message extends GsonPropertyObject {
private static final String DEFAULT_LOADER = "";
private static final String DEFAULT_FILTER = "";
private static final String DEFAULT_CONSUMER = "";
public Consumer() {
this.type = DEFAULT_TYPE;
this.enable = DEFAULT_ENABLE;
this.loader = DEFAULT_LOADER;
this.filter = DEFAULT_FILTER;
this.consumer = DEFAULT_CONSUMER;
}
public Consumer(String type, boolean enable) {
......@@ -93,6 +77,7 @@ public class Message extends GsonPropertyObject {
this.enable = enable;
this.loader = DEFAULT_LOADER;
this.filter = DEFAULT_FILTER;
this.consumer = DEFAULT_CONSUMER;
}
public Consumer(String type) {
......@@ -109,6 +94,8 @@ public class Message extends GsonPropertyObject {
private String loader;
@FieldDescribe("过滤脚本")
private String filter;
@FieldDescribe("配置项")
private String consumer;
public Boolean getEnable() {
return (null == this.enable) ? DEFAULT_ENABLE : this.enable;
......@@ -126,6 +113,10 @@ public class Message extends GsonPropertyObject {
return StringUtils.isBlank(this.loader) ? DEFAULT_LOADER : this.loader;
}
public String getConsumer() {
return StringUtils.isBlank(this.consumer) ? DEFAULT_CONSUMER: this.consumer;
}
}
public static Consumer concreteConsumer(String type) {
......
package com.x.base.core.project.message;
import java.util.Collections;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
import com.google.common.collect.Sets;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.x.base.core.project.Context;
......@@ -149,13 +152,13 @@ public class MessageConnector {
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_CHAT = "teamwork_taskChat";
public static final String TYPE_TEAMWORK_CHAT = "teamwork_chat";
// 内容管理发布
public static final String TYPE_CMS_PUBLISH = "cms_publish";
......@@ -175,12 +178,12 @@ public class MessageConnector {
// 脑图文件分享
public static final String TYPE_MIND_FILESHARE = "mind_fileShare";
// 审计日志通知
public static final String TYPE_AUDIT_LOG = "audit_log";
// IM 聊天消息发送
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_PMS_INNER = "pmsinner";
......@@ -215,6 +218,20 @@ public class MessageConnector {
// 自定消费者类型前缀
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 LinkedBlockingQueue<Wrap> connectQueue = new LinkedBlockingQueue<>(10000);
......@@ -249,7 +266,7 @@ public class MessageConnector {
}
}
public static class ConnectorThread extends Thread {
private static class ConnectorThread extends Thread {
@Override
public void run() {
while (true) {
......@@ -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;
......
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.List;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
import javax.script.Bindings;
......@@ -17,6 +12,7 @@ import javax.script.ScriptContext;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
......@@ -46,8 +42,6 @@ class ActionCreate extends BaseAction {
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 {
LOGGER.debug("execute:{}, jsonElement:{}.", effectivePerson::getDistinguishedName, () -> jsonElement);
......@@ -56,405 +50,25 @@ class ActionCreate extends BaseAction {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
List<Consumer> consumers = Config.messages().getConsumers(wi.getType());
consumers = consumers.stream().filter(Consumer::getEnable).collect(Collectors.toList());
// if (!ListTools.isEmpty(consumers)) {
Instant instant = v3instant(wi);
List<Message> messages = v3Assemble(wi, instant, consumers);
v3Save(instant, 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.setValue(true);
result.setData(wo);
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 {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 4821344908870350699L;
}
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 {
private Message v3CalendarMessage(Wi wi, Consumer consumer) {
Message message = null;
try {
// if (BooleanUtils.isTrue(Config.communicate().calendarEnable())) {
message = this.v3Message(wi, consumer);
// }
} catch (Exception e) {
LOGGER.error(e);
}
......@@ -675,17 +287,19 @@ class ActionCreate extends BaseAction {
private boolean v3Filter(Wi wi, String filter) {
try {
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);
CompiledScript compiledScript = null;
if (optional.isPresent()) {
compiledScript = (CompiledScript) optional.get();
} else {
Path path = Config.dir_config().toPath().resolve(filter);
String text = Config.messages().getFilter(filter);
if (StringUtils.isNotBlank(text)) {
compiledScript = ScriptingFactory
.functionalizationCompile(Files.readString(path, StandardCharsets.UTF_8));
.functionalizationCompile(StringEscapeUtils.unescapeJson(text));
CacheManager.put(cacheCategory, cacheKey, compiledScript);
}
}
if (compiledScript != null) {
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
......@@ -712,17 +326,19 @@ class ActionCreate extends BaseAction {
private EvalMessage v3Load(Wi wi, String loader) {
try {
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);
CompiledScript compiledScript = null;
if (optional.isPresent()) {
compiledScript = (CompiledScript) optional.get();
} else {
Path path = Config.dir_config().toPath().resolve(loader);
String text = Config.messages().getLoader(loader);
if (StringUtils.isNotBlank(text)) {
compiledScript = ScriptingFactory
.functionalizationCompile(Files.readString(path, StandardCharsets.UTF_8));
.functionalizationCompile(StringEscapeUtils.unescapeJson(text));
CacheManager.put(cacheCategory, cacheKey, compiledScript);
}
}
if (compiledScript != null) {
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
......
......@@ -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.bean.WrapCopier;
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.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
......@@ -36,7 +36,7 @@ class ActionCustomCreate extends BaseAction {
if (!StringUtils.startsWith(wi.getType(), CUSTOM_PREFIX)) {
throw new ExceptionNotCustomMessage(wi.getType());
}
if (!Config.messages().containsKey(wi.getType())) {
if (!MessageConnector.TYPES.contains(wi.getType())) {
throw new ExceptionUndefinedMessageType(wi.getType());
}
Wo wo = ThisApplication.context().applications()
......
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.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
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;
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)
throws IOException, URISyntaxException {
ActionResult<Wo> execute(EffectivePerson effectivePerson) throws Exception {
LOGGER.debug("execute:{}.", effectivePerson::getDistinguishedName);
ActionResult<Wo> result = new ActionResult<>();
Wo wo = new Wo();
wo.setPublicKey(Config.publicKey());
wo.setRsaEnable(Config.token().getRsaEnable());
result.setData(wo);
return result;
}
@Schema(name = "com.x.organization.assemble.authentication.jaxrs.authentication.ActionCaptchaLoginRSAPublicKey$Wo")
public static class Wo extends ActionCaptchaLoginRSAPublicKeyWo {
@Schema(name = "com.x.organization.assemble.authentication.jaxrs.authentication.ActionCaptchaRSAPublicKey$Wo")
public static class Wo extends ActionCaptchaRSAPublicKeyWo {
private static final long serialVersionUID = 4078969835023141099L;
......
......@@ -181,17 +181,17 @@ public class AuthenticationAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "获取公钥publicKey", action = ActionCaptchaLoginRSAPublicKey.class)
@JaxrsMethodDescribe(value = "获取公钥publicKey", action = ActionCaptchaRSAPublicKey.class)
@GET
@Path("captchaRSAPublicKey")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void captchaRSAPublicKey(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@Context HttpServletResponse response) {
ActionResult<ActionCaptchaLoginRSAPublicKey.Wo> result = new ActionResult<>();
ActionResult<ActionCaptchaRSAPublicKey.Wo> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionCaptchaLoginRSAPublicKey().execute(request, response, effectivePerson);
result = new ActionCaptchaRSAPublicKey().execute(effectivePerson);
} catch (Exception e) {
LOGGER.error(e, effectivePerson, request, null);
result.error(e);
......
......@@ -103,6 +103,7 @@ abstract class BaseAction extends StandardJaxrsAction {
}
public static class WoPersonAbstract extends Person {
private static final long serialVersionUID = -8698017750369215370L;
@FieldDescribe("对个人的操作权限")
......@@ -119,6 +120,8 @@ abstract class BaseAction extends StandardJaxrsAction {
public static class Control extends GsonPropertyObject {
private static final long serialVersionUID = -7663080651519557860L;
private Boolean allowEdit = false;
private Boolean allowDelete = false;
......
......@@ -5,7 +5,7 @@ import com.x.base.core.project.gson.GsonPropertyObject;
import io.swagger.v3.oas.annotations.media.Schema;
public class ActionCaptchaLoginRSAPublicKeyWo extends GsonPropertyObject {
public class ActionCaptchaRSAPublicKeyWo extends GsonPropertyObject {
private static final long serialVersionUID = 8305484005167999793L;
......@@ -13,6 +13,18 @@ public class ActionCaptchaLoginRSAPublicKeyWo extends GsonPropertyObject {
@Schema(description = "RSA公钥.")
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() {
return publicKey;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册