package cn.ksource.web.service.message;
|
|
import cn.ksource.beans.GG_MESSAGE;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.spring.SpringBeanUtil;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.EmailUtil;
|
import cn.ksource.core.util.SMSUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.entity.SysMessage;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.service.wechat.WechatService;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.context.ContextLoader;
|
import org.springframework.web.context.request.async.DeferredResult;
|
|
import javax.servlet.ServletContext;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* Created by chenlong
|
* Date:2017/8/4
|
* time:14:29
|
*/
|
public class MessageRunable implements Runnable {
|
|
private Logger log = LoggerFactory.getLogger(MessageRunable.class);
|
|
private BaseDao baseDao;
|
|
private GG_MESSAGE message;
|
private List<Map> msgs;
|
|
private WechatService wechatService;
|
|
public MessageRunable(GG_MESSAGE message,List<Map> msgs ) {
|
this.wechatService = SpringBeanUtil.getBean(WechatService.class);
|
this.message = message;
|
this.msgs = msgs;
|
}
|
|
@Override
|
public void run() {
|
//系统内消息推送对象
|
SysMessage sysMessage = new SysMessage(message.getTitle(),message.getWeb_url());
|
List<String> emails = new ArrayList<String>();
|
List<String> openIds = new ArrayList<String>();
|
List<String> userIds = new ArrayList<String>();
|
//手机号码字符串
|
String mobile = "";
|
System.out.println("msgs--------------------->"+msgs);
|
for(Map msg : msgs) {
|
String userId = ConvertUtil.obj2StrBlank(msg.get("USER_ID"));
|
// 推送系统内消息
|
/**
|
ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
|
Map<String,DeferredResult<SysMessage>> messageContext = (Map<String,DeferredResult<SysMessage>>)servletContext.getAttribute("messageContext");
|
if (messageContext != null && !messageContext.isEmpty() && messageContext.keySet() != null) {
|
System.out.println("connection size" + messageContext.size());
|
for (String key : messageContext.keySet()) {
|
try {
|
if (key.indexOf(userId) == 0) {//需要发送
|
if (messageContext.get(key) != null) {
|
if (!messageContext.get(key).isSetOrExpired()) {
|
messageContext.get(key).setResult(sysMessage);
|
}
|
}
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
}
|
**/
|
//系统内消息推送完毕
|
|
userIds.add(userId);
|
String remindType = ConvertUtil.obj2StrBlank(msg.get("REMIND_TYPE"));
|
String isWechat = ConvertUtil.obj2StrBlank(msg.get("ISWECHAT"));
|
if(isWechat.equals("2") && ((StringUtil.notEmpty(remindType) && remindType.substring(2, 3).equals("1"))||!StringUtil.notEmpty(remindType))) {
|
openIds.add(ConvertUtil.obj2StrBlank(msg.get("OPEN_ID")));
|
}
|
if(StringUtil.notEmpty(remindType)) {
|
String isEmail = ConvertUtil.obj2StrBlank(msg.get("ISEMAIL"));
|
if(isEmail.equals("2") && remindType.substring(1, 2).equals("1")) {
|
emails.add(ConvertUtil.obj2StrBlank(msg.get("EMAIL")));
|
}
|
|
String isPhone = ConvertUtil.obj2StrBlank(msg.get("ISPHONE"));
|
if(isPhone.equals("2") && remindType.substring(0, 1).equals("1")) {
|
//组装手机号码
|
String telphoneNum = ConvertUtil.obj2StrBlank(msg.get("SJHM"));
|
if(StringUtil.isNotBlank(telphoneNum)){
|
if(mobile.equals("")){
|
mobile = mobile + telphoneNum;
|
}else{
|
mobile = mobile + "," + telphoneNum;
|
}
|
}
|
}
|
}
|
|
}
|
//System.out.print("mobile------------->"+mobile);
|
//发送短信
|
/**
|
try {
|
SMSUtil.sendSMS(SMSUtil.getOrderTipMsg(Constants.mapSC_MESSAGE_TYPE.get(String.valueOf(message.getType())),message.getTitle()),mobile);
|
System.out.println("------------------------>发送短信异常");
|
} catch (Exception e) {
|
System.out.println("------------------------>发送短信异常");
|
}
|
|
if(emails.size()>0) {
|
String[] email = (String[])emails.toArray(new String[emails.size()]);
|
try {
|
EmailUtil.sendEmail(email, message.getTitle(), message.getContent(), null);
|
System.out.println("------------------------>发送邮件异常");
|
} catch (Exception e) {
|
System.out.println("------------------------>发送邮件异常");
|
}
|
}
|
**/
|
if(openIds.size()>0) {
|
String[] openId = (String[])openIds.toArray(new String[openIds.size()]);
|
try {
|
wechatService.sendSysMsg(openId, message);
|
System.out.println("------------------------>发送微信信息异常");
|
} catch (Exception e) {
|
System.out.println("------------------------>发送微信信息异常");
|
}
|
}
|
|
}
|
|
}
|