| 
						
						
							
								
							
						
						
					 | 
					@ -32,6 +32,7 @@ import com.epmet.dao.WxmpResiUserSubscribeDao; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import com.epmet.dao.WxmpTemplateMsgSubscribeStatusDao; | 
					 | 
					 | 
					import com.epmet.dao.WxmpTemplateMsgSubscribeStatusDao; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import com.epmet.dao.WxmpUserSubscribeRecordDao; | 
					 | 
					 | 
					import com.epmet.dao.WxmpUserSubscribeRecordDao; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import com.epmet.dao.WxmpWorkUserSubscribeDao; | 
					 | 
					 | 
					import com.epmet.dao.WxmpWorkUserSubscribeDao; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					import com.epmet.dto.UserWechatDTO; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import com.epmet.dto.form.*; | 
					 | 
					 | 
					import com.epmet.dto.form.*; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import com.epmet.dto.result.*; | 
					 | 
					 | 
					import com.epmet.dto.result.*; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import com.epmet.entity.*; | 
					 | 
					 | 
					import com.epmet.entity.*; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -120,7 +121,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    @Override | 
					 | 
					 | 
					    @Override | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    public void sendWxSubscribeMessage(List<WxSubscribeMessageFormDTO> msgList) { | 
					 | 
					 | 
					    public void sendWxSubscribeMessage(List<WxSubscribeMessageFormDTO> msgList) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        logger.info("待发送订阅消息数量:{}", msgList.size()); | 
					 | 
					 | 
					        logger.info("待发送订阅消息数量:{}", msgList.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        if (!(msgList.size()>NumConstant.ZERO)){ | 
					 | 
					 | 
					        if (!(msgList.size() > NumConstant.ZERO)) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					            throw new RenException("待发送消息不能为空"); | 
					 | 
					 | 
					            throw new RenException("待发送消息不能为空"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        int succecssCount = 0; | 
					 | 
					 | 
					        int succecssCount = 0; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -129,7 +130,8 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        customerTemplateListFormDTO.setCustomerId(msgList.get(0).getCustomerId()); | 
					 | 
					 | 
					        customerTemplateListFormDTO.setCustomerId(msgList.get(0).getCustomerId()); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        customerTemplateListFormDTO.setPublicId(WxmpMessageConstant.TEMPLATE_TYPE); | 
					 | 
					 | 
					        customerTemplateListFormDTO.setPublicId(WxmpMessageConstant.TEMPLATE_TYPE); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        List<CustomerTemplateListResultDTO> customerTemplateListResultDTOS = customerTemplateList(customerTemplateListFormDTO); | 
					 | 
					 | 
					        List<CustomerTemplateListResultDTO> customerTemplateListResultDTOS = customerTemplateList(customerTemplateListFormDTO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					
 | 
					 | 
					 | 
					//        获取AccessToken
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        Map<String,String> accessTokenMap = getAccessToken(msgList.get(0).getCustomerId()); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        for (WxSubscribeMessageFormDTO msg : msgList) { | 
					 | 
					 | 
					        for (WxSubscribeMessageFormDTO msg : msgList) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            try { | 
					 | 
					 | 
					            try { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                String userId = msg.getUserId(); | 
					 | 
					 | 
					                String userId = msg.getUserId(); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -151,37 +153,16 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                        throw new WxSubscribeException("clientType有误", "", openId); | 
					 | 
					 | 
					                        throw new WxSubscribeException("clientType有误", "", openId); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    } | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                } catch (Exception e) { | 
					 | 
					 | 
					                } catch (Exception e) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    throw new WxSubscribeException("连接User服务失败"+e.getMessage(), "", ""); | 
					 | 
					 | 
					                    throw new WxSubscribeException("连接User服务失败" + e.getMessage(), "", ""); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                } | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (StringUtils.isBlank(openId)) { | 
					 | 
					 | 
					                if (StringUtils.isBlank(openId)) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    throw new WxSubscribeException("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<String, Object> 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
 | 
					 | 
					 | 
					                //获取模板id
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (customerTemplateListResultDTOS.size() > NumConstant.ZERO) { | 
					 | 
					 | 
					                if (customerTemplateListResultDTOS.size() > NumConstant.ZERO) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    for (CustomerTemplateListResultDTO customerTemplateListResultDTO : customerTemplateListResultDTOS) { | 
					 | 
					 | 
					                    for (CustomerTemplateListResultDTO customerTemplateListResultDTO : customerTemplateListResultDTOS) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                        if (WxmpMessageConstant.GOV_REDIS.equals(customerTemplateListResultDTO.getClientType())){ | 
					 | 
					 | 
					                        if (WxmpMessageConstant.GOV_REDIS.equals(customerTemplateListResultDTO.getClientType())) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                            customerTemplateListResultDTO.setClientType(WxmpMessageConstant.GOV_DB); | 
					 | 
					 | 
					                            customerTemplateListResultDTO.setClientType(WxmpMessageConstant.GOV_DB); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                        } | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                        if (clientType.equals(customerTemplateListResultDTO.getClientType())) { | 
					 | 
					 | 
					                        if (clientType.equals(customerTemplateListResultDTO.getClientType())) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -197,9 +178,9 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                //判断用户是否有次数
 | 
					 | 
					 | 
					                //判断用户是否有次数
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                Integer count = null; | 
					 | 
					 | 
					                Integer count = null; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (WxmpMessageConstant.RESI.equals(clientType)) { | 
					 | 
					 | 
					                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)) { | 
					 | 
					 | 
					                } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    count = wxmpWorkUserSubscribeDao.getWorkSubscribeInfo(openId, templateId, customerId,userId); | 
					 | 
					 | 
					                    count = wxmpWorkUserSubscribeDao.getWorkSubscribeInfo(openId, templateId, customerId, userId); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                } | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (count == null) { | 
					 | 
					 | 
					                if (count == null) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    //用户未订阅
 | 
					 | 
					 | 
					                    //用户未订阅
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -209,6 +190,17 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    throw new WxSubscribeException("用户可用额度不足", templateId, openId); | 
					 | 
					 | 
					                    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 jsonObject = new JSONObject(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                JSONObject data = new JSONObject(); | 
					 | 
					 | 
					                JSONObject data = new JSONObject(); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -259,9 +251,9 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    //订阅条数-1
 | 
					 | 
					 | 
					                    //订阅条数-1
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    int decrease = 0; | 
					 | 
					 | 
					                    int decrease = 0; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (WxmpMessageConstant.RESI.equals(clientType)) { | 
					 | 
					 | 
					                    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)) { | 
					 | 
					 | 
					                    } 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) { | 
					 | 
					 | 
					                    if (decrease == 0) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                        logger.error("消息{}发送成功但订阅条数-1失败", JSON.toJSONString(msg)); | 
					 | 
					 | 
					                        logger.error("消息{}发送成功但订阅条数-1失败", JSON.toJSONString(msg)); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -277,9 +269,9 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (errcode.equals(WxmpMessageConstant.USER_REFUSED)) { | 
					 | 
					 | 
					                    if (errcode.equals(WxmpMessageConstant.USER_REFUSED)) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                        int clear = 0; | 
					 | 
					 | 
					                        int clear = 0; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                        if (WxmpMessageConstant.RESI.equals(clientType)) { | 
					 | 
					 | 
					                        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)) { | 
					 | 
					 | 
					                        } else if (WxmpMessageConstant.GOV_DB.equals(clientType)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                            clear = wxmpWorkUserSubscribeDao.clearWorkSubscribeCount(openId, templateId, customerId); | 
					 | 
					 | 
					                            clear = wxmpWorkUserSubscribeDao.clearWorkSubscribeCount(openId, templateId, customerId,userId); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                        } | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                        if (clear == 0) { | 
					 | 
					 | 
					                        if (clear == 0) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                            logger.error("消息{}发送失败且清空订阅条数失败", JSON.toJSONString(msg)); | 
					 | 
					 | 
					                            logger.error("消息{}发送失败且清空订阅条数失败", JSON.toJSONString(msg)); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -319,7 +311,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setCustomerId(msg.getCustomerId()); | 
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setCustomerId(msg.getCustomerId()); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setClientType(msg.getClientType()); | 
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setClientType(msg.getClientType()); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setTemplateId(templateId); | 
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setTemplateId(templateId); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setGridId(msg.getGridId()==null?"":msg.getGridId()); | 
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setGridId(msg.getGridId() == null ? "" : msg.getGridId()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setUserId(msg.getUserId()); | 
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setUserId(msg.getUserId()); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setWxOpenId(openId); | 
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setWxOpenId(openId); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setBehaviorType(msg.getBehaviorType()); | 
					 | 
					 | 
					        wxmpMsgSendRecordEntity.setBehaviorType(msg.getBehaviorType()); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -330,6 +322,57 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        return wxmpMsgSendRecordEntity; | 
					 | 
					 | 
					        return wxmpMsgSendRecordEntity; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    //获取AccessToken
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    private Map<String,String> 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<String, Object> 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 | 
					 | 
					 | 
					     * @return | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					     * @Description 居民端、工作端-获取客户小程序模板列表 | 
					 | 
					 | 
					     * @Description 居民端、工作端-获取客户小程序模板列表 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -385,7 +428,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        List<Object> resultList = (List<Object>) mapToResult.getData(); | 
					 | 
					 | 
					        List<Object> resultList = (List<Object>) mapToResult.getData(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        List<CustomerTemplateListResultDTO> list = new ArrayList<>(); | 
					 | 
					 | 
					        List<CustomerTemplateListResultDTO> list = new ArrayList<>(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        //必须转换
 | 
					 | 
					 | 
					        //必须转换
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        for(Object f:resultList){ | 
					 | 
					 | 
					        for (Object f : resultList) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					            JSONObject json = JSON.parseObject(f.toString()); | 
					 | 
					 | 
					            JSONObject json = JSON.parseObject(f.toString()); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            CustomerTemplateListResultDTO ff = ConvertUtils.mapToEntity(json, CustomerTemplateListResultDTO.class); | 
					 | 
					 | 
					            CustomerTemplateListResultDTO ff = ConvertUtils.mapToEntity(json, CustomerTemplateListResultDTO.class); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            list.add(ff); | 
					 | 
					 | 
					            list.add(ff); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |