Message.php 3.6 KB
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/12/30
 * Time: 17:17
 */

namespace app\api\controller;


use app\common\controller\Api;
use think\Db;

/**
 * 平台消息模块
 */
class Message extends Api
{
    /**
     * @ApiTitle    (平台消息列表)
     * @ApiSummary  (平台消息列表)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/message/index)
     *
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     *
     * @ApiReturn({
        "code": 1,
        "msg": "SUCCESS",
        "time": "1553839125",
        "data": {
            'title'://标题,
            'user_id'://用户ID
            'is_read': //是否已读(0未读1已读),
            'content'://内容,
            'type'://类型(1普通2活动3奖品)
            'num'://未读消息数量
            'total'://通知数量
            'createtime'://创建时间
        }
        })
     */
    public function index()
    {
        $user_id = $this->getUserId();
        $data['list'] = Db::name('message')
            ->where('user_id',$user_id)
            ->whereOr('user_id','null')
            ->order('is_read desc,createtime desc')
            ->select();
        $data['num'] = Db::name('message')
            ->where('is_read',0)
            ->where(function ($query)use($user_id){
                $query->where('user_id',$user_id)
                    ->whereOr('user_id','null');
            })
            ->order('is_read desc,createtime desc')
            ->count();
        $data['total'] = Db::name('message')
            ->where('user_id',$user_id)
            ->whereOr('user_id','null')
            ->order('is_read desc,createtime desc')
            ->count();
        $this->success('success',$data);
    }

    /**
     * @ApiTitle    (平台消息详情)
     * @ApiSummary  (平台消息详情)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/message/detail)
     *
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="int", required=false, description="平台消息ID")
     *
     * @ApiReturn({
        "code": 1,
        "msg": "SUCCESS",
        "time": "1553839125",
        "data": {
            'title'://标题,
            'user_id'://用户ID
            'is_read': //是否已读(0未读1已读),
            'content'://内容,
            'type'://类型(1普通2活动3奖品)
            'createtime'://创建时间
        }
    })
     */
    public function detail()
    {
        $user_id = $this->getUserId();
        $id = $this->request->param('id');
        if(empty($id)){
            $this->error('缺少必要参数');
        }

        //判断该消息是否为平台通知
        $info = Db::name('message')->where('id',$id)->find();
        if($info['user_id'] == ''){
            //是
            $read['user_id'] = $user_id;
            $read['message_id'] = $id;
            $read['createtime'] = time();
            Db::name('read')->insertGetId($read);
            $data = Db::name('message')
                ->where('id',$id)
                ->find();
            Db::name('message')->where('id',$id)->update(['is_read'=>1]);
            $data['createtime'] = date('Y-m-d H:i:s',$data['createtime']);
        }else{
            //不是
            $data = Db::name('message')
                ->where('id',$id)
                ->find();
            Db::name('message')->where('id',$id)->update(['is_read'=>1]);
            $data['createtime'] = date('Y-m-d H:i:s',$data['createtime']);
        }
        $this->success('success',$data);
    }
}