lizhen_gitee 1 år sedan
förälder
incheckning
3617db8706

+ 15 - 4
application/admin/controller/Messagesys.php

@@ -3,7 +3,8 @@
 namespace app\admin\controller;
 
 use app\common\controller\Backend;
-
+use app\common\library\Easemob;
+use think\Db;
 /**
  * 系统公告
  *
@@ -31,10 +32,20 @@ class Messagesys extends Backend
     }
 
     /**
-     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
-     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
-     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     * 推送
      */
+    public function huanxinpush(){
+
+        $id = input('id',0);
+        $info = Db::name('message_sys')->where('id',$id)->find();
+        //全量推送
+        $easemob = new Easemob();
+        $easemob->push_all($info['title'],$info['info']);
+
+        $this->success('推送完成');
+    }
+
+
     
 
 }

+ 1 - 0
application/admin/view/messagesys/index.html

@@ -25,6 +25,7 @@
                     <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
                            data-operate-edit="{:$auth->check('messagesys/edit')}" 
                            data-operate-del="{:$auth->check('messagesys/del')}" 
+                           data-operate-huanxinpush="{:$auth->check('messagesys/huanxinpush')}"
                            width="100%">
                     </table>
                 </div>

+ 6 - 1
application/api/controller/Demo.php

@@ -43,7 +43,12 @@ class Demo extends Api
     {
 
         $easemob = new Easemob();
-        $easemob->push_text(1009,'标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题','内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容');
+
+        //推送给某一个人
+        //$easemob->push_text(1009,'测试标题','测试内容');
+
+        //全量推送
+        //$easemob->push_all('全量标题','全量内容');
 
         //header
         //Authorization:Bearer ${YourAppToken}

+ 49 - 7
application/common/library/Easemob.php

@@ -29,22 +29,25 @@ class Easemob {
             'title'=> $title,
 //            'subTitle'=> '',
             'content'=> $msg,
-            /*'ext'=> [],
-            'config'=> [
+//            'ext'=> [],
+
+           /* 'config'=> [
                 'clickAction'=> [
                     'url'=>'',
                     'action'=>'',
                     'activity'=>'',
                 ],
                 'badge'=> [
-                    'addNum'=> 0,
+                    'addNum'=> 1,
                     'setNum'=> 0,
                 ],
-            ],
+            ],*/
 
-            'easemob'=>[],
-            'apns'=> [],
-            'fcm'=> [],
+            ///'easemob'=>[],
+            /*'apns'=> [
+                'badge'=> 1,
+            ],*/
+            /*'fcm'=> [],
             'fcmV1'=>[],
             'huawei'=> [],
             'meizu'=> [],
@@ -57,6 +60,45 @@ class Easemob {
         $rs = $message->push_sync($uid,$pushMessage);
         //dump($rs);
     }
+    public function push_all($title,$msg){
+        $message = new Push($this->auth);
+
+        $pushMessage =
+        [
+            'title'=> $title,
+//            'subTitle'=> '',
+            'content'=> $msg,
+//            'ext'=> [],
+
+           /* 'config'=> [
+                'clickAction'=> [
+                    'url'=>'',
+                    'action'=>'',
+                    'activity'=>'',
+                ],
+                'badge'=> [
+                    'addNum'=> 1,
+                    'setNum'=> 0,
+                ],
+            ],*/
+
+            ///'easemob'=>[],
+            /*'apns'=> [
+                'badge'=> 1,
+            ],*/
+            /*'fcm'=> [],
+            'fcmV1'=>[],
+            'huawei'=> [],
+            'meizu'=> [],
+            'oppo'=> [],
+            'vivo'=> [],
+            'xiaomi'=> [],
+            'honor'=>[]*/
+        ];
+
+        $rs = $message->push_task($pushMessage);
+        //dump($rs);
+    }
 
 
 

+ 19 - 1
public/assets/js/backend/messagesys.js

@@ -28,7 +28,22 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'id', title: __('Id')},
                         {field: 'title', title: __('Title'), operate: 'LIKE'},
                         {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
-                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
+                        {field: 'operate', title: __('Operate'), table: table,
+                            buttons:[
+                                {
+                                    name:'huanxinpush',
+                                    text:'推送',
+                                    title:'推送',
+                                    icon:'fa fa-exclamation-circle',
+                                    classname:'btn btn-xs btn-info btn-ajax',
+                                    url:'messagesys/huanxinpush/id/{ids}?dialog=1',
+                                    target:'_self',
+                                    /*hidden:function(row){
+                                        return row.status==0 ? false : true;
+                                    }*/
+                                }
+                            ],
+                            events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                     ]
                 ]
             });
@@ -42,6 +57,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         edit: function () {
             Controller.api.bindevent();
         },
+        huanxinpush: function () {
+            Controller.api.bindevent();
+        },
         api: {
             bindevent: function () {
                 Form.api.bindevent($("form[role=form]"));

+ 23 - 0
vendor/maniac/easemob-php/src/Push.php

@@ -48,6 +48,29 @@ final class Push
         //return $data['data']['successKeys'];
     }
 
+    //创建全量推送任务
+    //https://docs-im-beta.easemob.com/push/push_send_notification.html
+    public function push_task($pushMessage)
+    {
+
+        $uri = $this->auth->getBaseUri() . '/push/task';
+
+        $strategy = 0;
+        $body = compact('strategy','pushMessage');
+
+        $header = $this->auth->headers();
+        $header['Content-Type'] =  'application/json';
+
+        $resp = Http::post($uri, $body, $header);
+
+        if (!$resp->ok()) {
+            return \Easemob\error($resp);
+        }
+        $data = $resp->data();
+        return $data['data'];
+        //return $data['data']['successKeys'];
+    }
+
     /**
      * \~chinese
      * \brief