MrShi
2025-03-12 69a1b3bf45738f048361ee4ccb6bdc64fce35720
server/meeting/meeting_service/src/main/java/com/doumee/core/wx/WxPlatNotice.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,286 @@
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"));
                }
            }
        }
    }
}