package com.ruoyi.system.utils;
|
|
|
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.wxTemplateTaskReturn.WxTemplateTaskResultRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplateTaskReturn.WxTemplateTaskResultRequestData;
|
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 ACCESSTOKEN_CACHE_KEY = "accessToken:";
|
@Autowired
|
private RedisCache redisCache;
|
@Autowired
|
private RestTemplate wxRestTemplate;
|
@Autowired
|
private WeixinProperties weixinProperties;
|
@Resource
|
private RedisService redisService;
|
|
/**
|
* 任务数据提交结果通知
|
* @param openId 用户openId
|
* @param taskName 任务名称
|
* @param auditResult 审核结果
|
* @param auditPerson 审核人
|
*/
|
public void wxTemplateTaskResultRequest(String openId,String taskName,String auditResult,String auditPerson) {
|
WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService);
|
// 1,获取access_token
|
String accessToken = redisCache.getCacheObject(ACCESSTOKEN_CACHE_KEY);
|
if (!StringUtils.hasLength(accessToken)) {
|
accessToken = appletTools.getAccessToken();
|
}
|
try {
|
log.info("任务数据提交结果通知:------------------------");
|
// 创建请求实体
|
WxTemplateTaskResultRequest wxTemplateTaskResultRequest = new WxTemplateTaskResultRequest();
|
wxTemplateTaskResultRequest.setTouser(openId);
|
wxTemplateTaskResultRequest.setTemplate_id(weixinProperties.getTaskResultTemplateId());
|
// 任务名称
|
Template thing1 = new Template();
|
thing1.setValue(taskName);
|
// 审核结果
|
Template phrase4 = new Template();
|
phrase4.setValue(auditResult);
|
// 审核人
|
Template thing3 = new Template();
|
thing3.setValue(auditPerson);
|
// 发送模板消息参数实体封装
|
WxTemplateTaskResultRequestData wxTemplateTaskResultRequestData = new WxTemplateTaskResultRequestData();
|
wxTemplateTaskResultRequestData.setThing1(thing1);
|
wxTemplateTaskResultRequestData.setPhrase4(phrase4);
|
wxTemplateTaskResultRequestData.setThing3(thing3);
|
wxTemplateTaskResultRequest.setData(wxTemplateTaskResultRequestData);
|
// 4,发送消息给用户
|
String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateTaskResultRequest));
|
log.info("任务数据提交结果通知模板消息返回数据:{}", result);
|
} catch (Exception e) {
|
log.error("任务数据提交结果通知失败;");
|
}
|
}
|
|
}
|