package com.ruoyi.system.utils.util;
|
|
|
import com.ruoyi.common.constant.Constants;
|
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.common.core.utils.HttpUtils;
|
import com.ruoyi.common.redis.service.RedisService;
|
import com.ruoyi.system.utils.wx.model.WeixinProperties;
|
import com.ruoyi.system.utils.wx.template.Template;
|
import com.ruoyi.system.utils.wx.template.wxTemplateAppLiveResult.WxOfficeTemplateAppLiveResultRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplateAppLiveResult.WxOfficeTemplateAppLiveResultRequestData;
|
import com.ruoyi.system.utils.wx.template.wxTemplateAppLiveResult.WxTemplateAppLiveResultRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplateAppLiveResult.WxTemplateAppLiveResultRequestData;
|
import com.ruoyi.system.utils.wx.tools.WxAppletTools;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.client.RestTemplate;
|
|
import javax.annotation.Resource;
|
import java.io.Serializable;
|
|
/**
|
* 消息模板发送
|
*/
|
@Slf4j
|
@Component
|
public class TemplateMessageSendUtil implements Serializable {
|
private final static String ACCESS_TOKEN_CACHE_KEY = "accessToken:";
|
@Autowired
|
private RedisCache redisCache;
|
@Autowired
|
private RestTemplate wxRestTemplate;
|
@Autowired
|
private WeixinProperties weixinProperties;
|
@Resource
|
private RedisService redisService;
|
|
/**
|
* 直播开始小程序订阅通知
|
* @param openId 用户openId
|
* @param liveTitle 标题
|
* @param startTime 开始时间
|
*/
|
public String wxTemplateAppLiveResultRequest(String openId,String liveTitle,String startTime) {
|
WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService);
|
// 1,获取access_token
|
String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY);
|
if (!StringUtils.hasLength(accessToken)) {
|
accessToken = appletTools.getAccessToken();
|
}
|
try {
|
log.info("直播开始提醒通知:------------------------");
|
// 创建请求实体
|
WxTemplateAppLiveResultRequest wxTemplateAppLiveResultRequest = new WxTemplateAppLiveResultRequest();
|
wxTemplateAppLiveResultRequest.setTouser(openId);
|
wxTemplateAppLiveResultRequest.setTemplate_id(weixinProperties.getAppLiveResultTemplateId());
|
// 标题
|
Template thing1 = new Template();
|
thing1.setValue(liveTitle);
|
// 开始时间
|
Template time2 = new Template();
|
time2.setValue(startTime);
|
// 发送模板消息参数实体封装
|
WxTemplateAppLiveResultRequestData wxTemplateAppLiveResultRequestData = new WxTemplateAppLiveResultRequestData();
|
wxTemplateAppLiveResultRequestData.setThing1(thing1);
|
wxTemplateAppLiveResultRequestData.setTime2(time2);
|
wxTemplateAppLiveResultRequest.setData(wxTemplateAppLiveResultRequestData);
|
// 4,发送消息给用户
|
String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateAppLiveResultRequest));
|
log.info("直播开始通知模板消息返回数据:{}", result);
|
return result;
|
} catch (Exception e) {
|
log.error("直播开始通知失败;");
|
}
|
return null;
|
}
|
|
|
/**
|
* 微信公众号模板消息发送
|
* @param openId 用户openId
|
* @param liveTitle 标题
|
* @param startTime 开始时间
|
*/
|
public String wxOfficeTemplateAppLiveRequest(String openId,String liveTitle,String startTime) {
|
WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService);
|
// 1,获取access_token
|
String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY);
|
if (!StringUtils.hasLength(accessToken)) {
|
accessToken = appletTools.getAccessToken();
|
}
|
try {
|
log.info("模板消息发送提醒通知:------------------------");
|
// 创建请求实体
|
WxOfficeTemplateAppLiveResultRequest wxOfficeTemplateAppLiveResultRequest = new WxOfficeTemplateAppLiveResultRequest();
|
wxOfficeTemplateAppLiveResultRequest.setTouser(openId);
|
wxOfficeTemplateAppLiveResultRequest.setTemplate_id(weixinProperties.getOfficeAppLiveResultTemplateId());
|
// 标题
|
Template thing1 = new Template();
|
thing1.setValue(liveTitle);
|
// 开始时间
|
Template time18 = new Template();
|
time18.setValue(startTime);
|
// 发送模板消息参数实体封装
|
WxOfficeTemplateAppLiveResultRequestData wxOfficeTemplateAppLiveResultRequestData = new WxOfficeTemplateAppLiveResultRequestData();
|
wxOfficeTemplateAppLiveResultRequestData.setThing1(thing1);
|
wxOfficeTemplateAppLiveResultRequestData.setTime18(time18);
|
wxOfficeTemplateAppLiveResultRequest.setData(wxOfficeTemplateAppLiveResultRequestData);
|
// 4,发送消息给用户
|
String url = Constants.OFFICIAL_ACCOUNT_TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxOfficeTemplateAppLiveResultRequest));
|
log.info("模板消息发送通知模板消息返回数据:{}", result);
|
return result;
|
} catch (Exception e) {
|
log.error("模板消息发送通知失败;");
|
}
|
return null;
|
}
|
|
|
}
|