postdata; return json_encode($str); } // 获取会议信息 public function getMeetInfoAction() { $rawArr = $this->getpostarr(); if (!isset($rawArr['device_id'])) { $this->showreturn([], "参数错误", 201); } // $rawData = m('meeting_room')->getone(" mac = '{$rawArr['device_id']}'"); // 根据设备Id获取会议室信息 $rawData = m("meeting_room")->getMeetingRoomInfoByDeviceId($rawArr['device_id']); if (!isset($rawData['id'])) { $this->showreturn([], "未找到会议室", 202); } // 设置响应时间,确定屏幕是否在线 m("meeting_room")->update(["final_res_time"=>date("Y-m-d H:i:s")], "id = '{$rawData['id']}'"); // 获取今日(未开始、进行中)会议 $sqlStr = /** @lang text */ "select * from ( SELECT 1 as type, id, title, start_time, end_time, null as compere, meet_state, null as tzone, is_hand, meeting_room, attendees, null as attends ,`bfp`, `lunp`, `dnp`, `hotel`, `stay_day`, `stay_man`, `stay_lady`, 0 as `guset_well` FROM `[Q]meeting` where start_time REGEXP '".date("Y-m-d")."' and end_time > now() and status = 1 and room_id = '".$rawData['id']."' union all SELECT 2 as type, id, title, start_time, end_time, compere, meet_state, tzone, is_hand, meeting_room, attendees, attends ,0 `bfp`, 0 `lunp`, 0 `dnp`, 0 `hotel`, 0 `stay_day`, 0 `stay_man`, 0 `stay_lady`, 0 as `guset_well` FROM `[Q]meeting_key` where start_time REGEXP '".date("Y-m-d")."' and `meet_state` != 2 and room_id = '".$rawData['id']."' ) t order by type desc, start_time"; $meetData = $this->db->getall($sqlStr); // 没有会议 if (count($meetData) == 0) { $this->showreturn( [ "meeting_list"=>[], "basic_information"=>[ "meeting_room_name" => $rawData['room_name'], "meeting_name" => '空闲中', "meeting_time" => null, "meeting_moderator" => null, ], "meetingTopic"=>[], "participants"=>[] ], "暂无会议", 203); } $data = []; // 有会议循环处理一下 for ($i = 0; $i < count($meetData); $i++) { $meeting = $meetData[$i]; $mn = str_replace("\n", "",$meeting['title']); $type = $meeting['type']; $mc = $meeting['compere']; $mr = $meeting['meeting_room']; $ms = $meeting['meet_state'] == 1 ? 1 : 0; $st = $meeting['start_time']; $et = $meeting['end_time']; if ($type == 1) { $mt = date("H:i", strtotime($st)).' ~ '.date("H:i", strtotime($et)); } else { $mt = m("meeting_key")->tp[$meeting['tzone']]['name']; } $data['meeting_list'][$i] = [ "meeting_name"=>$mn, "meeting_time"=>$mt, "meeting_moderator"=>$mc, "meeting_state"=>$ms, ]; // 时间到了自动结束一下(重要会议手动操作) if ($meeting['type'] == 1) { m("meeting")->meetingStateChange($meeting['id'], $st, $et); } if ($ms == 1) { $nowMeet = $meeting; $data['basic_information'] = [ "meeting_room_name" => $mr, "meeting_name" => $mn, "meeting_time" => $mt, "meeting_moderator" => $mc ]; } } // 有进行中的会议 if (isset($nowMeet) && !empty($nowMeet)) { // 出席信息 $ats = trimstr($nowMeet['attendees']); $atl = trim($nowMeet['attends']); $attInfo = !empty($ats) ? "出席:".$ats : ""; $attInfo = $attInfo.(empty($ats) || empty($atl) ? "" : "
"); $attInfo = $attInfo.(!empty($atl) ? "列席:".$atl : ""); $data['basic_information']['meeting_attendees'] = $attInfo; $data['meetingTopic'] = []; $data['participants'] = []; $mid = $nowMeet['id']; // 党委会议(需要加入议题) if ($nowMeet['type'] == 2) { $topicList = m("meeting_key")->getTopicList($mid); $recTopic = m("meeting_key")->getRecTopic($mid); $data['meetingTopic'] = $topicList; $data['participants'] = array(); if (isset($recTopic[0])) { $data['participants'][] = [ "topics" => $recTopic[0]['topic_title'], "personnel_list" => str_replace("\n", "
", $recTopic[0]['topic_info']), ]; } if (isset($recTopic[1])) { $data['participants'][] = [ "topics" => $recTopic[1]['topic_title'], "personnel_list" => str_replace("\n", "
", $recTopic[1]['topic_info']), ]; } } else { // 普通会议,议题为空 $data['meetingTopic'] = []; // 基础会议人员信息 $data['participants'] = [ [ "topics"=>$nowMeet['title'], "personnel_list"=>str_replace("\n", "
", $nowMeet['attendees']), ], ]; $pl = ""; $pl .= "就餐安排:早餐 {$nowMeet['bfp']} 人,午餐 {$nowMeet['lunp']} 人,晚餐 {$nowMeet['dnp']} 人,招待所 {$nowMeet['dnp']} 号厅。
"; $pl .= "住宿安排:天数 {$nowMeet['bfp']} 天(午休),男士 {$nowMeet['lunp']} 人,女士 {$nowMeet['dnp']} 人。
"; $pl .= "来宾入井安排: {$nowMeet['bfp']}人。"; $data['participants'][] = [ "topics"=>"会议事项", "personnel_list"=>$pl, ]; } } else { // 空闲状态 $data['basic_information'] = [ "meeting_room_name" => $rawData['room_name'], "meeting_name" => '空闲中', "meeting_time" => null, "meeting_moderator" => null, ]; $data['meetingTopic'] = []; $data['participants'] = []; } $this->showreturn($data, "请求成功"); } // 手机端 - 会议室列表 public function mMeetRoomListAction() { $rawArr = $this->getpostarr(); if (isset($rawArr['date'])) { $dataDate = substr($rawArr['date'], 0, 10); } else { $dataDate = date("Y-m-d"); } $dataArr = m("meeting_room")->getall('1=1', '*', 'room_name asc'); $list = []; for ($i = 0; $i < count($dataArr); $i++) { $data = $dataArr[$i]; $sqlStr = /** @lang text */ "SELECT count(1) con FROM ( SELECT 1 FROM `[Q]meeting` WHERE `status` = 1 and `start_time` < now() and `end_time` > now() and `start_time` REGEXP '".$dataDate."' and `meet_state` != 2 and `room_id` = '".$data['id']."' UNION ALL SELECT 1 FROM `[Q]meeting_key` WHERE `start_time` REGEXP '".$dataDate."' and `meet_state` == 1 and `room_id` = '".$data['id']."' ) t"; $meetingHave = $this->db->getall($sqlStr); $sqlStr = /** @lang text */ "SELECT count(1) con FROM ( SELECT 1 FROM `[Q]meeting` WHERE `status` = 1 AND `start_time` REGEXP '".$dataDate."' AND `end_time` > now() AND `meet_state` != 2 AND `room_id` = '".$data['id']."' UNION ALL SELECT 1 FROM `[Q]meeting_key` WHERE `start_time` REGEXP '".$dataDate."' AND `meet_state` != 2 AND `room_id` = '".$data['id']."' ) t"; $meetCon = $this->db->getall($sqlStr); $list[$i] = [ 'meeting_room_id' => $data['id'], 'meeting_room_name' => $data['room_name'], 'meeting_room_text' => $data['desc'], 'meeting_room_state' => $meetingHave[0]['con'] > 0 ? 1 : 0, 'meeting_room_state_text' => $meetingHave[0]['con'] > 0 ? "会议中" : "空闲中", 'meeting_today_num' => $meetCon[0]['con'] ?? 0 ]; } // 有会议的往前排 usort($list, function($a, $b) { return $b['meeting_today_num'] - $a['meeting_today_num']; }); $this->showreturn($list,'success'); } // 手机端 - 会议列表 public function mMeetListAction() { $rawArr = $this->getpostarr(); if (!isset($rawArr['room_id'])) { return returnerror('参数缺失'); } $roomId = $rawArr['room_id']; $roomInfo = m('meeting_room')->getone("id={$roomId}"); if (empty($roomInfo)) { return returnerror('会议室不存在!'); } if (isset($rawArr['date'])) { $dataDate = substr($rawArr['date'], 0, 10); } else { $dataDate = date("Y-m-d"); } $sqlStr = /** @lang text */ "SELECT 1 as type, id, title, start_time, end_time, null compere, case when fixed = 1 then '固定会议' else '办公会议' end as meeting_type, null as tzone, meet_state FROM `[Q]meeting` WHERE `status` = 1 and `start_time` regexp '".$dataDate."' and `meet_state` != 2 and `end_time` > now() and `room_id` = '".$roomId."' UNION ALL SELECT 2 as type, id, title, start_time, end_time, compere, '党委会议' as meeting_type, tzone, meet_state FROM `[Q]meeting_key` WHERE `start_time` regexp '".$dataDate."' and `meet_state` != 2 and `room_id` = '".$roomId."' "; $meetingArr = $this->db->getall($sqlStr); $room_name = $roomInfo['room_name']; if (!empty($meetingArr)) { for ($i = 0; $i < count($meetingArr); $i++) { $meet = $meetingArr[$i]; $type = $meet['type']; $ms = $meet['meet_state']; $st = $meet['start_time']; $et = $meet['end_time']; $mn = str_replace("\n", "",$meet['title']); if ($type == 1) { $mt = date("H:i", strtotime($st)).' ~ '.date("H:i", strtotime($et)); } else { $mt = m("meeting_key")->tp[$meet['tzone']]['name']; } $state_code = $ms; $state_text = m("meeting")->hyarra[$ms]; $list["meeting_list"][$i] = [ "meeting_id" => $meet['id'], "meeting_name" => $mn, "meeting_time" => $mt, "meeting_moderator" => $meet['compere'], "meeting_state" => $state_code, "meeting_state_text" => $state_text, "meeting_type" => $meet['meeting_type'], "meeting_type_id" => $meet['type'], ]; // 会议中 if ($state_code == 1) { $meeting = [ "meeting_room_name" => $room_name, "meeting_name" => $state_text, "meeting_time" => $mt, "meeting_moderator" => null, ]; // 自动改变状态 $firstTopic = m('meeting_topics')->getone("mid={$meet['id']}",'id, topic_state', 'sort'); if (isset($firstTopic['id']) && $firstTopic['topic_state'] < 2) { m('meeting')->firstMeetingTopicStart($meet['id']); } } } // 如果没有会议 if (empty($meeting)) { $list['basic_information'] = [ "meeting_room_name" => $room_name, "meeting_name" => '空闲中', "meeting_time" => null, "meeting_moderator" => null, ]; } else { $list['basic_information'] = $meeting; } } else { $list['basic_information'] = [ "meeting_room_name" => $room_name, "meeting_name" => '空闲中', "meeting_time" => null, "meeting_moderator" => null, ]; $list['meeting_list'] = []; } $this->showreturn($list,'success'); } // 手机端 - 会议详情 public function mMeetDetailAction() { $rawArr = $this->getpostarr(); if (!isset($rawArr['meet_id']) && !isset($rawArr['meet_type'])) { return returnerror('参数缺失'); } // 党委会议会议议题处理 if ($rawArr['meet_type'] == 2) { $meet = m('meeting_key')->getone("id={$rawArr['meet_id']}", "*"); if (isset($meet)) { $mstime = $meet['start_time']; $metime = $meet['end_time']; $now = date("Y-m-d H:i:s"); // 会议中状态 if ($mstime < $now && $metime > $now) { // 自动改变议题状态 $firstTopic = m('meeting_topics')->getone("mid={$meet['id']}",'id, topic_state', 'sort'); if (isset($firstTopic['id']) && $firstTopic['topic_state'] < 2) { m('meeting')->firstMeetingTopicStart($meet['id']); } } } } $meetId = $rawArr['meet_id']; $meetType = $rawArr['meet_type']; // 普通会议 if ($meetType == 1) { $meetInfo = $this->db->getone("[Q]meeting", "`id` = '".$meetId."'"); if (!empty($meetInfo)) { $pl = ""; $pl .= "就餐安排:早餐 {$meetInfo['bfp']} 人,午餐 {$meetInfo['lunp']} 人,晚餐 {$meetInfo['dnp']} 人,招待所 {$meetInfo['dnp']} 号厅。
"; $pl .= "住宿安排:天数 {$meetInfo['bfp']} 天(午休),男士 {$meetInfo['lunp']} 人,女士 {$meetInfo['dnp']} 人。
"; $pl .= "来宾入井安排: {$meetInfo['bfp']}人。"; $info['basic_information'] = [ "meeting_name"=>str_replace("\n", "",$meetInfo['title']), "meeting_time"=>$meetInfo['start_time'], "meeting_moderator"=>null, "meeting_state"=>$meetInfo['meet_state'], "meeting_state_text"=>m('meeting')->hyarra[$meetInfo['meet_state']], "meeting_type"=> $meetInfo["fixed"] == 1 ? "固定会议" : "办公会议", "meeting_attendees"=>[ [ "label"=>"参会部门及人员", "text"=>$meetInfo['attendees'] ], [ "label"=>"备注", "remark"=>$meetInfo['remark'] ], [ "label"=>"会议事项", "remark"=>$pl ] ] ]; $info['meetingTopic'] = []; $this->showreturn($info, 'success'); } } else { // 党委会议 $meetInfo = $this->db->getone("[Q]meeting_key", "`id` = '".$meetId."'"); if (!empty($meetInfo)) { $info['basic_information'] = [ "meeting_name"=>str_replace("\n", "",$meetInfo['title']), "meeting_time"=>$meetInfo['start_time']." ".m("meeting_key")->tp[$meetInfo['tzone']]['name'], "meeting_moderator"=>$meetInfo['compere'], "meeting_state"=>$meetInfo['meet_state'], "meeting_state_text"=>m('meeting')->hyarra[$meetInfo['meet_state']], "meeting_type"=>"重要会议" ]; if (!empty(trim($meetInfo['attendees']))) { $info['basic_information']["meeting_attendees"][] = [ "label"=>"出席", "text"=>str_replace("\n", " ", $meetInfo['attendees']), ]; } if (!empty(trim($meetInfo['attends']))) { $info['basic_information']["meeting_attendees"][] = [ "label"=>"列席", "text"=>str_replace("\n", " ", $meetInfo['attends']), ]; } // 会议议题 $topics = m("meeting_topics")->getall("`mid` = '".$meetId."'", "*", "sort"); $meetingTopic = array_fill(0, count($topics), null); // 会议议题处理 for ($i = 0,$j = 0; $i < count($topics); $i++) { $topiic = $topics[$i]; // 用于排序(已结束放最后) if ($topiic['topic_state'] == 3) { $index = count($topics) - 1 - $j++; } else { $index = $i-$j; } $meetingTopic[$index]['state'] = $topiic['topic_state']; $meetingTopic[$index]['tip'] = m("meeting")->ytarra[$topiic['topic_state']]; $meetingTopic[$index]['text'] = $topiic['topic_title']; $meetingTopic[$index]['personnel_list'] = str_replace("\n", "
", $topiic['topic_info']); } $info['meetingTopic'] = $meetingTopic; $this->showreturn($info, 'success'); } } return returnerror('未找到会议'); } protected function getWeek($date=null) { if (!isset($date)) { $date = date("Y-m-d H:i:s"); } // 将日期转换为时间戳 $timestamp = strtotime($date); // 格式化输出星期几(返回值为英文) $weekday_en = date('l', $timestamp); // 如果需要显示中文星期几,则需要进行相关处理 switch ($weekday_en) { case 'Monday': $weekday_cn = "星期一"; break; case 'Tuesday': $weekday_cn = "星期二"; break; case 'Wednesday': $weekday_cn = "星期三"; break; case 'Thursday': $weekday_cn = "星期四"; break; case 'Friday': $weekday_cn = "星期五"; break; case 'Saturday': $weekday_cn = "星期六"; break; default: $weekday_cn = "星期天"; } return $weekday_cn; } }