openmeetAction.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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 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. ];
  52. }
  53. $rawData = m('meeting_room')->getone(" id = '{$rawArr['room_id']}'");
  54. if (!isset($rawData['room_name'])) {
  55. return [
  56. "code"=>-1,
  57. "message"=>"未找到会议室!"
  58. ];
  59. }
  60. $meetData = m('meeting')->getone(" state = 1 and meeting_room = '{$rawData['room_name']}'");
  61. if (!isset($meetData['id'])) {
  62. return [
  63. "code"=>2,
  64. "message"=>"暂无会议!",
  65. "data"=>[
  66. "meetingState"=>False
  67. ]
  68. ];
  69. }
  70. $topics = $this->db->getall("select `id`, `topic_title`, `topic_attendee`, `topic_state` from `[Q]meeting_topics` where mid = {$meetData['id']} order by sort");
  71. // 将日期时间字符串转换为UNIX时间戳
  72. $ts = strtotime($meetData['meeting_time']);
  73. // 根据需要格式化日期
  74. $meetStartDate = date("Y年m月d日", $ts);
  75. $meetDate=$meetStartDate." (".$this->getWeek($meetStartDate).") ".date("H:i", strtotime($meetData['meeting_time']))."~".date("H:i", strtotime($meetData['end_time']));
  76. $topicsList = [];
  77. for ($i = 0; $i < count($topics); $i++) {
  78. $info = $topics[$i];
  79. $topicsList[$i]['id'] = $info['id'];
  80. $topicsList[$i]['text'] = $info['topic_title'];
  81. $topicsList[$i]['tip'] = $this->topicState($info['topic_state']);
  82. $topicsList[$i]['state'] = $info['topic_state'];
  83. $topicsList[$i]['person'] = explode(',', $info['topic_attendee'] );
  84. }
  85. $res=[
  86. "code"=>200,
  87. "message"=>"请求成功!",
  88. "data"=>[
  89. "meetingId"=>$rawData['id'],
  90. "meetingRoomName"=>$rawData['room_name'],
  91. "meetingName"=>$meetData['title'],
  92. "meetingTime"=>$meetDate,
  93. "meetingPerson"=>explode(",", $meetData['attendees']),
  94. "meetingTopic"=>$topicsList ?? [],
  95. "meetingState"=>True
  96. ]
  97. ];
  98. return $res;
  99. }
  100. // 切换议题
  101. public function switchTopicsAction() {
  102. $rawArr = $this->getpostarr();
  103. $this->showreturn($rawArr,'请求成功!');
  104. }
  105. protected function topicState($code): string
  106. {
  107. $info = '等待';
  108. switch ($code) {
  109. case 1:
  110. $info = '待进行';
  111. break;
  112. case 2:
  113. $info = '进行中';
  114. break;
  115. case 3:
  116. $info = '已结束';
  117. break;
  118. }
  119. return $info;
  120. }
  121. protected function getWeek($date=null) {
  122. if (!isset($date)) {
  123. $date = date("Y-m-d H:i:s");
  124. }
  125. // 将日期转换为时间戳
  126. $timestamp = strtotime($date);
  127. // 格式化输出星期几(返回值为英文)
  128. $weekday_en = date('l', $timestamp);
  129. // 如果需要显示中文星期几,则需要进行相关处理
  130. switch ($weekday_en) {
  131. case 'Monday':
  132. $weekday_cn = "星期一";
  133. break;
  134. case 'Tuesday':
  135. $weekday_cn = "星期二";
  136. break;
  137. case 'Wednesday':
  138. $weekday_cn = "星期三";
  139. break;
  140. case 'Thursday':
  141. $weekday_cn = "星期四";
  142. break;
  143. case 'Friday':
  144. $weekday_cn = "星期五";
  145. break;
  146. case 'Saturday':
  147. $weekday_cn = "星期六";
  148. break;
  149. default:
  150. $weekday_cn = "星期天";
  151. }
  152. return $weekday_cn;
  153. }
  154. }