From f1f008053724d3d7f7ed72714c2f8f0c01cfa643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=93=E7=84=B1?= Date: Sun, 2 Jun 2019 22:24:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=BF=E9=87=8C=E4=BA=91=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/entity/TblAliyunDeviceInfo.java | 5 +++ .../com/ifish7/mq/push/AliyunPushApi.java | 42 ++++++++----------- src/main/resources/mq.properties | 3 +- src/main/resources/push.properties | 3 +- src/main/resources/spring-main.xml | 1 - .../com/ifish7/mq/push/AliyunPushApiTest.java | 6 +-- 6 files changed, 29 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java b/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java index f96bafb..4117258 100644 --- a/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java +++ b/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java @@ -30,6 +30,11 @@ public class TblAliyunDeviceInfo { private Integer userId; /** + * 手机类型 + */ + private String phoneType; + + /** * 绑定时间 */ private LocalDateTime bindTime; diff --git a/src/main/java/com/ifish7/mq/push/AliyunPushApi.java b/src/main/java/com/ifish7/mq/push/AliyunPushApi.java index e3fbc5c..261fa5e 100644 --- a/src/main/java/com/ifish7/mq/push/AliyunPushApi.java +++ b/src/main/java/com/ifish7/mq/push/AliyunPushApi.java @@ -12,11 +12,9 @@ import com.ifish7.mq.business.user.entity.TblPushList; import com.ifish7.mq.business.user.service.ITblAliyunDeviceInfoService; import com.ifish7.mq.business.user.service.ITblPushListService; import lombok.extern.log4j.Log4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; -import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.List; /** @@ -37,8 +35,12 @@ public class AliyunPushApi { private static final String TARGET_TYPE = "DEVICE"; //推送类型 private static final String PUSH_TYPE = "NOTICE"; - //推送类型 ALL - private static final String PHONE_TYPE = "ALL"; + + @Value("${android_app_key}") + private String androidAppKey; + + @Value("${ios_app_key}") + private String iosAppKey; @Autowired private PushRequest pushRequest; @@ -56,9 +58,14 @@ public class AliyunPushApi { //根据Target来设定,多个值使用逗号分隔 //此处应该查询出用户所对应的deviceId ★★★★★ - String deviceIds = getUserDevices(String.valueOf(pushList.getUserId())); - //如果次用户未绑定设备 不推送 - if (StringUtils.isNotBlank(deviceIds)) { +// String deviceIds = getUserDevices(String.valueOf(pushList.getUserId())); + List pushUserDevices = aliyunDeviceInfoService.list(new QueryWrapper().lambda().eq(TblAliyunDeviceInfo::getUserId, pushList.getUserId())); + pushUserDevices.forEach(aliyunDeviceInfo -> { + if ("iOS".equals(aliyunDeviceInfo.getPhoneType())) { + pushRequest.setAppKey(Long.parseLong(iosAppKey)); + } else { + pushRequest.setAppKey(Long.parseLong(androidAppKey)); + } //推送目标: //DEVICE:根据设备推送 //ACCOUNT:根据账号推送 @@ -68,11 +75,11 @@ public class AliyunPushApi { pushRequest.setTarget(TARGET_TYPE); //响应数据 pushRequest.setAcceptFormat(FormatType.JSON); - pushRequest.setTargetValue(deviceIds); + pushRequest.setTargetValue(aliyunDeviceInfo.getAliyunDeviceId()); //推送类型 pushRequest.setPushType(PUSH_TYPE); //推送设备类型 - pushRequest.setDeviceType(pushList.getPhoneType().toUpperCase().equals("IOS") ? "iOS" : pushList.getPhoneType().toUpperCase()); + pushRequest.setDeviceType(aliyunDeviceInfo.getPhoneType()); // 消息的标题 pushRequest.setTitle(pushList.getPushTitle()); // 消息的内容 @@ -95,19 +102,6 @@ public class AliyunPushApi { } catch (ClientException e) { log.error(e.getMessage(),e); } - } else { - log.info(String.format("user : '%s' not bind device ",pushList.getUserId())); - } - - } - - private String getUserDevices(String userId){ - //查询出userId所对应的所有的deviceId - List pushUserDevices = aliyunDeviceInfoService.list(new QueryWrapper().lambda().eq(TblAliyunDeviceInfo::getUserId, userId)); - StringBuilder deviceIds = new StringBuilder(); - for (TblAliyunDeviceInfo aliyunDeviceInfo : pushUserDevices) { - deviceIds.append(aliyunDeviceInfo.getAliyunDeviceId()).append(","); - } - return deviceIds.toString(); + }); } } diff --git a/src/main/resources/mq.properties b/src/main/resources/mq.properties index a5dcb67..77df9ed 100644 --- a/src/main/resources/mq.properties +++ b/src/main/resources/mq.properties @@ -1,5 +1,4 @@ -#broker_url=tcp://test.ifish7.com:61616 -broker_url=tcp://www.ifish7.com:61616 +broker_url=tcp://localhost:61616 username=admin #password=admin password=adminifish7 diff --git a/src/main/resources/push.properties b/src/main/resources/push.properties index c2f124b..d48a135 100644 --- a/src/main/resources/push.properties +++ b/src/main/resources/push.properties @@ -1,6 +1,7 @@ accessKeyId= LTAIfZaosFH5IWlD accessKeySecret = dvlE8eFii31BcGb8HzkGz3eSaJ6Y94 -appKey = 26023230 +android_app_key = 26023230 +ios_app_key = 26023230 #\u76EE\u524D\u8BE5\u503C\u56FA\u5B9A\uFF0C\u4E0D\u7528\u52A8 regionId = cn-hangzhou diff --git a/src/main/resources/spring-main.xml b/src/main/resources/spring-main.xml index 4d7b09f..9596e6a 100644 --- a/src/main/resources/spring-main.xml +++ b/src/main/resources/spring-main.xml @@ -26,7 +26,6 @@ - diff --git a/src/test/java/com/ifish7/mq/push/AliyunPushApiTest.java b/src/test/java/com/ifish7/mq/push/AliyunPushApiTest.java index 2127a84..98fa447 100644 --- a/src/test/java/com/ifish7/mq/push/AliyunPushApiTest.java +++ b/src/test/java/com/ifish7/mq/push/AliyunPushApiTest.java @@ -27,7 +27,7 @@ public class AliyunPushApiTest { IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAIfZaosFH5IWlD", "dvlE8eFii31BcGb8HzkGz3eSaJ6Y94"); DefaultAcsClient client = new DefaultAcsClient(profile); PushRequest pushRequest = new PushRequest(); - pushRequest.setAppKey(26023230l); + pushRequest.setAppKey(26007228l); pushRequest.setSysProtocol(ProtocolType.HTTPS); pushRequest.setSysMethod(MethodType.POST); pushRequest.setStoreOffline(true); @@ -45,11 +45,11 @@ public class AliyunPushApiTest { pushRequest.setAcceptFormat(FormatType.JSON); //根据Target来设定,多个值使用逗号分隔 //此处应该查询出用户所对应的deviceId ★★★★★ - pushRequest.setTargetValue("bfde2078565a434aa6636419347fcd33,39a5f06b94324eef87e5665653b42367"); + pushRequest.setTargetValue("97e7cbda2a5d40b0af79b5f9aa49ddd3"); //推送类型 pushRequest.setPushType("NOTICE"); //推送设备类型 - pushRequest.setDeviceType("ALL"); + pushRequest.setDeviceType("iOS"); // 消息的标题 pushRequest.setTitle("温度报警"); // 消息的内容