package com.zcloud.util; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.zcloud.entity.PageData; import com.zcloud.service.bus.*; import com.zcloud.service.gf.NoticeManagementService; import com.zcloud.service.system.UsersService; import com.zcloud.vo.TemplateData; import com.zcloud.vo.WxMssVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import java.util.*; /** * @author fangjiakai * @date 2022/05/23 15:38 */ @Component public class SendMessageUtil { @Autowired private CorpInfoService corpinfoService; @Autowired private MSMLoginService msmloginService; @Autowired private SMSManagementService smsmanagementService; @Autowired private UsersService usersService; @Autowired private NoticeTemplateService noticeTemplateService; @Autowired private NoticeCorpService noticeCorpService; @Autowired private NoticeCorpUserService noticeCorpUserService; @Autowired private NoticeManagementService noticemanagementService; /** * 短信发送 * @param pd 短信数据 * @param paramsList 参数集合 * @throws Exception */ public Object sendMessages(PageData pd, List paramsList) throws Exception { return null; } /** * 查看公司剩余短信条数是否足以支持发送短信 * @return * @throws Exception */ public boolean checkCorpMsg(PageData corpinfo) throws Exception{ PageData lpd = new PageData(); lpd.put("STATE", "OK"); lpd.put("CORPINFO_ID", corpinfo.getString("CORPINFO_ID")); int usedCount = msmloginService.msUsedCount(lpd); if(corpinfo.getString("ISRECEIVE").equals("1")&&Integer.parseInt(corpinfo.getString("SMS_COUNT"))-usedCount>0){ return true; }else{ return false; } } /** * 发送短信 * @param pd * @param paramsList * @return * @throws Exception */ public SendSmsResponse send(PageData pd, String phone, List paramsList) throws Exception{ Map mes = new HashMap(); mes.put("phone", phone); mes.put("templateCode", pd.get("SMSCode")); mes.put("CONTENT", pd.get("templateCode")); // 发送短信 SendSmsResponse ssms= AliSmsToolUtil.sendSms(mes,paramsList); // 记录日志 msmloginService.addForAliSmsToolUtil(mes, pd.getString("CORPINFO_ID"), ssms, paramsList); return ssms; } private void sendNotice(PageData pd, List paramsList) throws Exception{ PageData nm = new PageData(); nm.put("CORPINFO_ID", pd.getString("CORPINFO_ID")); nm.put("NOTICE_CODE", pd.get("templateCode")); List nmList =noticemanagementService.listAll(nm); // if(nmList==null || nmList.size()==0){//未开启该提醒 // return; // } PageData template = new PageData(); template.put("TEMPLATE_CODE",pd.get("templateCode")); template = this.noticeTemplateService.findByCode(template); String content = template.getString("TEMPLATE_STR"); if(paramsList != null && paramsList.size() > 0) { StringBuffer parStr = new StringBuffer(); for(PageData par: paramsList) { content = content.replace(("${" + par.getString("name") + "}"),par.getString("value")); } } PageData pd1 = new PageData(); pd1.put("NOTICECORP_ID", UuidUtil.get32UUID()); pd1.put("USERNAME","秦安双控"); pd1.put("CREATOR", "秦安双控"); //添加人 pd1.put("CREATTIME", DateUtil.date2Str(new Date())); //添加时间 pd1.put("SYNOPSIS",template.getString("NAME")); pd1.put("CONTENT","

"+content+"

"); pd1.put("ISALL","yes"); pd1.put("ISREPLY",0); pd1.put("ISDELETE",0); pd1.put("ISTOP",0); pd1.put("STATUS",1); pd1.put("CORP_INFO_ID",pd.getString("CORPINFO_ID")); noticeCorpService.save(pd1); pd1.put("NOTICECORPUSERID_ID",UuidUtil.get32UUID()); pd1.put("USER_ID",pd.getString("RECEIVER_ID")); pd1.put("TYPE",0); noticeCorpUserService.save(pd1); Set push_cids_set = new HashSet(); PageData user = new PageData(); user.put("USER_ID", pd.get("RECEIVER_ID")); user = usersService.findById(user); if(user.get("PUSH_CID") != null){ push_cids_set.add(user.getString("PUSH_CID")); } //查看是否有抄送 if(nmList.size()>0 && nmList.get(0).get("ADDRESSEE") != null && !nmList.get(0).getString("ADDRESSEE").equals("")) {// 查看是否有需要抄送的人 String[] uid=nmList.get(0).getString("ADDRESSEE").split(","); for(int i=0;i0){ PushUtil.push(push_cids_set.toArray(),"通知",pd1.getString("SYNOPSIS"),"other"); } } /* * 微信推送新消息 * */ public void pushWxNotice(PageData pd,List paramsList) throws Exception{ PageData nm = new PageData(); nm.put("CORPINFO_ID", pd.getString("CORPINFO_ID")); nm.put("ISENABLE", "1"); nm.put("NOTICE_CODE", pd.get("templateCode")); List nmList =noticemanagementService.listAll(nm); if(nmList==null || nmList.size()==0){//未开启该提醒 return; } RestTemplate restTemplate = new RestTemplate(); String APPID = "wx641d6a98d89ddd03"; String SECRET = "22cd2198a03e5a1a70351f55b3d7687d"; String access_token = getAccess_token(APPID, SECRET); String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token; PageData template = new PageData(); template.put("TEMPLATE_CODE",pd.get("templateCode")); template = this.noticeTemplateService.findByCode(template); PageData user = new PageData(); user.put("USER_ID", pd.get("RECEIVER_ID")); user = usersService.findById(user); if(user.get("OPENID")==null || user.get("OPENID").equals("")){//未绑定微信 return; } //拼接推送的模版 WxMssVo wxMssVo = new WxMssVo(); wxMssVo.setTouser(user.getString("OPENID"));//用户openid // wxMssVo.setTouser("o1v8O57wbhhU0ANGHSLExy1wH42o");//用户openid // wxMssVo.setUrl("https://www.qdkjchina.com/notice/notice.html?SCHOOLNOTICE_ID="+pd.getString("SCHOOLNOTICE_ID"));//跳转链接 // wxMssVo.setTemplate_id(template_id);//模版id wxMssVo.setTemplate_id("5InweJzYRkmP9FhCE4V_X9m1_OgDGM141mLRio4AE6s");//模版id String content = template.getString("TEMPLATE_STR"); if(paramsList != null && paramsList.size() > 0) { StringBuffer parStr = new StringBuffer(); for(PageData par: paramsList) { content = content.replace(("${" + par.getString("name") + "}"),par.getString("value")); } } Map m = new HashMap(); TemplateData keyword1 = new TemplateData(); keyword1.setValue(template.getString("NAME")); m.put("first", keyword1); TemplateData keyword2 = new TemplateData(); keyword2.setValue(user.getString("NAME")); m.put("keyword1", keyword2); TemplateData keyword3 = new TemplateData(); keyword3.setValue( DateUtil.date2Str(new Date())); m.put("keyword2", keyword3); TemplateData keyword4 = new TemplateData(); keyword4.setValue( content); m.put("keyword3", keyword4); wxMssVo.setData(m); ResponseEntity responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); System.out.println("pushNotice:"+responseEntity.getBody()); if(nmList.size()>0 && nmList.get(0).get("ADDRESSEE") != null && !nmList.get(0).getString("ADDRESSEE").equals("")) {// 查看是否有需要抄送的人 String[] uid=nmList.get(0).getString("ADDRESSEE").split(","); for(int i=0;i