You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
3.7 KiB
PHTML

3 years ago
<?php
namespace app\user\admin;
use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\user\model\Message as MessageModel;
use app\user\model\User as UserModel;
use app\user\model\Role as RoleModel;
/**
* 消息控制器
* @package app\user\admin
*/
class Message extends Admin
{
/**
* 消息列表
* @author 蔡伟明 <314013107@qq.com>
* @return mixed
* @throws \think\Exception
* @throws \think\exception\DbException
*/
public function index()
{
$data_list = MessageModel::where($this->getMap())
->order($this->getOrder('id DESC'))
->paginate();
return ZBuilder::make('table')
->setTableName('admin_message')
->addTopButton('add')
->addTopButton('delete')
->addRightButton('edit')
->addRightButton('delete')
->addColumns([
['id', 'ID'],
['uid_receive', '接收者', 'callback', 'get_nickname'],
['uid_send', '发送者', 'callback', 'get_nickname'],
['type', '分类'],
['content', '内容'],
['status', '状态', 'status', '', ['未读', '已读']],
['create_time', '发送时间', 'datetime'],
['read_time', '阅读时间', 'datetime'],
['right_button', '操作', 'btn'],
])
->addFilter('type')
->addFilter('status', ['未读', '已读'])
->setRowList($data_list)
->fetch();
}
/**
* 新增
* @author 蔡伟明 <314013107@qq.com>
* @return mixed
* @throws \think\Exception
*/
public function add()
{
if ($this->request->isPost()) {
$data = $this->request->post();
$data['type'] == '' && $this->error('请填写消息分类');
$data['content'] == '' && $this->error('请填写消息内容');
$list = [];
if ($data['send_type'] == 'uid') {
!isset($data['uid']) && $this->error('请选择接收消息的用户');
} else {
!isset($data['role']) && $this->error('请选择接收消息的角色');
$data['uid'] = UserModel::where('status', 1)
->where('role', 'in', $data['role'])
->column('id');
!$data['uid'] && $this->error('所选角色无可发送的用户');
}
foreach ($data['uid'] as $uid) {
$list[] = [
'uid_receive' => $uid,
'uid_send' => UID,
'type' => $data['type'],
'content' => $data['content'],
];
}
$MessageModel = new MessageModel;
if (false !== $MessageModel->saveAll($list)) {
$this->success('新增成功', 'index');
} else {
$this->error('新增失败');
}
}
return ZBuilder::make('form')
->addFormItems([
['text', 'type', '消息分类'],
['textarea', 'content', '消息内容'],
['radio', 'send_type', '发送方式', '', ['uid' => '按指定用户', 'role' => '按指定角色'], 'uid'],
['select', 'uid', '接收用户', '接收消息的用户', UserModel::where('status', 1)->column('id,nickname'), '', 'multiple'],
['select', 'role', '接收角色', '接收消息的角色', RoleModel::where('status', 1)->column('id,name'), '', 'multiple'],
])
->setTrigger('send_type', 'uid', 'uid')
->setTrigger('send_type', 'role', 'role')
->fetch();
}
}