zoukankan      html  css  js  c++  java
  • 最新的极光推送服务器端代码(java服务器后台向手机端自定义推送消息)

    一共两个类 一个Jdpush  一个JpushClientUtil

    代码如下   注解都写的很清楚

    复制代码
    package com.sm.common.ajpush;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import cn.jiguang.common.resp.APIConnectionException;
    import cn.jiguang.common.resp.APIRequestException;
    import cn.jpush.api.JPushClient;
    import cn.jpush.api.push.PushResult;
    import cn.jpush.api.push.model.Message;
    import cn.jpush.api.push.model.Options;
    import cn.jpush.api.push.model.Platform;
    import cn.jpush.api.push.model.PushPayload;
    import cn.jpush.api.push.model.audience.Audience;
    import cn.jpush.api.push.model.audience.AudienceTarget;
    import cn.jpush.api.push.model.notification.AndroidNotification;
    import cn.jpush.api.push.model.notification.IosNotification;
    import cn.jpush.api.push.model.notification.Notification;
    
    public class Jdpush {  
        protected static final Logger LOG =  LoggerFactory.getLogger(Jdpush.class);  
     
        // demo App defined in resources/jpush-api.conf   
     
       public static final String TITLE = "申通快递";  
       public static final String ALERT = "祝大家新春快乐";  
       public static final String MSG_CONTENT = "申通快递祝新老客户新春快乐";  
       public static final String REGISTRATION_ID = "0900e8d85ef";  
       public static final String TAG = "tag_api";  
         
       public  static JPushClient jpushClient=null;  
         
       public static void testSendPush(String appKey ,String masterSecret) {  
             
             
             
            jpushClient = new JPushClient(masterSecret, appKey, 3);  
             
           // HttpProxy proxy = new HttpProxy("localhost", 3128);  
           // Can use this https proxy: https://github.com/Exa-Networks/exaproxy  
            
             
           // For push, all you need do is to build PushPayload object.  
           //PushPayload payload = buildPushObject_all_all_alert();  
            //生成推送的内容,这里我们先测试全部推送  
           PushPayload payload=buildPushObject_all_alias_alert();  
             
             
           try {  
               System.out.println(payload.toString());  
               PushResult result = jpushClient.sendPush(payload);  
               System.out.println(result+"................................");  
                 
               LOG.info("Got result - " + result);  
                 
           } catch (APIConnectionException e) {  
               LOG.error("Connection error. Should retry later. ", e);  
                 
           } catch (APIRequestException e) {  
               LOG.error("Error response from JPush server. Should review and fix it. ", e);  
               LOG.info("HTTP Status: " + e.getStatus());  
               LOG.info("Error Code: " + e.getErrorCode());  
               LOG.info("Error Message: " + e.getErrorMessage());  
               LOG.info("Msg ID: " + e.getMsgId());  
           }  
       }  
         
       public static PushPayload buildPushObject_all_all_alert() {  
           return PushPayload.alertAll(ALERT);  
       }  
         
       public static PushPayload buildPushObject_all_alias_alert() {  
           return PushPayload.newBuilder()  
                   .setPlatform(Platform.all())//设置接受的平台  
                   .setAudience(Audience.all())//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到  
                   .setNotification(Notification.alert(ALERT))  
                   .build();  
       }  
         
       public static PushPayload buildPushObject_android_tag_alertWithTitle() {  
           return PushPayload.newBuilder()  
                   .setPlatform(Platform.android())  
                   .setAudience(Audience.all())  
                   .setNotification(Notification.android(ALERT, TITLE, null))  
                   .build();  
       }  
         
       public static PushPayload buildPushObject_android_and_ios() {  
           return PushPayload.newBuilder()  
                   .setPlatform(Platform.android_ios())  
                   .setAudience(Audience.tag("tag1"))  
                   .setNotification(Notification.newBuilder()  
                           .setAlert("alert content")  
                           .addPlatformNotification(AndroidNotification.newBuilder()  
                                   .setTitle("Android Title").build())  
                           .addPlatformNotification(IosNotification.newBuilder()  
                                   .incrBadge(1)  
                                   .addExtra("extra_key", "extra_value").build())  
                           .build())  
                   .build();  
       }  
         
       public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {  
           return PushPayload.newBuilder()  
                   .setPlatform(Platform.ios())  
                   .setAudience(Audience.tag_and("tag1", "tag_all"))  
                   .setNotification(Notification.newBuilder()  
                           .addPlatformNotification(IosNotification.newBuilder()  
                                   .setAlert(ALERT)  
                                   .setBadge(5)  
                                   .setSound("happy")  
                                   .addExtra("from", "JPush")  
                                   .build())  
                           .build())  
                    .setMessage(Message.content(MSG_CONTENT))  
                    .setOptions(Options.newBuilder()  
                            .setApnsProduction(true)  
                            .build())  
                    .build();  
       }  
         
       public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {  
           return PushPayload.newBuilder()  
                   .setPlatform(Platform.android_ios())  
                   .setAudience(Audience.newBuilder()  
                           .addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))  
                           .addAudienceTarget(AudienceTarget.alias("alias1", "alias2"))  
                           .build())  
                   .setMessage(Message.newBuilder()  
                           .setMsgContent(MSG_CONTENT)  
                           .addExtra("from", "JPush")  
                           .build())  
                   .build();  
       }  
    }
    复制代码
    复制代码
    package com.sm.common.ajpush;
    import cn.jiguang.common.resp.APIConnectionException;
    import cn.jiguang.common.resp.APIRequestException;
    import cn.jpush.api.JPushClient;
    import cn.jpush.api.push.PushResult;
    import cn.jpush.api.push.model.Message;
    import cn.jpush.api.push.model.Options;
    import cn.jpush.api.push.model.Platform;
    import cn.jpush.api.push.model.PushPayload;
    import cn.jpush.api.push.model.audience.Audience;
    import cn.jpush.api.push.model.notification.*;
     
     
    public class JpushClientUtil {
     
        private final static String appKey = "你的appKey9c654aa03a5d70";
     
        private final static String masterSecret = "你的masterSecret41806d5fd29e3c5";
     
        private static JPushClient jPushClient = new JPushClient(masterSecret,appKey);
     
        /**
         * 推送给设备标识参数的用户
         * @param registrationId 设备标识
         * @param notification_title 通知内容标题
         * @param msg_title 消息内容标题
         * @param msg_content 消息内容
         * @param extrasparam 扩展字段
         * @return 0推送失败,1推送成功
         */
        public static int sendToRegistrationId( String registrationId,String notification_title, String msg_title, String msg_content, String extrasparam) {
            int result = 0;
            try {
                PushPayload pushPayload= JpushClientUtil.buildPushObject_all_registrationId_alertWithTitle(registrationId,notification_title,msg_title,msg_content,extrasparam);
                System.out.println(pushPayload);
                PushResult pushResult=jPushClient.sendPush(pushPayload);
                System.out.println(pushResult);
                if(pushResult.getResponseCode()==200){
                    result=1;
                }
            } catch (APIConnectionException e) {
                e.printStackTrace();
     
            } catch (APIRequestException e) {
                e.printStackTrace();
            }
     
             return result;
        }
     
        /**
         * 发送给所有安卓用户
         * @param notification_title 通知内容标题
         * @param msg_title 消息内容标题
         * @param msg_content 消息内容
         * @param extrasparam 扩展字段
         * @return 0推送失败,1推送成功
         */
        public static int sendToAllAndroid( String notification_title, String msg_title, String msg_content, String extrasparam) {
            int result = 0;
            try {
                PushPayload pushPayload= JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title,msg_title,msg_content,extrasparam);
                System.out.println(pushPayload);
                PushResult pushResult=jPushClient.sendPush(pushPayload);
                System.out.println(pushResult);
                if(pushResult.getResponseCode()==200){
                    result=1;
                }
            } catch (Exception e) {
     
                e.printStackTrace();
            }
     
             return result;
        }
     
        /**
         * 发送给所有IOS用户
         * @param notification_title 通知内容标题
         * @param msg_title 消息内容标题
         * @param msg_content 消息内容
         * @param extrasparam 扩展字段
         * @return 0推送失败,1推送成功
         */
        public static int sendToAllIos(String notification_title, String msg_title, String msg_content, String extrasparam) {
            int result = 0;
            try {
                PushPayload pushPayload= JpushClientUtil.buildPushObject_ios_all_alertWithTitle(notification_title,msg_title,msg_content,extrasparam);
                System.out.println(pushPayload);
                PushResult pushResult=jPushClient.sendPush(pushPayload);
                System.out.println(pushResult);
                if(pushResult.getResponseCode()==200){
                    result=1;
                }
            } catch (Exception e) {
     
                e.printStackTrace();
            }
     
             return result;
        }
     
        /**
         * 发送给所有用户
         * @param notification_title 通知内容标题
         * @param msg_title 消息内容标题
         * @param msg_content 消息内容
         * @param extrasparam 扩展字段
         * @return 0推送失败,1推送成功
         */
        public static int sendToAll( String notification_title, String msg_title, String msg_content, String extrasparam) {
            int result = 0;
            try {
                PushPayload pushPayload= JpushClientUtil.buildPushObject_android_and_ios(notification_title,msg_title,msg_content,extrasparam);
                System.out.println(pushPayload);
                PushResult pushResult=jPushClient.sendPush(pushPayload);
                System.out.println(pushResult);
                if(pushResult.getResponseCode()==200){
                    result=1;
                }
            } catch (Exception e) {
     
                e.printStackTrace();
            }
     
            return result;
        }
     
     
     
        public static PushPayload buildPushObject_android_and_ios(String notification_title, String msg_title, String msg_content, String extrasparam) {
            return PushPayload.newBuilder()
                    .setPlatform(Platform.android_ios())
                    .setAudience(Audience.all())
                    .setNotification(Notification.newBuilder()
                            .setAlert(notification_title)
                            .addPlatformNotification(AndroidNotification.newBuilder()
                                    .setAlert(notification_title)
                                    .setTitle(notification_title)
                                    //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
                                    .addExtra("androidNotification extras key",extrasparam)
                                    .build()
                            )
                            .addPlatformNotification(IosNotification.newBuilder()
                                    //传一个IosAlert对象,指定apns title、title、subtitle等
                                    .setAlert(notification_title)
                                    //直接传alert
                                    //此项是指定此推送的badge自动加1
                                    .incrBadge(1)
                                    //此字段的值default表示系统默认声音;传sound.caf表示此推送以项目里面打包的sound.caf声音来提醒,
                                    // 如果系统没有此音频则以系统默认声音提醒;此字段如果传空字符串,iOS9及以上的系统是无声音提醒,以下的系统是默认声音
                                    .setSound("sound.caf")
                                    //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
                                    .addExtra("iosNotification extras key",extrasparam)
                                    //此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
                                    // .setContentAvailable(true)
     
                                    .build()
                            )
                            .build()
                    )
                    //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
                    // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
                    // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
                    .setMessage(Message.newBuilder()
                            .setMsgContent(msg_content)
                            .setTitle(msg_title)
                            .addExtra("message extras key",extrasparam)
                            .build())
     
                    .setOptions(Options.newBuilder()
                            //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
                            .setApnsProduction(false)
                            //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
                            .setSendno(1)
                            //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
                            .setTimeToLive(86400)
                            .build()
                    )
                    .build();
        }
     
        private static PushPayload buildPushObject_all_registrationId_alertWithTitle(String registrationId,String notification_title, String msg_title, String msg_content, String extrasparam) {
     
            System.out.println("----------buildPushObject_all_all_alert");
            //创建一个IosAlert对象,可指定APNs的alert、title等字段
            //IosAlert iosAlert =  IosAlert.newBuilder().setTitleAndBody("title", "alert body").build();
     
            return PushPayload.newBuilder()
                    //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
                    .setPlatform(Platform.all())
                    //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
                    .setAudience(Audience.registrationId(registrationId))
                    //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
                    .setNotification(Notification.newBuilder()
                            //指定当前推送的android通知
                            .addPlatformNotification(AndroidNotification.newBuilder()
     
                                    .setAlert(notification_title)
                                    .setTitle(notification_title)
                                    //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
                                    .addExtra("androidNotification extras key",extrasparam)
     
                                    .build())
                            //指定当前推送的iOS通知
                            .addPlatformNotification(IosNotification.newBuilder()
                                    //传一个IosAlert对象,指定apns title、title、subtitle等
                                    .setAlert(notification_title)
                                    //直接传alert
                                    //此项是指定此推送的badge自动加1
                                    .incrBadge(1)
                                    //此字段的值default表示系统默认声音;传sound.caf表示此推送以项目里面打包的sound.caf声音来提醒,
                                    // 如果系统没有此音频则以系统默认声音提醒;此字段如果传空字符串,iOS9及以上的系统是无声音提醒,以下的系统是默认声音
                                    .setSound("sound.caf")
                                    //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
                                    .addExtra("iosNotification extras key",extrasparam)
                                    //此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
                                    //取消此注释,消息推送时ios将无法在锁屏情况接收
                                    // .setContentAvailable(true)
     
                                    .build())
     
     
                            .build())
                    //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
                    // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
                    // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
                    .setMessage(Message.newBuilder()
     
                            .setMsgContent(msg_content)
     
                            .setTitle(msg_title)
     
                            .addExtra("message extras key",extrasparam)
     
                            .build())
     
                    .setOptions(Options.newBuilder()
                            //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
                            .setApnsProduction(false)
                            //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
                            .setSendno(1)
                            //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天;
                            .setTimeToLive(86400)
     
                            .build())
     
                    .build();
     
        }
     
        private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam) {
            System.out.println("----------buildPushObject_android_registrationId_alertWithTitle");
            return PushPayload.newBuilder()
                    //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
                    .setPlatform(Platform.android())
                    //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
                    .setAudience(Audience.all())
                    //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
                    .setNotification(Notification.newBuilder()
                            //指定当前推送的android通知
                            .addPlatformNotification(AndroidNotification.newBuilder()
                                    .setAlert(notification_title)
                                    .setTitle(notification_title)
                                    //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
                                    .addExtra("androidNotification extras key",extrasparam)
                                    .build())
                            .build()
                    )
                    //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
                    // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
                    // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
                    .setMessage(Message.newBuilder()
                            .setMsgContent(msg_content)
                            .setTitle(msg_title)
                            .addExtra("message extras key",extrasparam)
                            .build())
     
                    .setOptions(Options.newBuilder()
                            //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
                            .setApnsProduction(false)
                            //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
                            .setSendno(1)
                            //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
                            .setTimeToLive(86400)
                            .build())
                    .build();
        }
     
        private static PushPayload buildPushObject_ios_all_alertWithTitle( String notification_title, String msg_title, String msg_content, String extrasparam) {
            System.out.println("----------buildPushObject_ios_registrationId_alertWithTitle");
            return PushPayload.newBuilder()
                    //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
                    .setPlatform(Platform.ios())
                    //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
                    .setAudience(Audience.all())
                    //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
                    .setNotification(Notification.newBuilder()
                            //指定当前推送的android通知
                            .addPlatformNotification(IosNotification.newBuilder()
                                    //传一个IosAlert对象,指定apns title、title、subtitle等
                                    .setAlert(notification_title)
                                    //直接传alert
                                    //此项是指定此推送的badge自动加1
                                    .incrBadge(1)
                                    //此字段的值default表示系统默认声音;传sound.caf表示此推送以项目里面打包的sound.caf声音来提醒,
                                    // 如果系统没有此音频则以系统默认声音提醒;此字段如果传空字符串,iOS9及以上的系统是无声音提醒,以下的系统是默认声音
                                    .setSound("sound.caf")
                                    //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
                                    .addExtra("iosNotification extras key",extrasparam)
                                    //此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
                                   // .setContentAvailable(true)
     
                                    .build())
                            .build()
                    )
                    //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
                    // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
                    // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
                    .setMessage(Message.newBuilder()
                            .setMsgContent(msg_content)
                            .setTitle(msg_title)
                            .addExtra("message extras key",extrasparam)
                            .build())
     
                    .setOptions(Options.newBuilder()
                            //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
                            .setApnsProduction(false)
                            //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
                            .setSendno(1)
                            //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
                            .setTimeToLive(86400)
                            .build())
                    .build();
        }
     
    //    public static void main(String[] args){
    //        if(JpushClientUtil.sendToAllIos("testIos","testIos","this is a ios Dev test","")==1){
    //            System.out.println("success");
    //        }
    //    }
    }
     
    复制代码

    在Controller调用代码:

    复制代码
    /**
     * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/smkj">smkj</a> All rights reserved.
     */
    package com.sm.modules.sys.web;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.apache.shiro.authz.annotation.RequiresPermissions;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.servlet.mvc.support.RedirectAttributes;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.sm.common.ajpush.Jdpush;
    import com.sm.common.ajpush.JpushClientUtil;
    import com.sm.common.config.Global;
    import com.sm.common.persistence.Page;
    import com.sm.common.persistence.Result;
    import com.sm.common.web.BaseController;
    import com.sm.common.utils.StringUtils;
    import com.sm.modules.sys.entity.SysSendMessage;
    import com.sm.modules.sys.service.SysSendMessageService;
    
    
    /**
     * 发送消息模块Controller
     * @author 冯文哲
     * @version 2017-06-01
     */
    @Controller
    @RequestMapping(value = "${adminPath}/sys/sysSendMessage")
    public class SysSendMessageController extends BaseController {
        private static final String appKey ="你的appKey654aa03a5d70";  
        private static final String masterSecret = "你的masterSecret41806d5fd29e3c5";
        @Autowired
        private SysSendMessageService sysSendMessageService;
        
        @ModelAttribute
        public SysSendMessage get(@RequestParam(required=false) String id) {
            SysSendMessage entity = null;
            if (StringUtils.isNotBlank(id)){
                entity = sysSendMessageService.get(id);
            }
            if (entity == null){
                entity = new SysSendMessage();
            }
            return entity;
        }
        
        @RequiresPermissions("sys:sysSendMessage:view")
        @RequestMapping(value = {"list", ""})
        public String list(SysSendMessage sysSendMessage, HttpServletRequest request, HttpServletResponse response, Model model) {
            Page<SysSendMessage> page = sysSendMessageService.findPage(new Page<SysSendMessage>(request, response), sysSendMessage); 
            model.addAttribute("page", page);
            return "modules/sys/sysSendMessageList";
        }
        
        @ResponseBody
        @RequestMapping(value ="interface/api_list")
        public String listt(SysSendMessage sysSendMessage, HttpServletRequest request, HttpServletResponse response, Model model) throws JsonProcessingException {
            Page<SysSendMessage> page = sysSendMessageService.findPage(new Page<SysSendMessage>(request, response), sysSendMessage); 
            model.addAttribute("page", page);
            Result r = new Result();
            r.setCode("1");
            r.setData(page);
            r.setMessage("这是所有的消息");
            ObjectMapper objectMapper = new ObjectMapper();
            String text = objectMapper.writeValueAsString(r);
            return text;
        }
        
    
        @RequiresPermissions("sys:sysSendMessage:view")
        @RequestMapping(value = "form")
        public String form(SysSendMessage sysSendMessage, Model model) {
            model.addAttribute("sysSendMessage", sysSendMessage);
            return "modules/sys/sysSendMessageForm";
        }
    
        @RequiresPermissions("sys:sysSendMessage:edit")
        @RequestMapping(value = "save")
        public String save(SysSendMessage sysSendMessage, Model model, RedirectAttributes redirectAttributes) {
            String str = sysSendMessage.getMessage();
             Jdpush.testSendPush(appKey,masterSecret);
             JpushClientUtil.sendToAllAndroid("群发消息", "尊敬的用户", str, "goodbye!");
            if (!beanValidator(model, sysSendMessage)){
                return form(sysSendMessage, model);
            }
            sysSendMessageService.save(sysSendMessage);
            addMessage(redirectAttributes, "发送消息成功");
            return "redirect:"+Global.getAdminPath()+"/sys/sysSendMessage/?repage";
        }
        
        
        @RequiresPermissions("sys:sysSendMessage:edit")
        @RequestMapping(value = "delete")
        public String delete(SysSendMessage sysSendMessage, RedirectAttributes redirectAttributes) {
            sysSendMessageService.delete(sysSendMessage);
            addMessage(redirectAttributes, "删除消息成功");
            return "redirect:"+Global.getAdminPath()+"/sys/sysSendMessage/?repage";
        }
        
        @ResponseBody
        @RequestMapping(value = "interface/api_delete",method=RequestMethod.POST)    
        public String delete(SysSendMessage sysSendMessage) throws JsonProcessingException {
            sysSendMessageService.delete(sysSendMessage);
            Result r = new Result();
            r.setCode("1");
            r.setMessage("删除消息成功");
            ObjectMapper objectMapper = new ObjectMapper();
            String text = objectMapper.writeValueAsString(r);
            return text;
        }
    
    
    }
    复制代码

    这是我的项目中一个整类

    具体的发送消息的Controller是

    复制代码
        @RequiresPermissions("sys:sysSendMessage:edit")
        @RequestMapping(value = "save")
        public String save(SysSendMessage sysSendMessage, Model model, RedirectAttributes redirectAttributes) {
            String str = sysSendMessage.getMessage();
             Jdpush.testSendPush(appKey,masterSecret);
             JpushClientUtil.sendToAllAndroid("群发消息", "尊敬的用户", str, "goodbye!");
            if (!beanValidator(model, sysSendMessage)){
                return form(sysSendMessage, model);
            }
            sysSendMessageService.save(sysSendMessage);
            addMessage(redirectAttributes, "发送消息成功");
            return "redirect:"+Global.getAdminPath()+"/sys/sysSendMessage/?repage";
        }
  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/yueguanguanyun/p/8485383.html
Copyright © 2011-2022 走看看