Browse Source

系统消息已读

lizhen_gitee 1 year ago
parent
commit
25188b5fdb
1 changed files with 70 additions and 1 deletions
  1. 70 1
      application/api/controller/Message.php

+ 70 - 1
application/api/controller/Message.php

@@ -20,18 +20,58 @@ class Message extends Api
             'msgsys_first'   => Db::name('message_sys')->order('id desc')->find(),
         ];
 
+        //系统消息未读数量
+        $all_num = Db::name('message_sys')->count();
+        $read_num = Db::name('user_messagesys')->where('user_id',$this->auth->id)->count();
+        $rs['msgsys_unread_num'] = abs($all_num - $read_num);
+
         $this->success(1,$rs);
     }
 
     //个人消息全部改为已读
     public function message_read(){
+        Db::startTrans();
         //读取即为已读
         $map = [
             'user_id'  => $this->auth->id,
             'status'   => 0,
             'infotype' => ['neq','newfriend']
         ];
-        Db::name('message')->where($map)->update(['status'=>1]);
+        $rs = Db::name('message')->where($map)->update(['status'=>1]);
+        if($rs === false){
+            Db::rollback();
+            $this->error('操作失败');
+        }
+
+
+        //系统消息
+        //全部未读
+        $rs = Db::name('user_messagesys')->where('user_id',$this->auth->id)->delete();
+        if($rs === false){
+            Db::rollback();
+            $this->error('操作失败');
+        }
+
+        //循环全部已读
+        $list = Db::name('message_sys')->column('id');
+        if(!empty($list)){
+            $newall = [];
+            foreach($list as $key => $msg_id){
+                $newall[] = [
+                    'user_id' => $this->auth->id,
+                    'msg_id' => $msg_id,
+                ];
+            }
+            if(!empty($newall)){
+                $rs = Db::name('user_messagesys')->insertAll($newall);
+                if($rs === false){
+                    Db::rollback();
+                    $this->error('操作失败');
+                }
+            }
+        }
+
+        Db::commit();
         $this->success();
     }
 
@@ -56,6 +96,35 @@ class Message extends Api
 
         $list = Db::name('message_sys')->autopage()->order('id desc')->select();
 
+        Db::startTrans();
+        //系统消息
+        //全部未读
+        $rs = Db::name('user_messagesys')->where('user_id',$this->auth->id)->delete();
+        if($rs === false){
+            Db::rollback();
+            $this->error('操作失败');
+        }
+
+        //循环全部已读
+        $list = Db::name('message_sys')->column('id');
+        if(!empty($list)){
+            $newall = [];
+            foreach($list as $key => $msg_id){
+                $newall[] = [
+                    'user_id' => $this->auth->id,
+                    'msg_id' => $msg_id,
+                ];
+            }
+            if(!empty($newall)){
+                $rs = Db::name('user_messagesys')->insertAll($newall);
+                if($rs === false){
+                    Db::rollback();
+                    $this->error('操作失败');
+                }
+            }
+        }
+
+        Db::commit();
         $this->success("获取成功!",$list);
     }