xuhy
1 天以前 99a22fab0384cac1d03e58e2e5a0095d79328a90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
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;
    }
 
}