Merge remote-tracking branch 'origin/main'

This commit is contained in:
Jack 2025-05-28 20:36:03 +08:00
commit 03b34a858f
5 changed files with 117 additions and 13 deletions

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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<UserDeviceBind> 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<Map<String, Map<String, String>>> 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<UserDeviceBind> 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<Audience> 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<Map<String, Map<String, String>>> 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("推送消息成功");
}

View File

@ -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);
}

View File

@ -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;//透传消息
}