微信企业号下的消息推送接口

一般在微信企业号下做软件开发,基本都会用到消息推送,用户在完成一个操作之后,会在企业号中推送一条消息,这条消息可能是文本、图文等不同类型,在具有审批流程的消息推送中,下一级人员审批完成会给上一级推送一条审批消息,后者可以直接点开推送消息进入审批页面,进行审批。下面是消息推送接口代码:

package com.bootdo.delivery.wxinterface.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import net.sf.json.JSONObject;

import com.bootdo.common.utils.ResultBean;
import com.bootdo.delivery.wxinterface.dao.DetailInfoDao;
import com.bootdo.delivery.wxinterface.dao.MessageDao;
import com.bootdo.delivery.wxinterface.domain.Article;
import com.bootdo.delivery.wxinterface.domain.Message;
import com.bootdo.delivery.wxinterface.domain.TextCard;
import com.bootdo.delivery.wxinterface.service.SendInfoService;

import com.bootdo.delivery.wxinterface.util.ApplicationUtils;
import com.bootdo.delivery.wxinterface.util.Constants;
import com.bootdo.delivery.wxinterface.util.QiYeUtil;
import com.bootdo.delivery.wxinterface.util.SMessage;
import net.sf.json.JSONArray;

@Service
public class SendInfoServiceImpl implements SendInfoService {
    @Resource
    private MessageDao messageDao;
    @Resource
    private DetailInfoDao detailInfoDao;

    /**
     * 发送文本卡片消息
     *
     * @param "UserID1|UserID2|UserID3", -> openId
     * @param title                      标题
     * @param url                        审批页面地址
     * @return
     */
    @Override
    public ResultBean<Object> sendTextCardInfo(String openId, String title, String url, String content) {
        ResultBean<Object> result = new ResultBean<Object>();
        JSONObject jSONObject = null;
        String userId = null;
        try {
            //根据url获取userId
            String[] strs = url.split("[\\/]");
            userId = strs[strs.length - 1];
            //查看用户是否打开勿扰模式
            String isOpen = detailInfoDao.getIsOpenByUserId(userId);
            if (!"0".equals(isOpen)) {
                // 调取凭证
                String access_token = QiYeUtil.getAccessToken(Constants.CORPID, Constants.Secret).getToken();
                SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String createTime = tempDate.format(new java.util.Date());
                // 新建文本卡片消息
                TextCard textCard = new TextCard();
                textCard.setTitle(title);
                String description = "<div class=\"gray\">" + createTime + "</div><div class=\"highlight\">" + content + "</div>";
                textCard.setDescription(description);
                textCard.setUrl(url);
                textCard.setBtntxt("点击查看:");
                // 文本卡片转json
                String textCardList = JSONObject.fromObject(textCard).toString();
                //生成文本卡片消息的json数据
                String jsonData = SMessage.textcardMsg(openId, Constants.AGENTID + "", textCardList);
                //发送模板消息
                jSONObject = SMessage.sendMsg(access_token, jsonData);
                if (jSONObject != null) {
                    if ("0".equals(jSONObject.getString("errcode"))) {
                        Message message = new Message();
                        message.setId(ApplicationUtils.randomUUID());
                        message.setUserId(userId);
                        message.setTitle(title);
                        message.setUrl(url);
                        message.setCreateTime(createTime);
                        message.setStatus("0");
                        messageDao.insert(message);
                        result.setCode(0);
                        result.setData(jSONObject);
                        result.setMsg("消息发送成功");
                    } else {
                        result.setCode(1);
                        result.setMsg("消息发送失败");
                    }
                }
            } else {
                result.setCode(1);
                result.setData("");
                result.setMsg("消息已屏蔽");
            }
        } catch (Exception e) {
            result.setCode(1);
            result.setMsg("消息发送失败");
        }
        return result;
    }

    /**
     * 发送图文消息
     *
     * @param userId=> openId
     * @param partyId
     * @param tagId
     * @param title    标题
     * @param picUrl   图片地址
     * @param url      审批页面地址
     * @return
     */
    @Override
    public JSONObject sendNewsInfo(String userId, String partyId, String tagId, String title,
                                   String picUrl, String url) {
        // 调取凭证
        String access_token = QiYeUtil.getAccessToken(Constants.CORPID, Constants.Secret).getToken();
        // 新建图文
        Article article = new Article();
        article.setTitle(title);
        String description = "<div class=\"gray\">2016年9月26日</div> <div class=\"normal\">发货系统审批提醒</div><div class=\"highlight\">请您尽快审批本次发货申请</div>";
        article.setDescription(description);
        article.setPicUrl(picUrl);
        article.setUrl(url);
        // 整合图文
        List<Article> list = new ArrayList<Article>();
        list.add(article);
        // 图文转json
        String articlesList = JSONArray.fromObject(list).toString();
        //生成news消息的json数据
        String jsonData = SMessage.SNewsMsg(userId, partyId, tagId, Constants.AGENTID + "", articlesList);
        //发送模板消息
        JSONObject jSONObject = SMessage.sendMsg(access_token, jsonData);
        return jSONObject;
    }


}

猜你喜欢

转载自blog.csdn.net/weixin_40205234/article/details/86687845