|
@@ -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("会员到期极光消息推送异常");
|
|
|
}
|
|
|
}
|
|
|
|