openmeetAction.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. /**
  3. * 会议相关
  4. * 请求地址如:http://oa.test/api.php?m=openmeet&a=test&openkey=fee5efd3a93ca5c6a85b679cde60faa2
  5. */
  6. class openmeetClassAction extends openapiAction
  7. {
  8. public function testAction() {
  9. $str = $this->postdata;
  10. return json_encode($str);
  11. }
  12. // 绑定设备
  13. public function bindDeviceAction() {
  14. $rawArr = $this->getpostarr();
  15. if (!isset($rawArr['device_id'])) {
  16. return [
  17. "code"=>-1,
  18. "message"=>"参数错误!"
  19. ];
  20. }
  21. $rawData = m('meeting_room')->getone(" mac like '%{$rawArr['device_id']}%'", "id, room_name");
  22. $meetData = m('meeting')->getone(" status = 1 and meet_state = 1 and meeting_room = '{$rawData['room_name']}'");
  23. $now = date('Y年m月d日('.$this->getWeek().') H:i');
  24. if ($rawData['id'] ?? 0 > 0) {
  25. return [
  26. "code"=>200,
  27. "message"=>"已绑定",
  28. "data"=>[
  29. "room_id"=>$rawData['id'],
  30. "meetingRoomName"=>$rawData['room_name'],
  31. "meetingTime"=>$now,
  32. "stateText"=>isset($meetData['id']) ? "会议中" : "空闲中",
  33. "meetingState"=>isset($meetData['id']),
  34. "meetingId"=>$meetData['id'] ?? null,
  35. ]
  36. ];
  37. } else {
  38. return [
  39. "code"=>0,
  40. "message"=>"设备未绑定!"
  41. ];
  42. }
  43. }
  44. // 获取会议信息
  45. public function getMeetInfoAction() {
  46. $rawArr = $this->getpostarr();
  47. if (!isset($rawArr['room_id'])) {
  48. return [
  49. "code"=>-1,
  50. "message"=>"参数错误!",
  51. "data"=>[
  52. "meetingState"=>False
  53. ]
  54. ];
  55. }
  56. $rawData = m('meeting_room')->getone(" id = '{$rawArr['room_id']}'");
  57. if (!isset($rawData['room_name'])) {
  58. return [
  59. "code"=>-1,
  60. "message"=>"未找到会议室!",
  61. "data"=>[
  62. "meetingState"=>False
  63. ]
  64. ];
  65. }
  66. $meetData = m('meeting')->getone(" meet_state = 1 and meeting_room = '{$rawData['room_name']}'");
  67. if (!isset($meetData['id'])) {
  68. return [
  69. "code"=>2,
  70. "message"=>"暂无会议!",
  71. "data"=>[
  72. "meetingState"=>False
  73. ]
  74. ];
  75. }
  76. $topics = $this->db->getall("select `id`, `topic_title`, `topic_attendee`, `topic_state` from `[Q]meeting_topics` where mid = {$meetData['id']} order by sort");
  77. // 将日期时间字符串转换为UNIX时间戳
  78. $ts = strtotime($meetData['start_time']);
  79. // 根据需要格式化日期
  80. $meetStartDate = date("Y年m月d日", $ts);
  81. $meetDate=$meetStartDate." (".$this->getWeek($meetStartDate).") ".date("H:i", strtotime($meetData['start_time']))."~".date("H:i", strtotime($meetData['end_time']));
  82. $topicsList = [];
  83. // 会议议题处理
  84. for ($i = 0; $i < count($topics); $i++) {
  85. $info = $topics[$i];
  86. $topicsList[$i]['id'] = $info['id'];
  87. $topicsList[$i]['text'] = $info['topic_title'];
  88. $topicsList[$i]['tip'] = $this->topicState($info['topic_state']);
  89. $topicsList[$i]['state'] = $info['topic_state'];
  90. $topicsList[$i]['person'] = explode(',', $info['topic_attendee'] );
  91. }
  92. // 接口返回数据
  93. $res=[
  94. "code"=>200,
  95. "message"=>"请求成功!",
  96. "data"=>[
  97. "meetingId"=>$rawData['id'],
  98. "meetingRoomName"=>$rawData['room_name'],
  99. "meetingName"=>$meetData['title'],
  100. "meetingTime"=>$meetDate,
  101. "meetingPerson"=>explode(",", $meetData['attendees']),
  102. "meetingTopic"=>$topicsList ?? [],
  103. "meetingState"=>!empty($rawData['mac'])
  104. ]
  105. ];
  106. return $res;
  107. }
  108. // 切换议题
  109. public function switchTopicsAction() {
  110. $rawArr = $this->getpostarr();
  111. $this->showreturn($rawArr,'请求成功!');
  112. }
  113. protected function topicState($code): string
  114. {
  115. $info = '等待';
  116. switch ($code) {
  117. case 1:
  118. $info = '待进行';
  119. break;
  120. case 2:
  121. $info = '进行中';
  122. break;
  123. case 3:
  124. $info = '已结束';
  125. break;
  126. }
  127. return $info;
  128. }
  129. protected function getWeek($date=null) {
  130. if (!isset($date)) {
  131. $date = date("Y-m-d H:i:s");
  132. }
  133. // 将日期转换为时间戳
  134. $timestamp = strtotime($date);
  135. // 格式化输出星期几(返回值为英文)
  136. $weekday_en = date('l', $timestamp);
  137. // 如果需要显示中文星期几,则需要进行相关处理
  138. switch ($weekday_en) {
  139. case 'Monday':
  140. $weekday_cn = "星期一";
  141. break;
  142. case 'Tuesday':
  143. $weekday_cn = "星期二";
  144. break;
  145. case 'Wednesday':
  146. $weekday_cn = "星期三";
  147. break;
  148. case 'Thursday':
  149. $weekday_cn = "星期四";
  150. break;
  151. case 'Friday':
  152. $weekday_cn = "星期五";
  153. break;
  154. case 'Saturday':
  155. $weekday_cn = "星期六";
  156. break;
  157. default:
  158. $weekday_cn = "星期天";
  159. }
  160. return $weekday_cn;
  161. }
  162. }