Appointment.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\controller\base\Permissions;
  4. use think\Db;
  5. class Appointment extends Permissions
  6. {
  7. private function getModel()
  8. {
  9. return new \app\common\model\Appointment();
  10. }
  11. public function index()
  12. {
  13. $pid = $this->request->param('pid', 0, 'intval');
  14. if ($this->request->isAjax()) {
  15. $post = $this->request->param();
  16. $where = [
  17. 'provider_id' => $pid
  18. ];
  19. if (!empty($post["title"])) {
  20. $where["title"] = ['like', '%' . $post["title"] . '%'];
  21. }
  22. if (isset($post["start_time"]) and !empty($post["start_time"])) {
  23. $timerang = explode(' - ', $post["start_time"]);
  24. $min_time = strtotime($timerang[0]);
  25. $max_time = $timerang[0] == $timerang[1] ? $min_time + 24 * 3600 - 1 : strtotime($timerang[1]??'');
  26. $where["start_time"] = [['>=', $min_time], ['<=', $max_time]];
  27. }
  28. if (isset($post["create_time"]) and !empty($post["create_time"])) {
  29. $timerang = explode(' - ', $post["create_time"]);
  30. $min_time = strtotime($timerang[0]);
  31. $max_time = $timerang[0] == $timerang[1] ? $min_time + 24 * 3600 - 1 : strtotime($timerang[1]??'');
  32. $where["create_time"] = [['>=', $min_time], ['<=', $max_time]];
  33. }
  34. $model = $this->getModel();
  35. $count = $model->where($where)->count();
  36. $data = $model->where($where)->page($post['page']??0, $post['limit']??15)->order('id desc')->select();
  37. return array('code' => 0, 'count' => $count, 'data' => $data);
  38. } else {
  39. return $this->fetch();
  40. }
  41. }
  42. public function publish()
  43. {
  44. $id = $this->request->param('id', 0, 'intval');
  45. $pid = $this->request->param('pid', 0, 'intval');
  46. $this->assign('pid', $pid);
  47. $model = $this->getModel();
  48. $post = $this->request->post();
  49. $post['provider_id'] = $pid;
  50. if ($this->request->isPost()) {
  51. if (isset($post['start_time']) && !empty($post['start_time'])) {
  52. $timerang = explode(' - ', $post["start_time"]);
  53. $min_time = strtotime(str_replace(['年', '月'], '-', $timerang[0]));
  54. $max_time = $timerang[0] == $timerang[1] ? $min_time + 24 * 3600 - 1 : strtotime(str_replace(['年', '月'], '-', $timerang[1]??''));
  55. $post['start_time'] = $min_time;
  56. $post['end_time'] = $max_time;
  57. }
  58. if (isset($post['morning_start_time']) && !empty($post['morning_start_time'])) {
  59. $timerang = explode(' - ', $post["morning_start_time"]);
  60. $post['morning_start_time'] = $timerang[0];
  61. $post['morning_end_time'] = $timerang[1];
  62. }
  63. if (isset($post['afternoon_start_time']) && !empty($post['afternoon_start_time'])) {
  64. $timerang = explode(' - ', $post["afternoon_start_time"]);
  65. $post['afternoon_start_time'] = $timerang[0];
  66. $post['afternoon_end_time'] = $timerang[1];
  67. }
  68. if (isset($post['night_start_time']) && !empty($post['night_start_time'])) {
  69. $timerang = explode(' - ', $post["night_start_time"]);
  70. $post['night_start_time'] = $timerang[0];
  71. $post['night_end_time'] = $timerang[1];
  72. }
  73. //验证
  74. $validate = new \think\Validate([
  75. ['title|服务名称', 'max:50'],
  76. ['provider_id', 'require|number'],
  77. // ['phone|咨询电话', 'require|max:50'],
  78. ['start_time', 'number', '排号日期格式不对'],
  79. ['end_time', 'number', '排号日期格式不对'],
  80. ['morning_num|上午放号个数', 'number'],
  81. ['morning_start_time', 'length:8', '上午时间格式不对'],
  82. ['morning_end_time', 'length:8', '上午时间格式不对'],
  83. ['afternoon_num|下午放号个数', 'number'],
  84. ['afternoon_start_time', 'length:8', '下午时间格式不对'],
  85. ['afternoon_end_time', 'length:8', '下午时间格式不对'],
  86. ['night_num|晚上放号个数', 'number'],
  87. ['night_start_time', 'length:8', '晚上时间格式不对'],
  88. ['night_end_time', 'length:8', '晚上时间格式不对'],
  89. ]);
  90. if (!$validate->check($post)) {
  91. $this->error('提交失败:' . $validate->getError());
  92. }
  93. } else {
  94. $this->assign('phone', (new \app\common\model\Specialist())->where('id', $pid)->value('phone'));
  95. }
  96. if ($id > 0) {
  97. //修改
  98. $data = $model->where('id', $id)->find();
  99. if (empty($data)) {
  100. $this->error('id不正确');
  101. }
  102. if ($this->request->isPost()) {
  103. if (false == $model->allowField(true)->save($post, ['id' => $id])) {
  104. $this->error('修改失败');
  105. } else {
  106. $this->success('修改成功', 'index', ['pid' => $pid]);
  107. }
  108. } else {
  109. $this->assign('data', $data);
  110. return $this->fetch();
  111. }
  112. } else {
  113. //新增
  114. if ($this->request->isPost()) {
  115. if (false == $model->allowField(true)->save($post)) {
  116. $this->error('添加失败');
  117. } else {
  118. $this->success('添加成功', 'index', ['pid' => $pid]);
  119. }
  120. } else {
  121. return $this->fetch();
  122. }
  123. }
  124. }
  125. public function delete()
  126. {
  127. if ($this->request->isAjax()) {
  128. $id = $this->request->param('id', 0, 'intval');
  129. if (false == $this->getModel()->where('id', $id)->delete()) {
  130. $this->error('删除失败');
  131. } else {
  132. $this->success('删除成功', 'index');
  133. }
  134. }
  135. }
  136. public function deletes()
  137. {
  138. if ($this->request->isAjax()) {
  139. $post = $this->request->param();
  140. $ids = $post['ids'];
  141. if ($this->getModel()->where('id', 'in', $ids)->delete()) {
  142. $this->success('删除成功');
  143. }
  144. }
  145. }
  146. }