mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-07 18:07:05 +00:00
perf:完善临时帐号权限
This commit is contained in:
parent
5f0b858baf
commit
d3a50e7810
@ -315,6 +315,9 @@ class DialogController extends AbstractController
|
||||
if (empty($callUser) || empty($callUser->tel)) {
|
||||
return Base::retError("对方未设置联系电话");
|
||||
}
|
||||
if ($user->isTemp()) {
|
||||
return Base::retError("无法查看联系电话");
|
||||
}
|
||||
//
|
||||
$add = null;
|
||||
$res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'notice', [
|
||||
@ -353,7 +356,7 @@ class DialogController extends AbstractController
|
||||
return Base::retError('错误的会话');
|
||||
}
|
||||
//
|
||||
$dialog = WebSocketDialog::checkUserDialog($user->userid, $userid);
|
||||
$dialog = WebSocketDialog::checkUserDialog($user, $userid);
|
||||
if (empty($dialog)) {
|
||||
return Base::retError('打开会话失败');
|
||||
}
|
||||
@ -866,8 +869,7 @@ class DialogController extends AbstractController
|
||||
$fileLink = $file->getShareLink($user->userid);
|
||||
$fileMsg = "<a class=\"mention file\" href=\"{{RemoteURL}}single/file/{$fileLink['code']}\" target=\"_blank\">~{$file->getNameAndExt()}</a>";
|
||||
//
|
||||
$sender = $user->userid;
|
||||
return AbstractModel::transaction(function() use ($sender, $fileMsg, $userids, $dialogids) {
|
||||
return AbstractModel::transaction(function() use ($user, $fileMsg, $userids, $dialogids) {
|
||||
$msgs = [];
|
||||
$already = [];
|
||||
if ($dialogids) {
|
||||
@ -875,7 +877,7 @@ class DialogController extends AbstractController
|
||||
$dialogids = [$dialogids];
|
||||
}
|
||||
foreach ($dialogids as $dialogid) {
|
||||
$res = WebSocketDialogMsg::sendMsg(null, $dialogid, 'text', ['text' => $fileMsg], $sender);
|
||||
$res = WebSocketDialogMsg::sendMsg(null, $dialogid, 'text', ['text' => $fileMsg], $user->userid);
|
||||
if (Base::isSuccess($res)) {
|
||||
$msgs[] = $res['data'];
|
||||
$already[] = $dialogid;
|
||||
@ -890,9 +892,9 @@ class DialogController extends AbstractController
|
||||
if (!User::whereUserid($userid)->exists()) {
|
||||
continue;
|
||||
}
|
||||
$dialog = WebSocketDialog::checkUserDialog($sender, $userid);
|
||||
$dialog = WebSocketDialog::checkUserDialog($user, $userid);
|
||||
if ($dialog && !in_array($dialog->id, $already)) {
|
||||
$res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $fileMsg], $sender);
|
||||
$res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $fileMsg], $user->userid);
|
||||
if (Base::isSuccess($res)) {
|
||||
$msgs[] = $res['data'];
|
||||
}
|
||||
@ -1216,7 +1218,7 @@ class DialogController extends AbstractController
|
||||
}
|
||||
WebSocketDialog::checkDialog($msg->dialog_id);
|
||||
//
|
||||
return $msg->forwardMsg($dialogids, $userids, $user->userid);
|
||||
return $msg->forwardMsg($dialogids, $userids, $user);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1445,6 +1447,9 @@ class DialogController extends AbstractController
|
||||
}
|
||||
$chatName = implode(", ", $array);
|
||||
}
|
||||
if ($user->isTemp()) {
|
||||
return Base::retError('无法创建群组');
|
||||
}
|
||||
$dialog = WebSocketDialog::createGroup($chatName, $userids, 'user', $user->userid);
|
||||
if (empty($dialog)) {
|
||||
return Base::retError('创建群组失败');
|
||||
|
||||
@ -148,7 +148,7 @@ class PublicController extends AbstractController
|
||||
}
|
||||
Cache::put($cacheKey, "yes", Carbon::now()->addDay());
|
||||
//
|
||||
$dialog = WebSocketDialog::checkUserDialog($botUser->userid, $checkin->userid);
|
||||
$dialog = WebSocketDialog::checkUserDialog($botUser, $checkin->userid);
|
||||
if ($dialog) {
|
||||
$hi = date("H:i");
|
||||
$pre = $type == "up" ? "上班" : "下班";
|
||||
|
||||
@ -1101,7 +1101,7 @@ class UsersController extends AbstractController
|
||||
if (!User::whereUserid($userid)->exists()) {
|
||||
continue;
|
||||
}
|
||||
$dialog = WebSocketDialog::checkUserDialog($user->userid, $userid);
|
||||
$dialog = WebSocketDialog::checkUserDialog($user, $userid);
|
||||
if ($dialog) {
|
||||
$res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'meeting', $data, $user->userid);
|
||||
if (Base::isSuccess($res)) {
|
||||
@ -1151,7 +1151,7 @@ class UsersController extends AbstractController
|
||||
if (!User::whereUserid($userid)->exists()) {
|
||||
continue;
|
||||
}
|
||||
$dialog = WebSocketDialog::checkUserDialog($user->userid, $userid);
|
||||
$dialog = WebSocketDialog::checkUserDialog($user, $userid);
|
||||
if ($dialog) {
|
||||
$res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'meeting', $data, $user->userid);
|
||||
if (Base::isSuccess($res)) {
|
||||
|
||||
@ -1448,8 +1448,8 @@ class ProjectTask extends AbstractModel
|
||||
return;
|
||||
}
|
||||
$owners = $this->taskUser->pluck('owner', 'userid')->toArray();
|
||||
$users = User::whereIn('userid', $userids)->whereNull('disable_at')->get();
|
||||
if (empty($users)) {
|
||||
$receivers = User::whereIn('userid', $userids)->whereNull('disable_at')->get();
|
||||
if (empty($receivers)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1467,18 +1467,18 @@ class ProjectTask extends AbstractModel
|
||||
};
|
||||
|
||||
/** @var User $user */
|
||||
foreach ($users as $user) {
|
||||
foreach ($receivers as $receiver) {
|
||||
$data = [
|
||||
'type' => $type,
|
||||
'userid' => $user->userid,
|
||||
'userid' => $receiver->userid,
|
||||
'task_id' => $this->id,
|
||||
];
|
||||
if (in_array($type, [1, 2]) && ProjectTaskPushLog::where($data)->exists()) {
|
||||
continue;
|
||||
}
|
||||
//
|
||||
$replace = $owners[$user->userid] ? "您负责的任务" : "您协助的任务";
|
||||
$dialog = WebSocketDialog::checkUserDialog($botUser->userid, $data['userid']);
|
||||
$replace = $owners[$receiver->userid] ? "您负责的任务" : "您协助的任务";
|
||||
$dialog = WebSocketDialog::checkUserDialog($botUser, $receiver->userid);
|
||||
if ($dialog) {
|
||||
ProjectTaskPushLog::createInstance($data)->save();
|
||||
WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', [
|
||||
|
||||
@ -481,37 +481,40 @@ class WebSocketDialog extends AbstractModel
|
||||
|
||||
/**
|
||||
* 获取会员对话(没有自动创建)
|
||||
* @param int $userid 会员ID
|
||||
* @param int $userid2 另一个会员ID
|
||||
* @param User $user 发起会话的会员
|
||||
* @param int $receiver 另一个会员ID
|
||||
* @return self|null
|
||||
*/
|
||||
public static function checkUserDialog($userid, $userid2)
|
||||
public static function checkUserDialog($user, $receiver)
|
||||
{
|
||||
if ($userid == $userid2) {
|
||||
$userid2 = 0;
|
||||
if ($user->userid == $receiver) {
|
||||
$receiver = 0;
|
||||
}
|
||||
$dialogUser = self::select(['web_socket_dialogs.*'])
|
||||
->join('web_socket_dialog_users as u1', 'web_socket_dialogs.id', '=', 'u1.dialog_id')
|
||||
->join('web_socket_dialog_users as u2', 'web_socket_dialogs.id', '=', 'u2.dialog_id')
|
||||
->where('u1.userid', $userid)
|
||||
->where('u2.userid', $userid2)
|
||||
->where('u1.userid', $user->userid)
|
||||
->where('u2.userid', $receiver)
|
||||
->where('web_socket_dialogs.type', 'user')
|
||||
->first();
|
||||
if ($dialogUser) {
|
||||
return $dialogUser;
|
||||
}
|
||||
return AbstractModel::transaction(function () use ($userid2, $userid) {
|
||||
if ($receiver > 0 && $user->isTemp()) {
|
||||
throw new ApiException('无法发起会话');
|
||||
}
|
||||
return AbstractModel::transaction(function () use ($receiver, $user) {
|
||||
$dialog = self::createInstance([
|
||||
'type' => 'user',
|
||||
]);
|
||||
$dialog->save();
|
||||
WebSocketDialogUser::createInstance([
|
||||
'dialog_id' => $dialog->id,
|
||||
'userid' => $userid,
|
||||
'userid' => $user->userid,
|
||||
])->save();
|
||||
WebSocketDialogUser::createInstance([
|
||||
'dialog_id' => $dialog->id,
|
||||
'userid' => $userid2,
|
||||
'userid' => $receiver,
|
||||
])->save();
|
||||
return $dialog;
|
||||
});
|
||||
|
||||
@ -367,12 +367,12 @@ class WebSocketDialogMsg extends AbstractModel
|
||||
* 转发消息
|
||||
* @param array|int $dialogids
|
||||
* @param array|int $userids
|
||||
* @param int $sender 发送的会员ID
|
||||
* @param User $user 发送的会员
|
||||
* @return mixed
|
||||
*/
|
||||
public function forwardMsg($dialogids, $userids, $sender)
|
||||
public function forwardMsg($dialogids, $userids, $user)
|
||||
{
|
||||
return AbstractModel::transaction(function() use ($dialogids, $sender, $userids) {
|
||||
return AbstractModel::transaction(function() use ($dialogids, $user, $userids) {
|
||||
$originalMsg = Base::json2array($this->getRawOriginal('msg'));
|
||||
$msgs = [];
|
||||
$already = [];
|
||||
@ -381,7 +381,7 @@ class WebSocketDialogMsg extends AbstractModel
|
||||
$dialogids = [$dialogids];
|
||||
}
|
||||
foreach ($dialogids as $dialogid) {
|
||||
$res = self::sendMsg(null, $dialogid, $this->type, $originalMsg, $sender);
|
||||
$res = self::sendMsg(null, $dialogid, $this->type, $originalMsg, $user->userid);
|
||||
if (Base::isSuccess($res)) {
|
||||
$msgs[] = $res['data'];
|
||||
$already[] = $dialogid;
|
||||
@ -396,9 +396,9 @@ class WebSocketDialogMsg extends AbstractModel
|
||||
if (!User::whereUserid($userid)->exists()) {
|
||||
continue;
|
||||
}
|
||||
$dialog = WebSocketDialog::checkUserDialog($sender, $userid);
|
||||
$dialog = WebSocketDialog::checkUserDialog($user, $userid);
|
||||
if ($dialog && !in_array($dialog->id, $already)) {
|
||||
$res = self::sendMsg(null, $dialog->id, $this->type, $originalMsg, $sender);
|
||||
$res = self::sendMsg(null, $dialog->id, $this->type, $originalMsg, $user->userid);
|
||||
if (Base::isSuccess($res)) {
|
||||
$msgs[] = $res['data'];
|
||||
}
|
||||
|
||||
@ -150,7 +150,7 @@ class BotReceiveMsgTask extends AbstractTask
|
||||
$notice = "创建失败。";
|
||||
break;
|
||||
}
|
||||
$dialog = WebSocketDialog::checkUserDialog($data->userid, $msg->userid);
|
||||
$dialog = WebSocketDialog::checkUserDialog($data, $msg->userid);
|
||||
if ($dialog) {
|
||||
$text = "<p>您好,我是机器人:{$data->nickname},我的机器人ID是:{$data->userid},</p><p>你可以发送 <u><b>/help</b></u> 查看我支持什么命令。</p>";
|
||||
WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $text], $data->userid); // todo 未能在任务end事件来发送任务
|
||||
|
||||
@ -299,7 +299,12 @@
|
||||
},
|
||||
|
||||
openDialog() {
|
||||
this.$store.dispatch("openDialogUserid", this.userid);
|
||||
this.$store.dispatch("showSpinner", 600)
|
||||
this.$store.dispatch("openDialogUserid", this.userid).catch(({msg}) => {
|
||||
$A.modalError(msg)
|
||||
}).finally(_ => {
|
||||
this.$store.dispatch("hiddenSpinner")
|
||||
});
|
||||
},
|
||||
|
||||
onError() {
|
||||
|
||||
@ -251,6 +251,8 @@ export default {
|
||||
this.$store.dispatch("showSpinner", 600)
|
||||
this.$store.dispatch("openDialogUserid", userid).then(_ => {
|
||||
this.$emit("on-close")
|
||||
}).catch(({msg}) => {
|
||||
$A.modalError(msg)
|
||||
}).finally(_ => {
|
||||
this.openIng = false
|
||||
this.$store.dispatch("hiddenSpinner")
|
||||
|
||||
@ -39,6 +39,8 @@ export default {
|
||||
this.$store.dispatch("showSpinner", 600)
|
||||
this.$store.dispatch("openDialogUserid", userid).then(_ => {
|
||||
this.$emit("on-close")
|
||||
}).catch(({msg}) => {
|
||||
$A.modalError(msg)
|
||||
}).finally(_ => {
|
||||
this.openIng = false
|
||||
this.$store.dispatch("hiddenSpinner")
|
||||
|
||||
@ -504,7 +504,9 @@ export default {
|
||||
//
|
||||
if ($A.isJson(dialogId) && $A.leftExists(dialogId.dialog_id, "u:")) {
|
||||
this.$store.dispatch("showSpinner", 300)
|
||||
this.$store.dispatch("openDialogUserid", $A.leftDelete(dialogId.dialog_id, "u:")).finally(_ => {
|
||||
this.$store.dispatch("openDialogUserid", $A.leftDelete(dialogId.dialog_id, "u:")).catch(({msg}) => {
|
||||
$A.modalError(msg)
|
||||
}).finally(_ => {
|
||||
this.$store.dispatch("hiddenSpinner")
|
||||
})
|
||||
} else {
|
||||
@ -521,6 +523,8 @@ export default {
|
||||
if (this.windowLarge) {
|
||||
this.tabActive = 'dialog';
|
||||
}
|
||||
}).catch(({msg}) => {
|
||||
$A.modalError(msg)
|
||||
}).finally(_ => {
|
||||
this.$set(user, 'loading', false);
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user