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']}'");
$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, is_hand
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, is_hand
FROM `[Q]meeting_key`
where start_time REGEXP '".date("Y-m-d")."'
and end_time > now()
and room_id = '".$rawData['id']."') t order by 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];
$data['meeting_list'][$i] = [
"meeting_name"=>str_replace("\n", "",$meeting['title']),
"meeting_time"=>date("H:i", strtotime($meeting['start_time'])).' ~ '.date("H:i", strtotime($meeting['end_time'])),
"meeting_moderator"=>$meeting['compere'],
"meeting_state"=>$meeting['meet_state'] == 1 ? 1 : 0,
];
// 时间到了自动结束一下
if (strtotime($meeting['end_time']) < strtotime(date("Y-m-d H:i:s"))) {
if ($meeting['type'] == 1) {
m("meeting")->update(["meet_state"=>2], "id=".$meeting['id']);
} else {
m("meeting_key")->update(["meet_state"=>2], "id=".$meeting['id']);
}
} else if (strtotime($meeting['start_time']) > strtotime(date("Y-m-d H:i:s"))) {
if ($meeting['type'] == 1) {
m("meeting")->update(["meet_state"=>0], "id=".$meeting['id']);
} else {
m("meeting_key")->update(["meet_state"=>0], "id=".$meeting['id']);
}
} else if (strtotime($meeting['start_time']) < strtotime(date("Y-m-d H:i:s")) && $meeting['is_hand'] != 1) {
if ($meeting['type'] == 1) {
m("meeting")->update(["meet_state"=>1], "id=".$meeting['id']);
} else {
m("meeting_key")->update(["meet_state"=>1], "id=".$meeting['id']);
}
}
}
$nowMeetingSql = /** @lang text */
"select *
from (
SELECT 1 as type, id, title, start_time, end_time, null as compere, meet_state, meeting_room, attendees, null as attends
,`bfp`, `lunp`, `dnp`, `hotel`, `stay_day`, `stay_man`, `stay_lady`, 0 as `guset_well`
FROM `[Q]meeting`
where status = 1
and start_time < now()
and end_time > now()
and room_id = '".$rawData['id']."'
union all
SELECT 2 as type, id, title, start_time, end_time, compere, meet_state, 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 < now() and end_time > now()
and room_id = '".$rawData['id']."'
) as t order by start_time";
$nowMeetingData = $this->db->getall($nowMeetingSql);
// 有数据,且未结束
if (count($nowMeetingData) > 0 && $nowMeetingData[0]['meet_state'] != 2) {
$nowMeet = $nowMeetingData[0];
$attInfo = $nowMeet['type'] == 2 ? "出席:".$nowMeet['attendees']."
列席:".$nowMeet['attends'] : "";
$data['basic_information'] = [
"meeting_room_name" => $nowMeet['meeting_room'],
"meeting_name" => str_replace("\n", "",$nowMeet['title']),
"meeting_time" => date("H:i", strtotime($nowMeet['start_time'])).' ~ '.date("H:i", strtotime($nowMeet['end_time'])),
"meeting_moderator" => $nowMeet['compere'],
"meeting_attendees"=>$attInfo
];
$data['meetingTopic'] = [];
$data['participants'] = [];
// 党委会议(需要加入议题)
if ($nowMeet['type'] == 2) {
$topics = $this->db->getall("select `id`, `topic_title`, `topic_attendee`, `topic_state`, `topic_info` from `[Q]meeting_topics` where mid = {$nowMeet['id']} order by sort");
$meetingTopic = array_fill(0, count($topics) - 1, null);
// 会议议题处理
for ($i = 0,$j = 0; $i < count($topics); $i++) {
$info = $topics[$i];
// 用于排序(已结束放最后)
if ($info['topic_state'] == 3) {
$index = count($topics) - 1 - $j++;
} else {
$index = $i-$j;
}
$meetingTopic[$index]['state'] = $info['topic_state'];
$meetingTopic[$index]['tip'] = m("meeting")->ytarra[$info['topic_state']];
$meetingTopic[$index]['text'] = $info['topic_title'];
$meetingTopic[$index]['personnel_list'] = str_replace("\n", "
", $info['topic_info']);
if ($info['topic_state'] == 2) {
// 当前议题 + 参会人员
$data['participants'][] = [
"topics" => $info['topic_title'],
"personnel_list" => str_replace("\n", "
", $info['topic_info']),
];
// 下一议题 + 参会人员
if (isset($topics[$i + 1])) {
$data['participants'][] = [
"topics" => $topics[$i + 1]['topic_title'],
"personnel_list" => str_replace("\n", "
", $topics[$i + 1]['topic_info']),
];
}
}
}
$data['meetingTopic'] = $meetingTopic;
} 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` < now()
and `end_time` > now()
and `start_time` REGEXP '".$dataDate."'
and `meet_state` != 2
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 `end_time` > now()
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, '办公会议' as meeting_type
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
FROM `[Q]meeting_key`
WHERE `start_time` regexp '".$dataDate."'
and `meet_state` != 2
and `end_time` > now()
and `room_id` = '".$roomId."'
";
$meetingArr = $this->db->getall($sqlStr);
if (!empty($meetingArr)) {
for ($i = 0; $i < count($meetingArr); $i++) {
$meet = $meetingArr[$i];
$meet_time = date("H:i", strtotime($meet['start_time'])).' ~ '.date("H:i", strtotime($meet['end_time']));
$state_code = m("meeting")->meetingState($meet['start_time'], $meet['end_time'], 1);
$state_text = m("meeting")->meetingState($meet['start_time'], $meet['end_time'], 2);
$list["meeting_list"][$i] = [
"meeting_id" => $meet['id'],
"meeting_name" => str_replace("\n", "",$meet['title']),
"meeting_time" => $meet_time,
"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" => $roomInfo['room_name'],
"meeting_name" => m("meeting")->meetingState($meet['start_time'], $meet['end_time'], 2),
"meeting_time" => $meet_time,
"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" => $roomInfo['room_name'],
"meeting_name" => '空闲中',
"meeting_time" => null,
"meeting_moderator" => null,
];
} else {
$list['basic_information'] = $meeting;
}
} else {
$list['basic_information'] = [
"meeting_room_name" => $roomInfo['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"=>"办公会议",
"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'],
"meeting_moderator"=>$meetInfo['compere'],
"meeting_state"=>$meetInfo['meet_state'],
"meeting_state_text"=>m('meeting')->hyarra[$meetInfo['meet_state']],
"meeting_type"=>"党委会议",
"meeting_attendees"=>[
[
"label"=>"出席",
"text"=>str_replace("\n", " ", $meetInfo['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;
}
}