微信公衆號java後端開發記錄(三):模板消息推送

·模板消息推送

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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章