diff --git a/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java b/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java index 988ac49e..52b458d9 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java +++ b/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java @@ -1,13 +1,13 @@ package com.suisung.mall.account.controller.mobile; +import com.getui.push.v2.sdk.api.PushApi; import com.suisung.mall.account.service.AccountSinglePushService; +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.push.PushTemplate; import com.suisung.mall.common.service.GeTuiPushService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -34,9 +34,14 @@ public class SinglePushController { } @PostMapping("/pushTocid") - public String pushTocid(@RequestParam String userId, @RequestParam String message) { + public CommonResult pushTocid(@RequestParam String userId, @RequestParam String message) { log.info("pushTocid"); - accountSinglePushService.pushTocid(message, userId); - return "success"; + return accountSinglePushService.pushTocid(message, userId); + } + + @PostMapping("/pushNotificationTocid") + public CommonResult pushNotificationTocid(@RequestParam String userId,@RequestBody PushTemplate pushTemplate) { + log.info("pushNotificationTocid"); + return accountSinglePushService.pushTocid(pushTemplate,userId); } } diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/AccountSinglePushService.java b/mall-account/src/main/java/com/suisung/mall/account/service/AccountSinglePushService.java index b06a43f3..82f0cab9 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/service/AccountSinglePushService.java +++ b/mall-account/src/main/java/com/suisung/mall/account/service/AccountSinglePushService.java @@ -1,6 +1,9 @@ package com.suisung.mall.account.service; +import com.getui.push.v2.sdk.dto.req.message.PushMessage; import com.getui.push.v2.sdk.dto.res.TokenDTO; +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.push.PushTemplate; import com.suisung.mall.common.service.SinglePushBaseService; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Service; @@ -12,5 +15,17 @@ public interface AccountSinglePushService extends SinglePushBaseService { void delToken(); - void pushTocid(String message,String userId); + /** + * 透传方式 + * @param message + * @param userId + */ + CommonResult pushTocid(String message,String userId); + + /** + * 消息通知方式 + * @param pushTemplate + * @param userId + */ + CommonResult pushTocid(PushTemplate pushTemplate, String userId); } diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java index bc92db43..87a442d0 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java +++ b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java @@ -4,12 +4,23 @@ import cn.hutool.core.collection.CollectionUtil; import com.getui.push.v2.sdk.api.PushApi; import com.getui.push.v2.sdk.common.ApiResult; import com.getui.push.v2.sdk.dto.req.Audience; +import com.getui.push.v2.sdk.dto.req.message.PushChannel; import com.getui.push.v2.sdk.dto.req.message.PushDTO; import com.getui.push.v2.sdk.dto.req.message.PushMessage; +import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO; +import com.getui.push.v2.sdk.dto.req.message.android.GTNotification; +import com.getui.push.v2.sdk.dto.req.message.android.Ups; +import com.getui.push.v2.sdk.dto.req.message.ios.Alert; +import com.getui.push.v2.sdk.dto.req.message.ios.Aps; +import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO; import com.suisung.mall.account.service.AccountSinglePushService; import com.suisung.mall.account.service.UserDeviceBindService; +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.push.PushTemplate; import com.suisung.mall.common.modules.singlepush.UserDeviceBind; +import com.suisung.mall.common.pojo.res.ThirdApiRes; import com.suisung.mall.common.service.impl.SinglePushBaseServiceImpl; +import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -34,13 +45,13 @@ public class AccountSinglePushServiceImpl extends SinglePushBaseServiceImpl impl } @Override - public void pushTocid(String message, String userId) { + public CommonResult pushTocid(String message, String userId) { UserDeviceBind userDeviceBind = new UserDeviceBind(); userDeviceBind.setUserId(userId); List list = userDeviceBindService.getActive(userDeviceBind); if (CollectionUtil.isEmpty(list)) { log.error("登录时绑定设备不存在"); - return; + return CommonResult.failed("登录时绑定设备不存在"); } String cid = list.get(0).getCid(); PushApi pushApi = this.getApiHelper().creatApi(PushApi.class); @@ -54,10 +65,66 @@ public class AccountSinglePushServiceImpl extends SinglePushBaseServiceImpl impl pushMessage.setTransmission(message); pushDTO.setPushMessage(pushMessage); ApiResult>> mapApiResult = pushApi.pushToSingleByCid(pushDTO);//,super.getTokenDTO() - if (mapApiResult.getCode() == 0) { - log.info("用户为{},cid为{}发送成功消息成功", list.get(0).getUserId(), list.get(0).getCid()); + if (mapApiResult.getCode() != 0) { + log.info("用户为{},cid为{}发送成功消息失败", list.get(0).getUserId(), list.get(0).getCid()); + return CommonResult.failed("错误码:"+mapApiResult.getCode()+"错误消息"+mapApiResult.getMsg()); } - log.info("mapApiResult的数据{}", mapApiResult); + return CommonResult.success("success"); + } + + @Override + public CommonResult pushTocid(PushTemplate pushTemplate, String userId) { + UserDeviceBind userDeviceBind = new UserDeviceBind(); + userDeviceBind.setUserId(userId); + List list = userDeviceBindService.getActive(userDeviceBind); + if (CollectionUtil.isEmpty(list)) { + return CommonResult.failed("登录时绑定设备不存在"); + } + String cid = list.get(0).getCid(); + PushApi pushApi = this.getApiHelper().creatApi(PushApi.class); + PushDTO pushDTO = new PushDTO<>(); + Audience audience = new Audience(); + audience.addCid(cid); + pushDTO.setAudience(audience); + pushDTO.setRequestId(UUID.randomUUID().toString()); + PushMessage pushMessage = new PushMessage(); + pushMessage.setDuration(this.getDuration()); + //在线消息 start + GTNotification gtNotification=new GTNotification(); + gtNotification.setTitle(pushTemplate.getTitle()); + gtNotification.setBody(pushTemplate.getContent()); + gtNotification.setClickType("payload"); + gtNotification.setPayload(pushTemplate.getJson()); + pushMessage.setNotification(gtNotification); + //在线消息 end + pushDTO.setPushMessage(pushMessage); + //离线消息 start + PushChannel pushChannel=new PushChannel(); + //IOS + IosDTO iosDTO=new IosDTO(); + iosDTO.setPayload(pushTemplate.getJson()); + Aps aps=new Aps(); + Alert alert= new Alert(); + alert.setTitle(pushTemplate.getTitle()); + alert.setBody(pushTemplate.getContent()); + aps.setAlert(alert); + iosDTO.setAps(aps); + pushChannel.setIos(iosDTO); + //android 安卓离线只能透传 + AndroidDTO android =new AndroidDTO(); + Ups ups=new Ups(); + ups.setTransmission(pushTemplate.getJson()); + android.setUps(ups); + pushChannel.setAndroid(android); + pushDTO.setPushChannel(pushChannel); + //离线消息 end + ApiResult>> mapApiResult = pushApi.pushToSingleByCid(pushDTO);//,super.getTokenDTO() + if (mapApiResult.getCode() != 0) { + return CommonResult.failed("登录时绑定设备不存在"); + //log.info("用户为{},cid为{}发送成功消息成功", list.get(0).getUserId(), list.get(0).getCid()); + } + //log.info("用户为{},cid为{}发送成功消息成功", list.get(0).getUserId(), list.get(0).getCid()); + return CommonResult.success("推送消息成功"); } diff --git a/mall-common/src/main/java/com/suisung/mall/common/feignService/AccountService.java b/mall-common/src/main/java/com/suisung/mall/common/feignService/AccountService.java index 3811ba5f..5825ad45 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/feignService/AccountService.java +++ b/mall-common/src/main/java/com/suisung/mall/common/feignService/AccountService.java @@ -2,6 +2,7 @@ package com.suisung.mall.common.feignService; import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.modules.account.*; +import com.suisung.mall.common.modules.push.PushTemplate; import com.suisung.mall.common.pojo.output.TimelineOutput; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; @@ -218,4 +219,7 @@ public interface AccountService { @PostMapping("/admin/account/pushTocid") String pushTocid(@RequestParam(name = "message") String message,@RequestParam(name = "userId") String userId); + + @PostMapping("/admin/account/pushNotificationTocid") + String pushNotificationTocid(@RequestParam("userId") String userId,@RequestBody PushTemplate pushTemplate); } diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/push/PushTemplate.java b/mall-common/src/main/java/com/suisung/mall/common/modules/push/PushTemplate.java new file mode 100644 index 00000000..0e2a1069 --- /dev/null +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/push/PushTemplate.java @@ -0,0 +1,13 @@ +package com.suisung.mall.common.modules.push; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PushTemplate implements Serializable { + + private String title; + private String content; + private String json;//透传消息 +}