| 
					
				 | 
			
			
				@@ -206,49 +206,41 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void pollExpireMsg() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //提前三天提示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<VipCardRecordVo> temporaryRecords = baseMapper.selectTemporaryRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Set<String> sendFlag = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (VipCardRecordVo record : temporaryRecords) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String key = record.getUserId() + "_" + record.getVipType().getCode() + "_" + record.getClientType().getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (sendFlag.contains(key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(CollectionUtils.isNotEmpty(temporaryRecords)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<ClientEnum,List<VipCardRecordVo>> map = temporaryRecords.stream().collect(Collectors.groupingBy(VipCardRecordVo::getClientType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //区分老师学生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Map.Entry<ClientEnum, List<VipCardRecordVo>> entry : map.entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<VipCardRecordVo> list = entry.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //区分会员类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Map<EVipType,List<VipCardRecordVo>> map1 = list.stream().collect(Collectors.groupingBy(VipCardRecordVo::getVipType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                map1.forEach((k,v)->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Map<Long, String> receivers = v.stream().collect(Collectors.toMap(VipCardRecordVo::getUserId, VipCardRecordVo::getPhone)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    temporary3DaysSend(receivers, entry.getKey(), k); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sendFlag.add(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //发送消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CompletableFuture.runAsync(() -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                temporary3DaysSend(record.getUserId(), record.getPhone(), record.getClientType(), record.getVipType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            record.setMsgStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            record.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            VipCardRecord vipCardRecord = new VipCardRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BeanUtils.copyProperties(record, vipCardRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            baseMapper.updateById(vipCardRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //更新状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Long> ids = temporaryRecords.stream().map(VipCardRecordVo::getId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseMapper.updateMsgStatus(ids,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //到期提示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<VipCardRecordVo> expireRecords = baseMapper.selectExpireRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Set<String> expireSendFlag = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (VipCardRecordVo record : expireRecords) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String key = record.getUserId() + "_" + record.getVipType().getCode() + "_" + record.getClientType().getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (expireSendFlag.contains(key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(expireRecords)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<ClientEnum,List<VipCardRecordVo>> map = expireRecords.stream().collect(Collectors.groupingBy(VipCardRecordVo::getClientType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //区分老师学生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Map.Entry<ClientEnum, List<VipCardRecordVo>> entry : map.entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<VipCardRecordVo> list = entry.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //区分会员类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Map<EVipType,List<VipCardRecordVo>> map1 = list.stream().collect(Collectors.groupingBy(VipCardRecordVo::getVipType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                map1.forEach((k,v)->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Map<Long, String> receivers = v.stream().collect(Collectors.toMap(VipCardRecordVo::getUserId, VipCardRecordVo::getPhone)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    expireSend(receivers, entry.getKey(), k); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            expireSendFlag.add(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //发送消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //发送消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CompletableFuture.runAsync(() -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                expireSend(record.getUserId(),record.getPhone(), record.getClientType(), record.getVipType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            record.setMsgStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            record.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            VipCardRecord vipCardRecord = new VipCardRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BeanUtils.copyProperties(record, vipCardRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            baseMapper.updateById(vipCardRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //更新状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Long> ids = expireRecords.stream().map(VipCardRecordVo::getId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseMapper.updateMsgStatus(ids,2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -854,61 +846,24 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 发送会员到期3天消息推送 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void temporary3DaysSend(Long userId, String phone, ClientEnum clientType, EVipType vipType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Long, String> receivers = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        receivers.put(userId, phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 判断是否是机构学生 机构学生推送走另一个 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (clientType.equals(ClientEnum.STUDENT)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Student student = studentService.getById(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (student == null || (student.getTenantId() != null && student.getTenantId() > 0 )) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void temporary3DaysSend(Map<Long, String> receivers, ClientEnum clientType, EVipType vipType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     EVipType.VIP.equals(vipType) ? MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY : MessageTypeEnum.SVIP_EXPIRE_THIRTY_DAY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     , receivers, null, 0, null, clientType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("会员到期3天极光消息推送异常,userId={}", userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    EVipType.VIP.equals(vipType) ? MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY : MessageTypeEnum.SMS_SVIP_EXPIRE_THIRTY_DAY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    , receivers, null, 0, null, clientType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("会员到期3天短信消息推送异常,userId={}", userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("会员到期3天极光消息推送异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 发送会员到期消息推送 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void expireSend(Long userId,String phone,ClientEnum userType, EVipType vipType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Long, String> receivers = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        receivers.put(userId, phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Student student = studentService.getById(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (userType.equals(ClientEnum.STUDENT) && student != null  && student.getTenantId() != null && student.getTenantId() >0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_VIP_EXPIRE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                        receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                log.error("会员到期极光消息推送异常,userId={}", userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        EVipType.VIP.equals(vipType) ? MessageTypeEnum.VIP_EXPIRE : MessageTypeEnum.SVIP_EXPIRE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        ,receivers, null, 0, null, userType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("会员到期3天极光消息推送异常,userId={}", userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        EVipType.VIP.equals(vipType) ? MessageTypeEnum.SMS_VIP_EXPIRE : MessageTypeEnum.SMS_SVIP_EXPIRE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        receivers, null, 0, null, userType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("会员到期3天短信消息推送异常,userId={}", userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void expireSend(Map<Long, String> receivers,ClientEnum userType, EVipType vipType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    EVipType.VIP.equals(vipType) ? MessageTypeEnum.VIP_EXPIRE : MessageTypeEnum.SVIP_EXPIRE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ,receivers, null, 0, null, userType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("会员到期极光消息推送异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |