提交 a290fa12 编写于 作者: O o2null

update

上级 780827a2
......@@ -4,12 +4,13 @@ import java.net.URLEncoder;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.connection.HttpConnection;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.message.DingdingMessage;
......@@ -20,7 +21,9 @@ import com.x.message.core.entity.Message;
public class DingdingConsumeQueue extends AbstractQueue<Message> {
private static Logger logger = LoggerFactory.getLogger(DingdingConsumeQueue.class);
private static final Logger LOGGER = LoggerFactory.getLogger(DingdingConsumeQueue.class);
private static final Gson gson = XGsonBuilder.instance();
protected void execute(Message message) throws Exception {
......@@ -31,32 +34,34 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
m.setAgent_id(Long.parseLong(Config.dingding().getAgentId(), 10));
m.setUserid_list(business.organization().person().getObject(message.getPerson()).getDingdingId());
if (StringUtils.isEmpty(m.getUserid_list())) {
logger.info("没有接收钉钉消息的人员。。。。。。。。。。。。。");
LOGGER.info("没有接收钉钉消息的人员。。。。。。。。。。。。。");
return;
}
if (needTransferLink(message.getType())) {
String openUrl = "";
// cms 文档
if (MessageConnector.TYPE_CMS_PUBLISH.equals(message.getType()) || MessageConnector.TYPE_CMS_PUBLISH_TO_CREATOR.equals(message.getType())) {
if (MessageConnector.TYPE_CMS_PUBLISH.equals(message.getType())
|| MessageConnector.TYPE_CMS_PUBLISH_TO_CREATOR.equals(message.getType())) {
openUrl = getDingdingOpenCMSDocumentUrl(message.getBody());
} else { // 流程工作相关的
openUrl = getDingdingOpenWorkUrl(message.getBody());
}
if (StringUtils.isNotEmpty(openUrl)) {
logger.debug("openUrl: "+openUrl);
LOGGER.debug("openUrl: " + openUrl);
// dingtalk://dingtalkclient/action/openapp?corpid=免登企业corpId&container_type=work_platform&app_id=0_{应用agentid}&redirect_type=jump&redirect_url=跳转url
String dingtalkUrl = "dingtalk://dingtalkclient/action/openapp?corpid=" + Config.dingding().getCorpId() +
"&container_type=work_platform&app_id=0_" + Config.dingding().getAgentId() +
"&redirect_type=jump&redirect_url="+ URLEncoder.encode(openUrl, DefaultCharset.name);
logger.info("钉钉pc 打开消息 url:"+dingtalkUrl);
String dingtalkUrl = "dingtalk://dingtalkclient/action/openapp?corpid="
+ Config.dingding().getCorpId() + "&container_type=work_platform&app_id=0_"
+ Config.dingding().getAgentId() + "&redirect_type=jump&redirect_url="
+ URLEncoder.encode(openUrl, DefaultCharset.name);
LOGGER.info("钉钉pc 打开消息 url:" + dingtalkUrl);
m.getMsg().setMsgtype("markdown");
m.getMsg().getMarkdown().setTitle(message.getTitle());
m.getMsg().getMarkdown().setText("["+message.getTitle()+"]("+dingtalkUrl+")");
}else {
m.getMsg().getMarkdown().setText("[" + message.getTitle() + "](" + dingtalkUrl + ")");
} else {
m.getMsg().getText().setContent(message.getTitle());
}
}else {
} else {
m.getMsg().getText().setContent(message.getTitle());
}
......@@ -64,13 +69,13 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
String address = Config.dingding().getOapiAddress()
+ "/topapi/message/corpconversation/asyncsend_v2?access_token="
+ Config.dingding().corpAccessToken();
logger.debug("钉钉发送消息url:" + address);
logger.debug("钉钉消息体:" + m.toString());
LOGGER.debug("钉钉发送消息url:" + address);
LOGGER.debug("钉钉消息体:" + m.toString());
DingdingMessageResp resp = HttpConnection.postAsObject(address, null, m.toString(),
DingdingMessageResp.class);
if (resp.getErrcode() != 0) {
ExceptionDingdingMessage e = new ExceptionDingdingMessage(resp.getErrcode(), resp.getErrmsg());
logger.error(e);
LOGGER.error(e);
} else {
Message messageEntityObject = emc.find(message.getId(), Message.class);
if (null != messageEntityObject) {
......@@ -85,6 +90,7 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
/**
* 文档打开的url
*
* @param messageBody
* @return
*/
......@@ -102,16 +108,17 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
} else {
o2oaUrl = o2oaUrl + "ddsso.html?redirect=" + openPage;
}
logger.info("o2oa 地址:" + o2oaUrl);
LOGGER.info("o2oa 地址:" + o2oaUrl);
return o2oaUrl;
}catch (Exception e) {
logger.error(e);
} catch (Exception e) {
LOGGER.error(e);
}
return null;
}
/**
* 工作打开的url
*
* @param messageBody
* @return
*/
......@@ -129,20 +136,18 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
if (messageRedirectPortal != null && !"".equals(messageRedirectPortal)) {
String portal = "portalmobile.html?id=" + messageRedirectPortal;
// 2021-11-1 钉钉那边无法使用了 不能进行encode 否则签名不通过
// portal = URLEncoder.encode(portal, DefaultCharset.name);
workUrl += "&redirectlink=" + portal;
}
// 2021-11-1 钉钉那边无法使用了 不能进行encode 否则签名不通过
// workUrl = URLEncoder.encode(workUrl, DefaultCharset.name);
logger.debug("o2oa workUrl:" + workUrl);
LOGGER.debug("o2oa workUrl:" + workUrl);
o2oaUrl = o2oaUrl + "ddsso.html?redirect=" + workUrl;
} else {
o2oaUrl = o2oaUrl + "ddsso.html?redirect=" + openPage;
}
logger.info("o2oa 地址:"+o2oaUrl);
LOGGER.info("o2oa 地址:" + o2oaUrl);
return o2oaUrl;
}catch (Exception e) {
logger.error(e);
} catch (Exception e) {
LOGGER.error(e);
}
return null;
......@@ -150,12 +155,13 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
/**
* 获取workid or workCompleted
*
* @param messageBody
* @return
*/
private String getWorkIdFromBody(String messageBody) {
try {
JsonObject object =new JsonParser().parse(messageBody).getAsJsonObject();
JsonObject object = gson.fromJson(messageBody, JsonObject.class);
if (object.get("work") != null) {
return object.get("work").getAsString();
}
......@@ -163,50 +169,52 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
return object.get("workCompleted").getAsString();
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
return null;
}
/**
* 这个执行的前提是 MessageConnector.TYPE_CMS_PUBLISH.equals(message.getType()) || MessageConnector.TYPE_CMS_PUBLISH_TO_CREATOR.equals(message.getType()) cms的消息
* 这个执行的前提是 MessageConnector.TYPE_CMS_PUBLISH.equals(message.getType()) ||
* MessageConnector.TYPE_CMS_PUBLISH_TO_CREATOR.equals(message.getType()) cms的消息
* body获取文档id
*
* @param messageBody
* @return
*/
private String getCmsDocumentId(String messageBody) {
try {
JsonObject object =new JsonParser().parse(messageBody).getAsJsonObject();
JsonObject object = gson.fromJson(messageBody, JsonObject.class);
if (object.get("id") != null) {
return object.get("id").getAsString();
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
return null;
}
/**
* body里面是否有 openPageUrl 这个字段 有就用这个字段作为跳转页面
*
* @param messageBody
* @return
*/
private String getOpenPageUrl(String messageBody) {
try {
JsonObject object =new JsonParser().parse(messageBody).getAsJsonObject();
JsonObject object = gson.fromJson(messageBody, JsonObject.class);
if (object.get("openPageUrl") != null) {
return object.get("openPageUrl").getAsString();
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
return null;
}
/**
* 是否需要把钉钉消息转成markdown格式消息
* 根据是否配置了钉钉工作链接、是否是工作消息(目前只支持工作消息)
* 是否需要把钉钉消息转成markdown格式消息 根据是否配置了钉钉工作链接、是否是工作消息(目前只支持工作消息)
*
* @param messageType 消息类型 判断是否是工作消息
* @return
*/
......@@ -217,37 +225,11 @@ public class DingdingConsumeQueue extends AbstractQueue<Message> {
return true;
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
return false;
}
// private List<String> workMessageTypeList() {
// List<String> list = new ArrayList<>();
// list.add(MessageConnector.TYPE_WORK_TO_WORKCOMPLETED);
// list.add(MessageConnector.TYPE_WORK_CREATE);
// list.add(MessageConnector.TYPE_WORK_DELETE);
// list.add(MessageConnector.TYPE_WORKCOMPLETED_CREATE);
// list.add(MessageConnector.TYPE_WORKCOMPLETED_DELETE);
// list.add(MessageConnector.TYPE_TASK_TO_TASKCOMPLETED);
// list.add(MessageConnector.TYPE_TASK_CREATE);
// list.add(MessageConnector.TYPE_TASK_DELETE);
// list.add(MessageConnector.TYPE_TASK_URGE);
// list.add(MessageConnector.TYPE_TASK_EXPIRE);
// list.add(MessageConnector.TYPE_TASK_PRESS);
// list.add(MessageConnector.TYPE_TASKCOMPLETED_CREATE);
// list.add(MessageConnector.TYPE_TASKCOMPLETED_DELETE);
// list.add(MessageConnector.TYPE_READ_TO_READCOMPLETED);
// list.add(MessageConnector.TYPE_READ_CREATE);
// list.add(MessageConnector.TYPE_READ_DELETE);
// list.add(MessageConnector.TYPE_READCOMPLETED_CREATE);
// list.add(MessageConnector.TYPE_READCOMPLETED_DELETE);
// list.add(MessageConnector.TYPE_REVIEW_CREATE);
// list.add(MessageConnector.TYPE_REVIEW_DELETE);
//
// return list;
// }
public static class DingdingMessageResp {
private Integer errcode;
......
......@@ -7,8 +7,8 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.config.Config;
......@@ -16,6 +16,7 @@ import com.x.base.core.project.config.MPweixin;
import com.x.base.core.project.config.MPweixinMessageTemp;
import com.x.base.core.project.connection.HttpConnection;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.queue.AbstractQueue;
......@@ -31,7 +32,8 @@ public class MPWeixinConsumeQueue extends AbstractQueue<Message> {
private static Logger logger = LoggerFactory.getLogger(MPWeixinConsumeQueue.class);
//
private static final Gson gson = XGsonBuilder.instance();
// creatorPerson 创建人 activityName 当前节点 processName 流程名称 startTime 开始时间 title 标题
@Override
......@@ -48,7 +50,7 @@ public class MPWeixinConsumeQueue extends AbstractQueue<Message> {
String openId = person.getMpwxopenId();
logger.info("openId : " + openId);
if (StringUtils.isNotEmpty(openId)) {
JsonObject object = new JsonParser().parse(message.getBody()).getAsJsonObject();
JsonObject object = gson.fromJson(message.getBody(), JsonObject.class);
Map<String, WeixinTempMessageFieldObj> data = new HashMap<>();
WeixinTempMessageFieldObj wobj = new WeixinTempMessageFieldObj();
wobj.setValue(message.getTitle());
......
......@@ -4,12 +4,14 @@ import java.net.URLEncoder;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.connection.HttpConnection;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.message.QiyeweixinMessage;
......@@ -21,6 +23,8 @@ public class QiyeweixinConsumeQueue extends AbstractQueue<Message> {
private static Logger logger = LoggerFactory.getLogger(QiyeweixinConsumeQueue.class);
private static final Gson gson = XGsonBuilder.instance();
protected void execute(Message message) throws Exception {
if (Config.qiyeweixin().getEnable() && Config.qiyeweixin().getMessageEnable()) {
......@@ -33,11 +37,11 @@ public class QiyeweixinConsumeQueue extends AbstractQueue<Message> {
if (needTransferLink(message.getType())) {
String workUrl = getQywxOpenWorkUrl(message.getBody());
if (StringUtils.isNotEmpty(workUrl)) {
content = "<a href=\"" + workUrl +"\">" + message.getTitle() + "</a>";
content = "<a href=\"" + workUrl + "\">" + message.getTitle() + "</a>";
}
}
m.getText().setContent(content);
logger.info("微信消息:"+m.toString());
logger.info("微信消息:" + m.toString());
String address = Config.qiyeweixin().getApiAddress() + "/cgi-bin/message/send?access_token="
+ Config.qiyeweixin().corpAccessToken();
QiyeweixinMessageResp resp = HttpConnection.postAsObject(address, null, m.toString(),
......@@ -59,6 +63,7 @@ public class QiyeweixinConsumeQueue extends AbstractQueue<Message> {
/**
* 生成单点登录和打开工作的地址
*
* @param messageBody
* @return
*/
......@@ -75,23 +80,21 @@ public class QiyeweixinConsumeQueue extends AbstractQueue<Message> {
String workUrl = "workmobilewithaction.html?workid=" + work;
String messageRedirectPortal = Config.qiyeweixin().getMessageRedirectPortal();
if (messageRedirectPortal != null && !"".equals(messageRedirectPortal)) {
String portal = "portalmobile.html?id="+messageRedirectPortal;
String portal = "portalmobile.html?id=" + messageRedirectPortal;
portal = URLEncoder.encode(portal, DefaultCharset.name);
workUrl += "&redirectlink=" + portal;
}
workUrl = URLEncoder.encode(workUrl, DefaultCharset.name);
o2oaUrl = o2oaUrl+"qiyeweixinsso.html?redirect="+workUrl;
logger.info("o2oa 地址:"+o2oaUrl);
o2oaUrl = o2oaUrl + "qiyeweixinsso.html?redirect=" + workUrl;
logger.info("o2oa 地址:" + o2oaUrl);
o2oaUrl = URLEncoder.encode(o2oaUrl, DefaultCharset.name);
logger.info("encode url :"+o2oaUrl);
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+corpId
+"&response_type=code&scope=snsapi_base"
+"&agentid="+agentId
+"&redirect_uri="+o2oaUrl
+"&#wechat_redirect" ;
logger.info("final url :" +url);
logger.info("encode url :" + o2oaUrl);
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + corpId
+ "&response_type=code&scope=snsapi_base" + "&agentid=" + agentId + "&redirect_uri=" + o2oaUrl
+ "&#wechat_redirect";
logger.info("final url :" + url);
return url;
}catch (Exception e) {
} catch (Exception e) {
logger.error(e);
}
......@@ -100,12 +103,13 @@ public class QiyeweixinConsumeQueue extends AbstractQueue<Message> {
/**
* 获取workid
*
* @param messageBody
* @return
*/
private String getWorkIdFromBody(String messageBody) {
try {
JsonObject object =new JsonParser().parse(messageBody).getAsJsonObject();
JsonObject object = gson.fromJson(messageBody, JsonObject.class);
if (object.get("work") != null) {
return object.get("work").getAsString();
}
......@@ -119,8 +123,8 @@ public class QiyeweixinConsumeQueue extends AbstractQueue<Message> {
}
/**
* 是否需要把企业微信消息转成超链接消息
* 根据是否配置了企业微信应用链接、是否是工作消息(目前只支持工作消息)
* 是否需要把企业微信消息转成超链接消息 根据是否配置了企业微信应用链接、是否是工作消息(目前只支持工作消息)
*
* @param messageType 消息类型 判断是否是工作消息
* @return
*/
......
......@@ -3,7 +3,6 @@ package com.x.query.service.processing.jaxrs.touch;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.container.AsyncResponse;
......@@ -11,7 +10,6 @@ import javax.ws.rs.container.Suspended;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import com.google.gson.JsonElement;
import com.x.base.core.project.annotation.JaxrsDescribe;
import com.x.base.core.project.annotation.JaxrsMethodDescribe;
import com.x.base.core.project.http.ActionResult;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册