| package com.doumee.core.wx; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.core.utils.DateUtil; | 
| import com.doumee.core.utils.HttpsUtil; | 
| import com.doumee.dao.business.dao.SmsEmailMapper; | 
| import com.doumee.dao.business.model.Bookings; | 
| import com.doumee.dao.business.model.SmsEmail; | 
| import com.github.xiaoymin.knife4j.core.util.CollectionUtils; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.springframework.stereotype.Component; | 
|   | 
| import java.awt.print.Book; | 
| import java.util.*; | 
|   | 
| /** | 
|  * 微信公众号通知 | 
|  * | 
|  * @Author : Rk | 
|  * @create 2023/12/27 9:19 | 
|  */ | 
| @Slf4j | 
| @Component | 
| public class WxPlatNotice { | 
|   | 
|     public void  testSendNotice(List<String> openIds,String token){ | 
|         if(CollectionUtils.isNotEmpty(openIds)){ | 
|             String postUrL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token; | 
|             //整体参数map | 
|             Map<String, Object> paramMap = new HashMap<String, Object>(); | 
|             //消息主题显示相关map | 
|             Map<String, Object> dataMap = new HashMap<String, Object>(); | 
|             Map<String, Object> const9 = new HashMap<String,Object>(); | 
|             const9.put("value","申请待您审批"); | 
|             Map<String, Object> thing1 = new HashMap<String,Object>(); | 
|             thing1.put("value", "测试名称"); | 
|             Map<String, Object> car_number7 = new HashMap<String,Object>(); | 
|             car_number7.put("value","皖AP12345"); | 
|             Map<String, Object> character_string6 = new HashMap<String,Object>(); | 
|             character_string6.put("value","1"); | 
|             Map<String, Object> thing4 = new HashMap<String,Object>(); | 
|             thing4.put("value","理由"); | 
|             dataMap.put("const9",const9); | 
|             dataMap.put("thing1",thing1); | 
|             dataMap.put("car_number7",car_number7); | 
|             dataMap.put("character_string6",character_string6); | 
|             dataMap.put("thing4",thing4); | 
|             paramMap.put("data", dataMap); | 
|             for (String openId:openIds) { | 
|                 paramMap.clear(); | 
|                 paramMap.put("template_id", "SPwvgtASkm1aMDBsYhX2wHKdL2JBEGPknDkgniSza2Y"); | 
|                 paramMap.put("touser", openId); | 
|                 paramMap.put("data", dataMap); | 
|                 String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap)); | 
|                 if(StringUtils.isBlank(response)){ | 
|                     log.warn("·==++--·推送微信模板信息:{}·--++==·", "失败"); | 
|                 }else{ | 
|                     JSONObject json = JSONObject.parseObject(response); | 
|                     log.warn("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg")); | 
|                 } | 
|             } | 
| //            log.warn("·==++--·推送微信模板信息:{}·--++==·", msgId != null ? "成功" : "失败"); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 会议室预约通知 | 
|      * @param bookings | 
|      * @param tempId CuoDoxOl6SFwi4NhNgOQgKSJVjDD4VCIaPYlnbv_zdY | 
|      * @param token | 
|      * @param openIds | 
|      */ | 
|     public void  sendMeetingBookTemplateNotice(SystemDictDataBiz systemDictDataBiz,Bookings bookings,String tempId, String token, Set<String> openIds){ | 
|         if(CollectionUtils.isNotEmpty(openIds)){ | 
|             String jumpUrl = Constants.getWxUrl(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.WX_REDIRECT_URL).getCode(), | 
|                     Constants.WxUrlParams.MEETING,bookings.getId().toString()); | 
|   | 
|             String postUrL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token; | 
|             //整体参数map | 
|             Map<String, Object> paramMap = new HashMap<String, Object>(); | 
|             //消息主题显示相关map | 
|             Map<String, Object> dataMap = new HashMap<String, Object>(); | 
|             //会议名称 | 
|             Map<String, Object> thing1 = new HashMap<String,Object>(); | 
|             thing1.put("value",bookings.getName()); | 
|             //会议时间 | 
|             Map<String, Object> time2 = new HashMap<String,Object>(); | 
|             time2.put("value", DateUtil.getFomartDate(bookings.getStartTime(),"yyyy-MM-dd HH:mm:ss") ); | 
|             //会议地点 | 
|             Map<String, Object> thing3 = new HashMap<String,Object>(); | 
|             thing3.put("value",bookings.getRoomName()); | 
|             //发起人 | 
|             Map<String, Object> thing6 = new HashMap<String,Object>(); | 
|             thing6.put("value",bookings.getManagerInfo()); | 
|   | 
|             dataMap.put("thing1",thing1); | 
|             dataMap.put("time2",time2); | 
|             dataMap.put("thing3",thing3); | 
|             dataMap.put("thing6",thing6); | 
|             paramMap.put("data", dataMap); | 
|             for (String openId:openIds) { | 
|                 paramMap.clear(); | 
|                 paramMap.put("url", jumpUrl); | 
|                 paramMap.put("template_id", tempId); | 
|                 paramMap.put("touser", openId); | 
|                 paramMap.put("data", dataMap); | 
|                 String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap)); | 
|                 if(StringUtils.isBlank(response)){ | 
|                     log.warn("·==++--·推送微信模板信息:{}·--++==·", "失败"); | 
|                 }else{ | 
|                     JSONObject json = JSONObject.parseObject(response); | 
|                     log.warn("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg")); | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
|     public void createBeginWxNotice(SystemDictDataBiz systemDictDataBiz, SmsEmailMapper smsEmailMapper, Bookings bookings, String openId){ | 
|         Map<String,Object> map = new HashMap<>(); | 
|   | 
|         //整体参数map | 
|         Map<String, Object> paramMap = new HashMap<String, Object>(); | 
|         //消息主题显示相关map | 
|         Map<String, Object> dataMap = new HashMap<String, Object>(); | 
|         //会议名称 | 
|         Map<String, Object> thing1 = new HashMap<String,Object>(); | 
|         thing1.put("value",bookings.getName()); | 
|         //会议地点 | 
|         Map<String, Object> thing2 = new HashMap<String,Object>(); | 
|         thing2.put("value",bookings.getRoomName()); | 
|         //会议时间 | 
|         Map<String, Object> thing3 = new HashMap<String,Object>(); | 
|         thing3.put("value", DateUtil.getFomartDate(bookings.getStartTime(),"yyyy年MM月dd日HH:mm")+"至"+DateUtil.getFomartDate(bookings.getEndTime(),"HH:mm")); | 
|   | 
|         Integer earlyMin= Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.EARLY_START_WX_NOTICE).getCode()); | 
|   | 
|         Map<String, Object> thing5 = new HashMap<String,Object>(); | 
|         thing5.put("value","您所预定的会议室即将在"+earlyMin+"分钟后开始,请准时参加"); | 
|   | 
|         dataMap.put("thing1",thing1); | 
|         dataMap.put("thing2",thing2); | 
|         dataMap.put("thing3",thing3); | 
|         dataMap.put("thing5",thing5); | 
|         paramMap.put("data", dataMap); | 
|   | 
|         paramMap.put("template_id", "xGFnbHwe8W9sIGlD75XROrbKpzV-6HSRqfRHRfxRR6k"); | 
|         paramMap.put("touser", openId); | 
|         paramMap.put("data", dataMap); | 
|   | 
|         smsEmailMapper.delete(new QueryWrapper<SmsEmail>().lambda() | 
|                 .eq(SmsEmail::getObjType,Constants.FIVE.toString()) | 
|                 .eq(SmsEmail::getStatus,Constants.TWO) | 
|                 .eq(SmsEmail::getType,Constants.TWO) | 
|                 .eq(SmsEmail::getObjId,bookings.getId()) | 
|         ); | 
|   | 
|         SmsEmail smsEmail = new SmsEmail(); | 
|         smsEmail.setPhone(openId); | 
|         smsEmail.setRemark("等待发送"); | 
|         smsEmail.setStatus(Constants.TWO); | 
|         smsEmail.setIsdeleted(Constants.ZERO); | 
|         smsEmail.setType(Constants.TWO); | 
|         smsEmail.setObjType(Constants.FIVE.toString()); | 
|         smsEmail.setObjId(bookings.getId()); | 
|         smsEmail.setCreateDate(new Date()); | 
|         smsEmail.setTitle("会议即将开始提醒"); | 
|         smsEmail.setInfo(DateUtil.getFomartDate(DateUtil.getXMinuteAfterDate(bookings.getStartTime(),-earlyMin),"yyyy-MM-dd HH:mm:ss")); | 
|         smsEmail.setContent(JSONObject.toJSONString(map)); | 
|     } | 
|   | 
|   | 
|     public void createEndWxNotice(SystemDictDataBiz systemDictDataBiz, SmsEmailMapper smsEmailMapper, Bookings bookings,  String openId){ | 
|         Map<String,Object> map = new HashMap<>(); | 
|   | 
|         //整体参数map | 
|         Map<String, Object> paramMap = new HashMap<String, Object>(); | 
|         //消息主题显示相关map | 
|         Map<String, Object> dataMap = new HashMap<String, Object>(); | 
|         //会议名称 | 
|         Map<String, Object> thing1 = new HashMap<String,Object>(); | 
|         thing1.put("value",bookings.getName()); | 
|         //会议地点 | 
|         Map<String, Object> thing6 = new HashMap<String,Object>(); | 
|         thing6.put("value",bookings.getRoomName()); | 
|         //会议时间 | 
|         Map<String, Object> date4 = new HashMap<String,Object>(); | 
|         date4.put("value", DateUtil.getFomartDate(bookings.getEndTime(),"yyyy年MM月dd日HH:mm")); | 
|   | 
|         Map<String, Object> thing7 = new HashMap<String,Object>(); | 
|         thing7.put("value","您的会议即将结束,如需继续使用请即使续订"); | 
|   | 
|         dataMap.put("thing1",thing1); | 
|         dataMap.put("thing6",thing6); | 
|         dataMap.put("date4",date4); | 
|         dataMap.put("thing7",thing7); | 
|         paramMap.put("data", dataMap); | 
|   | 
|         paramMap.put("template_id", "vdIPfwvDCrXOHgQnB6sdE1lGEsJm1oUURfLx6SoLdk0"); | 
|         paramMap.put("touser", openId); | 
|         paramMap.put("data", dataMap); | 
|   | 
|         smsEmailMapper.delete(new QueryWrapper<SmsEmail>().lambda() | 
|                 .eq(SmsEmail::getObjType,Constants.FIVE.toString()) | 
|                 .eq(SmsEmail::getStatus,Constants.TWO) | 
|                 .eq(SmsEmail::getType,Constants.TWO) | 
|                 .eq(SmsEmail::getObjId,bookings.getId()) | 
|         ); | 
|   | 
|         SmsEmail smsEmail = new SmsEmail(); | 
|         smsEmail.setPhone(openId); | 
|         smsEmail.setRemark("等待发送"); | 
|         smsEmail.setStatus(Constants.TWO); | 
|         smsEmail.setIsdeleted(Constants.ZERO); | 
|         smsEmail.setType(Constants.TWO); | 
|         smsEmail.setObjType(Constants.FIVE.toString()); | 
|         smsEmail.setObjId(bookings.getId()); | 
|         smsEmail.setCreateDate(new Date()); | 
|         smsEmail.setTitle("会议即将开始提醒"); | 
|         Integer endMin= Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.OVER_NOTICE_WX).getCode()); | 
|         smsEmail.setInfo(DateUtil.getFomartDate(DateUtil.getXMinuteAfterDate(bookings.getEndTime(),-endMin),"yyyy-MM-dd HH:mm:ss")); | 
|         smsEmail.setContent(JSONObject.toJSONString(map)); | 
|     } | 
|   | 
|   | 
|   | 
|     /** | 
|      * 会议室取消通知 | 
|      * @param bookings | 
|      * @param tempId  CiB6vCT2InovAoQfudY-lvzLSV0-3lfz3a5GsSFCzd8 | 
|      * @param token | 
|      * @param openIds | 
|      */ | 
|     public void  sendMeetingBookCancelTemplateNotice(SystemDictDataBiz systemDictDataBiz,Bookings bookings, String tempId, String token, Set<String> openIds){ | 
|         if(CollectionUtils.isNotEmpty(openIds)){ | 
|             String jumpUrl = Constants.getWxUrl(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.WX_REDIRECT_URL).getCode(), | 
|                     Constants.WxUrlParams.MEETING,bookings.getId().toString()); | 
|   | 
|   | 
|             String postUrL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token; | 
|             //整体参数map | 
|             Map<String, Object> paramMap = new HashMap<String, Object>(); | 
|             //消息主题显示相关map | 
|             Map<String, Object> dataMap = new HashMap<String, Object>(); | 
|             //会议名称 | 
|             Map<String, Object> thing1 = new HashMap<String,Object>(); | 
|             thing1.put("value",bookings.getName()); | 
|             //会议时间 | 
|             Map<String, Object> time6 = new HashMap<String,Object>(); | 
|             time6.put("value", DateUtil.getFomartDate(bookings.getStartTime(),"yyyy-MM-dd HH:mm:ss") ); | 
|             //会议地点 | 
|             Map<String, Object> thing2 = new HashMap<String,Object>(); | 
|             thing2.put("value",bookings.getRoomName()); | 
|             //预约人员 | 
|             Map<String, Object> thing4 = new HashMap<String,Object>(); | 
|             thing4.put("value",bookings.getManagerInfo()); | 
|   | 
|             dataMap.put("thing1",thing1); | 
|             dataMap.put("time6",time6); | 
|             dataMap.put("thing2",thing2); | 
|             dataMap.put("thing4",thing4); | 
|             for (String openId:openIds) { | 
|                 paramMap.clear(); | 
|                 paramMap.put("url", jumpUrl); | 
|                 paramMap.put("data", dataMap); | 
|                 paramMap.put("template_id", tempId); | 
|                 paramMap.put("touser", openId); | 
|                 paramMap.put("data", dataMap); | 
|                 String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap)); | 
|                 if(StringUtils.isBlank(response)){ | 
|                     log.warn("·==++--·推送微信模板信息:{}·--++==·", "失败"); | 
|                 }else{ | 
|                     JSONObject json = JSONObject.parseObject(response); | 
|                     log.warn("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg")); | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
|   | 
|   | 
|   | 
| } |