Index.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace app\api\controller\doctor;
  3. use app\common\controller\Apic;
  4. use app\common\library\Sms;
  5. use think\Exception;
  6. use think\Validate;
  7. use think\Db;
  8. /**
  9. * 首页
  10. */
  11. class Index extends Apic
  12. {
  13. protected $noNeedLogin = [];
  14. protected $noNeedRight = '*';
  15. /*public function test(){
  16. $page = input('page',1);//分页
  17. $a = $this->get_page_week($page);
  18. foreach($a as &$v){
  19. $v = date('Y-m-d H:i:s',$v);
  20. }
  21. dump($a);
  22. }*/
  23. private function get_page_week($page = 1)
  24. {
  25. $time = time() + (($page - 1)*604800);
  26. $arr = [
  27. strtotime('Monday this week',$time),
  28. strtotime('Sunday this week',$time),
  29. ];
  30. return $arr;
  31. }
  32. //获取排班详情
  33. public function paiban_info(){
  34. $today = date('Y-m-d');//今天
  35. $page = input('page',1);//分页
  36. if($page < 1){
  37. $this->error('不能修改本周前的排班');
  38. }
  39. //某周,page=1是本周
  40. $this_week = $this->get_page_week($page);
  41. //医生排班
  42. $paiban = Db::name('doctor_paiban')->where('doctor_id',$this->auth->id)->where('activetime','BETWEEN',$this_week)->order('activetime asc')->column('activetime,active');
  43. //dump($paiban);
  44. //组合数据
  45. $week_text = [1=>'周一',2=>'周二',3=>'周三',4=>'周四',5=>'周五',6=>'周六',7=>'周日'];
  46. $week_data = [];
  47. for($i=1;$i<=7;$i++){
  48. $i_time = $this_week[0] + 86400*($i-1);
  49. $i_data = [
  50. 'time' => $i_time,
  51. 'date' => date('Y-m-d',$i_time),
  52. 'date_text' => date('d日',$i_time),
  53. 'week' => date('w',$i_time),
  54. 'is_today' => 0,
  55. 'year' => date('Y',$i_time),
  56. 'month' => date('n',$i_time),
  57. ];
  58. if($i_data['date'] == $today){
  59. $i_data['is_today'] = 1;//是否今天
  60. }
  61. if($i_data['week'] == 0){
  62. $i_data['week'] = 7; //周天转换
  63. }
  64. $i_data['week_text'] = $week_text[$i_data['week']];//周一 到 周日
  65. //今天各整点,早8,晚20
  66. $i_child = [];
  67. for($y=8;$y<=20;$y++){
  68. $y_hour = $i_time + $y*3600;
  69. $child = [
  70. 'time' => $y_hour,
  71. 'date' => date('Y-m-d H:i',$y_hour),
  72. 'date_text' => date('H:i',$y_hour),
  73. 'active' => 0,
  74. ];
  75. if(isset($paiban[$y_hour]) && $paiban[$y_hour] == 1){
  76. $child['active'] = 1;
  77. }
  78. $i_child[] = $child;
  79. }
  80. $i_data['child'] = $i_child;
  81. //
  82. $week_data[] = $i_data;
  83. }
  84. //dump($week_data);
  85. $this->success(1,$week_data);
  86. }
  87. //修改排班
  88. public function paiban_edit(){
  89. $active_data = input('active_data','','htmlspecialchars_decode');
  90. if(!$active_data){
  91. $this->error();
  92. }
  93. $active_data = json_decode($active_data,true);
  94. if(!is_array($active_data)){
  95. $this->error();
  96. }
  97. $old_active = [];//需要删除的
  98. foreach($active_data as $key => $val){
  99. if(!isset($val['activetime']) || !isset($val['active']) || empty($val['activetime'])){continue;}
  100. $val['active'] = $val['active'] == 1 ? 1 : 0;
  101. $old_active[] = $val['activetime'];
  102. //需要新增的
  103. $data = [
  104. 'doctor_id' => $this->auth->id,
  105. 'activetime' => $val['activetime'],
  106. 'active' => $val['active'],
  107. ];
  108. $all_data[] = $data;
  109. }
  110. Db::startTrans();
  111. $rs_del = Db::name('doctor_paiban')->where('doctor_id',$this->auth->id)->where('activetime','IN',$old_active)->delete();
  112. if($rs_del === false){
  113. Db::rollback();
  114. $this->error('设置失败');
  115. }
  116. $rs_add = Db::name('doctor_paiban')->insertAll($all_data);
  117. if($rs_add === false){
  118. Db::rollback();
  119. $this->error('设置失败');
  120. }
  121. Db::commit();
  122. $this->success('设置成功');
  123. }
  124. }