package com.engine.msgcenter.util;
import com.alibaba.fastjson.JSONObject;
import com.cloudstore.dev.api.bean.MessageBean;
import com.cloudstore.dev.api.message.constant.ConstantMapping;
import com.cloudstore.dev.api.util.APPManager;
import com.cloudstore.dev.api.util.EMManager;
import com.cloudstore.eccom.common.WeaIndexManager;
import com.engine.msgcenter.constant.MsgToEMConstant;
import com.engine.msgcenter.entity.MsgDataItem;
import com.engine.systeminfo.util.AppSyncUtil;
import com.icbc.api.internal.apache.http.E;
import com.weaver.file.Prop;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import weaver.conn.RecordSet;
import weaver.file.FileNamingManager;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.systeminfo.SystemEnv;
import java.io.InputStream;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MsgECToEM {
private static final Log log = LogFactory.getLog(MsgECToEM.class);
/**
* 设置在EM创建消息型应用的参数
*
* @param img_url 应用在EM显示的图标的地址
* @param agent_type 2:消息型应用
* @param name 应用名称
* @param description 描述
* @param dialog_url 描述
* @param sendmobile 是否发送到emobile
* @return
*/
public static MsgDataItem createMsgDataItem(String img_url, int agent_type, String name, String description, String dialog_url, String dialog_url_pc, String sendmobile) {
MsgDataItem item = new MsgDataItem();
item.setImg_url(img_url);
item.setAgent_type(agent_type);
item.setDescription(description);
item.setDialog_url(dialog_url);
item.setDialog_url_pc(dialog_url_pc);//EM根据这个是否为空来决定显示原生的还是H5页面,传和dialog_url一样的值
sendmobile = MsgToEMConstant.SEND_MOBILE.equals(sendmobile) ? "1" : "0";
item.setSend_to_em(sendmobile);
String zh_name = name;
if (name.contains("~"))
zh_name = Util.formatMultiLang(name, 7 + "");
item.setName(zh_name);
Set
|
||
", "\n");
htmlStr = htmlStr.replaceAll(" ", " ");
String regEx_html = "(
]*)(>)";
Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll("[" + SystemEnv.getHtmlLabelName(74, 7) + "]"); //过滤html标签
regEx_html = "<[^>]+>"; //定义HTML标签的正则表达式
p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(""); //过滤html标签
return htmlStr.trim();
}
return null;
}
/**
* 创建EC在EM的消息型应用
*/
public static String CreateMsgTypeApp(String img_url, String name, String description, String dialog_url, String sendmobile) {
MsgDataItem item = createMsgDataItem(img_url, 2, name, description, checkDialogUrl_New(dialog_url), checkDialogUrl_Old(dialog_url), sendmobile);
return getAgentId(item);
}
/**
* 创建EC在EM的消息型应用
*/
public static String CreateMsgTypeApp(String img_url, String name, String description, String app_Dialog_url, String pc_Dialogurl, String sendmobile) {
MsgDataItem item = createMsgDataItem(img_url, 2, name, description, checkDialogUrl_New(app_Dialog_url), checkDialogUrl_Old(pc_Dialogurl), sendmobile);
return getAgentId(item);
}
public static String getDialog_Url(String belongId, String isTab) {
String dialog_url = MsgToEMConstant.DIALOG_URL + belongId;
//新到达流程
if (MsgToEMConstant.IS_TAB.equals(isTab))
dialog_url += MsgToEMConstant.DIALOG_URL_Flag;
return dialog_url;
}
/**
* 用于创建消息型应用的时候,获取默认的EM PC端地址
*
* @param id ecology_biz_mobile_config 表中的id
* @return
*/
public static String getEM_PC_DialogUrl(String id) {
String dialog_url = MsgToEMConstant.DIALOG_URL + id;
return dialog_url;
}
/**
* 用于创建消息型应用的时候,获取默认的EM 移动端地址
*
* @param id ecology_biz_mobile_config 表中的id
* @return
*/
public static String getEM_APP_DialogUrl(String id) {
String dialog_url = MsgToEMConstant.DIALOG_URL_NEW + id;
return dialog_url;
}
//上传图片,setlogo
public static MsgDataItem mediaUpload(MsgDataItem item) {
if (StringUtils.isNotBlank(item.getImg_url())) {
FileNamingManager manager = FileNamingManager.getInstance();
String fileUrl = manager.unTransform(item.getImg_url());
String fileid = fileUrl.replaceAll("/weaver/weaver.file.FileDownload\\?fileid=", "");
ImageFileManager imageFileManager = new ImageFileManager();
InputStream input;
String responseData = null;
try {
if (StringUtils.isNumeric(fileid)) {
imageFileManager.getImageFileInfoById(Util.getIntValue(fileid));
responseData = APPManager.mediaUpload("image", imageFileManager.getImageFileType(), imageFileManager.getInputStream(), "media", imageFileManager.getImageFileName());
} else if ((input = AppSyncUtil.getFileInputSteam(null, item.getImg_url())) != null) {
responseData = APPManager.mediaUpload("image", AppSyncUtil.getFileType(item.getImg_url()), input, "media", AppSyncUtil.getFileName(item.getImg_url()));
} else {
return null;
}
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return null;
}
if (objectData != null)
item.setLogo(objectData.getString("media_id"));
else
log.info("==========" + item.getName() + " 图片为空 ========");
return item;
}
return null;
}
public static String getAgentId(MsgDataItem item) {
if (StringUtils.isBlank(item.getAgentid()) && StringUtils.isNotBlank(item.getImg_url())) {
String responseData = null;
item = mediaUpload(item);
if (item != null) {
Map params = createAppParams(item);//将参数基类转化为map
try {
responseData = APPManager.createApp(params);//创建应用
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return null;
}
return objectData.getString("agentid");
}
return null;
}
return null;
}
public static boolean getApp(String agentid) {
if (StringUtils.isNotBlank(agentid)) {
Map param = new HashMap();
String responseData = null;
param.put("agentid", agentid);
try {
responseData = APPManager.getApp(param);//获取单个应用
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
return false;
}
public static String send(MsgDataItem item) {
String responseData = null;
try {
responseData = APPManager.send(sendMsgParams(item));
} catch (KeyManagementException e) {
log.error("消息推送到EM平台失败:" + e);
} catch (NoSuchAlgorithmException e) {
log.error("消息推送到EM平台失败:" + e);
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0)
log.error("消息推送到EM错误信息:" + objectData.getString("errmsg"));
return responseData;
}
/**
* 设置在EM创建消息型应用的参数
*
* @param message 发送的消息体
*/
public static void sendMsg(MessageBean message) {
for (MessageBean messageBean : getLangMsgList(message)) {
send(sendMsgDataItem(messageBean));
}
}
/**
* 设置消息发给EM的参数
*
* @return
*/
public static MsgDataItem sendMsgDataItem(MessageBean messageBean) {
StringBuilder str = new StringBuilder();
String senderid = messageBean.getEmParams().get("senderid") == null ? Util.null2String(messageBean.getCreater()) : Util.null2String(messageBean.getEmParams().get("senderid"));
// String userids = messageBean.getEmParams().get("userids") == null ? null : Util.null2String(messageBean.getEmParams().get("userids"));
String userids;
String msgtype = messageBean.getEmParams().get("msgtype") == null ? "share" : Util.null2String(messageBean.getEmParams().get("msgtype"));
String agentid = messageBean.getEmParams().get("agentid") == null ? messageBean.getAgentId() : Util.null2String(messageBean.getEmParams().get("agentid"));
String send_type = messageBean.getEmParams().get("send_type") == null ? "1" : Util.null2String(messageBean.getEmParams().get("send_type"));
Map shareMap = messageBean.getEmParams().get("share") == null ? new HashMap() : (Map) JSONObject.toJSON(messageBean.getEmParams().get("share"));
String title;
if (StringUtils.isNotBlank(messageBean.getDetailTitle()) && !messageBean.getMessageGroupTypeName().equals(messageBean.getDetailTitle()))
title = shareMap.get("content") == null ? messageBean.getDetailTitle() + ": " + delHTMLTag(messageBean.getTitle()) : Util.null2String(shareMap.get("content"));
else
title = shareMap.get("content") == null ? delHTMLTag(messageBean.getTitle()) : Util.null2String(shareMap.get("content"));
Map extraMap = shareMap.get("extra") == null ? new HashMap() : (Map) JSONObject.toJSON(shareMap.get("extra"));
String content = extraMap.get("desc") == null ? delHTMLTag(messageBean.getContext()) : Util.null2String(extraMap.get("desc"));
String linkurl = extraMap.get("linkurl") == null ? messageBean.getLinkMobileUrl() : Util.null2String(extraMap.get("linkurl"));
String linkurl_pc = extraMap.get("linkurl_pc") == null ? messageBean.getLinkUrl() : Util.null2String(extraMap.get("linkurl_pc"));
// String linkurl = extraMap.get("linkurl") == null ? "/message.jsp?linkurl=" + codeBase64(messageBean.getLinkUrl()) + "&linkmobileurl="+codeBase64(messageBean.getLinkMobileUrl()) : Util.null2String(extraMap.get("linkurl"));
// String linkurl_pc = extraMap.get("linkurl_pc") == null ? "/message.jsp?linkurl="+ codeBase64(messageBean.getLinkUrl()) + "&linkmobileurl="+codeBase64(messageBean.getLinkMobileUrl()) : Util.null2String(extraMap.get("linkurl_pc"));
String opentype = extraMap.get("opentype") == null ? "1" : Util.null2String(extraMap.get("opentype"));
String opentype_pc = extraMap.get("opentype_pc") == null ? "2" : Util.null2String(extraMap.get("opentype_pc"));
String canforward = extraMap.get("canforward") == null ? "0" : Util.null2String(extraMap.get("canforward"));
String callbackurl = extraMap.get("callbackurl") == null ? "" : Util.null2String(extraMap.get("callbackurl"));
String sharetypename = extraMap.get("sharetypename") == null ? messageBean.getDetailTitle() : Util.null2String(extraMap.get("sharetypename"));
String sharetype = extraMap.get("sharetype") == null ? null : Util.null2String(extraMap.get("sharetype"));
String shareid = extraMap.get("shareid") == null ? null : Util.null2String(extraMap.get("shareid"));
if (messageBean.getUserList().size() == 0) {
userids = Util.null2String(messageBean.getUserId());
} else {
for (String userid : messageBean.getUserList())
str.append(userid).append("|");
userids = str.toString().substring(0, str.length() - 1);//去掉最后一个“|”
}
if (StringUtils.isNotBlank(Util.null2String(messageBean.getEmParams().get("userids"))))
userids = userids + "|" + Util.null2String(messageBean.getEmParams().get("userids"));
if (StringUtils.isBlank(sharetype) && StringUtils.isNotBlank(messageBean.getTargetId())) {
sharetype = "workflow";
shareid = messageBean.getTargetId();
}
if ("share".equals(msgtype) && StringUtils.isBlank(linkurl)) {
msgtype = "text";
Map textMap = new HashMap<>();
if (StringUtils.isNotBlank(messageBean.getDetailTitle()) && !messageBean.getMessageGroupTypeName().equals(messageBean.getDetailTitle()))
textMap.put("content", messageBean.getDetailTitle() + ": " + delHTMLTag(messageBean.getTitle()) + "\n" + delHTMLTag(messageBean.getContext()));
else
textMap.put("content", delHTMLTag(messageBean.getTitle()) + "\n" + delHTMLTag(messageBean.getContext()));
Map map = new HashMap<>();
map.put("text", textMap);
map.put("safe", 0);
messageBean.getEmParams().putAll(map);
}
//如果是此消息id是需要修改的消息则替换为空
String msgTypeId = (Util.null2String(Prop.getPropValue("QC2586804", "msgtype")));
new BaseBean().writeLog("msgTypeId===>"+msgTypeId);
new BaseBean().writeLog("messageBean===>"+JSONObject.toJSONString(messageBean));
try {
if (msgTypeId.contains(messageBean.getMessageGroupType())){
title=title.replace(":","\u0020");
// if (title.indexOf("-")>0){
// title = title.split("-")[1];
// }
// agentid = "87";
}
}catch (Exception e){
new BaseBean().writeLog("Exception===>"+e.getMessage());
e.printStackTrace();
}
new BaseBean().writeLog("messageBean===>"+JSONObject.toJSONString(messageBean));
return sendMsgDataItem(senderid, userids, msgtype, agentid, send_type, title, content, linkurl,
linkurl_pc, opentype, opentype_pc, canforward, callbackurl, sharetype, shareid, sharetypename, messageBean.getEmParams());
}
public static List getLangMsgList(MessageBean message) {
List messageBeanList = new ArrayList<>();
Map lang_map = new HashMap<>();
int userLang;
if (message.getUserList().isEmpty())
message.getUserList().add(Util.null2String(message.getUserId()));
for (String userid : message.getUserList()) {
userLang = User.getUserLang(Util.getIntValue(userid, 0));
if (!lang_map.containsKey(userLang)) {
Set userSet = new HashSet<>();
userSet.add(userid);
lang_map.put(userLang, userSet);
} else {
lang_map.get(userLang).add(userid);
}
}
for (Map.Entry entry : lang_map.entrySet()) {
MessageBean messageBean = message.shallowClone();
messageBean.setUserList(entry.getValue());
messageBean.setMessageGroupTypeName(Util.formatMultiLang(messageBean.getMessageGroupTypeName(), entry.getKey() + ""));
messageBean.setDetailTitle(MsgTypeUtil.spilt(messageBean.getDetailTitle(), entry.getKey()));
messageBean.setTitle(Util.formatMultiLang(messageBean.getTitle(), entry.getKey() + ""));
messageBean.setContext(Util.formatMultiLang(messageBean.getContext(), entry.getKey() + ""));
messageBeanList.add(messageBean);
}
return messageBeanList;
}
public static boolean updateMsgTypeApp(String agentid, String img_url, String name, String description, String sendmobile) {
String responseData = null;
MsgDataItem item = updateMsgDataItem(agentid, img_url, 2, name, description, null, null, sendmobile);
item = mediaUpload(item);
try {
responseData = APPManager.updateApp(createAppParams(item));
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
public static boolean updateMsgTypeApp(String agentid, String img_url, String name, String description, String dialogurl, String sendmobile) {
String responseData = null;
MsgDataItem item = updateMsgDataItem(agentid, img_url, 2, name, description, checkDialogUrl_New(dialogurl), checkDialogUrl_Old(dialogurl), sendmobile);
item = mediaUpload(item);
if (StringUtils.isBlank(item.getLogo()))
return false;
try {
responseData = APPManager.updateApp(createAppParams(item));
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
public static boolean updateMsgTypeApp(String agentid, String img_url, String name, String description, String dialogurl, String dialogurl_pc, String sendmobile) {
String responseData = null;
MsgDataItem item = updateMsgDataItem(agentid, img_url, 2, name, description, checkDialogUrl_New(dialogurl), checkDialogUrl_Old(dialogurl_pc), sendmobile);
item = mediaUpload(item);
if (StringUtils.isBlank(item.getLogo()))
return false;
try {
responseData = APPManager.updateApp(createAppParams(item));
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
public static boolean updateMsgBizType(String id, String imgurl, String group, String enable, String enablepc, String enableem, String sendmobile) {
RecordSet rs = new RecordSet();
boolean flag;
rs.executeUpdate("update ecology_biz_mobile_config set groupid = ? , enable = ? ,enablepc = ?,enableem = ? ,imgurl=?, sendmobile = ? where belongid = ? and biztypeid is not null ", group, enable, enablepc, enableem, imgurl, sendmobile, id);
rs.executeQuery("select * from ecology_biz_mobile_config where belongid = ? and biztypeid is not null ", id);
while (rs.next()) {
if (StringUtils.isNotBlank(rs.getString("agentid"))) {
flag = updateMsgTypeApp(rs.getString("agentid"), rs.getString("imgurl"), rs.getString("name"), rs.getString("description"), rs.getString("em_app_url"), rs.getString("dialogurl"), rs.getString("sendmobile"));
}
}
return true;
}
public static void deleteMsgTypeApp(String agentids) {
try {
String[] agentid = agentids.split(",");
for (String id : agentid) {
String data = APPManager.delete(id);
log.info(data);
}
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public static void deleteMsgBizType(String ids) {
String[] idStr = Util.splitString(ids, ",");
RecordSet rs = new RecordSet();
for (String id : idStr) {
rs.executeQuery("select * from ecology_biz_mobile_config where belongid = ? and biztypeid is not null ", id);
while (rs.next() && StringUtils.isNotBlank(rs.getString("agentid"))) {
deleteMsgTypeApp(rs.getString("agentid"));
}
rs.executeUpdate("delete from ecology_biz_mobile_config where belongid = ? and biztypeid is not null ", id);
}
}
/**
* 初始化更新保存在EC的EM消息型应用地址 dialogurl
*
* @return
*/
public static void initDialogUrlOld() {
//EM移动端地址在EC数据库中初始化
RecordSet rs = new RecordSet();
rs.executeQuery("select id,dialogurl,is_em_app_url from ECOLOGY_BIZ_MOBILE_CONFIG where is_em_app_url = ?", "n");
List params = new ArrayList<>();
while (rs.next()) {
if (("n").equals(rs.getString("is_em_app_url"))) {
if (rs.getString("dialogurl")!= null && rs.getString("dialogurl").startsWith(MsgToEMConstant.DIALOG_URL)){
List list = new ArrayList<>();
list.add(checkDialogUrl_New(rs.getString("dialogurl")));
list.add("y");
list.add(rs.getString("id"));
params.add(list);
}
}
}
rs.executeBatchSql("update ECOLOGY_BIZ_MOBILE_CONFIG set em_app_url = ? ,is_em_app_url = ? where id = ? ", params);
// EM移动端地址在EM初始化
if (EMManager.getJoinStatus(true)) {
RecordSet recordSet = new RecordSet();
int random = (int) (Math.random() * 1000);
rs.executeQuery("select id,agentid,imgurl,name,dialogurl,em_app_url,sendmobile,belongid,is_dialogurl,is_em_app_url from ECOLOGY_BIZ_MOBILE_CONFIG where agentid is not null");
while (rs.next()) {
if (StringUtils.isNotBlank(rs.getString("agentid"))) {
// 修复客户交流提醒数据
if("28".equals(rs.getString("id")) && "y".equals(rs.getString("is_em_app_url"))){
try {
boolean flag = MsgECToEM.updateMsgTypeApp(rs.getString("agentid"), rs.getString("imgurl"), rs.getString("name"), "", randomDialogUrl(checkDialogUrl_New("/spa/crm/static4mobile/index.html#/remind"), random), randomDialogUrl(checkDialogUrl_Old(rs.getString("dialogurl")), random), rs.getString("sendmobile"));
if (flag)
recordSet.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set is_em_app_url =? where id = ? ", "n", rs.getString("id"));
} catch (Exception e) {
e.printStackTrace();
}
}
if (("n").equals(rs.getString("is_dialogurl"))) {
try {
boolean flag = MsgECToEM.updateMsgTypeApp(rs.getString("agentid"), rs.getString("imgurl"), rs.getString("name"), "", randomDialogUrl(checkDialogUrl_New(rs.getString("em_app_url")), random), randomDialogUrl(checkDialogUrl_Old(rs.getString("dialogurl")), random), rs.getString("sendmobile"));
if (flag)
recordSet.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set dialogurl = ?,is_dialogurl=? where id = ? ", checkDialogUrl_Old(rs.getString("dialogurl")), "y", rs.getString("id"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
/**
* 检测保存在EC的EM消息型应用地址,并添加一个随机数用于EM手机端刷新地址缓存
*
* @param dialogurl EM消息型应用地址
* @param random 随机数
* @return
*/
public static String randomDialogUrl(String dialogurl, int random) {
if (dialogurl.startsWith(MsgToEMConstant.DIALOG_URL) || dialogurl.startsWith(MsgToEMConstant.DIALOG_URL_NEW)) {
// dialogurl = checkDialogUrl(dialogurl); //检测dialogUrl
String[] dialogurls = dialogurl.split("\\?");
if (dialogurls.length > 1)
dialogurl = dialogurl.replaceAll("#", "?" + dialogurls[1] + "&v=test" + random + "#");
else
return null;
}
return dialogurl;
}
/**
* 检测保存在EC的EM消息型应用地址
*
* @param dialogurl EM消息型应用地址
* @return 新的dialogurl
*/
public static String checkDialogUrl_New(String dialogurl) {
if (StringUtils.isNotBlank(dialogurl) && dialogurl.startsWith(MsgToEMConstant.DIALOG_URL))
dialogurl = dialogurl.replace(MsgToEMConstant.DIALOG_URL, MsgToEMConstant.DIALOG_URL_NEW);
return dialogurl;
}
/**
* 检测保存在EC的EM消息型应用地址
*
* @param dialogurl_Old EM消息型应用地址
* @return 旧的dialogurl
*/
public static String checkDialogUrl_Old(String dialogurl_Old) {
if (StringUtils.isNotBlank(dialogurl_Old) && dialogurl_Old.startsWith(MsgToEMConstant.DIALOG_URL_NEW))
dialogurl_Old = dialogurl_Old.replace(MsgToEMConstant.DIALOG_URL_NEW, MsgToEMConstant.DIALOG_URL);
return dialogurl_Old;
}
/**
* 确保消息类型对应的agentid参数更新为真正需要推向EM的agentid
*/
public static void insureMessageType(MessageBean bean) {
if (bean != null) {
String agentName = bean.getMessageGroupTypeName();
// String dialogUrl = MsgToEMConstant.DIALOG_URL + bean.getMessageGroupType();
String app_Dialogurl = getEM_APP_DialogUrl(bean.getMessageGroupType());
String pc_Dialogurl = getEM_PC_DialogUrl(bean.getMessageGroupType());
String biztypeid = bean.getMessageGroupType() + "," + bean.getBizType();
boolean isAssistant = false;
RecordSet rs = new RecordSet();
String agentid = null;
rs.executeQuery("select * from ECOLOGY_BIZ_MOBILE_CONFIG where id = ? ", bean.getMessageGroupType());
if (rs.next()) {
agentid = rs.getString("agentid");
app_Dialogurl = rs.getString("em_app_url");
pc_Dialogurl = rs.getString("dialogurl");
}
//1、对业务类型的处理
if (StringUtils.isNotBlank(bean.getBizType()) && ConstantMapping.booleanOfString(bean.getIsDefault())) {
agentName = bean.getBizTitle();
app_Dialogurl = MsgToEMConstant.DIALOG_URL_NEW + bean.getMessageGroupType() + "," + bean.getBizType();
pc_Dialogurl = MsgToEMConstant.DIALOG_URL + bean.getMessageGroupType() + "," + bean.getBizType();
isAssistant = true;
}
if (!isAssistant) {
//3、如果不是业务类型,当agentid为空时调用EM接口创建应用并更新
if (StringUtils.isBlank(agentid)) {
//消息类型
String agentId = CreateMsgTypeApp(bean.getImgUrl(), agentName, agentName, app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set agentid=? where id=?", agentId, bean.getMessageGroupType());
bean.setAgentId(agentId);
} else
bean.setAgentId(agentid);
} else {
//4、如果是业务类型,查询业务类型对应的agentid
rs.executeQuery("select * from ECOLOGY_BIZ_MOBILE_CONFIG where biztypeid = ? ", "2,-1," + bean.getBizType());//查询老的业务类型
if (rs.next()) {
String eid = rs.getString("id");
String img_url = rs.getString("imgurl");
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set NAME = ? , DIALOGURL = ? , em_app_url = ?,BIZTYPEID = ? where id = ?", bean.getBizTitle(), pc_Dialogurl, app_Dialogurl, biztypeid, eid);
updateMsgTypeApp(rs.getString("agentid"), img_url, bean.getBizTitle(), "", app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
}
rs.executeQuery("select name,agentid,em_app_url,dialogurl from ecology_biz_mobile_config where biztypeid=?", biztypeid);
if (rs.next()) {
//5、当前业务类型已经创建EM应用时则更新消息实体中agentid参数即可
if (StringUtils.isNotBlank(rs.getString("agentid"))) {
bean.setAgentId(rs.getString("agentid"));
app_Dialogurl = rs.getString("em_app_url");
pc_Dialogurl = rs.getString("dialogurl");
if (!rs.getString("name").equals(bean.getBizTitle())) {
log.info("================update biztitle to EM ====================");
updateMsgTypeApp(bean.getAgentId(), bean.getImgUrl(), bean.getBizTitle(), "", app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set name=? where biztypeid=?", bean.getBizTitle(), biztypeid);
rs.executeUpdate("update ECOLOGY_MESSAGE_BIZ_TYPE set biztitle = ? where messagegrouptype = ? and biztype = ?", bean.getBizTitle(), bean.getMessageGroupType(), bean.getBizType());
}
} else {
//6、当前业务类型没有创建EM应用时则调用EM接口创建应用并更新
String agentId = CreateMsgTypeApp(bean.getImgUrl(), agentName, agentName, app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set agentid=? ,dialogurl = ?,em_app_url = ? where biztypeid=?", agentId, pc_Dialogurl, app_Dialogurl, biztypeid);
bean.setAgentId(agentId);
}
} else {
//7、如果当前业务类型是第一次接收,调用EM接口创建并更新即可
String agentId = CreateMsgTypeApp(bean.getImgUrl(), agentName, agentName, app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("insert into ECOLOGY_BIZ_MOBILE_CONFIG (id,name,messagetypeid,belongid,biztypeid,moduleid,groupid,agentid,dialogurl,em_app_url,imgurl,enable,enablepc,enableem,sendmobile,isshow,isdefault) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
WeaIndexManager.getGuid(8),
bean.getBizTitle(),
bean.getMessageGroupType(),
bean.getBelongId(),
biztypeid,
bean.getModuleId(),
null,
agentId,
pc_Dialogurl,
app_Dialogurl,
bean.getImgUrl(),
bean.getEnable(),
bean.getEnablePC(),
bean.getEnableEM(),
bean.getSendMobile(),
ConstantMapping.CONST_N,
ConstantMapping.CONST_N);
bean.setAgentId(agentId);
}
}
}
}
}