|  | @@ -192,15 +192,16 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 | 
	
		
			
				|  |  |          //提前三天提示
 | 
	
		
			
				|  |  |          List<VipCardRecordVo> temporaryRecords = baseMapper.selectTemporaryRecord();
 | 
	
		
			
				|  |  |          //标识
 | 
	
		
			
				|  |  | -        Map<Long, Long> temporaryFlagMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        Set<String> sendFlag = new HashSet<>();
 | 
	
		
			
				|  |  |          for (VipCardRecordVo record : temporaryRecords) {
 | 
	
		
			
				|  |  | -            if (null != temporaryFlagMap.get(record.getUserId())) {
 | 
	
		
			
				|  |  | +            String key = record.getUserId() + "_" + record.getVipType().getCode() + "_" + record.getClientType().getCode();
 | 
	
		
			
				|  |  | +            if (sendFlag.contains(key)) {
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            temporaryFlagMap.put(record.getUserId(), record.getUserId());
 | 
	
		
			
				|  |  | +            sendFlag.add(key);
 | 
	
		
			
				|  |  |              //发送消息
 | 
	
		
			
				|  |  |              CompletableFuture.runAsync(() -> {
 | 
	
		
			
				|  |  | -                temporary3DaysSend(record.getUserId(), record.getPhone(),record.getClientType());
 | 
	
		
			
				|  |  | +                temporary3DaysSend(record.getUserId(), record.getPhone(), record.getClientType(), record.getVipType());
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |              record.setMsgStatus(1);
 | 
	
		
			
				|  |  |              record.setUpdateTime(new Date());
 | 
	
	
		
			
				|  | @@ -213,16 +214,17 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 | 
	
		
			
				|  |  |          //到期提示
 | 
	
		
			
				|  |  |          List<VipCardRecordVo> expireRecords = baseMapper.selectExpireRecord();
 | 
	
		
			
				|  |  |          //标识
 | 
	
		
			
				|  |  | -        Map<Long, Long> expireFlagMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        Set<String> expireSendFlag = new HashSet<>();
 | 
	
		
			
				|  |  |          for (VipCardRecordVo record : expireRecords) {
 | 
	
		
			
				|  |  | -            if (null != expireFlagMap.get(record.getUserId())) {
 | 
	
		
			
				|  |  | +            String key = record.getUserId() + "_" + record.getVipType().getCode() + "_" + record.getClientType().getCode();
 | 
	
		
			
				|  |  | +            if (expireSendFlag.contains(key)) {
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            expireFlagMap.put(record.getUserId(), record.getUserId());
 | 
	
		
			
				|  |  | +            expireSendFlag.add(key);
 | 
	
		
			
				|  |  |              //发送消息
 | 
	
		
			
				|  |  |              //发送消息
 | 
	
		
			
				|  |  |              CompletableFuture.runAsync(() -> {
 | 
	
		
			
				|  |  | -                expireSend(record.getUserId(),record.getPhone(), record.getClientType());
 | 
	
		
			
				|  |  | +                expireSend(record.getUserId(),record.getPhone(), record.getClientType(), record.getVipType());
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |              record.setMsgStatus(2);
 | 
	
		
			
				|  |  |              record.setUpdateTime(new Date());
 | 
	
	
		
			
				|  | @@ -347,7 +349,12 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 设置剩余天数
 | 
	
		
			
				|  |  |          if (userVip.getVipEndDate() != null) {
 | 
	
		
			
				|  |  | -            int num = DateUtil.daysBetween(new Date(), userVip.getVipEndDate()) +1;
 | 
	
		
			
				|  |  | +            int num;
 | 
	
		
			
				|  |  | +            if (userVip.getSvipEndDate() != null && userVip.getSvipEndDate().after(new Date())) {
 | 
	
		
			
				|  |  | +                num = DateUtil.daysBetween(userVip.getSvipEndDate(), userVip.getVipEndDate());
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                num = DateUtil.daysBetween(new Date(), userVip.getVipEndDate()) + 1;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              userVip.setVipEndDays(Math.max(num, 0));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (userVip.getSvipEndDate() != null) {
 | 
	
	
		
			
				|  | @@ -729,55 +736,58 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 发送会员到期3天消息推送
 | 
	
		
			
				|  |  | -    private void temporary3DaysSend(Long userId, String phone, ClientEnum clientType) {
 | 
	
		
			
				|  |  | +    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)) {
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY.getCode());
 | 
	
		
			
				|  |  | -                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY,
 | 
	
		
			
				|  |  | -                        receivers, null, 0, url, ClientEnum.STUDENT.getCode());
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                log.error("会员到期3天极光消息推送异常,userId={}", userId);
 | 
	
		
			
				|  |  | +            Student student = studentService.getById(userId);
 | 
	
		
			
				|  |  | +            if (student == null || (student.getTenantId() != null && student.getTenantId() > 0 )) {
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        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 {
 | 
	
		
			
				|  |  | -                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY.getCode());
 | 
	
		
			
				|  |  | -                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY,
 | 
	
		
			
				|  |  | -                        receivers, null, 0, null, ClientEnum.STUDENT.getCode(), url);
 | 
	
		
			
				|  |  | -            } 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);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 发送会员到期消息推送
 | 
	
		
			
				|  |  | -    private void expireSend(Long userId,String phone,ClientEnum userType) {
 | 
	
		
			
				|  |  | +    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);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +//            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 {
 | 
	
		
			
				|  |  | -                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIP_EXPIRE.getCode());
 | 
	
		
			
				|  |  | -                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_EXPIRE,
 | 
	
		
			
				|  |  | -                        receivers, null, 0, url, userType.getCode());
 | 
	
		
			
				|  |  | +                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 {
 | 
	
		
			
				|  |  | -                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_VIP_EXPIRE.getCode());
 | 
	
		
			
				|  |  | -                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_EXPIRE,
 | 
	
		
			
				|  |  | -                        receivers, null, 0, null, userType.getCode(), url);
 | 
	
		
			
				|  |  | +                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);
 | 
	
		
			
				|  |  |              }
 |