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"=>[],
"now_time"=>date("Y-m-d H:i:s")
],
"暂无会议",
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'] = [];
}
$data['now_time'] = date("Y-m-d H:i:s");
$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']),
];
}
if (!isset($info['basic_information']["meeting_attendees"])) {
$info['basic_information']["meeting_attendees"] = [];
}
// 会议议题
$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;
}
}