You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.5 KiB
122 lines
4.5 KiB
<?php
|
|
|
|
namespace app\enterprise\controller;
|
|
|
|
use app\BaseController;
|
|
|
|
use app\enterprise\model\{File, MessageView, User, Message};
|
|
use think\facade\View;
|
|
class Files extends BaseController
|
|
{
|
|
// 文件列表
|
|
public function index()
|
|
{
|
|
$param = $this->request->param();
|
|
$is_all = $param['is_all'] ?? 0;
|
|
$map = [];
|
|
$data=[];
|
|
// 如果是查询全部,就查询file表,否则查询message表
|
|
if ($is_all) {
|
|
if ($param['cate'] ?? 0) {
|
|
$map[] = ['cate', '=', $param['cate']];
|
|
}
|
|
$model = new File();
|
|
if ($param['keywords'] ?? '') {
|
|
$model = $model->where('name', 'like', '%' . $param['keywords'] . '%');
|
|
}
|
|
$list = $this->paginate($model->where($map)->order('file_id desc'));
|
|
|
|
if ($list) {
|
|
$data = $list->toArray()['data'];
|
|
$userList = User::matchUser($data, true, 'user_id', 120);
|
|
foreach ($data as $k => $v) {
|
|
$url=getFileUrl($v['src']);
|
|
$data[$k]['src'] =$url;
|
|
$data[$k]['preview'] = previewUrl($url);
|
|
$data[$k]['extUrl'] = getExtUrl($v['src']);
|
|
$data[$k]['name'] = $v['name'].'.'.$v['ext'];
|
|
$data[$k]['msg_type'] = getFileType($v['ext'],true);
|
|
$data[$k]['user_id_info'] = $userList[$v['user_id']] ?? [];
|
|
$data[$k]['download'] = getMainHost().'/filedown/'.encryptIds($v['file_id']);
|
|
}
|
|
|
|
}
|
|
} else {
|
|
$map = [
|
|
['file_id', '>', 0],
|
|
['type', '<>', 'voice'],
|
|
['is_group', '=', 0],
|
|
['is_undo', '=', 0],
|
|
];
|
|
if ($param['cate'] ?? 0) {
|
|
$map[] = ['file_cate', '=', $param['cate']];
|
|
}
|
|
$user_id = $this->uid;
|
|
$model = new Message();
|
|
if ($param['keywords'] ?? '') {
|
|
$map[] = ['file_name', 'like', '%' . $param['keywords'] . '%'];
|
|
}
|
|
$role = $param['role'] ?? 0;
|
|
$where=[];
|
|
if($role==1){
|
|
$map[] = ['from_user', '=', $user_id];
|
|
}elseif($role==2){
|
|
$map[] = ['to_user', '=', $user_id];
|
|
}else{
|
|
$where='(from_user='.$user_id.' or to_user='.$user_id.')';
|
|
}
|
|
|
|
$list = $this->paginate($model->where($map)->where($where)->order('create_time desc'));
|
|
if ($list) {
|
|
$data = $list->toArray()['data'];
|
|
$userList = User::matchUser($data, true, 'from_user', 120);
|
|
foreach ($data as $k => $v) {
|
|
$content=str_encipher($v['content'],false);
|
|
$url=getFileUrl($content);
|
|
$data[$k]['src'] = $url;
|
|
$data[$k]['preview'] = previewUrl($url);
|
|
$data[$k]['extUrl'] = getExtUrl($content);
|
|
$data[$k]['cate'] = $v['file_cate'];
|
|
$data[$k]['name'] = $v['file_name'];
|
|
$data[$k]['size'] = $v['file_size'];
|
|
$data[$k]['msg_type'] = $v['type'];
|
|
$ext=explode('.',$content);
|
|
$data[$k]['ext'] = end($ext);
|
|
$data[$k]['user_id_info'] = $userList[$v['from_user']] ?? [];
|
|
$data[$k]['download'] = getMainHost().'/filedown/'.encryptIds($v['file_id']);
|
|
}
|
|
}
|
|
}
|
|
return success('', $data, $list->total(), $list->currentPage());
|
|
}
|
|
|
|
// 获取原图
|
|
public function viewOriginalImage()
|
|
{
|
|
$file_id = $this->request->param('file_id');
|
|
$msg_id = $this->request->param('msg_id');
|
|
if (empty($file_id) || empty($msg_id)) {
|
|
return error(lang('system.error'));
|
|
}
|
|
if (!is_numeric($file_id) || !is_numeric($msg_id)) {
|
|
return error(lang('system.error'));
|
|
}
|
|
$where = [
|
|
'file_id' => $file_id,
|
|
'msg_id' => $msg_id
|
|
];
|
|
$res = Message::where($where)->field('file_id,content')->find();
|
|
if (!$res) {
|
|
return error(lang('system.error'));
|
|
}
|
|
|
|
$res = File::where('file_id', $file_id)->field('src')->find();
|
|
if (!$res) {
|
|
return error(lang('system.error'));
|
|
}
|
|
|
|
MessageView::addView($msg_id, $this->uid, $file_id, $res['content']);
|
|
|
|
return success('', ['src' => $res['src']]);
|
|
}
|
|
}
|
|
|