From be12384c790aaf81afa827b910430f054ff253fa Mon Sep 17 00:00:00 2001 From: liushaowen <565850092@qq.com> Date: Thu, 29 Oct 2020 14:37:29 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E7=AB=AFbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dao/WxmpResiUserSubscribeDao.java | 3 ++- .../epmet/dao/WxmpWorkUserSubscribeDao.java | 3 ++- .../service/impl/WxmpMessageServiceImpl.java | 26 +++++++++---------- .../mapper/WxmpResiUserSubscribeDao.xml | 1 + .../mapper/WxmpWorkUserSubscribeDao.xml | 2 ++ 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java index 2a525fa7c0..a59a55e67e 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java @@ -36,11 +36,12 @@ public interface WxmpResiUserSubscribeDao extends BaseDao msgList) { logger.info("待发送订阅消息数量:{}", msgList.size()); + if (!(msgList.size()>NumConstant.ZERO)){ + throw new RenException("待发送消息不能为空"); + } int succecssCount = 0; +// 获取templateId + CustomerTemplateListFormDTO customerTemplateListFormDTO = new CustomerTemplateListFormDTO(); + customerTemplateListFormDTO.setCustomerId(msgList.get(0).getCustomerId()); + customerTemplateListFormDTO.setPublicId(WxmpMessageConstant.TEMPLATE_TYPE); + List customerTemplateListResultDTOS = customerTemplateList(customerTemplateListFormDTO); + for (WxSubscribeMessageFormDTO msg : msgList) { try { String userId = msg.getUserId(); @@ -142,7 +151,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { throw new WxSubscribeException("clientType有误", "", openId); } } catch (Exception e) { - throw new WxSubscribeException("连接User服务失败", "", ""); + throw new WxSubscribeException("连接User服务失败"+e.getMessage(), "", ""); } if (StringUtils.isBlank(openId)) { @@ -162,7 +171,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { try { authorizerRefreshToken = wxmpMessageRedis.getAuthorizerRefreshToken(key.toString()); } catch (Exception e) { - throw new WxSubscribeException("连接缓存服务器失败", "", openId); + throw new WxSubscribeException("连接缓存服务器失败"+e.getMessage(), "", openId); } String accessToken = (String) authorizerRefreshToken.get(WxmpMessageConstant.AUTHORIZER_ACCESS_TOKEN); if (StringUtils.isBlank(accessToken)) { @@ -170,15 +179,6 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { } //获取模板id -// if (WxmpMessageConstant.RESI.equals(clientType)) { -// templateId = wxmpResiUserSubscribeDao.getResiSubscribeTemplateId(openId, customerId); -// } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { -// templateId = wxmpWorkUserSubscribeDao.getWorkSubscribeTemplateId(openId, customerId); -// } - CustomerTemplateListFormDTO customerTemplateListFormDTO = new CustomerTemplateListFormDTO(); - customerTemplateListFormDTO.setCustomerId(customerId); - customerTemplateListFormDTO.setPublicId(WxmpMessageConstant.TEMPLATE_TYPE); - List customerTemplateListResultDTOS = customerTemplateList(customerTemplateListFormDTO); if (customerTemplateListResultDTOS.size() > NumConstant.ZERO) { for (CustomerTemplateListResultDTO customerTemplateListResultDTO : customerTemplateListResultDTOS) { if (WxmpMessageConstant.GOV_REDIS.equals(customerTemplateListResultDTO.getClientType())){ @@ -197,9 +197,9 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { //判断用户是否有次数 Integer count = null; if (WxmpMessageConstant.RESI.equals(clientType)) { - count = wxmpResiUserSubscribeDao.getResiSubscribeInfo(openId, templateId, customerId); + count = wxmpResiUserSubscribeDao.getResiSubscribeInfo(openId, templateId, customerId,userId); } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { - count = wxmpWorkUserSubscribeDao.getWorkSubscribeInfo(openId, templateId, customerId); + count = wxmpWorkUserSubscribeDao.getWorkSubscribeInfo(openId, templateId, customerId,userId); } if (count == null) { //用户未订阅 diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml index 842e3a9e70..52d7fd71fc 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml @@ -12,6 +12,7 @@ and customer_id = #{customerId} and template_id = #{templateId} and wx_open_id = #{openId} + and user_id = #{userId} and wx_subscribe_status = 'subscribe' diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml index b1e092a166..cd25e8c5d2 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml @@ -18,8 +18,10 @@ from Wxmp_Work_User_Subscribe where del_flag =0 + and customer_id = #{customerId} and template_id = #{templateId} and wx_open_id = #{openId} + and user_id = #{userId} and wx_subscribe_status = 'subscribe' From 188647b416cfa1bf1f8d594a004296ce709a3015 Mon Sep 17 00:00:00 2001 From: liushaowen <565850092@qq.com> Date: Thu, 29 Oct 2020 15:35:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?accessToken=E8=8E=B7=E5=8F=96=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=8F=98=E6=9B=B4=EF=BC=8C=E5=B7=A5=E4=BD=9C=E7=AB=AF?= =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dao/WxmpResiUserSubscribeDao.java | 13 +-- .../epmet/dao/WxmpWorkUserSubscribeDao.java | 14 +-- .../service/impl/WxmpMessageServiceImpl.java | 109 ++++++++++++------ .../mapper/WxmpResiUserSubscribeDao.xml | 14 +-- .../mapper/WxmpWorkUserSubscribeDao.xml | 13 +-- 5 files changed, 84 insertions(+), 79 deletions(-) diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java index a59a55e67e..3465d0d90f 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpResiUserSubscribeDao.java @@ -53,7 +53,7 @@ public interface WxmpResiUserSubscribeDao extends BaseDao msgList) { logger.info("待发送订阅消息数量:{}", msgList.size()); - if (!(msgList.size()>NumConstant.ZERO)){ + if (!(msgList.size() > NumConstant.ZERO)) { throw new RenException("待发送消息不能为空"); } int succecssCount = 0; @@ -129,7 +130,8 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { customerTemplateListFormDTO.setCustomerId(msgList.get(0).getCustomerId()); customerTemplateListFormDTO.setPublicId(WxmpMessageConstant.TEMPLATE_TYPE); List customerTemplateListResultDTOS = customerTemplateList(customerTemplateListFormDTO); - +// 获取AccessToken + Map accessTokenMap = getAccessToken(msgList.get(0).getCustomerId()); for (WxSubscribeMessageFormDTO msg : msgList) { try { String userId = msg.getUserId(); @@ -151,37 +153,16 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { throw new WxSubscribeException("clientType有误", "", openId); } } catch (Exception e) { - throw new WxSubscribeException("连接User服务失败"+e.getMessage(), "", ""); + throw new WxSubscribeException("连接User服务失败" + e.getMessage(), "", ""); } if (StringUtils.isBlank(openId)) { throw new WxSubscribeException("openId获取失败", "", ""); } - - //获取accessToken - String clientTypeRedis = null; - if (WxmpMessageConstant.RESI.equals(msg.getClientType())) { - clientTypeRedis = WxmpMessageConstant.RESI; - } - if (WxmpMessageConstant.GOV_DB.equals(msg.getClientType())) { - clientTypeRedis = WxmpMessageConstant.GOV_REDIS; - } - StringBuilder key = new StringBuilder(msg.getCustomerId()).append(":").append(clientTypeRedis); - Map authorizerRefreshToken = new HashMap<>(); - try { - authorizerRefreshToken = wxmpMessageRedis.getAuthorizerRefreshToken(key.toString()); - } catch (Exception e) { - throw new WxSubscribeException("连接缓存服务器失败"+e.getMessage(), "", openId); - } - String accessToken = (String) authorizerRefreshToken.get(WxmpMessageConstant.AUTHORIZER_ACCESS_TOKEN); - if (StringUtils.isBlank(accessToken)) { - throw new WxSubscribeException("accessToken获取失败", "", openId); - } - //获取模板id if (customerTemplateListResultDTOS.size() > NumConstant.ZERO) { for (CustomerTemplateListResultDTO customerTemplateListResultDTO : customerTemplateListResultDTOS) { - if (WxmpMessageConstant.GOV_REDIS.equals(customerTemplateListResultDTO.getClientType())){ + if (WxmpMessageConstant.GOV_REDIS.equals(customerTemplateListResultDTO.getClientType())) { customerTemplateListResultDTO.setClientType(WxmpMessageConstant.GOV_DB); } if (clientType.equals(customerTemplateListResultDTO.getClientType())) { @@ -197,9 +178,9 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { //判断用户是否有次数 Integer count = null; if (WxmpMessageConstant.RESI.equals(clientType)) { - count = wxmpResiUserSubscribeDao.getResiSubscribeInfo(openId, templateId, customerId,userId); + count = wxmpResiUserSubscribeDao.getResiSubscribeInfo(openId, templateId, customerId, userId); } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { - count = wxmpWorkUserSubscribeDao.getWorkSubscribeInfo(openId, templateId, customerId,userId); + count = wxmpWorkUserSubscribeDao.getWorkSubscribeInfo(openId, templateId, customerId, userId); } if (count == null) { //用户未订阅 @@ -209,6 +190,17 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { throw new WxSubscribeException("用户可用额度不足", templateId, openId); } + //获取accessToken + String accessToken = null; + if (WxmpMessageConstant.RESI.equals(clientType)) { + accessToken = accessTokenMap.get("resiToken"); + } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { + accessToken = accessTokenMap.get("govToken"); + } + if (StringUtils.isBlank(accessToken)) { + throw new WxSubscribeException("accessToken获取失败"+accessTokenMap.get("errorMsg"), "", openId); + } + //发送消息 JSONObject jsonObject = new JSONObject(); JSONObject data = new JSONObject(); @@ -259,9 +251,9 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { //订阅条数-1 int decrease = 0; if (WxmpMessageConstant.RESI.equals(clientType)) { - decrease = wxmpResiUserSubscribeDao.decreaseResiSubscribeCount(openId, templateId, customerId, 1); + decrease = wxmpResiUserSubscribeDao.decreaseResiSubscribeCount(openId, templateId, customerId, 1,userId); } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { - decrease = wxmpWorkUserSubscribeDao.decreaseWorkSubscribeCount(openId, templateId, customerId, 1); + decrease = wxmpWorkUserSubscribeDao.decreaseWorkSubscribeCount(openId, templateId, customerId, 1,userId); } if (decrease == 0) { logger.error("消息{}发送成功但订阅条数-1失败", JSON.toJSONString(msg)); @@ -277,9 +269,9 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { if (errcode.equals(WxmpMessageConstant.USER_REFUSED)) { int clear = 0; if (WxmpMessageConstant.RESI.equals(clientType)) { - clear = wxmpResiUserSubscribeDao.clearResiSubscribeCount(openId, templateId, customerId); + clear = wxmpResiUserSubscribeDao.clearResiSubscribeCount(openId, templateId, customerId,userId); } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { - clear = wxmpWorkUserSubscribeDao.clearWorkSubscribeCount(openId, templateId, customerId); + clear = wxmpWorkUserSubscribeDao.clearWorkSubscribeCount(openId, templateId, customerId,userId); } if (clear == 0) { logger.error("消息{}发送失败且清空订阅条数失败", JSON.toJSONString(msg)); @@ -319,7 +311,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { wxmpMsgSendRecordEntity.setCustomerId(msg.getCustomerId()); wxmpMsgSendRecordEntity.setClientType(msg.getClientType()); wxmpMsgSendRecordEntity.setTemplateId(templateId); - wxmpMsgSendRecordEntity.setGridId(msg.getGridId()==null?"":msg.getGridId()); + wxmpMsgSendRecordEntity.setGridId(msg.getGridId() == null ? "" : msg.getGridId()); wxmpMsgSendRecordEntity.setUserId(msg.getUserId()); wxmpMsgSendRecordEntity.setWxOpenId(openId); wxmpMsgSendRecordEntity.setBehaviorType(msg.getBehaviorType()); @@ -330,6 +322,57 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { return wxmpMsgSendRecordEntity; } + //获取AccessToken + private Map getAccessToken(String customerId) { + EnvEnum envEnum = EnvEnum.getCurrentEnv(); + String resiAccessToken = null; + String govAccessToken = null; + String errorMsg = null; + if (EnvEnum.PROD.getCode().equals(envEnum.getCode())) { + //居民端 + StringBuilder resiKey = new StringBuilder(customerId).append(":").append(WxmpMessageConstant.RESI); + Map authorizerRefreshToken = new HashMap<>(); + try { + authorizerRefreshToken = wxmpMessageRedis.getAuthorizerRefreshToken(resiKey.toString()); + } catch (Exception e) { + errorMsg = e.getMessage(); + } + resiAccessToken = (String) authorizerRefreshToken.get(WxmpMessageConstant.AUTHORIZER_ACCESS_TOKEN); + //政府端 + StringBuilder govKey = new StringBuilder(customerId).append(":").append(WxmpMessageConstant.GOV_REDIS); + authorizerRefreshToken = new HashMap<>(); + try { + authorizerRefreshToken = wxmpMessageRedis.getAuthorizerRefreshToken(resiKey.toString()); + } catch (Exception e) { + errorMsg = e.getMessage(); + } + govAccessToken = (String) authorizerRefreshToken.get(WxmpMessageConstant.AUTHORIZER_ACCESS_TOKEN); + } else { + String url = "https://epmet-cloud.elinkservice.cn/api/third/pacustomer/tokenlist"; + JSONObject postData = new JSONObject(); + postData.put("customerId", customerId); + String data = HttpClientManager.getInstance().sendPostByJSON(url, JSON.toJSONString(postData)).getData(); + JSONObject toResult = JSON.parseObject(data); + Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class); + if (null != toResult.get("code")) { + mapToResult.setCode(((Integer) toResult.get("code")).intValue()); + } + if (!mapToResult.success()) { + errorMsg = StringUtils.isBlank(mapToResult.getMsg()) ? mapToResult.getInternalMsg() : mapToResult.getMsg(); + } + Object CustomerTokensResultDTO = mapToResult.getData(); + JSONObject json = JSON.parseObject(CustomerTokensResultDTO.toString()); + CustomerTokensResultDTO customerTokensResultDTO = ConvertUtils.mapToEntity(json, CustomerTokensResultDTO.class); + resiAccessToken = customerTokensResultDTO.getResiAuthorizerToken(); + govAccessToken = customerTokensResultDTO.getWorkAuthorizerToken(); + } + Map resultMap = new HashMap(); + resultMap.put("resiToken",resiAccessToken); + resultMap.put("govToken",govAccessToken); + resultMap.put("errorMsg",errorMsg); + return resultMap; + } + /** * @return * @Description 居民端、工作端-获取客户小程序模板列表 @@ -385,7 +428,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { List resultList = (List) mapToResult.getData(); List list = new ArrayList<>(); //必须转换 - for(Object f:resultList){ + for (Object f : resultList) { JSONObject json = JSON.parseObject(f.toString()); CustomerTemplateListResultDTO ff = ConvertUtils.mapToEntity(json, CustomerTemplateListResultDTO.class); list.add(ff); diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml index 52d7fd71fc..fa3c599a83 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpResiUserSubscribeDao.xml @@ -24,6 +24,7 @@ and customer_id = #{customerId} and template_id = #{templateId} and wx_open_id = #{openId} + and user_id = #{userId} and wx_subscribe_status = 'subscribe' @@ -36,20 +37,9 @@ and customer_id = #{customerId} and template_id = #{templateId} and wx_open_id = #{openId} + and user_id = #{userId} - - update wxmp_resi_user_subscribe diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml index cd25e8c5d2..5d82cbf369 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpWorkUserSubscribeDao.xml @@ -33,6 +33,7 @@ and customer_id = #{customerId} and template_id = #{templateId} and wx_open_id = #{openId} + and user_id = #{userId} and wx_subscribe_status = 'subscribe' @@ -44,18 +45,8 @@ and customer_id = #{customerId} and template_id = #{templateId} and wx_open_id = #{openId} + and user_id = #{userId} - update wxmp_work_user_subscribe From 0b89850e8f0cf6722e17c959171aded3a0ad3784 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 29 Oct 2020 16:59:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=BB=9E=E7=95=99?= =?UTF-8?q?=E6=8F=90=E9=86=92=E6=B7=BB=E5=8A=A0=E5=BE=AE=E4=BF=A1=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/impl/ProjectServiceImpl.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index 112243cf0b..3617f467ad 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -1232,6 +1232,8 @@ public class ProjectServiceImpl extends BaseServiceImpl msgList = new ArrayList<>(); + //10.29 项目滞留提醒添加推送微信消息 sun + List wxmpMsgList = new ArrayList<>(); list.forEach(dto -> { String title; String msg; @@ -1270,8 +1272,24 @@ public class ProjectServiceImpl extends BaseServiceImpl