HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/crm.jmfdbn.com/application/message/controller/Index.php
<?php
// +----------------------------------------------------------------------
// | Yzncms [ 御宅男工作室 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2018 http://yzncms.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 御宅男 <530765310@qq.com>
// +----------------------------------------------------------------------

// +----------------------------------------------------------------------
// | 短信息后台管理
// +----------------------------------------------------------------------
namespace app\message\controller;

use app\member\controller\MemberBase;
use app\member\model\Member as Member_Model;
use app\message\model\Message as Message_Model;
use app\message\model\MessageData as MessageData_Model;
use app\message\model\MessageGroup as MessageGroup_Model;
use think\facade\Config;

class Index extends MemberBase
{
    //初始化
    protected function initialize()
    {
        parent::initialize();
        $this->groupCache = cache("Member_Group"); //会员模型
    }

    //发送消息
    public function send()
    {
        if ($this->request->isPost()) {
            //判断当前会员,是否可发,短消息.
            $this->messagecheck($this->userid);
            $data = $this->request->post('info/a');
            //验证码
            if (!captcha_check($this->request->post('verify/s', ''))) {
                $this->error('验证码输入错误!');
                return false;
            }
            $data['send_from'] = $this->userinfo['username'];
            $result = $this->validate($data, 'message');
            if (true !== $result) {
                return $this->error($result);
            }
            if ($data['send_to'] == $this->userinfo['username']) {
                return $this->error('不能发给自己');
            }
            if (!Member_Model::getByUsername($data['send_to'])) {
                return $this->error('用户不存在');
            }
            if (Message_Model::create($data)) {
                $this->success('发送成功!', url('outbox'));
            } else {
                $this->error('发送失败!');
            }
        } else {
            return $this->fetch('/send');
        }
    }

    //查看短消息
    public function read()
    {
        $messageid = $this->request->param('id/d', 0);
        empty($messageid) && $this->error('参数不能为空!');
        $info = Message_Model::where([
            'id' => $messageid,
            'send_to' => $this->userinfo['username'],
        ])->findOrEmpty();

        empty($info) && $this->error('你查看的信息不存在!');
        if (0 == $info['status']) {
            $info->status = 1;
            $info->save();
        }
        $this->assign("info", $info);
        return $this->fetch('/read');

    }

    //查看自己发的短消息
    public function read_only()
    {
        $messageid = $this->request->param('id/d', 0);
        empty($messageid) && $this->error('参数不能为空!');
        $info = Message_Model::where([
            'id' => $messageid,
            'send_from' => $this->userinfo['username'],
        ])->find();
        empty($info) && $this->error('你查看的信息不存在!');
        $this->assign("info", $info);
        return $this->fetch('/read');

    }

    //系统消息列表
    public function group()
    {
        if ($this->request->isAjax()) {
            $limit = $this->request->param('limit/d', 10);
            $page = $this->request->param('page/d', 1);
            $_list = MessageGroup_Model::where('groupid', $this->userinfo['groupid'])->page($page, $limit)->select();
            $total = MessageGroup_Model::where('groupid', $this->userinfo['groupid'])->count();

            //未读已读判断
            foreach ($_list as $key => $val) {
                $d = MessageData_Model::where(array('userid' => $this->userid, 'group_message_id' => $val['id']))->find();
                if (!$d) {
                    $_list[$key]['isread'] = 0;
                } else {
                    $_list[$key]['isread'] = 1;
                }
            }
            $result = array("code" => 0, "count" => $total, "data" => $_list);
            return json($result);
        }
        return $this->fetch('/group');
    }

    //查看系统消息
    public function read_group()
    {
        $groupid = $this->request->param('id/d', 0);
        empty($groupid) && $this->error('参数不能为空!');
        $info = MessageGroup_Model::get($groupid);
        if (!$info) {
            $this->error('系统消息不存在!');
        }
        //检查查看表是否有记录,无则向message_data 插入浏览记录
        $check = MessageData_Model::where(['userid' => $this->userid, 'group_message_id' => $groupid])->find();
        if (!$check) {
            MessageData_Model::create([
                'userid' => $this->userid,
                'group_message_id' => $groupid,
            ]);
        }
        $this->assign("info", $info);
        return $this->fetch('/read');
    }

    //收件箱列表
    public function inbox()
    {
        if ($this->request->isAjax()) {
            $limit = $this->request->param('limit/d', 10);
            $page = $this->request->param('page/d', 1);
            $_list = Message_Model::where('send_to', $this->userinfo['username'])->page($page, $limit)->order('id DESC')->select();
            $total = Message_Model::where('send_to', $this->userinfo['username'])->count();
            $result = array("code" => 0, "count" => $total, "data" => $_list);
            return json($result);
        }
        return $this->fetch('/inbox');
    }

    //发件箱列表
    public function outbox()
    {
        if ($this->request->isAjax()) {
            $limit = $this->request->param('limit/d', 10);
            $page = $this->request->param('page/d', 1);
            $_list = Message_Model::where('send_from', $this->userinfo['username'])->page($page, $limit)->order('id DESC')->select();
            $total = Message_Model::where('send_from', $this->userinfo['username'])->count();
            $result = array("code" => 0, "count" => $total, "data" => $_list);
            return json($result);
        }
        return $this->fetch('/outbox');
    }

    /**
     *
     * 检查当前用户短消息相关权限
     * @param  $userid 用户ID
     */
    public function messagecheck($userid)
    {
        if ($this->groupCache[$this->userinfo['groupid']]['allowsendmessage'] == 0) {
            $this->error("对不起你没有权限发短消息!");
        } else {
            //判断是否到限定条数
            $num = Message_Model::where('send_from', $this->userinfo['username'])->count();
            if ($num >= $this->groupCache[$this->userinfo['groupid']]['allowmessage']) {
                $this->error('你的短消息条数已达最大值!');
            }
        }
    }

}