Meeting.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use app\common\model\MeetingModel;
  5. use app\common\model\MeetingOrder;
  6. use app\common\model\OfficeModel;
  7. use app\common\model\Park;
  8. use think\Db;
  9. /**
  10. * 会议室管理
  11. */
  12. class Meeting extends Api
  13. {
  14. protected $noNeedLogin = ['lists', 'parkLists', 'listInfo', 'qustion', 'qustionInfo', 'buildInfo', 'protable', 'trueTime', 'chooseTime', 'GgInfo'];
  15. protected $noNeedRight = ['*'];
  16. /**
  17. * 会议室列表
  18. * @param string $page 页数
  19. * @param string $limit 条数
  20. * @param string $area_name 条数
  21. * @param string $area_id 地区id
  22. * @param string $num 座位
  23. * @param string $money 租金
  24. */
  25. public function lists()
  26. {
  27. $page = $this->request->get('page');
  28. $limit = $this->request->get('limit');
  29. $area_name = $this->request->get('area_name');
  30. $area_id = $this->request->get('area_id');
  31. $num = $this->request->get('num');
  32. $money = $this->request->get('money');
  33. $mp = [];
  34. if (isset($area_id) && !empty($area_id)) $mp['c_id'] = $area_id;
  35. if (isset($area_name) && !empty($area_name)) {
  36. $name = Park::where('name', 'like', '%' . $area_name . '%')->column('id');
  37. $idStr = implode(',', $name);
  38. if (!empty($idStr)) {
  39. $mp['p_id'] = ['in', $idStr];
  40. } else {
  41. $mp['p_id'] = 0;
  42. }
  43. };
  44. if (isset($num) && !empty($num)) {
  45. if ($num == 2) {
  46. $mp['yizi_count'] = ['between', '0,10'];
  47. } else if ($num == 3) {
  48. $mp['yizi_count'] = ['between', '10,30'];
  49. } else if ($num == 4) {
  50. $mp['yizi_count'] = ['between', '30,50'];
  51. } else if ($num == 5) {
  52. $mp['yizi_count'] = ['between', '50,100'];
  53. } else if ($num == 6) {
  54. $mp['yizi_count'] = ['between', '100,200'];
  55. } else if ($num == 7) {
  56. $mp['yizi_count'] = ['between', '200,300'];
  57. } else if ($num == 8) {
  58. $mp['yizi_count'] = ['>', '300'];
  59. }
  60. }
  61. if (isset($money) && !empty($money)) {
  62. if ($money == 2) {
  63. $mp['money_num'] = ['between', '0,100'];
  64. } else if ($money == 3) {
  65. $mp['money_num'] = ['between', '100,200'];
  66. } else if ($num == 4) {
  67. $mp['money_num'] = ['between', '200,500'];
  68. } else if ($money == 5) {
  69. $mp['money_num'] = ['between', '500,1000'];
  70. } else if ($money == 6) {
  71. $mp['money_num'] = ['>', '1000'];
  72. }
  73. }
  74. if (empty($area_name)) {
  75. $user = $this->auth->getUser();
  76. if ($user && $user['p_id'] != 0) $mp['p_id'] = $user['p_id'];
  77. };
  78. $mp['switch'] = 1;
  79. if (!$page) {
  80. $pages = '0,10';
  81. } else {
  82. $page = $page - 1;
  83. if ($page < 0) $page = 0;
  84. $pages = $page . ',' . $limit;
  85. }
  86. $meetingModel = new MeetingModel();
  87. $field = 'id,image,title,mongey,mianji,address,yizi';
  88. $data = $meetingModel->where($mp)->limit($pages)->field($field)->order('sort desc')->select();
  89. if ($data) {
  90. return $this->success('', $data);
  91. } else {
  92. return $this->success('暂无数据');
  93. }
  94. }
  95. /**
  96. * 会议详情
  97. * @param string $id id
  98. *
  99. */
  100. public function listInfo()
  101. {
  102. $id = $this->request->get('id');
  103. if (!isset($id) || empty($id)) return $this->error('缺少参数');
  104. $meetingModel = new MeetingModel();
  105. $data = $meetingModel->where('switch', 1)
  106. ->where('id', $id)
  107. ->order('sort desc')
  108. ->find();
  109. $count = count($data['gongzuori_shijina_ids']);
  110. $data['gongzui_start_time'] = $data['gongzuori_shijina_ids'][0];
  111. $data['gongzui_start_end'] = $data['gongzuori_shijina_ids'][$count - 1];
  112. $count = count($data['xiuxiri_shijian_ids']);
  113. $data['xiuxi_start_time'] = $data['xiuxiri_shijian_ids'][0];
  114. $data['xiuxi_start_end'] = $data['xiuxiri_shijian_ids'][$count - 1];
  115. $user = $this->auth->getUser();
  116. if ($user) $data['miangei_time'] = $user['edu'];
  117. if ($data) {
  118. return $this->success('', $data);
  119. } else {
  120. return $this->success('暂无数据');
  121. }
  122. }
  123. /**
  124. * 会议室选择预约时间
  125. * @param string $m_id 会议室id
  126. * @param string $make_day 所选日期2021-03-11
  127. */
  128. public function chooseTime()
  129. {
  130. $data = $this->request->get();
  131. if (!isset($data['m_id']) || empty($data['m_id'])) return $this->success('参数错误101');
  132. if (!isset($data['make_day']) || empty($data['make_day'])) return $this->success('参数错误102');
  133. $meetingModel = new MeetingModel();
  134. $meetingOrder = new MeetingOrder();
  135. $issetTime = $meetingOrder->where('m_id', $data['m_id'])->where('make_day', $data['make_day'])->column('make_time');
  136. if ($issetTime) {
  137. $arr = array();
  138. foreach ($issetTime as $v) {
  139. $arr = array_merge($arr,explode(',',$v));
  140. }
  141. }
  142. $arr = array_unique($arr);
  143. $meetingData = $meetingModel->where('id', $data['m_id'])->field('id,title,image,address,xiuxiri,gongziri,gongzuori_shijina_ids,xiuxiri_shijian_ids')->find();
  144. $res = [];
  145. if (empty($arr)) {
  146. $week = date('w', strtotime($data['make_day']));
  147. if ($week == 6 || $week == 0) {
  148. $time = explode(',',$meetingData['xiuxiri_shijian_ids']);
  149. foreach ($time as $k=>$v) {
  150. $time[$k]['value'] = $v;
  151. $time[$k]['status'] = 1;
  152. }
  153. } else {
  154. $time = explode(',',$meetingData['gongzuori_shijina_ids']);
  155. foreach ($time as $k=>$v) {
  156. $time[$k]['value'] = $v;
  157. $time[$k]['status'] = 1;
  158. }
  159. }
  160. } else {
  161. $week = date('w', strtotime($data['make_day']));
  162. if ($week == 6 || $week == 0) {
  163. $time = explode(',',$meetingData['xiuxiri_shijian_ids']);
  164. foreach ($time as $k=>$v) {
  165. foreach ($arr as $m=>$n) {
  166. if ($v==$n) {
  167. $res[$k]['value'] = $v;
  168. $res[$k]['status'] = 0;
  169. break;
  170. } else {
  171. $res[$k]['value'] = $v;
  172. $res[$k]['status'] = 1;
  173. }
  174. }
  175. }
  176. } else {
  177. $time = $meetingData['gongzuori_shijina_ids'];
  178. foreach ($time as $k=>$v) {
  179. foreach ($arr as $m=>$n) {
  180. if ($v==$n) {
  181. $res[$k]['value'] = $v;
  182. $res[$k]['status'] = 0;
  183. break;
  184. } else {
  185. $res[$k]['value'] = $v;
  186. $res[$k]['status'] = 1;
  187. }
  188. }
  189. }
  190. }
  191. }
  192. return $this->success('',$res);
  193. }
  194. /**
  195. * 预约订单信息
  196. * @ApiMethod (POST)
  197. * @param string $m_id 会议室id
  198. * @param string $make_day 所选日期2021-03-11
  199. * @param string $make_time 所选时间段多个用,号分割
  200. */
  201. public function order()
  202. {
  203. $data = $this->request->post();
  204. if (!isset($data['m_id']) || empty($data['m_id'])) return $this->success('参数错误101');
  205. if (!isset($data['make_day']) || empty($data['make_day'])) return $this->success('参数错误102');
  206. if (!isset($data['make_time']) || empty($data['make_time'])) return $this->success('参数错误103');
  207. $meetingModel = new MeetingModel();
  208. $data['meeting'] = $meetingModel->where('id', $data['m_id'])->field('id,title,image,address,xiuxiri,gongziri')->find();
  209. $week = date('w', strtotime($data['make_day']));
  210. $countTime = count(explode(',', $data['make_time']));
  211. $data['lang_time'] = (60 * $countTime) . '分钟';
  212. if ($week == 6 || $week == 0) {
  213. $data['money'] = $data['meeting']['xiuxiri'] * $countTime;
  214. } else {
  215. $data['money'] = $data['meeting']['gongziri'] * $countTime;
  216. }
  217. $user = $this->auth->getUser();
  218. $data['qiye_name'] = $user['company'];
  219. $data['is_qiye'] = 0;
  220. if ($user['group_id'] == 2) {
  221. $data['is_qiye'] = 1;
  222. }
  223. if ($user['edu'] >= 60 * $countTime) {
  224. $data['money'] = "免费";
  225. $time = ($user['edu'] - (60 * $countTime)) / 60;
  226. $data['notice'] = "(没有超出免费使用时间,剩余" . $time . "小时)";
  227. } else {
  228. if ($week == 6 || $week == 0) {
  229. $data['money'] = $data['meeting']['xiuxiri'] * (((60 * $countTime) - $user['edu']) / 60);
  230. $data['notice'] = "(已超出免费时长本次收费)";
  231. } else {
  232. $data['money'] = $data['meeting']['gongziri'] * (((60 * $countTime) - $user['edu']) / 60);
  233. $data['notice'] = "(已超出免费时长本次收费)";
  234. }
  235. }
  236. return $this->success('', $data);
  237. }
  238. /**
  239. * 提交预约
  240. * @ApiMethod (POST)
  241. * @param string $m_id 会议室id
  242. * @param string $make_day 所选日期2021-03-11
  243. * @param string $make_time 所选时间段多个用,号分割
  244. */
  245. public function trueTime()
  246. {
  247. $data = $this->request->post();
  248. if (!isset($data['m_id']) || empty($data['m_id'])) return $this->success('参数错误101');
  249. if (!isset($data['make_day']) || empty($data['make_day'])) return $this->success('参数错误102');
  250. if (!isset($data['make_time']) || empty($data['make_time'])) return $this->success('参数错误103');
  251. $orderModel = new MeetingOrder();
  252. $issetTime = $orderModel->where('m_id', $data['m_id'])->where('make_day', $data['make_day'])->column('make_time');
  253. if ($issetTime) {
  254. $arr = array();
  255. foreach ($issetTime as $v) {
  256. $arr = array_merge($arr,explode(',',$v));
  257. }
  258. }
  259. $arr = array_unique($arr);
  260. $makeTimeArr = explode(',',$data['make_time']);
  261. $chongfuArr=array_intersect($arr,$makeTimeArr);
  262. if ($chongfuArr) return $this->error('刚刚有人预约了此时间段,请退出重新选择时间');
  263. $meetingModel = new MeetingModel();
  264. $data['meeting'] = $meetingModel->where('id', $data['m_id'])->field('id,title,image,address,xiuxiri,gongziri')->find();
  265. $week = date('w', strtotime($data['make_day']));
  266. $countTime = count(explode(',', $data['make_time']));
  267. $data['lang_time'] = (60 * $countTime) . '分钟';
  268. if ($week == 6 || $week == 0) {
  269. $data['money'] = $data['meeting']['xiuxiri'] * $countTime;
  270. } else {
  271. $data['money'] = $data['meeting']['gongziri'] * $countTime;
  272. }
  273. $user = $this->auth->getUser();
  274. $data['qiye_name'] = $user['company'];
  275. $data['is_qiye'] = 0;
  276. if ($user['group_id'] == 2) {
  277. $data['is_qiye'] = 1;
  278. }
  279. if ($user['edu'] >= 60 * $countTime) {
  280. $data['money'] = "免费";
  281. $time = ($user['edu'] - (60 * $countTime)) / 60;
  282. $data['notice'] = "(没有超出免费使用时间,剩余" . $time . "小时)";
  283. } else {
  284. if ($week == 6 || $week == 0) {
  285. $data['money'] = $data['meeting']['xiuxiri'] * (((60 * $countTime) - $user['edu']) / 60);
  286. $data['notice'] = "(已超出免费时长本次收费)";
  287. } else {
  288. $data['money'] = $data['meeting']['gongziri'] * (((60 * $countTime) - $user['edu']) / 60);
  289. $data['notice'] = "(已超出免费时长本次收费)";
  290. }
  291. }
  292. $year = date('Y', time());
  293. $month = date('m', time());
  294. $day = date('d', time());
  295. $save = [
  296. 'number' => $year . $month . $day . 'N' . rand(0, 10000),
  297. 'm_id' => $data['m_id'],
  298. 'u_id' => $user['id'],
  299. 'make_day' => $data['make_day'],
  300. 'make_time' => $data['make_time'],
  301. 'money' => $data['money'],
  302. 'long_time' => $data['lang_time'],
  303. 'qi_name' => $user['company'],
  304. 'notice' => $data['notice'],
  305. 'mian_time' => $user['edu'],
  306. 'create_time' => date('Y-m-d H:i:s', time())
  307. ];
  308. $save = $orderModel->allowField(true)->save($save);
  309. if ($save) {
  310. $id = $orderModel->getLastInsID();
  311. if ($user['group_id']==2) {
  312. if ($user['edu'] >= 60 * $countTime) {
  313. $data['money'] = "免费";
  314. $time = ($user['edu'] - (60 * $countTime)) / 60;
  315. $userTime = $user['edu']-$countTime*60;
  316. Db::name('user')->where('id',$user['id'])->update(['edu' => $userTime]);
  317. } else {
  318. Db::name('user')->where('id',$user['id'])->update(['edu' => 0]);
  319. }
  320. }
  321. return $this->success('预约成功', ['id' => $id]);
  322. } else {
  323. return $this->error('预约失败');
  324. }
  325. }
  326. /**
  327. * 订单详情
  328. * @param string $id id
  329. *
  330. */
  331. public function orderInfo()
  332. {
  333. $id = $this->request->get('id');
  334. if (!isset($id) || empty($id)) return $this->error('参数错误');
  335. $orderModel = new MeetingOrder();
  336. $data = $orderModel->with(['meeting'])
  337. ->where('id',$id)
  338. ->find();
  339. $user = $this->auth->getUser();
  340. $data['company'] = $user['company'];
  341. if ($user['group_id'] == 2) $data['is_qiye'] = 1;
  342. return $this->success('',$data);
  343. }
  344. }