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 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 taskName 任务名称 * @param auditResult 审核结果 * @param auditPerson 审核人 */ public String wxTemplateTaskResultRequest(String openId,String taskName,String auditResult,String auditPerson) { 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("任务数据提交结果通知:------------------------"); // 创建请求实体 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); return result; } catch (Exception e) { log.error("任务数据提交结果通知失败;"); } return null; } }