From e5c863dd36bb1fcfe5eee9fd0e83950f0230a37d Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 31 Jul 2023 10:55:55 +0800
Subject: [PATCH] uni-push 2.0

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/UniCloudReturnRes.java         |    2 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java    |    2 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/utils/GeTuiUtils.java             |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java |   15 +++----
 4 files changed, 108 insertions(+), 11 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java
index ee5505b..3110d78 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java
@@ -27,7 +27,7 @@
 	}
 
 	/**
-	 * 通过用户id推送消息,用于测试
+	 * 通过用户id推送消息,用于2.0测试
 	 * @param pushVO
 	 * @return
 	 */
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
index 0b6379a..1488920 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
@@ -38,7 +38,7 @@
 	@Override
 	public Boolean pushMessageList(List<MessageRecord> messageRecordList) {
 		// 加入测试人员
-		addSendMsgTest(messageRecordList);
+//		addSendMsgTest(messageRecordList);
 		PushVO pushVO = new PushVO();
 		List<String> cIdList = new ArrayList<>();
 		//相同的消息推送给多用户
@@ -51,7 +51,7 @@
 		pushVO.setTitle(messageRecordList.get(0).getTheme());
 		pushVO.setContent(messageRecordList.get(0).getContent());
 
-		return geTuiUtils.pushMsg(pushVO.getCIds(),pushVO.getTitle(),pushVO.getContent());
+		return pushMessage(pushVO);
 	}
 
 	/**
@@ -115,10 +115,10 @@
 
 	@Override
 	public Boolean geTuiPushMessage(PushVO pushVO) {
-
 		List<String> cIdList = new ArrayList<>();
 		cIdList.add(getClientIdByUserId(pushVO.getUserId()));
-		return geTuiUtils.pushMsg(cIdList, pushVO.getTitle(), pushVO.getContent());
+//		return geTuiUtils.pushMsg(cIdList, pushVO.getTitle(), pushVO.getContent());
+		return geTuiUtils.myPushMessage(cIdList, pushVO.getTitle(), pushVO.getContent());
 	}
 
 	/**
@@ -128,17 +128,14 @@
 	 * @return
 	 */
 	public String getClientIdByUserId(String userId) {
-
 		if (Func.isEmpty(userId)) {
 			throw new ServiceException("请填写用户id!");
 		}
-
-
 		return bladeRedis.get(PUSH_CLIENT_ID + userId);
 	}
 
 	/**
-	 * 消息推送
+	 * 2.0云函数消息推送
 	 *
 	 * @param pushVO
 	 * @return
@@ -155,7 +152,7 @@
 		params.put("content", pushVO.getContent());
 //		UniCloudReturnRes uniCloudReturnRes = template.getForObject(UNI_CLOUD_PUSH_URL,UniCloudReturnRes.class,params);
 		UniCloudReturnRes uniCloudReturnRes = template.postForObject(UNI_CLOUD_PUSH_URL, params, UniCloudReturnRes.class);
-		return uniCloudReturnRes.getErrCode().equals(0) ? true : false;
+		return uniCloudReturnRes.getErrCode().equals("0") ? true : false;
 
 	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/utils/GeTuiUtils.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/utils/GeTuiUtils.java
index 6bd0ed4..5f8306d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/utils/GeTuiUtils.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/utils/GeTuiUtils.java
@@ -33,6 +33,8 @@
 	@Resource(name = "myPushApi")
 	private PushApi myPushApi;
 
+	private final String APP_PACKAGE_NAME = "com.hubei.jingchuReservoir";
+
 	/**
 	 * 单点推送(离线不推送)
 	 *
@@ -158,6 +160,8 @@
 		IosDTO iosDTO = new IosDTO();
 		iosDTO.setAps(aps);
 		iosDTO.setType("notify");
+
+
 		PushChannel pushChannel = new PushChannel();
 		pushChannel.setIos(iosDTO);
 		//安卓离线厂商通道推送消息体
@@ -265,4 +269,100 @@
 			System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
 		}
 	}
+
+	/**
+	 * 自定义消息批量推送,支持离线和在线推送
+	 * @param cids
+	 * @param title
+	 * @param content
+	 */
+	public Boolean myPushMessage(List<String> cids,String title,String content){
+		List<PushDTO<Audience>> list = new ArrayList<>(cids.size());
+		cids.forEach(cid -> {
+			PushDTO<Audience> pushDTO = new PushDTO<>();
+			/**设置个推通道**/
+			// 唯一标识
+			pushDTO.setRequestId(UUID.randomUUID().toString());
+			// 消息内容
+			PushMessage pushMessage = new PushMessage();
+			//0无限制、1仅wifi
+			pushMessage.setNetworkType(0);
+
+			GTNotification gtNotification = new GTNotification();
+			pushMessage.setNotification(gtNotification);
+			gtNotification.setTitle(title);
+			gtNotification.setBody(content);
+			gtNotification.setClickType("none");
+			pushDTO.setPushMessage(pushMessage);
+
+			// 消息接受人
+			Audience audience = new Audience();
+			audience.addCid(cid);
+			pushDTO.setAudience(audience);
+			/**设置个推通道结束**/
+
+			//配置推送条件
+			// 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
+			// 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
+			// 3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
+			// 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
+			Strategy strategy = new Strategy();
+			strategy.setDef(1);
+			Settings settings = new Settings();
+			settings.setStrategy(strategy);
+			pushDTO.setSettings(settings);
+			settings.setTtl(3600000);//消息有效期,走厂商消息需要设置该值
+			/**设置厂商通道**/
+			PushChannel pushChannel = new PushChannel();
+			/**设置Android配置**/
+			AndroidDTO androidDTO = new AndroidDTO();
+			Ups ups = new Ups();
+			ThirdNotification notification1 = new ThirdNotification();
+			ups.setNotification(notification1);
+			notification1.setTitle(title);//安卓离线展示的标题
+			notification1.setBody(content);//安卓离线展示的内容
+			notification1.setClickType("intent");
+			notification1.setIntent("intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;component=com.hubei.jingchuReservoir/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title="+title +";S.content="+content+";S.payload=test;end");
+
+			//对不同厂商进行配置
+//			ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry ");
+			ups.addOption("VV","/networkType",-1);
+
+			androidDTO.setUps(ups);
+			pushChannel.setAndroid(androidDTO);
+			/**设置Android配置结束**/
+
+			/**设置IOS配置**/
+			//推送苹果离线通知标题内容
+			Alert alert = new Alert();
+			alert.setTitle(title);//苹果离线通知栏标题
+			alert.setBody(content);//苹果离线通知栏内容
+			Aps aps = new Aps();
+			//1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。
+			//苹果建议1小时最多推送3条静默消息
+			aps.setContentAvailable(0);
+			aps.setSound("default");
+			aps.setAlert(alert);
+			IosDTO iosDTO = new IosDTO();
+			iosDTO.setAps(aps);
+			iosDTO.setType("notify");
+			pushChannel.setIos(iosDTO);
+			/**设置IOS配置结束**/
+			pushDTO.setPushChannel(pushChannel);
+			/**设置厂商通道结束**/
+
+
+			list.add(pushDTO);
+		});
+
+		PushBatchDTO pushBatchDTO = new PushBatchDTO();
+		pushBatchDTO.setAsync(true);
+		pushBatchDTO.setMsgList(list);
+
+
+		//推送消息
+		ApiResult<Map<String, Map<String, String>>> mapApiResult = myPushApi.pushBatchByCid(pushBatchDTO);
+
+		return mapApiResult.isSuccess();
+	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/UniCloudReturnRes.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/UniCloudReturnRes.java
index e728a15..b65689a 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/UniCloudReturnRes.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/UniCloudReturnRes.java
@@ -9,7 +9,7 @@
 
 	private Object data;
 
-	private Integer errCode;
+	private String errCode;
 
 	private String errMsg;
 

--
Gitblit v1.9.3