AttendanceGroupClass.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace app\common\model;
  3. use app\hander\HelpHander;
  4. use think\Db;
  5. use think\Exception;
  6. use think\Model;
  7. class AttendanceGroupClass extends Model
  8. {
  9. public function add(){
  10. $data = [
  11. 'group_id' => input('groupId/d',0),
  12. 'json' => input('json','','trim'),
  13. 'month' => input('month','','trim'),
  14. 'org_id' => input('orgId/d',0),
  15. ];
  16. if($data['group_id'] <= 0 || !$data['month']){
  17. HelpHander::error('参数错误');
  18. }
  19. $json = json_decode($data['json'],true);
  20. Db::startTrans();
  21. try{
  22. $month = $data['month'].'-01';
  23. // 删除原数据
  24. Db::name('attendance_group_class')
  25. ->where('group_id',$data['group_id'])
  26. ->where('day','>=',$month)
  27. ->delete();
  28. $arr = [];
  29. foreach ($json as $k=>$v){
  30. $arr[] = [
  31. 'org_id' => $data['org_id'],
  32. 'group_id' => $data['group_id'],
  33. 'class_id' => $v['classId'],
  34. 'day' => $v['day']
  35. ];
  36. }
  37. if($arr){
  38. $res = Db::name('attendance_group_class')->insertAll($arr);
  39. if($res != count($arr)){
  40. \exception('操作失败1');
  41. }
  42. }
  43. Db::commit();
  44. }catch (Exception $e){
  45. Db::rollback();
  46. HelpHander::error($e->getMessage());
  47. }
  48. return true;
  49. }
  50. public function listDuringMonth($month,$groupId,$orgId){
  51. $map[] = ['agc.org_id','=',$orgId];
  52. $map[] = ['agc.group_id','=',$groupId];
  53. if($month != ''){
  54. $map[] = ['agc.day','like', $month.'%'];
  55. }
  56. $lists = Db::name('attendance_group_class')
  57. ->alias('agc')
  58. ->join('attendance_class ac','ac.id = agc.class_id')
  59. ->where($map)
  60. ->field('agc.class_id,ac.name as class_name,agc.day as date_time')
  61. ->order('agc.id asc')
  62. ->select();
  63. return $lists?$lists:[];
  64. }
  65. public function getClassByDay($userId){
  66. $group = Db::name('attendance_group_user')
  67. ->alias('agu')
  68. ->join('attendance_group ag','ag.id = agu.group_id')
  69. ->where('agu.user_id',$userId)
  70. ->where('ag.del',0)
  71. ->field('ag.*')
  72. ->find();
  73. if(!$group){
  74. return false;
  75. }
  76. $day = date('Y-m-d');
  77. if($group['type'] == 1){ //固定班制
  78. $w = date('w');
  79. $content = json_decode($group['content'],true);
  80. $week = $content['week'];
  81. $classId = 0;
  82. foreach ($week as $k=>$v){
  83. if($w == $v['week']){
  84. $classId = empty($v['class_id'])?0:$v['class_id'];
  85. }
  86. }
  87. // 今日是否有必打卡特殊日
  88. $sign = $content['sign'];
  89. foreach ($sign as $k=>$v){
  90. if($day == $v['day']){
  91. $classId = empty($v['class_id'])?0:$v['class_id'];
  92. }
  93. }
  94. // 今日是否有不必打卡特殊日
  95. $unsign = $content['unsign'];
  96. foreach ($unsign as $k=>$v){
  97. if($day == $v['day']){
  98. $classId = 0;
  99. }
  100. }
  101. $class = [];
  102. if($classId > 0){
  103. $class = Db::name('attendance_class')->where('id',$classId)->where('del',0)->field('content,org_id,id as class_id')->find();
  104. if($class){
  105. $class['group_id'] = $group['id'];
  106. $class['group_name'] = $group['name'];
  107. $class['cate'] = $group['cate'];
  108. $class['addr'] = $group['addr'];
  109. }
  110. }
  111. }else{ // 排班制
  112. $class = Db::name('attendance_group')
  113. ->alias('ag')
  114. ->join('attendance_group_class agc','ag.id = agc.group_id')
  115. ->join('attendance_class ac','ac.id = agc.class_id')
  116. ->where('ag.id',$group['id'])
  117. ->where('agc.day',$day)
  118. ->field('ac.content,agc.group_id,agc.class_id,ag.org_id,ag.name as group_name,ag.cate,ag.addr')
  119. ->find(); // 今日排班
  120. }
  121. return $class;
  122. }
  123. }