From 4a7367a869ef12375ea6678ca44e102b8919c624 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 12 一月 2022 16:53:42 +0800 Subject: [PATCH] 极光推送完善(推送通知与透传消息) --- service-push/src/main/java/com/ks/push/manager/PushManager.java | 103 ++++++++++++++++++++++++++------------------------- 1 files changed, 53 insertions(+), 50 deletions(-) diff --git a/service-push/src/main/java/com/ks/push/manager/PushManager.java b/service-push/src/main/java/com/ks/push/manager/PushManager.java index f47a50a..3d8f061 100644 --- a/service-push/src/main/java/com/ks/push/manager/PushManager.java +++ b/service-push/src/main/java/com/ks/push/manager/PushManager.java @@ -89,62 +89,65 @@ } - logger.info("寮�濮嬪惎鍔ㄦ帹閫�#taskId:{}", task.getId()); - updateState(taskId, BPushTask.STATE_PUSHING, null); - boolean hasDevice = false; + try { + logger.info("寮�濮嬪惎鍔ㄦ帹閫�#taskId:{}", task.getId()); + updateState(taskId, BPushTask.STATE_PUSHING, null); + boolean hasDevice = false; - // 鏌ヨ鍙帹閫佺殑骞冲彴 - List<BPushPlatformAppInfo> list = bPushPlatformAppInfoManager.listByAppCode(task.getAppCode()); + // 鏌ヨ鍙帹閫佺殑骞冲彴 + List<BPushPlatformAppInfo> list = bPushPlatformAppInfoManager.listByAppCode(task.getAppCode()); - //鍏堝垵濮嬪寲鎺ㄩ�佺粨鏋滄暟鎹暟鎹� - List<BPushTaskExcuteResult> resultList = new ArrayList<>(); - Map<String, Long> resultCountMap = new HashMap<>(); - for (BPushPlatformAppInfo appInfo : list) { - long count = pushDeviceTokenManager.count(task.getAppCode(), appInfo.getPlatform(), task.getFilter()); - if (count > 0) { - hasDevice = true; - //鍒濆鍖栨帹閫佺粨鏋滄暟鎹� - BPushTaskExcuteResult result = pushExcuteResultManager.initPushExcuteResult(taskId, appInfo.getPlatform(), count); - resultCountMap.put(result.getId(), count); - resultList.add(result); - } - } - - - for (BPushTaskExcuteResult result : resultList) { - long count = resultCountMap.get(result.getId()); - int pageSize = 500; - int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); - long totalValidCount = 0L; - - //鍒濆鍖栨壒閲忔帹閫佺殑璁℃暟 - for (int page = 0; page < totalPage; page++) { - pushExcuteResultManager.startBatchPush(taskId, result.getPushPlatform(), page + ""); - } - - for (int page = 0; page < totalPage; page++) { - List<BPushDeviceToken> deviceTokenList = pushDeviceTokenManager.list(task.getAppCode(), result.getPushPlatform(), task.getFilter(), page + 1, pageSize); - - List<String> tokenList = new ArrayList<>(); - for (BPushDeviceToken deviceToken : deviceTokenList) { - //TODO 鏃堕棿鍒ゆ柇 - tokenList.add(deviceToken.getToken()); + //鍏堝垵濮嬪寲鎺ㄩ�佺粨鏋滄暟鎹暟鎹� + List<BPushTaskExcuteResult> resultList = new ArrayList<>(); + Map<String, Long> resultCountMap = new HashMap<>(); + for (BPushPlatformAppInfo appInfo : list) { + long count = pushDeviceTokenManager.count(task.getAppCode(), appInfo.getPlatform(), task.getFilter()); + if (count > 0) { + hasDevice = true; + //鍒濆鍖栨帹閫佺粨鏋滄暟鎹� + BPushTaskExcuteResult result = pushExcuteResultManager.initPushExcuteResult(taskId, appInfo.getPlatform(), count); + resultCountMap.put(result.getId(), count); + resultList.add(result); } - totalValidCount += tokenList.size(); - BPushDeviceDataSet dataSet = new BPushDeviceDataSet(tokenList, page + "", taskId); - //鏈�鍚庝竴椤� - if (page == totalPage - 1 && totalValidCount != count) { - //淇敼鎬绘暟 - pushExcuteResultManager.setDeviceCount(result.getId(), totalValidCount); - } - CMQManager.getInstance().addToPushQueue(result.getPushPlatform(), dataSet); } - logger.info("鍔犲叆鎺ㄩ�侀槦鍒�#浠诲姟Id:{}#骞冲彴:{}#鎺ㄩ�佹暟閲�:{}", task.getId(), result.getPushPlatform().name(), count); - } - if (!hasDevice) { - updateState(taskId, BPushTask.STATE_FINSIH, "娌℃湁婊¤冻鏉′欢鐨勫彲鎺ㄩ�佽澶�"); + for (BPushTaskExcuteResult result : resultList) { + long count = resultCountMap.get(result.getId()); + int pageSize = 500; + int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + long totalValidCount = 0L; + + //鍒濆鍖栨壒閲忔帹閫佺殑璁℃暟 + for (int page = 0; page < totalPage; page++) { + pushExcuteResultManager.startBatchPush(taskId, result.getPushPlatform(), page + ""); + } + + for (int page = 0; page < totalPage; page++) { + List<BPushDeviceToken> deviceTokenList = pushDeviceTokenManager.list(task.getAppCode(), result.getPushPlatform(), task.getFilter(), page + 1, pageSize); + + List<String> tokenList = new ArrayList<>(); + for (BPushDeviceToken deviceToken : deviceTokenList) { + //TODO 鏃堕棿鍒ゆ柇 + tokenList.add(deviceToken.getToken()); + } + totalValidCount += tokenList.size(); + BPushDeviceDataSet dataSet = new BPushDeviceDataSet(tokenList, page + "", taskId); + //鏈�鍚庝竴椤� + if (page == totalPage - 1 && totalValidCount != count) { + //淇敼鎬绘暟 + pushExcuteResultManager.setDeviceCount(result.getId(), totalValidCount); + } + CMQManager.getInstance().addToPushQueue(result.getPushPlatform(), dataSet); + } + logger.info("鍔犲叆鎺ㄩ�侀槦鍒�#浠诲姟Id:{}#骞冲彴:{}#鎺ㄩ�佹暟閲�:{}", task.getId(), result.getPushPlatform().name(), count); + } + + if (!hasDevice) { + updateState(taskId, BPushTask.STATE_FINSIH, "娌℃湁婊¤冻鏉′欢鐨勫彲鎺ㄩ�佽澶�"); + } + } finally { + redisTemplate.delete(key); } //娌℃湁鍙帹閫佺殑璁惧 logger.info("鍚姩鎺ㄩ�佺粨鏉�#taskId:{}", task.getId()); -- Gitblit v1.8.0