优化公众号推送模板消息

/**
     * 微信公众号发送模板消息
     * @param sendTemplate
     * @return
     */
    public ReturnObjI sendTempalte(SendTemplate sendTemplate){
        ReturnObjExt returnObj = new ReturnObjExt();
        WechatLog wechatLog = new WechatLog() ;
        WechatTemplate wechatTemplate = wechatTemplateService.get(sendTemplate.getWechatTemplateId());
        List<String> list = new ArrayList<>();
        Pattern pattern = Pattern.compile(PATTERN);
        Matcher matcher = pattern.matcher(wechatTemplate.getContent());
        while (matcher.find()){
            list.add(matcher.group());
        }

        Map<String,TemplateData> map1 = TemplateUtil.temaplateData(list,sendTemplate.getMap());
        Template template = new Template();
        template.setTemplate_id(wechatTemplate.getTemplateId());
        if (StringUtils.isNotEmpty(wechatTemplate.getUrl())){
            StringTools.format(wechatTemplate.getUrl() , sendTemplate.getMap()) ;
            template.setUrl(wechatTemplate.getUrl());
        }
        template.setData(map1);
        HttpUtil httpUtil = new HttpUtil();
        AccessToken accessToken = accessToken();
        String url = Constants.SEND_TEMPLATE.replace("ACCESS_TOKEN", accessToken.getToken());
        template.setTouser(sendTemplate.getOpenId());
        String jsonString = JSON.toJSONString(template);
        JSONObject js = httpUtil.httpsRequest(url, "POST", jsonString);
        if (js.getString("errcode").equals("0")) {
            System.out.println("推送成功, token:{}:" + js);
            wechatLog.setState(WechatLog.State.audit.getCode());
        } else {
            wechatLog.setState(WechatLog.State.notAudit.getCode());
            System.out.println("推送失败:{}"+js);
        }
        wechatLog.setInfo(jsonString);
        wechatLog.setOpenid(sendTemplate.getOpenId());
        wechatLog.setWechatTemplateId(sendTemplate.getWechatTemplateId());
        wechatLog.setErrorCode(js.getString("errcode"));
        wechatLog.setTargetId(sendTemplate.getTargetId());
        wechatLog.setTargetType(sendTemplate.getTargetType());
        wechatLog.setType(WechatLog.Type.tempalte.getCode());
        wechatLogService.insert(wechatLog);
        return returnObj;
    }
public static final String PATTERN = "(?<=\\{\\{)[^.\\}\\}]+";

由之前

改成

由之前的几十行代码改成了只有几行就能完成。

WechatTemplate类
public class WechatTemplate implements Serializable{
    private Integer id;

    private String templateId;

    private Date addTime;

    private String url;

    private String content;

    private Integer messageTemplateId;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    @Column
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column
    public String getTemplateId() {
        return templateId;
    }

    public void setTemplateId(String templateId) {
        this.templateId = templateId;
    }

    @Column
    public Date getAddTime() {
        return addTime;
    }

    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }

    @Column
    public Integer getMessageTemplateId() {
        return messageTemplateId;
    }

    public void setMessageTemplateId(Integer messageTemplateId) {
        this.messageTemplateId = messageTemplateId;
    }

    @Column
    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}
TemplateData类
/**
 * 微信模板数据
 * Created by 13592 on 2017/7/31.
 */
public class TemplateData {
    /**
     * 数据
     */
    private Object value;
    /**
     * 颜色
     */
    private String color;

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

利用正则封装模板,是不是简单了很多,当然了,利用正则的前提是,你的模板一定要按照公众号平台规则。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值