fix: 修改分享逻辑

This commit is contained in:
weifashi
2023-06-09 15:05:09 +08:00
parent 95d3c7dfce
commit 8c6f1120e4
5 changed files with 325 additions and 268 deletions
+57 -50
View File
@@ -1816,58 +1816,65 @@ class UsersController extends AbstractController
public function share__list()
{
$user = User::auth();
$userids = $user->isTemp() ? [$user->userid] : [0, $user->userid];
//目录列表
$dir = Base::list2Tree(
File::select('files.id','files.pid','files.name')
->leftJoin('file_users', 'files.id', '=', 'file_users.file_id')
->where('files.type','folder')
->where(function ($q) use ($userids) {
$q->whereIn('files.userid',$userids);
$q->orWhere(function ($qq) use ($userids) {
$qq->where('file_users.permission',1);
$qq->whereIn('file_users.userid',$userids);
});
})
->get()
->toArray()
);
//聊天列表
$chatList = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.silence', 'u.updated_at as user_at'])
->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id')
->where('u.userid', $user->userid)
->orderByDesc('u.top_at')
->orderByDesc('web_socket_dialogs.last_at')
->get()
->transform(function (WebSocketDialog $item) use ($user) {
$item = $item->formatData($user->userid);
$item->last_msg = [];
if(!$item->avatar){
$item->avatar = 'avatar/'.$item->name.'.png';
$pid = intval( Request::input('pid',-1) );
$uploadFileId = intval(Request::input('upload_file_id',-1));
// 上传文件
if($uploadFileId !== -1){
$webkitRelativePath = Request::input('webkitRelativePath');
$data = (new File)->contentUpload($user,$pid,$webkitRelativePath);
return Base::retSuccess('success', $data);
}
// 获取数据
if ($pid !== -1) {
$lists = [];
$fileList = (new File)->getFileList($user,$pid,'dir',false);
foreach($fileList as $file){
if($file['id'] != $pid){
$lists[] = [
'type' => count((new File)->getFileList($user,$file['id'],'dir',false)) > 0 ? 'children' : 'item',
'url' => Base::fillUrl("api/users/share/list") . "?pid=" . $file['id'],
'icon' => url("/images/file/light/folder.svg"),
'extend' => ['upload_file_id'=>$file['id']],
'name' => $file['name'],
];
}
return $item;
})
->toArray();
// 用户列表
$notUserIds = [$user->userid];
foreach($chatList as $chat){
if($chat['type'] == 'user'){
$notUserIds[] = $chat['dialog_user']['userid'];
}
}
$userList = User::select('userid','email','nickname','userimg')
->where('bot',0)
->where('changepass',0)
->whereNull('disable_at')
->whereNotIn('userid',$notUserIds)
->get()
->transform(function (User $item) {
$item->name = $item->nickname;
$item->avatar = $item->userimg;
return $item;
})
->toArray();
}else{
$lists = [[
'type' => 'children',
'url' => Base::fillUrl("api/users/share/list")."?pid=0",
'icon' => url("/images/file/light/folder.svg"),
'extend' => ['file'=>true],
'name' => '全部文件',
]];
$dialogList = (new WebSocketDialog)->getDialogList($user->userid);
foreach($dialogList['data'] as $dialog){
if($dialog['type'] == 'user'){
$avatar = User::getAvatar($dialog['dialog_user']['userid'], $dialog['avatar'], $dialog['email'], $dialog['name']);
}else{
switch ( $dialog['group_type'] ) {
case 'department':
$avatar = url("images/avatar/default_department.png");
case 'project':
$avatar = url("images/avatar/default_project.png");
case 'task':
$avatar = url("images/avatar/default_task.png");
default:
$avatar = url("images/avatar/default_people.png");
break;
}
}
$lists[] = [
'type' => 'item',
'name' => $dialog['name'],
'icon' => $avatar,
'url' => Base::fillUrl("api/dialog/msg/sendfiles"),
'extend' => [ 'dialog_ids' => $dialog['id'] ]
];
}
}
// 返回
return Base::retSuccess('success', ["dir"=>$dir,"chatList"=>$chatList,"userList"=>$userList]);
return Base::retSuccess('success', $lists);
}
}