·模板消息推送
1.1推送參數dto:
按照文檔逐層次封裝請求參數
/**
* @author hanyy
* @Description: 微信公衆號模板消息推送參數
* @date 2019/8/8 10:52
*/
public class WechatPublicTemplateDTO {
//公衆號推送需要目標用戶
private String touser;
//模板id
private String template_id;
//小程序appid
private String appid;
//模板跳轉鏈接(海外帳號沒有跳轉能力)
private String url;
//模板數據內容
private WechatPublicTemplateData data;
//公衆號跳向小程序(可不填)
private WechatPublicTemplateMiniprogram miniprogram;
}
1.2公衆號模板數據內容:
/**
* @author hanyy
* @Description: 公衆號模板數據內容
* @date 2019/8/8 10:25
*/
@Data
public class WechatPublicTemplateData {
//第一行數據
private WechatPublicTemplateContent first;
//keyword參數
private WechatPublicTemplateContent keyword1;
private WechatPublicTemplateContent keyword2;
private WechatPublicTemplateContent keyword3;
private WechatPublicTemplateContent keyword4;
//最後一行備註
private WechatPublicTemplateContent remark;
}
1.3內容及顏色設置:
/**
* @author hanyy
* @Description:
* @date 2019/8/8 10:25
*/
@Data
public class WechatPublicTemplateContent {
//消息內容
private String value;
//模板內容字體顏色,不填默認爲黑色
private String color;
}
1.4公衆號跳向小程序(可不填):
/**
* @author hanyy
* @Description:公衆號跳向小程序(可不填)
* @date 2019/8/8 10:29
*/
@Data
public class WechatPublicTemplateMiniprogram {
//小程序appid
private String appid;
//跳轉小程序頁面
private String pagepath;
}
2.推送方法:
根據模板封裝通用模板消息發送方法
//公衆號提醒請求者已發送挪車請求/通知車主模板消息推送
public ResultVO<?> wxPublicRemindTemplateSend(WechatTemplateKeyWordDTO dto) {
//獲取公衆號的AccessToken
ResultVO<?> myAccessToken = getWxPublicAccessToken();
String templateSendaccessToken = (String) myAccessToken.getData();
// 填充模板數據
WechatPublicTemplateDTO wechatPublicTemplateDTO = new WechatPublicTemplateDTO();
//被推送用戶
wechatPublicTemplateDTO.setTouser(dto.getTouser());
//模板id
wechatPublicTemplateDTO.setTemplate_id(wxpublicRemindTemplateId);
//模板跳轉鏈接(海外帳號沒有跳轉能力)
//wechatPublicTemplateDTO.setUrl("");
/**
* 車牌 {{keyword1.DATA}}
* 發送時間 {{keyword2.DATA}}
* -> {"keyword1": {"value":"xxx"}, "keyword2": ...}
*/
WechatPublicTemplateContent first = new WechatPublicTemplateContent();
//標題
first.setValue(dto.getFirst());
WechatPublicTemplateContent keyword1 = new WechatPublicTemplateContent();
//車牌號
keyword1.setValue(dto.getKeyword1());
WechatPublicTemplateContent keyword2 = new WechatPublicTemplateContent();
//挪車地點
keyword2.setValue(dto.getKeyword2());
WechatPublicTemplateContent keyword3 = new WechatPublicTemplateContent();
//挪車時間
keyword3.setValue(dto.getKeyword3());
WechatPublicTemplateContent remark = new WechatPublicTemplateContent();
//備註
remark.setValue(dto.getRemake());
WechatPublicTemplateData wechatPublicTemplateData = new WechatPublicTemplateData();
wechatPublicTemplateData.setFirst(first);
wechatPublicTemplateData.setKeyword1(keyword1);
wechatPublicTemplateData.setKeyword2(keyword2);
wechatPublicTemplateData.setKeyword3(keyword3);
wechatPublicTemplateData.setRemark(remark);
//額外參數
wechatPublicTemplateDTO.setData(wechatPublicTemplateData);
log.info("#wxPublicRemindTemplateSend:{}", wechatPublicTemplateDTO.toString());
WechatApiUtil.wechatPbulicTemplateSend(templateSendaccessToken, wechatPublicTemplateDTO);
return ResultVOUtil.returnSuccess();
3.業務層調用推送方法:
根據推送方法進行傳參即可。
WechatTemplateKeyWordDTO wechatTemplate3 = new WechatTemplateKeyWordDTO();
//需要一個表維護用戶對應openid
wechatTemplate3.setTouser(wxPublicUserInfo1.getOpenid());
//頭
wechatTemplate3.setFirst(StrFormatter.format("您收到了新的挪車請求!當前挪車狀態:{},挪車地點:{}。", "待回覆", dto.getPlaceName()));
//車牌號
wechatTemplate3.setKeyword1(dto.getPlatNo());
//地點
wechatTemplate3.setKeyword2(dto.getPlaceName());
//請求時間
wechatTemplate3.setKeyword3(DateUtil.getTime());
//備註
wechatTemplate3.setRemake("請打開伙伴出行App查看挪車原因、現場照片並儘快回覆處理,以免造成出行不便。");
log.info("#車主公衆號通知: openid:{},車牌號:{}", wechatTemplate3.getTouser(), dto.getPlatNo());
iWxAppletService.wxPublicRemindTemplateSend(wechatTemplate3);