From 0a3b28bcff870dfb742d76d06fc74481965ea122 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期四, 17 一月 2019 14:48:54 +0800 Subject: [PATCH] 用户自定义界面设置+ 免打扰IOS推送修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java | 74 +++++++++++++++++++++++++++++++++--- 1 files changed, 67 insertions(+), 7 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java index 855192c..16a4676 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java @@ -1,6 +1,7 @@ package com.yeshi.fanli.service.impl.push; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; @@ -21,6 +22,7 @@ import com.yeshi.fanli.exception.PushException; import com.yeshi.fanli.log.PushLogHelper; import com.yeshi.fanli.service.inter.push.IOSPushService; +import com.yeshi.fanli.service.inter.user.UserCustomSettingsService; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; @@ -37,6 +39,9 @@ @Resource private PushQueueRecordMapper pushQueueRecordMapper; + @Resource + private UserCustomSettingsService userCustomSettingsService; + @Override public void pushGoods(Long uid, Long auctionId, String title, String content) throws PushException { @@ -79,6 +84,10 @@ * } } }); */ } else { + if (!validateNotDisturbSingle(uid)) { + return; //閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + // IOS 鍗曟帹 List<DeviceTokenIOS> deviceTokenIosList = getDeviceTokenListByUid(uid); List<String> deviceTokenList = new ArrayList<>(); @@ -133,6 +142,10 @@ * } catch (Exception e) { PushLogHelper.iosError(e); } } }); */ } else { + if (!validateNotDisturbSingle(uid)) { + return; //閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + List<DeviceTokenIOS> deviceTokenIosList = getDeviceTokenListByUid(uid); List<String> deviceTokenList = new ArrayList<>(); if (deviceTokenIosList != null) @@ -193,6 +206,13 @@ * } }); */ } else if (msg != null) { + + if (uId !=null) { + if (!validateNotDisturbSingle(uId)) { + return; //閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + } + // 鎻掑叆鎺ㄩ�佽褰� PushRecord pushRecord = new PushRecord(); info.setTitle(msg.getTitle()); @@ -353,7 +373,7 @@ // 缁撴潫娓告爣 pushQueueRecord.setEndCursor(endCursor); - // TODO 瀛樺叆鏁版嵁搴� + // 瀛樺叆鏁版嵁搴� pushQueueRecordMapper.insert(pushQueueRecord); // 鍔犲叆闃熷垪 CMQManager.getInstance().addIOSPushMsg(pushQueueRecord); @@ -363,7 +383,6 @@ } } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } @@ -443,22 +462,38 @@ String jsonContent = pushQueueRecord.getJsonContent(); JSONObject json = JSONObject.fromObject(jsonContent); - + List<String> tokenList = new ArrayList<>(); + + boolean ispush = false; + List<Long> listNotPushId = null; + + Calendar now = Calendar.getInstance(); + int hour = now.get(Calendar.HOUR_OF_DAY); + if (hour >= 8 && hour < 20) { + ispush = true; // 鍙帹閫� + } else { + listNotPushId = validateNotDisturb(); + } + for (DeviceTokenIOS ios : list) { + if (!StringUtil.isNullOrEmpty(ios.getDeviceToken())) { + if (!ispush && listNotPushId != null && listNotPushId.size() > 0) { + Long uid = ios.getUid(); + if (uid != null && listNotPushId.contains(uid)) { + continue; // 閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + } tokenList.add(ios.getDeviceToken()); - // System.out.println(ios.getDeviceToken()); } } if (tokenList.size() > 0) { - // System.out.println(tokenList.size()); // 鎵ц鎺ㄩ�� try { IOSPushUtil.executePushIOS(tokenList, json); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -466,7 +501,7 @@ pushQueueRecord.setEndtime(new Date()); pushQueueRecord.setRecordCursor(recordCursor); - // TODO 鏇存柊鏁版嵁搴� + // 鏇存柊鏁版嵁搴� pushQueueRecordMapper.updateByPrimaryKeySelective(pushQueueRecord); } @@ -529,5 +564,30 @@ } } } + + /** + * 閫氱煡鍏嶆墦鎵�(20:00-8:00) + */ + public List<Long> validateNotDisturb() { + return userCustomSettingsService.getCancelNoticeUsers(); + } + + /** + * 閫氱煡鍏嶆墦鎵�(20:00-8:00) + */ + public boolean validateNotDisturbSingle(Long uid) { + Calendar now = Calendar.getInstance(); + int hour = now.get(Calendar.HOUR_OF_DAY); + boolean ispush; + if (hour >= 8 && hour < 20) { + ispush = true; // 鍙帹閫� + } else { + // 鑷畾涔夎缃� 閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + ispush = userCustomSettingsService.validateCancelNoticeByUid(uid); + } + + return ispush; + } + } -- Gitblit v1.8.0