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.wxTemplateAppealResult.WxTemplateAppealResultRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplateAppealResult.WxTemplateAppealResultRequestData;
|
import com.ruoyi.system.utils.wx.template.wxTemplateDayWork.WxTemplateDayWorkRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplateDayWork.WxTemplateDayWorkRequestData;
|
import com.ruoyi.system.utils.wx.template.wxTemplateMakeCopyRequest.WxTemplateMakeCopyRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplateMakeCopyRequest.WxTemplateMakeCopyRequestData;
|
import com.ruoyi.system.utils.wx.template.wxTemplatePendApproval.WxTemplatePendApprovalRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplatePendApproval.WxTemplatePendApprovalRequestData;
|
import com.ruoyi.system.utils.wx.template.wxTemplateProblemRectificationRequest.WxTemplateProblemRectificationRequest;
|
import com.ruoyi.system.utils.wx.template.wxTemplateProblemRectificationRequest.WxTemplateProblemRectificationRequestData;
|
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;
|
}
|
|
/**
|
* 每日工作未完成提醒
|
* @param openId 用户openId
|
* @param incompleteNum 未完成数
|
* @param endTime 截止时间
|
*/
|
public String wxTemplateDayWorkRequest(String openId,String incompleteNum,String endTime) {
|
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("每日工作未完成提醒通知:------------------------");
|
// 创建请求实体
|
WxTemplateDayWorkRequest wxTemplateDayWorkRequest = new WxTemplateDayWorkRequest();
|
wxTemplateDayWorkRequest.setTouser(openId);
|
wxTemplateDayWorkRequest.setTemplate_id(weixinProperties.getDayWorkTemplateId());
|
// 未完成数
|
Template number3 = new Template();
|
number3.setValue(incompleteNum);
|
// 截止时间
|
Template time4 = new Template();
|
time4.setValue(endTime);
|
// 发送模板消息参数实体封装
|
WxTemplateDayWorkRequestData wxTemplateDayWorkRequestData = new WxTemplateDayWorkRequestData();
|
wxTemplateDayWorkRequestData.setNumber3(number3);
|
wxTemplateDayWorkRequestData.setTime4(time4);
|
wxTemplateDayWorkRequest.setData(wxTemplateDayWorkRequestData);
|
// 4,发送消息给用户
|
String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateDayWorkRequest));
|
log.info("每日工作未完成提醒模板消息返回数据:{}", result);
|
return result;
|
} catch (Exception e) {
|
log.error("每日工作未完成提醒通知失败;");
|
}
|
return null;
|
}
|
|
/**
|
* 申诉结果通知
|
* @param openId 用户openId
|
* @param taskName 任务名称
|
* @param appealResult 申诉结果
|
* @param handleTime 处理时间
|
* @param remark 备注
|
*/
|
public String wxTemplateAppealResultRequest(String openId,String taskName,String appealResult,String handleTime,String remark) {
|
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("申诉结果提醒通知:------------------------");
|
// 创建请求实体
|
WxTemplateAppealResultRequest wxTemplateAppealResultRequest = new WxTemplateAppealResultRequest();
|
wxTemplateAppealResultRequest.setTouser(openId);
|
wxTemplateAppealResultRequest.setTemplate_id(weixinProperties.getAppealResultTemplateId());
|
// 任务名称
|
Template thing4 = new Template();
|
thing4.setValue(taskName);
|
// 申诉结果
|
Template phrase1 = new Template();
|
phrase1.setValue(appealResult);
|
// 处理时间
|
Template time2 = new Template();
|
time2.setValue(handleTime);
|
// 备注
|
Template thing3 = new Template();
|
thing3.setValue(remark);
|
// 发送模板消息参数实体封装
|
WxTemplateAppealResultRequestData wxTemplateAppealResultRequestData = new WxTemplateAppealResultRequestData();
|
wxTemplateAppealResultRequestData.setThing4(thing4);
|
wxTemplateAppealResultRequestData.setPhrase1(phrase1);
|
wxTemplateAppealResultRequestData.setTime2(time2);
|
wxTemplateAppealResultRequestData.setThing3(thing3);
|
wxTemplateAppealResultRequest.setData(wxTemplateAppealResultRequestData);
|
// 4,发送消息给用户
|
String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateAppealResultRequest));
|
log.info("申诉结果通知模板消息返回数据:{}", result);
|
return result;
|
} catch (Exception e) {
|
log.error("申诉结果通知失败;");
|
}
|
return null;
|
}
|
|
/**
|
* 待审核提醒
|
* @param openId 用户openId
|
* @param applicant 申请人
|
* @param applicantTime 申请时间
|
* @param type 业务类型
|
* @param startTime 开始时间
|
* @param endTime 结束时间
|
* @return
|
*/
|
public String wxTemplatePendApprovalRequest(String openId,String applicant,String applicantTime,String type,String startTime,String endTime) {
|
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("待审核提醒通知:------------------------");
|
// 创建请求实体
|
WxTemplatePendApprovalRequest wxTemplatePendApprovalRequest = new WxTemplatePendApprovalRequest();
|
wxTemplatePendApprovalRequest.setTouser(openId);
|
wxTemplatePendApprovalRequest.setTemplate_id(weixinProperties.getPendApprovalTemplateId());
|
// 申请人
|
Template thing2 = new Template();
|
thing2.setValue(applicant);
|
// 申请时间
|
Template time3 = new Template();
|
time3.setValue(applicantTime);
|
// 业务类型
|
Template thing4 = new Template();
|
thing4.setValue(type);
|
// 开始时间
|
Template time26 = new Template();
|
time26.setValue(startTime);
|
// 结束时间
|
Template time27 = new Template();
|
time27.setValue(endTime);
|
// 发送模板消息参数实体封装
|
WxTemplatePendApprovalRequestData wxTemplatePendApprovalRequestData = new WxTemplatePendApprovalRequestData();
|
wxTemplatePendApprovalRequestData.setThing4(thing2);
|
wxTemplatePendApprovalRequestData.setTime3(time3);
|
wxTemplatePendApprovalRequestData.setThing4(thing4);
|
wxTemplatePendApprovalRequestData.setTime26(time26);
|
wxTemplatePendApprovalRequestData.setTime27(time27);
|
wxTemplatePendApprovalRequest.setData(wxTemplatePendApprovalRequestData);
|
// 4,发送消息给用户
|
String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplatePendApprovalRequest));
|
log.info("待审核提醒模板消息返回数据:{}", result);
|
return result;
|
} catch (Exception e) {
|
log.error("待审核提醒通知失败;");
|
}
|
return null;
|
}
|
/**
|
* 审核抄送通知
|
* @param openId 用户openId
|
* @param applicant 申请人
|
* @param applicantTime 申请时间
|
* @param type 申请类型
|
* @return
|
*/
|
public String wxTemplateMakeCopyRequest(String openId,String applicant,String applicantTime,String type) {
|
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("审核抄送通知:------------------------");
|
// 创建请求实体
|
WxTemplateMakeCopyRequest wxTemplateMakeCopyRequest = new WxTemplateMakeCopyRequest();
|
wxTemplateMakeCopyRequest.setTouser(openId);
|
wxTemplateMakeCopyRequest.setTemplate_id(weixinProperties.getMakeCopyTemplateId());
|
// 申请人
|
Template thing1 = new Template();
|
thing1.setValue(applicant);
|
// 申请时间
|
Template time2 = new Template();
|
time2.setValue(applicantTime);
|
// 申请类型
|
Template thing3 = new Template();
|
thing3.setValue(type);
|
// 发送模板消息参数实体封装
|
WxTemplateMakeCopyRequestData wxTemplateMakeCopyRequestData = new WxTemplateMakeCopyRequestData();
|
wxTemplateMakeCopyRequestData.setThing1(thing1);
|
wxTemplateMakeCopyRequestData.setTime2(time2);
|
wxTemplateMakeCopyRequestData.setThing3(thing3);
|
wxTemplateMakeCopyRequest.setData(wxTemplateMakeCopyRequestData);
|
// 4,发送消息给用户
|
String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateMakeCopyRequest));
|
log.info("审核抄送通知模板消息返回数据:{}", result);
|
return result;
|
} catch (Exception e) {
|
log.error("审核抄送通知失败;");
|
}
|
return null;
|
}
|
|
/**
|
* 问题整改通知
|
* @param openId 用户openId
|
* @param locationName 点位名称
|
* @param remark 备注
|
* @return
|
*/
|
public String wxTemplateProblemRectificationRequest(String openId,String locationName,String remark) {
|
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("问题整改通知:------------------------");
|
// 创建请求实体
|
WxTemplateProblemRectificationRequest wxTemplateProblemRectificationRequest = new WxTemplateProblemRectificationRequest();
|
wxTemplateProblemRectificationRequest.setTouser(openId);
|
wxTemplateProblemRectificationRequest.setTemplate_id(weixinProperties.getProblemRectificationTemplateId());
|
// 点位名称
|
Template thing3 = new Template();
|
thing3.setValue(locationName);
|
// 备注
|
Template thing2 = new Template();
|
thing2.setValue(remark);
|
// 发送模板消息参数实体封装
|
WxTemplateProblemRectificationRequestData wxTemplateProblemRectificationRequestData = new WxTemplateProblemRectificationRequestData();
|
wxTemplateProblemRectificationRequestData.setThing3(thing3);
|
wxTemplateProblemRectificationRequestData.setThing2(thing2);
|
wxTemplateProblemRectificationRequest.setData(wxTemplateProblemRectificationRequestData);
|
// 4,发送消息给用户
|
String url = Constants.TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);
|
String result = HttpUtils.sendPost(url, JsonUtils.toJsonString(wxTemplateProblemRectificationRequest));
|
log.info("问题整改通知模板消息返回数据:{}", result);
|
return result;
|
} catch (Exception e) {
|
log.error("问题整改通知失败;");
|
}
|
return null;
|
}
|
|
}
|