MailController.php 2.2 KB
<?php

namespace App\Http\Controllers\Bside\Mail;

use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Mail\MailLogic;
use App\Models\Mail\Mail as MailModel;
use App\Models\Mail\MailUser as MailUserModel;

class MailController extends BaseController
{
    const STATUS_ZERO = 0; //状态为未读状态
    const STATUS_ONE = 1; //状态为已读状态
    /**
     * @name :当前用户站内信列表
     * @author :liyuhang
     * @method
     */
    public function lists(){
        $mailModel = new MailModel();
        //获取当前用户下的所有站内信
        $this->map['user_list'] = ['like','%,'.$this->uid.',%'];
        $this->map['user_list'] = ['or',null];
        $lists = $mailModel->lists($this->map,$this->page,$this->row);
        if(!empty($lists['list'])){
            $mailUserModel = new MailUserModel();
            foreach ($lists['list'] as $k => $v){
                //获取用户已读还是未读
                $info = $mailUserModel->read(['mail_id'=>$v['id'],'user_id'=>$this->uid]);
                if($info !== false){
                    $v['read_status'] = $this::STATUS_ONE;//
                }else{
                    $v['read_status'] = $this::STATUS_ZERO;
                }
                $lists['list'][$k] = $v;
            }
            //站内信未读数量
            $lists['unreadNum'] = $this->unreadNum($mailUserModel,$lists['total']);
        }
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @name   :(未读数量)readNum
     * @author :lyh
     * @method :post
     * @time   :2023/6/17 13:58
     */
    public function unreadNum(&$mailUserModel,$total){
        //已读数量
        $count = $mailUserModel->where(['user_id'=>$this->uid])->count();
        $num = $total - $count;
        return $num;
    }

    /**
     * @name :获取站内信详情
     * @author :liyuhang
     * @method
     */
    public function info(MailLogic $mailLogic){
        $this->request->validate([
            'id'=>['required']
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $info = $mailLogic->mail_info();
        $this->response('success',Code::SUCCESS,$info);
    }

}