From 4db93360932dcee2efddae48152a4ba1f9d7f28b Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 19 一月 2021 12:02:20 +0800
Subject: [PATCH] 优化业主查询报错问题
---
service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java | 76 +++++++++++++++++++++++++++++++++++--
1 files changed, 71 insertions(+), 5 deletions(-)
diff --git a/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java b/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java
index e1ffcc7..0673e83 100644
--- a/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java
+++ b/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java
@@ -1,6 +1,8 @@
package com.java110.job.task.wechat;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.WechatFactory;
import com.java110.dto.RoomDto;
import com.java110.dto.community.CommunityDto;
@@ -12,6 +14,7 @@
import com.java110.dto.task.TaskDto;
import com.java110.entity.wechat.Content;
import com.java110.entity.wechat.Data;
+import com.java110.entity.wechat.Miniprogram;
import com.java110.entity.wechat.PropertyFeeTemplateMessage;
import com.java110.intf.community.INoticeInnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
@@ -22,9 +25,11 @@
import com.java110.job.quartz.TaskSystemQuartz;
import com.java110.utils.cache.MappingCache;
import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@@ -66,6 +71,7 @@
//妯℃澘淇℃伅鎺ㄩ�佸湴鍧�
private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
+ private static String getUser = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN";
@Override
@@ -255,10 +261,7 @@
}
private void sendAllOwner(NoticeDto noticeDto, String templateId, String accessToken) {
- OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
- ownerAppUserDto.setAppType(OwnerAppUserDto.APP_TYPE_WECHAT);
- List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto);
- doSend(ownerAppUserDtos, noticeDto, templateId, accessToken);
+ doSendToOpenId(noticeDto, templateId, accessToken, "");
}
private void doSend(List<OwnerAppUserDto> ownerAppUserDtos, NoticeDto noticeDto, String templateId, String accessToken) {
@@ -271,7 +274,7 @@
data.setFirst(new Content(noticeDto.getTitle()));
data.setKeyword1(new Content(noticeDto.getTitle()));
data.setKeyword2(new Content(noticeDto.getStartTime()));
- data.setKeyword3(new Content(noticeDto.getContext()));
+ data.setKeyword3(new Content(StringUtil.delHtmlTag(noticeDto.getContext())));
data.setRemark(new Content("濡傛湁鐤戦棶璇疯仈绯荤浉鍏崇墿涓氫汉鍛�"));
templateMessage.setData(data);
templateMessage.setUrl(wechatUrl + noticeDto.getNoticeId());
@@ -281,4 +284,67 @@
}
}
+ private void doSendToOpenId(NoticeDto noticeDto, String templateId, String accessToken, String nextOpenid) {
+ String url = getUser.replace("ACCESS_TOKEN", accessToken);
+ if (!StringUtil.isEmpty(nextOpenid)) {
+ url += ("&next_openid=" + nextOpenid);
+ }
+ ResponseEntity<String> paramOut = outRestTemplate.getForEntity(url, String.class);
+
+ logger.info("鑾峰彇鐢ㄦ埛杩斿洖:{}", paramOut);
+
+ if (paramOut.getStatusCode() != HttpStatus.OK) {
+ throw new IllegalArgumentException(paramOut.getBody());
+ }
+
+ JSONObject paramOutObj = JSONObject.parseObject(paramOut.getBody());
+ if (paramOutObj.containsKey("errcode")) {
+ throw new IllegalArgumentException(paramOut.getBody());
+ }
+
+ if (!paramOutObj.containsKey("data")) {
+ return;
+ }
+ JSONObject dataObj = paramOutObj.getJSONObject("data");
+ JSONArray openids = dataObj.getJSONArray("openid");
+ nextOpenid = paramOutObj.getString("next_openid");
+ String wechatUrl = MappingCache.getValue("OWNER_WECHAT_URL");
+ Miniprogram miniprogram = null;
+ if (wechatUrl.startsWith("https://") || wechatUrl.startsWith("http://")) {
+
+ } else {
+ miniprogram = new Miniprogram();
+ miniprogram.setAppid(wechatUrl);
+ }
+ for (int openIndex = 0; openIndex < openids.size(); openIndex++) {
+ String openId = openids.getString(openIndex);
+ Data data = new Data();
+ PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage();
+ templateMessage.setTemplate_id(templateId);
+ templateMessage.setTouser(openId);
+ data.setFirst(new Content(noticeDto.getTitle()));
+ data.setKeyword1(new Content(noticeDto.getTitle()));
+ data.setKeyword2(new Content(noticeDto.getStartTime()));
+ data.setKeyword3(new Content(StringUtil.delHtmlTag(noticeDto.getContext())));
+ data.setRemark(new Content("濡傛湁鐤戦棶璇疯仈绯荤浉鍏崇墿涓氫汉鍛�"));
+ templateMessage.setData(data);
+ if (!StringUtil.isEmpty(wechatUrl)) {
+ if (miniprogram == null) {
+ templateMessage.setUrl(wechatUrl + "/#/pages/notice/detail/detail?noticeId=" + noticeDto.getNoticeId());
+ } else {
+ miniprogram.setPagepath("/pages/notice/detail/detail?noticeId=" + noticeDto.getNoticeId());
+ templateMessage.setMiniprogram(miniprogram);
+ }
+ }
+ logger.info("鍙戦�佹ā鏉挎秷鎭唴瀹�:{}", JSON.toJSONString(templateMessage));
+ ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(sendMsgUrl + accessToken, JSON.toJSONString(templateMessage), String.class);
+ logger.info("寰俊妯℃澘杩斿洖鍐呭:{}", responseEntity);
+ }
+
+ //锛堝叧娉ㄨ�呭垪琛ㄥ凡杩斿洖瀹屾椂锛岃繑鍥瀗ext_openid涓虹┖锛�
+ if (!StringUtil.isEmpty(nextOpenid)) {
+ doSendToOpenId(noticeDto, templateId, accessToken, nextOpenid);
+ }
+ }
+
}
--
Gitblit v1.8.0