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 msgs; private WechatService wechatService; public MessageRunable(GG_MESSAGE message,List 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 emails = new ArrayList(); List openIds = new ArrayList(); List userIds = new ArrayList(); //手机号码字符串 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> messageContext = (Map>)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("------------------------>发送微信信息异常"); } } } }