優化公眾號推送模板訊息
阿新 • • 發佈:2018-12-16
/** * 微信公眾號傳送模板訊息 * @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; } }
利用正則封裝模板,是不是簡單了很多,當然了,利用正則的前提是,你的模板一定要按照公眾號平臺規則。