package com.panzhihua.common.utlis;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.panzhihua.common.constants.WxSubscribeConstants;
|
import com.panzhihua.common.model.dtos.wx.TemplateParam;
|
import com.panzhihua.common.model.dtos.wx.WxSubscribeDTO;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@Slf4j
|
public class WxUtil {
|
|
// 客服消息推送地址
|
public final static String kf_url = "https://api.weixin.qq.com/cgi-bin/message/custom/send";
|
|
public static String sendKfLinkMessage(String openid, String url, String thumbUrl, String access_token)
|
throws Exception {
|
Map<String, Object> map_content = new HashMap<>();
|
map_content.put("title", "社区福利一分购");
|
map_content.put("description", "点击参与社区一分钱抢购活动");
|
map_content.put("url", url);// 跳转地址
|
map_content.put("thumb_url", thumbUrl);// 图片地址
|
Map<String, Object> map = new HashMap<>();
|
map.put("touser", openid);
|
map.put("msgtype", "link");
|
map.put("link", map_content);
|
String content = JSON.toJSONString(map);
|
return HttpClientUtil.httpPost(kf_url + "?access_token=" + access_token, content);
|
}
|
|
public static String sendKfConetntMessage(String openid, String access_token) throws Exception {
|
Map<String, Object> map_content = new HashMap<>();
|
map_content.put("content", "社区福利一分购");
|
Map<String, Object> map = new HashMap<>();
|
map.put("touser", openid);
|
map.put("msgtype", "text");
|
map.put("text", map_content);
|
String content = JSON.toJSONString(map);
|
return HttpClientUtil.httpPost(kf_url + "?access_token=" + access_token, content);
|
}
|
|
public static String sendKfImagesMessage(String openid, String access_token, String mediaId) throws Exception {
|
Map<String, Object> map_content = new HashMap<>();
|
map_content.put("media_id", mediaId);
|
Map<String, Object> map = new HashMap<>();
|
map.put("touser", openid);
|
map.put("msgtype", "image");
|
map.put("image", map_content);
|
String content = JSON.toJSONString(map);
|
return HttpClientUtil.httpPost(kf_url + "?access_token=" + access_token, content);
|
}
|
|
/**
|
* 订阅消息推送
|
*
|
* @param accessToken
|
* 获取会话token
|
* @return 消息推送结果
|
*/
|
static void sendSubscribe(String accessToken, WxSubscribeDTO subscribeDTO) throws Exception {
|
String resultString = HttpUtils.wxMessageModeSendUrl(accessToken, subscribeDTO);
|
JSONObject jsonResult = JSON.parseObject(resultString);
|
if (jsonResult != null) {
|
log.info("订阅消息推送返回参数" + jsonResult.toJSONString());
|
int errorCode = jsonResult.getIntValue("errcode");
|
String errorMessage = jsonResult.getString("errmsg");
|
if (errorCode == 0) {
|
log.info("订阅消息推送成功,openId:" + subscribeDTO.getTouser());
|
} else {
|
log.error(
|
"订阅消息发送失败,错误码:" + errorCode + ",错误信息:" + errorMessage + "用户openid:" + subscribeDTO.getTouser());
|
}
|
}
|
}
|
|
/**
|
* 随手拍奖励到账订阅消息推送
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 随手拍活动标题
|
* @param amount
|
* 奖励金额
|
* @param remark
|
* 备注说明
|
*/
|
public static void sendSubscribeJLDZ(String openId, String accessToken, String name, BigDecimal amount,
|
String remark,String templateId) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing1", name));// 活动名称
|
paras.add(new TemplateParam("amount3", amount.toString()));// 奖励金额
|
paras.add(new TemplateParam("thing7", remark));// 备注说明
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("随手拍奖励到账订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 活动报名成功订阅消息推送
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 活动名称
|
* @param address
|
* 活动地址
|
* @param activityTime
|
* 活动时间
|
* @param signTime
|
* 报名时间
|
*/
|
public static void sendSubscribeSQHD(String openId, String accessToken, String name, String address,
|
String activityTime, String signTime) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(WxSubscribeConstants.BMCG_ID);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing1", name));// 活动名称
|
paras.add(new TemplateParam("thing2", address));// 活动地址
|
paras.add(new TemplateParam("date3", activityTime));// 活动时间
|
paras.add(new TemplateParam("time8", signTime));// 报名时间
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("活动报名成功订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 新问卷调查订阅消息通知
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 活动名称
|
* @param questionnaireName
|
* 问卷名称
|
*/
|
public static void sendSubscribeDYWJ(String openId, String accessToken, String name, String questionnaireName) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(WxSubscribeConstants.DYWJ_ID);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing1", name));// 活动名称
|
paras.add(new TemplateParam("thing2", questionnaireName));// 问卷名称
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("新问卷调查订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 认证审核订阅消息通知
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 认证内容
|
* @param applyTime
|
* 申请时间
|
* @param result
|
* 审核结果
|
*/
|
public static void sendSubscribeRZSH(String openId, String accessToken, String name, String applyTime,
|
String result,String templateId) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing2", name));// 认证内容
|
paras.add(new TemplateParam("phrase1", result));// 审核结果
|
paras.add(new TemplateParam("date3", applyTime));// 申请时间
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("认证审核订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 随手拍、邻里圈、微心愿、房源审核状态进度通知
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 审核项目
|
* @param applyTime
|
* 审核状态
|
* @param result
|
* 审核时间
|
*/
|
public static void sendSubscribeSHZT(String openId, String accessToken, String name, String applyTime,
|
String result,String templateId) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing1", name));// 审核项目
|
paras.add(new TemplateParam("phrase2", result));// 审核状态
|
paras.add(new TemplateParam("time3", applyTime));// 审核时间
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("审核状态订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 社区活动取消通知
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 活动名称
|
* @param time
|
* 活动时间
|
*/
|
public static void sendSubscribeHDQX(String openId, String accessToken, String name, String time,String templateId) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing1", name));// 活动标题
|
paras.add(new TemplateParam("date2", time));// 活动时间
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("活动取消订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 留言回复订阅消息通知
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 回复人名称
|
* @param time
|
* 回复时间
|
* @param content
|
* 回复内容
|
*/
|
public static void sendSubscribeLYHF(String openId, String accessToken, String name, String time, String content,String templateId) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing3", content));// 回复内容
|
paras.add(new TemplateParam("name1", name));// 回复者
|
paras.add(new TemplateParam("date2", time));// 回复时间
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("留言回复订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 活动变更订阅消息通知
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 活动名称
|
* @param changeTime
|
* 活动时间变更
|
* @param changeAddress
|
* 活动地点变更
|
* @param time
|
* 活动时间
|
* @param address
|
* 活动地点
|
*/
|
public static void sendSubscribeHDBG(String openId, String accessToken, String name, String changeTime,
|
String changeAddress, String time, String address,String templateId) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing1", name));// 活动名称
|
paras.add(new TemplateParam("time2", changeTime));// 活动时间变更
|
paras.add(new TemplateParam("thing3", changeAddress));// 地址变更
|
paras.add(new TemplateParam("time5", time));// 活动时间
|
paras.add(new TemplateParam("thing6", address));// 活动地点
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("留言回复订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 活动即将开始订阅消息通知
|
*
|
* @param openId
|
* 用户openid
|
* @param accessToken
|
* token会话标识
|
* @param name
|
* 活动名称
|
* @param time
|
* 活动时间
|
* @param address
|
* 活动地点
|
* @param num
|
* 活动参加人数
|
*/
|
public static void sendSubscribeHDJJKS(String openId, String accessToken, String name, String time, String address,
|
String num,String templateId) {
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras = new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("thing1", name));// 活动名称
|
paras.add(new TemplateParam("date2", time));// 活动时间
|
paras.add(new TemplateParam("number3", num));// 参与人数
|
paras.add(new TemplateParam("thing4", address));// 活动地点
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken, subscribeDTO);
|
} catch (Exception e) {
|
log.error("活动即将开始订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
/**
|
* 预约提醒订阅消息通知
|
* @param openId 用户openid
|
* @param accessToken token会话标识
|
* @param result 预约结果
|
* @param title 预约主题
|
* @param name 预约人
|
* @param time 预约时间
|
*/
|
public static void sendSubscribeYYTX(String openId, String accessToken, String result, String title, String name,String time,String templateId){
|
WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
|
subscribeDTO.setTouser(openId);
|
subscribeDTO.setTemplate_id(templateId);
|
List<TemplateParam> paras=new ArrayList<TemplateParam>();
|
paras.add(new TemplateParam("phrase8",result));//预约结果
|
paras.add(new TemplateParam("thing23",title));//预约主题
|
paras.add(new TemplateParam("name5",name));//预约人
|
paras.add(new TemplateParam("date7",time));//预约时间
|
subscribeDTO.setTemplateParamList(paras);
|
try {
|
sendSubscribe(accessToken,subscribeDTO);
|
}catch (Exception e){
|
log.error("预约提醒订阅消息推送失败,失败原因:" + e.getMessage());
|
}
|
}
|
|
public static void main(String[] args) {
|
|
WxXCXTempSend util = new WxXCXTempSend();
|
try {
|
// String openId = "oMIR-5S9rpsWAVUUrNKoVDQbn5Mw";//zj的openid
|
String openId = "oMIR-5dWyNyWCCKMl7-kYzvyHOjs";// lyq的openid
|
String accessToken = util.getAppAccessToken();
|
// sendSubscribeHDJJKS(openId,accessToken,"测试活动即将开始标题","2021-08-04 13:00:00","成都市","50");//活动即将开始
|
// sendSubscribeHDQX(openId,accessToken,"取消活动测试标题","2021-08-04 13:00:00");//活动取消
|
// sendSubscribeHDBG(openId,accessToken,"活动名称","2021-08-05","活动变更地址","2021-08-06","活动地址");//活动变更
|
// sendSubscribeRZSH(openId,accessToken,"用户认证审核通知","2021-08-04","通过");//认证审核
|
// sendSubscribeJLDZ(openId,accessToken,"随手拍活动DDD",BigDecimal.TEN,"用户参加随手拍活动奖励");//奖励到账
|
// sendSubscribeLYHF(openId,accessToken,"社区管理员","2021-08-04 11:26:20","勇敢牛牛 不怕困难!");//留言回复
|
// sendSubscribeSHZT(openId,accessToken,"随手拍审核!!","2021-08-04 11:20:00","通过了");//审核状态
|
} catch (Exception e) {
|
System.out.println("错误错误!!!");
|
}
|
}
|
|
}
|