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")); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
} 
 |