提交 65b9cf28 编写于 作者: 楼国栋

Merge branch 'fix/app_download_url' into 'develop'

im消息用户不在线发送app推送消息

See merge request o2oa/o2oa!1308
......@@ -28,7 +28,7 @@ public class Collect extends ConfigObject {
private static String Default_title = "企业办公平台";
private static String Default_footer = "www.o2oa.net";
private static String Default_name = "www.o2oa.net";
private static String Default_appUrl = "https://sample.o2oa.net/app/download.html";
private static String Default_appUrl = "https://app.o2oa.net/download/download.html";
private static String Default_server = "collect.o2oa.net";
private static Integer Default_port = 20080;
public static String ADDRESS_COLLECT_LOGIN = "/o2_collect_assemble/jaxrs/authentication/captcha/key/o2/answer/o2";
......
......@@ -26,7 +26,7 @@ public class PmsConsumeQueue extends AbstractQueue<Message> {
protected void execute(Message message) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
logger.debug("send pms message:{}.", message);
logger.info("send pms message:{}.", message);
Boolean result = false;
JsonElement jsonElement = XGsonBuilder.instance().fromJson(message.getBody(), JsonElement.class);
/* 跳过第一条待办的提醒 */
......@@ -47,6 +47,10 @@ public class PmsConsumeQueue extends AbstractQueue<Message> {
result = wrapBoolean.getValue();
}
}
//单独发送推送消息用,没有存message对象 所以没有id,不需要更新
if (StringUtils.isEmpty(message.getId())) {
return;
}
if (BooleanUtils.isTrue(result)) {
Message messageEntityObject = emc.find(message.getId(), Message.class);
if (null != messageEntityObject) {
......
......@@ -9,6 +9,7 @@ import com.x.base.core.project.queue.AbstractQueue;
import com.x.base.core.project.x_jpush_assemble_control;
import com.x.message.core.entity.Message;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
public class PmsInnerConsumeQueue extends AbstractQueue<Message> {
......@@ -21,6 +22,10 @@ public class PmsInnerConsumeQueue extends AbstractQueue<Message> {
innerMessage.setMessage(message.getTitle());
WrapBoolean wrapBoolean = ThisApplication.context().applications().postQuery(false, app, "message/send", innerMessage)
.getData(WrapBoolean.class);
//单独发送推送消息用,没有存message对象 所以没有id,不需要更新
if (StringUtils.isEmpty(message.getId())) {
return;
}
if (BooleanUtils.isTrue(wrapBoolean.getValue())) {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Message messageEntityObject = emc.find(message.getId(), Message.class);
......
......@@ -7,13 +7,17 @@ import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.annotation.CheckPersistType;
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.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.base.core.project.message.MessageConnector;
import com.x.message.assemble.communicate.ThisApplication;
import com.x.message.assemble.communicate.ws.collaboration.ActionCollaboration;
import com.x.message.core.entity.IMConversation;
import com.x.message.core.entity.IMMsg;
import com.x.message.core.entity.Message;
import java.util.Date;
import java.util.List;
......@@ -62,8 +66,30 @@ public class ActionMsgCreate extends BaseAction {
} catch (Exception e) {
logger.error(e);
}
logger.info("发送im消息, person: " + persons.get(i));
MessageConnector.send(MessageConnector.TYPE_IM_CREATE, "来自 "+ name + " 的消息", persons.get(i), msg);
String person = persons.get(i);
logger.info("发送im消息, person: " + person);
String title = "来自 "+ name + " 的消息";
MessageConnector.send(MessageConnector.TYPE_IM_CREATE, title, person, msg);
//如果消息接收者没有在线 连接ws 就发送一个推送消息
try {
if (!ActionCollaboration.clients.values().contains(person)) {
logger.info("向app 推送im消息, person: " + person);
Message message = new Message();
String body = imMessageBody(msg);
message.setTitle(title + ": " + body);
message.setPerson(person);
message.setType(MessageConnector.TYPE_IM_CREATE);
message.setId("");
if (Config.communicate().pmsEnable()) {
ThisApplication.pmsConsumeQueue.send(message);
}
if (Config.pushConfig().getEnable()) {
ThisApplication.pmsInnerConsumeQueue.send(message);
}
}
} catch (Exception e) {
logger.error(e);
}
}
ActionResult<Wo> result = new ActionResult<>();
......@@ -73,6 +99,16 @@ public class ActionMsgCreate extends BaseAction {
}
}
private String imMessageBody(IMMsg msg) {
String json = msg.getBody();
IMMessageBody body = gson.fromJson(json, IMMessageBody.class);
if ("emoji".equals(body.getType())) {
return "[表情]";
}else {
return body.getBody();
}
}
public static class Wo extends IMMsg {
......@@ -82,5 +118,26 @@ public class ActionMsgCreate extends BaseAction {
JpaObject.FieldsInvisible);
}
public static class IMMessageBody {
private String type;
private String body;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
}
......@@ -350,7 +350,7 @@ MWF.xDesktop.WebSocket = new Class({
if (body.type && body.type == "emoji") { //表情 消息
msgBody = "[表情]";
}
var content = "<font style='color: #333; font-weight: bold'>"+data.title+"</font>"+msgBody;
var content = "<font style='color: #333; font-weight: bold'>"+data.title+"</font>: "+msgBody;
var msg = {
"subject": MWF.LP.desktop.messsage.customMessageTitle,
"content": content
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册