diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index af62a14ec..d7cb0dd84 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -153,6 +153,49 @@ class SystemController extends AbstractController return Base::retSuccess('success', $setting ?: json_decode('{}')); } + /** + * @api {get} api/system/setting/meeting 03. 获取会议设置、保存会议设置(限管理员) + * + * @apiVersion 1.0.0 + * @apiGroup system + * @apiName setting__meeting + * + * @apiParam {String} type + * - get: 获取(默认) + * - save: 保存设置(参数:['open', 'appid', 'app_certificate']) + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function setting__meeting() + { + User::auth('admin'); + // + $type = trim(Request::input('type')); + if ($type == 'save') { + if (env("SYSTEM_SETTING") == 'disabled') { + return Base::retError('当前环境禁止修改'); + } + $all = Request::input(); + foreach ($all as $key => $value) { + if (!in_array($key, [ + 'open', + 'appid', + 'app_certificate', + ])) { + unset($all[$key]); + } + } + $setting = Base::setting('meetingSetting', Base::newTrim($all)); + } else { + $setting = Base::setting('meetingSetting'); + } + // + $setting['open'] = $setting['open'] ?: 'close'; + // + return Base::retSuccess('success', $setting ?: json_decode('{}')); + } + /** * @api {get} api/system/setting/apppush 03. 获取APP推送设置、保存APP推送设置(限管理员) * diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 5541eb7c1..90eea2cfe 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -773,9 +773,12 @@ class UsersController extends AbstractController * @apiGroup users * @apiName meeting__open * - * @apiParam {String} [meetingid] 会议ID(不是数字,留空自动创建) - * @apiParam {String} [name] 会话ID - * @apiParam {Array} [userids] 邀请成员 + * @apiParam {String} type 类型 + * - create: 创建会议,有效参数:name、userids + * - join: 加入会议,有效参数:meetingid (必填) + * @apiParam {String} [meetingid] 频道ID(不是数字) + * @apiParam {String} [name] 会话ID + * @apiParam {Array} [userids] 邀请成员 * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -785,17 +788,18 @@ class UsersController extends AbstractController { $user = User::auth(); // + $type = trim(Request::input('type')); $meetingid = trim(Request::input('meetingid')); $name = trim(Request::input('name')); $userids = Request::input('userids'); $isCreate = false; // - if ($meetingid) { + if ($type === 'join') { $meeting = Meeting::whereMeetingid($meetingid)->first(); if (empty($meeting)) { - return Base::retError('会议不存在'); + return Base::retError('频道ID不存在'); } - } else { + } elseif ($type === 'create') { $meetingid = strtoupper(Base::generatePassword()); $name = $name ?: "{$user->nickname} 发起的会议"; $channel = "DooTask:" . substr(md5($meetingid . env("APP_KEY")), 16); @@ -807,14 +811,20 @@ class UsersController extends AbstractController ]); $meeting->save(); $isCreate = true; + } else { + return Base::retError('参数错误'); } // 创建令牌 - $appid = '342c604542484b0d9659527f79aefcdb'; - $app_certificate = '920eb911c1f549948366e44d6dcabcbe'; - $channel = $meeting->channel; + $meetingSetting = Base::setting('meetingSetting'); + if ($meetingSetting['open'] !== 'open') { + return Base::retError('会议功能未开启,请联系管理员开启'); + } + if (empty($meetingSetting['appid']) || empty($meetingSetting['app_certificate'])) { + return Base::retError('会议功能配置错误,请联系管理员'); + } $uid = $user->userid . '_' . Request::header('fd'); try { - $service = new AgoraTokenGenerator($appid, $app_certificate, $channel, $uid); + $service = new AgoraTokenGenerator($meetingSetting['appid'], $meetingSetting['app_certificate'], $meeting->channel, $uid); } catch (\Exception $e) { return Base::retError($e->getMessage()); } @@ -840,7 +850,7 @@ class UsersController extends AbstractController } // $data = $meeting->toArray(); - $data['appid'] = $appid; + $data['appid'] = $meetingSetting['appid']; $data['uid'] = $uid; $data['token'] = $token; $data['msgs'] = $msgs; diff --git a/resources/assets/js/pages/manage.vue b/resources/assets/js/pages/manage.vue index 573518811..05e735160 100644 --- a/resources/assets/js/pages/manage.vue +++ b/resources/assets/js/pages/manage.vue @@ -214,12 +214,14 @@ - + - {{$L('新建任务')}} ({{mateName}}+K) + {{$L('新建任务')}} ({{mateName}}+K) + {{$L('新会议')}} ({{mateName}}+J) + {{$L('加入会议')}} @@ -815,6 +817,27 @@ export default { }; }, + onAddMenu(name) { + switch (name) { + case 'task': + this.onAddTask(0) + break; + + case 'createMeeting': + Store.set('addMeeting', { + type: 'create', + userids: [this.userId], + }); + break; + + case 'joinMeeting': + Store.set('addMeeting', { + type: 'join', + }); + break; + } + }, + onAddShow() { this.$store.dispatch("getColumnTemplate").catch(() => {}) this.addShow = true; @@ -866,9 +889,12 @@ export default { shortcutEvent(e) { if (e.metaKey || e.ctrlKey) { - if (e.keyCode === 75 || e.keyCode === 78) { + if (e.keyCode === 74) { e.preventDefault(); - this.onAddTask(0) + this.onAddMenu('createMeeting') + } else if (e.keyCode === 75 || e.keyCode === 78) { + e.preventDefault(); + this.onAddMenu('task') } else if (e.keyCode === 83 && this.taskId > 0) { e.preventDefault(); this.$refs.taskDetail.checkUpdate(true) diff --git a/resources/assets/js/pages/manage/components/ChatInput/index.vue b/resources/assets/js/pages/manage/components/ChatInput/index.vue index 5fac66b89..1e646b10a 100755 --- a/resources/assets/js/pages/manage/components/ChatInput/index.vue +++ b/resources/assets/js/pages/manage/components/ChatInput/index.vue @@ -788,6 +788,7 @@ export default { case 'meeting': Store.set('addMeeting', { + type: 'create', dialog_id: this.dialogId, userids: [this.userId], }); diff --git a/resources/assets/js/pages/manage/components/DialogView.vue b/resources/assets/js/pages/manage/components/DialogView.vue index b8292f78f..49e3153d9 100644 --- a/resources/assets/js/pages/manage/components/DialogView.vue +++ b/resources/assets/js/pages/manage/components/DialogView.vue @@ -332,7 +332,11 @@ export default { }, openMeeting() { - Store.set('addMeeting', this.msgData.msg); + Store.set('addMeeting', { + type: 'join', + name: this.msgData.msg.name, + meetingid: this.msgData.msg.meetingid, + }); }, withdraw() { diff --git a/resources/assets/js/pages/manage/components/MeetingManager.vue b/resources/assets/js/pages/manage/components/MeetingManager.vue index 68c4a703b..2a2db72f2 100644 --- a/resources/assets/js/pages/manage/components/MeetingManager.vue +++ b/resources/assets/js/pages/manage/components/MeetingManager.vue @@ -2,16 +2,16 @@
-