model = new Member(); } /** * 新增会员 */ public function add(array $data){ return $this->model->create($data)?->member_id ?? 0; } /** * 更新会员 * @param array $data * @return true */ public function edit(array $data) { $member = $this->findMemberInfo(['member_id' => $this->member_id]); if($member->isEmpty()) throw new ApiException('MEMBER_NOT_EXIST'); $member->allowField(['nickname', 'headimg', 'birthday', 'sex', 'last_visit_time'])->save($data); return true; } /** * 获取会员信息 * @return array */ public function getInfo() { $information = []; $schedules = new Schedules(); $campuses = new Campuses(); $sales = new Sales(); $field = 'member_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, wx_openid, weapp_openid, commission, commission_get, commission_cash_outing'; $info = $this->model->where([['member_id', '=', $this->member_id]]) ->with(['member_level_name_bind']) ->field($field) ->append(['sex_name']) ->findOrEmpty()->toArray(); $role_id = get_user_type($this->member_id); $staff = (new Staff())->where(['member_id' => $this->member_id])->find(); $information['member_id'] = $this->member_id; $information['staff_id'] = $staff['id']; $information['headimg'] = $staff['header']; $information['name'] = $staff['name'] ?? ''; $information['gender'] = $staff['gender']; $information['phone'] = $staff['phone']; $information['email'] = $staff['email']; $information['birthday'] = $info['birthday']; $information['campuses_id'] = $staff['campuses_id']; $information['campuses_name'] = $campuses->where(['id' => $information['campuses_id']])->value('name'); $information['role_id'] = $role_id; $information['grade'] = $staff['grade']; if($role_id == 1){ //教练信息 $information['zsks'] = $schedules->where(['staff_id' => $staff['id']])->count(); $information['zsbj'] = $schedules->where(['staff_id' => $staff['id']])->group("class_id")->count(); $students_ids = $schedules->where(['staff_id' => $staff['id']])->column("students_ids"); $all_ids_string = implode(',', $students_ids); $all_ids_array = explode(',', $all_ids_string); $unique_ids = array_unique(array_filter($all_ids_array)); $information['zfzxy'] = count($unique_ids); $startOfMonth = date('Y-m-01'); // 本月第一天,例如:2025-04-01 $endOfMonth = date('Y-m-t'); // 本月最后一天,例如:2025-04-30 $information['dyzsks'] = $schedules->where(['staff_id' => $staff['id']])->whereBetween('date_time', [$startOfMonth, $endOfMonth])->count(); $students_ids = $schedules->where(['staff_id' => $staff['id']])->whereBetween('date_time', [$startOfMonth, $endOfMonth])->column("students_ids"); $all_ids_string = implode(',', $students_ids); $all_ids_array = explode(',', $all_ids_string); $unique_ids = array_unique(array_filter($all_ids_array)); $information['dyzfzxy'] = count($unique_ids); } if($role_id == 2){ //销售信息 $information['yjds'] = $sales->where(['add_staff_id' => $staff['id']])->count(); $information['yqds'] = $sales->where(['add_staff_id' => $staff['id'],'is_status' => 2])->count(); $information['goal'] = get_goal_price($staff['id']); } if($role_id == 3){ //学员信息 $data = (new Students())->where(['user_id' => $staff['id']])->find(); $information['height'] = $data['height']; $information['weight'] = $data['weight']; $information['score'] = $data['score']; $information['students_id'] = $data['id']; $information['evaluation_time'] = $data['evaluation_time']; // $info['name'] = $data['name'] ?? ''; //课程 $classes = new Classes(); $classes_list = $classes ->alias("a") ->join(['school_venues' => 'b'],'a.venue_id = b.id','left') ->join(['school_timetables' => 'c'],'a.id = c.class_id','left') ->join(['school_courses' => 'd'],'c.courses_id = d.id','left') ->whereRaw("FIND_IN_SET(?, a.max_students)", [$information['students_id']]) ->group("d.id") ->column("d.name"); $information['classes_list'] = implode(",", $classes_list); $information['classes_count'] = count($classes_list); //总课时数 $duration_count = $classes ->alias("a") ->join(['school_venues' => 'b'],'a.venue_id = b.id','left') ->join(['school_timetables' => 'c'],'a.id = c.class_id','left') ->join(['school_courses' => 'd'],'c.courses_id = d.id','left') ->whereRaw("FIND_IN_SET(?, a.max_students)", [$information['students_id']]) ->group("d.id") ->sum("d.duration"); $sign_count = Db::name("zhjw_students_sign")->where(['students_id' => $information['students_id']])->sum("hour"); $information['sign_count'] = $sign_count; $information['stay_sign_count'] = $duration_count - $sign_count; } if(isset($information['headimg'])){ $information['headimg'] = "upload/attachment/image/202503/06/1741237826ea1dfb759edf0147ec8ad6fe8fb36c24_local.png"; } return $information; } /** * 检测会员信息是否存在 * @return int */ public function getCount($condition) { return $this->model->where($condition)->count(); } /** * 会员中心信息 */ public function center() { $field = 'member_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, commission, commission_get, commission_cash_outing'; return $this->model->where([['member_id', '=', $this->member_id]])->field($field)->append(['sex_name'])->findOrEmpty()->toArray(); } /** * 获取会员的模型对象(todo 慎用!!! 现主要用于登录) * @param array $data * @return Member|array|mixed|Model !!! 仔细看,返回值是模型对象 如果想要判断是否为空 请用 $member->isEmpty() */ public function findMemberInfo(array $data){ //会员账号 if(!empty($data['username'])) $where[] = ['username', '=', $data['username']]; //会员手机号 if(!empty($data['mobile'])) $where[] = ['mobile', '=', $data['mobile']]; //会员id if(!empty($data['member_id'])) $where[] = ['member_id', '=', $data['member_id']]; //微信公众号openid if(!empty($data['wx_openid'])) $where[] = ['wx_openid', '=', $data['wx_openid']]; //微信小程序openid if(!empty($data['weapp_openid'])) $where[] = ['weapp_openid', '=', $data['weapp_openid']]; // 微信unionid if(!empty($data['wx_unionid'])) $where[] = ['wx_unionid', '=', $data['wx_unionid']]; if(!empty($data['username|mobile'])) $where[] = ['username|mobile', '=', $data['username|mobile']]; if(empty($where)){ $where[] = ['member_id', '=', -1]; } return $this->model->where($where)->findOrEmpty(); } /** * 通过对象修改会员信息 * @param $member * @param $data * @return void */ public function editByFind($member, $data){ return $member->save($data); } /** * 修改字段 * @param string $field * @param $data * @return null */ public function modify(string $field, $data) { return (new CoreMemberService())->modify($this->member_id, $field, $data); } public function getQrcode(){ // 生成会员二维码 $qrcode_dir = 'upload/member/temp'; if (!is_dir($qrcode_dir)) mkdir($qrcode_dir, intval('0755', 8), true); $id = "member-".$this->member_id; $qrcode_path = "{$qrcode_dir}/order_qrcode_{$this->member_id}.png"; \core\util\QRcode::png($id, $qrcode_path, 'L', 16, 1); // 生成会员条形码 $barcode_path = (new Barcode(14, $id))->generateBarcode($qrcode_dir, 2); $detail = []; $detail['verify_code_qrcode'] = image_to_base64($qrcode_path, true); $detail['verify_code_barcode'] = image_to_base64($barcode_path); return $detail; } /** * 初始化会员数据 */ public function initMemberData(){ if ($this->member_id) { event("MemberLoginAfter", ['member_id' => $this->member_id]); } } public function is_pass($data){ $password = $this->model->where([['member_id', '=', $this->member_id]])->value("password"); if (!check_password($data['password'], $password)){ return fail("密码不正确"); } return success("密码正确"); } public function set_pass($data){ if($data['old_password'] != $data['password']){ return fail("两次密码输入不一致"); } $password_hash = create_password($data['password']); $data = array( 'password' => $password_hash, ); $member_info = $this->findMemberInfo([ 'member_id' => $this->member_id ]); $this->editByFind($member_info, $data); TokenAuth::clearToken($this->member_id, AppTypeDict::API, $this->request->apiToken()); return success("修改密码成功"); } public function get_venues_ids($data){ $member_info = $this->getInfo(); $classes = new Classes(); $venue_ids = $classes ->alias("a") ->join(['school_venues' => 'b'],'a.venue_id = b.id','left') ->join(['school_timetables' => 'c'],'a.id = c.class_id','left') ->join(['school_courses' => 'd'],'c.courses_id = d.id','left') ->where('a.status','<',3) ->group("a.venue_id") ->column("a.venue_id"); return $venue_ids; } public function venues_list($data){ $member_info = $this->getInfo(); $venues = new Venues(); $ids = $this->get_venues_ids($data); $list = $venues->where('id','in',$ids)->select()->toArray(); return $list; } public function jl_index(){ $member_info = $this->getInfo(); $schedules = new Schedules(); $task = new Task(); $assignments = new Assignments(); $course_list = $schedules ->alias("a") ->join(['school_classes' => 'b'],'a.class_id = b.id','left') ->join(['school_venues' => 'c'],'b.venue_id = c.id','left') ->join(['school_courses' => 'd'],'a.courses_id = d.id','left') ->where([ ['a.staff_id','=',$member_info['staff_id']], ['a.status','<',3] ]) ->field("a.id,a.status,d.name as courses_name,a.date_time,a.time_slot,c.address,a.students_ids") ->limit(2) ->select(); if($course_list){ $course_list = $course_list->toArray(); foreach ($course_list as $k=>$v){ $course_list[$k]['students_count'] = count(explode(",",$v['students_ids'])); $course_list[$k]['sign_count'] = Db::name("zhjw_students_sign")->where(['schedules_id' => $v['id']])->count(); } } //作业列表 $task_list = $task ->alias("a") ->join(['school_classes' => 'b'],'a.class_id = b.id','left') ->join(['school_courses' => 'c'],'a.courses_id = c.id','left') ->where([ ['a.staff_id','=',$member_info['staff_id']] ]) ->field("a.id,a.student_count,a.wc_count,c.name as courses_name,b.name as class_name,a.send_time") ->limit(3) ->order("a.send_time desc") ->select(); if($task_list){ $task_list = $task_list->toArray(); foreach ($task_list as $k=>$v){ $task_list[$k]['rate'] = ($v['wc_count'] / $v['student_count']) * 100; $task_list[$k]['dpg_count'] = $assignments->where(['task_id' => $v['id'],'status' => 2])->count(); } } return ['course_list' => $course_list,'task_list' => $task_list]; } public function get_assignments_list(){ $assignments = new Assignments(); $task = new Task(); $member_info = $this->getInfo(); $search_model = $task ->alias("a") ->join(['school_classes' => 'b'],'a.class_id = b.id','left') ->join(['school_courses' => 'c'],'a.courses_id = c.id','left') ->where([ ['a.staff_id','=',$member_info['staff_id']] ]) ->field("a.id,a.student_count,a.wc_count,c.name as courses_name,b.name as class_name,a.send_time") ->order("a.send_time desc"); $list = $this->pageQuery($search_model, function ($item) use($assignments){ $item['rate'] = ($item['wc_count'] / $item['student_count']) * 100; $item['dpg_count'] = $assignments->where(['task_id' => $item['id'],'status' => 2])->count(); }); return $list; } //课程列表 public function course_list($data){ $member_info = $this->getInfo(); $venues = new Venues(); $classes = new Classes(); $schedules = new Schedules(); $where = []; if($data['venue_id']){ $venue_id = $data['venue_id']; $where['c.id'] = $venue_id; } else{ $venue_id = ''; // $venue_id = $this->get_venues_ids($data)[0]; // $where['c.id'] = $venue_id; } if($data['courses_id']){ $where['d.id'] = $data['courses_id']; } if($member_info['role_id'] == 3){ $schedules = $schedules->whereRaw("FIND_IN_SET(?, a.students_ids)", [$member_info['students_id']]); } if($member_info['role_id'] == 1){ //教练 $schedules = $schedules->where(['a.staff_id' => $member_info['staff_id']]); } if($data['schedule_date']){ $where['a.date_time'] = $data['schedule_date']; } if($data['class_id']){ $where['a.class_id'] = $data['class_id']; } $search_model = $schedules ->alias("a") ->join(['school_classes' => 'b'],'a.class_id = b.id','left') ->join(['school_venues' => 'c'],'b.venue_id = c.id','left') ->join(['school_courses' => 'd'],'a.courses_id = d.id','left') ->where($where) ->where([ ['a.status','<',3] ]) ->field("a.id,a.status,b.name as classes_name,a.date_time,a.time_slot,c.name as address,c.address as address_info,d.name as courses_name,d.id as courses_id,LENGTH(b.max_students) - LENGTH(REPLACE(b.max_students, ',', '')) + 1 as students_count,b.max_students") ->order("a.time_slot asc"); $list = $this->pageQuery($search_model, function ($item) use($member_info){ // $where['a.students_id'] = $member_info['students_id']; $where['a.courses_id'] = $item['courses_id']; $where['a.schedules_id'] = $item['id']; $item['sign_list'] = Db::name("zhjw_students_sign") ->alias("a") ->join(['school_zhjw_students' => 'b'],'a.students_id = b.id','left') ->join(['school_staff' => 'c'],'b.user_id = c.id','left') ->where($where) ->where(['a.status' => 1]) ->order('a.create_time desc') ->field("a.*,c.header") ->limit(7) ->select(); $has_sign = Db::name("zhjw_students_sign")->where(['courses_id' => $item['courses_id']])->count(); $dkv = ($has_sign / $item['max_students']) * 100; $item['dkv'] = $dkv; $item['has_sign_count'] = $has_sign; $item['leave_list'] = Db::name("zhjw_students_sign") ->alias("a") ->join(['school_zhjw_students' => 'b'],'a.students_id = b.id','left') ->join(['school_staff' => 'c'],'b.user_id = c.id','left') ->where($where) ->where(['a.status' => 2]) ->order('a.create_time desc') ->field("a.*,c.header") ->limit(7) ->select(); $time = explode(",",$item['time_slot']); $item['date'] = $item['date_time'].' '.$time[0].' - '.$time[1]; }); if($venue_id){ $info = $venues->where('id','=',$venue_id)->find()->toArray(); }else{ $info = []; } return ['list' => $list,'venues_info' => $info]; } public function course_info($data){ $schedules = new Schedules(); $assignments = new Assignments(); $where = []; $where['a.id'] = $data['id']; $info = $schedules ->alias("a") ->join(['school_classes' => 'b'],'a.class_id = b.id','left') ->join(['school_venues' => 'c'],'b.venue_id = c.id','left') ->join(['school_courses' => 'd'],'a.courses_id = d.id','left') ->join(['school_staff' => 'e'],'a.staff_id = e.id','left') ->where($where) ->field(" a.id,b.name as classes_name,a.date_time,a.time_slot,c.name as address, d.name as courses_name, d.id as courses_id,a.class_id,LENGTH(b.max_students) - LENGTH(REPLACE(b.max_students, ',', '')) + 1 as students_count, b.max_students,e.name as staff_name,e.phone as staff_phone ") ->find()->toArray(); $time = explode(",",$info['time_slot']); $startTime = strtotime($time[0]); $endTime = strtotime($time[1]); $diffInSeconds = $endTime - $startTime; $diffInHours = $diffInSeconds / 3600; $info['hour'] = $diffInHours; $dyTime = strtotime(date("H:i")); if($dyTime > $startTime){ $info['status'] = 2; }else{ $info['status'] = 1; } $info['sign_status'] = Db::name("zhjw_students_sign") ->where(['schedules_id' => $data['id']]) ->value("status") ?: 0; $info['sign_list'] = Db::name("zhjw_students_sign") ->alias("a") ->join(['school_zhjw_students' => 'b'],'a.students_id = b.id','left') ->join(['school_staff' => 'c'],'b.user_id = c.id','left') ->where(['a.schedules_id' => $data['id']]) ->order('a.create_time desc') ->field("a.*,c.name,c.header") ->select(); //作业情况 $info['assignments'] = []; $ass_where = []; $ass_where[] = ['a.courses_id','=',$info['courses_id']]; $ass_where[] = ['a.class_id','=',$info['class_id']]; $startTime = strtotime($info['date_time'].' 00:00:00'); $endTime = strtotime($info['date_time'].' 23:59:59'); $ass_where[] = ['a.create_time','>=',$startTime]; $ass_where[] = ['a.create_time','<=',$endTime]; $status_map = [ 2 => 'dpg_list', // 待批改 1 => 'wtj_list', // 未提交 3 => 'ypg_list' // 已批改 ]; foreach ($status_map as $status => $key) { $info['assignments'][$key] = $assignments ->alias("a") ->join(['school_zhjw_students' => 'b'],'a.student_id = b.id','left') ->join(['school_staff' => 'c'],'b.user_id = c.id','left') ->where($ass_where) ->where(['a.status' => $status]) ->field("a.id,a.tj_time,c.name,c.header") ->select(); } return $info; } public function getDate() { $dates = []; for ($i = -2; $i <= 4; $i++) { $date = new DateTime(); $date->modify("$i days"); $dates[] = [ 'date' => $date->format('Y-m-d'), 'week' => getChineseWeekday($date), 'status' => 1 ]; } return $dates; } public function getMonthDate(array $data) { $year = date("Y"); $month = $data['month']; $daysInMonth = getDaysInMonth($month, $year); $dates = []; for ($day = 1; $day <= $daysInMonth; $day++) { $date = DateTime::createFromFormat('Y-n-j', "$year-$month-$day"); $dates[] = [ 'date' => $date->format('Y-m-d'), 'status' => 1 ]; } return $dates; } public function students_sign_list(){ $member_info = $this->getInfo(); $where['a.students_id'] = $member_info['students_id']; $where['a.status'] = 1; $search_model = Db::name("zhjw_students_sign") ->alias("a") ->join(['school_courses' =>'b'],'a.courses_id = b.id','left') ->where($where) ->field("a.*,b.name") ->order('a.create_time desc'); return $this->pageQuery($search_model); } public function set_feedback($data){ $member_info = $this->getInfo(); Db::name("feedback")->insert([ 'staff_id' => $member_info['staff_id'], 'content' => $data['content'], 'images' => $data['images'], 'mailbox' => $data['mailbox'], 'create_time' => date("Y-m-d H:i:s", time()), ]); return true; } public function index(){ $venues = new Venues(); $classes = new Classes(); $survey = new ZhjwStudentsSurvey(); $schedules = new Schedules(); $data = []; $member_info = $this->getInfo(); $data['name'] = $member_info['name']; $data['headimg'] = $member_info['headimg']; $data['students_id'] = $member_info['students_id']; $data['tx'] = $survey->where(['students_id' => $member_info['students_id']])->field('height,weight,score,create_time')->findOrEmpty(); $data['kcyg'] = $schedules ->alias("a") ->join(['school_classes' => 'b'],'a.class_id = b.id','left') ->join(['school_venues' => 'c'],'b.venue_id = c.id','left') ->join(['school_courses' => 'd'],'a.courses_id = d.id','left') ->join(['school_staff' => 'e'],'a.staff_id = e.id','left') ->whereRaw("FIND_IN_SET(?, a.students_ids)", [$member_info['students_id']]) ->where(['date_time' => date("Y-m-d")]) ->field(" a.id, a.date_time, a.time_slot, c.name as address, d.name as courses_name ") ->find()->toArray(); if (!empty($data['kcyg']['date_time'])) { $dt = new DateTime($data['kcyg']['date_time']); // 格式化成 月/日 $data['kcyg']['date_md'] = $dt->format('m/d'); // 获取周几(中文) $weekDays = ['周日','周一','周二','周三','周四','周五','周六']; $data['kcyg']['weekday'] = $weekDays[$dt->format('w')]; } return $data; } public function assignments_list($data){ $member_info = $this->getInfo(); $where = []; $where['a.student_id'] = $member_info['students_id']; if($data['status']){ $where['a.status'] = $data['status']; } $search_model = (new Assignments()) ->alias("a") ->join(['school_staff' => 'b'],'a.staff_id = b.id','left') ->join(['school_zhjw_students' => 'c'],'a.student_id = c.id','left') ->join(['school_staff' => 'd'],'c.user_id = d.id','left') ->where($where) ->field("a.*,b.name as coach_name,b.header as coach_pic,d.name as xy_name,d.header") ->order('a.create_time asc'); return $this->pageQuery($search_model); } public function assignments_info($data){ $member_info = $this->getInfo(); $info = (new Assignments()) ->alias("a") ->join(['school_staff' => 'b'],'a.staff_id = b.id','left') ->where(['a.id' => $data['id']]) ->field("a.*,b.name as coach_name,b.header as coach_pic") ->find(); return $info ? $info->toArray() : []; } public function assignments_submit($data){ $assignments = new Assignments(); $task = new Task(); $member_info = $this->getInfo(); $assignments ->where(['student_id' => $member_info['students_id'],'id' => $data['id']]) ->update([ 'status' => 2, 'student_file' => $data['student_file'], 'student_file_type' => $data['student_file_type'], 'student_content' => $data['student_content'], 'tj_time' => date("Y-m-d H:i:s", time()) ]); $task_id = $assignments->where(['student_id' => $member_info['students_id'],'id' => $data['id']])->value('task_id'); $task->where(['id' => $task_id])->inc('wc_count',1)->update(); return true; } public function member_edit($data){ $staff = new Staff(); $member = new Member(); $member_info = $this->getInfo(); $staff_data = [ 'header' => $data['header'], 'name' => $data['name'], 'gender' => $data['gender'], 'phone' => $data['phone'], 'email' => $data['email'] ]; $staff->where(['id' => $member_info['staff_id']])->update($staff_data); $member_data = [ // 'username' => $data['username'], 'address' => $data['address'], 'birthday' => $data['birthday'] ]; $member->where(['member_id' => $member_info['member_id']])->update($member_data); return "修改成功"; } public function ask_for_leave(array $data){ $member_info = $this->getInfo(); $where['students_id'] = $member_info['students_id']; $where['schedules_id'] = $data['schedules_id']; $where['courses_id'] = $data['courses_id']; $info = Db::name("zhjw_students_sign")->where($where)->find(); if($info){ Db::name("zhjw_students_sign")->where($where)->update([ 'reason' => $data['reason'], 'file_url' => $data['file_url'], 'status' => 2, 'hour' => 0, 'create_time' => date("Y-m-d H:i:s", time()) ]); }else{ Db::name("zhjw_students_sign")->insert([ 'students_id' => $member_info['students_id'], 'schedules_id' => $data['schedules_id'], 'courses_id' => $data['courses_id'], 'reason' => $data['reason'], 'file_url' => $data['file_url'], 'status' => 2, 'hour' => 0, 'create_time' => date("Y-m-d H:i:s", time()) ]); } return "操作成功"; } public function del_ask_for_leave(array $data){ $member_info = $this->getInfo(); $where['students_id'] = $member_info['students_id']; $where['schedules_id'] = $data['schedules_id']; $where['courses_id'] = $data['courses_id']; Db::name("zhjw_students_sign")->where($where)->delete(); return "操作成功"; } public function publish_job(array $data){ $classes = new Classes(); $task = new Task(); $member_info = $this->getInfo(); $students_ids = []; if($data['type'] == 1){ //班级作业 $students_ids = $classes->where(['id' => $data['classes_id']])->value("max_students"); $students_ids = explode(",",$students_ids); }else{ //学员作业 $students_ids = explode(",",$data['students_ids']); } $task_id = $task->insert([ 'staff_id' => $member_info['staff_id'], 'class_id' => $data['classes_id'], 'courses_id' => $data['courses_id'], 'student_count' => count($students_ids), 'send_time' => date("Y-m-d H:i:s", time()) ]); $insert['task_id'] = $task_id; $insert['staff_id'] = $member_info['staff_id']; $insert['courses_id'] = $data['courses_id']; $insert['content_type'] = $data['content_type']; $insert['content'] = $data['content']; $insert['content_text'] = $data['content_text']; $insert['submit_time'] = date("Y-m-d H:i:s", time()); $insert['create_time'] = time(); $insert['update_time'] = time(); $insert['class_id'] = $data['classes_id']; if(!empty($students_ids)){ foreach ($students_ids as $k=>$v){ $insert['student_id'] = $v; Db::name("zhjw_assignments")->insert($insert); } } return "发布成功"; } public function get_classes_list(){ $classes = new Classes(); $student = new Students(); $list = $classes->select()->toArray(); foreach ($list as $k=>$v){ $list[$k]['student_list'] = $student->where('id','in',$v['max_students'])->select(); } return $list; } public function student_list(){ $student = new Students(); $student_list = $student->select(); return $student_list ? $student_list->toArray() : []; } public function get_courses_list(){ $courses = new Courses(); $list = $courses->select()->toArray(); return $list; } public function get_campuses_list(){ $campuses = new Campuses(); $list = $campuses->select()->toArray(); return $list; } public function set_sales(array $data){ $member_info = $this->getInfo(); $sales = new Sales(); $follow_up_logs = new FollowUpLogs(); $follow_up_reminders = new FollowUpReminders(); if(!$data['staff_id']){ $data['is_gh'] = 1; } $sales_id = $sales->insertGetId([ 'title' => $data['title'], 'courses_id' => $data['courses_id'], 'user_id' => addMember($data), 'student_phone' => $data['student_phone'], 'student_name' => $data['student_name'], 'sex' => $data['sex'], 'age' => $data['age'], 'campuses_id' => $data['campuses_id'], 'school_name' => $data['school_name'], 'grade' => $data['grade'], 'class_id' => $data['class_id'], 'class_name' => $data['class_name'], 'source_channel' => $data['source_channel'], 'customer_source' => $data['customer_source'], 'add_staff_id' => $member_info['staff_id'], 'get_staff_id' => $data['staff_id'], 'contact_name' => $data['contact_name'], 'province_id' => $data['province_id'], 'city_id' => $data['city_id'], 'district_id' => $data['district_id'], 'full_address' => $data['full_address'], 'community_name' => $data['community_name'], 'is_gh' => $data['is_gh'], // 'customer_tags' => implode(",",$data['customer_tags']), 'create_time' => time(), 'update_time' => time(), ]); if($data['is_follow'] == 1){ $logs_id = $follow_up_logs->insertGetId([ 'sales_id' => $sales_id, 'staff_id' => $data['staff_id'], 'role_id' => get_role_id($data['staff_id']), 'entry_type' => $data['entry_type'], 'follow_up_time' => $data['follow_up_time'], 'create_time' => time() ]); $follow_up_reminders->insertGetId([ 'follow_up_logs_id' => $logs_id, 'reminder_time' => $data['follow_up_time'], 'reminder_method' => 3, 'task_status' => 1, 'create_time' => time() ]); } return "添加成功"; } public function create_follow(array $data){ $follow_up_logs = new FollowUpLogs(); $follow_up_reminders = new FollowUpReminders(); $logs_id = $follow_up_logs->insertGetId([ 'sales_id' => $data['sales_id'], 'entry_type' => $data['entry_type'], 'staff_id' => $data['staff_id'], 'follow_up_time' =>$data['follow_up_time'], 'requirement' => $data['requirement'], 'purchasing_power' => $data['purchasing_power'], 'cognitive_concept' => $data['cognitive_concept'], 'schooltime' => $data['schooltime'], 'distance' => $data['distance'], 'decision_maker' => $data['decision_maker'], 'emotional_intensity' => $data['emotional_intensity'], 'initial_customer_intent' => $data['initial_customer_intent'], 'initial_relationship_intent' => $data['initial_relationship_intent'], 'follow_up_content' => $data['follow_up_content'], 'role_id' => get_role_id($data['staff_id']), 'create_time' => time() ]); if($data['is_warn'] == 1){ $follow_up_reminders->insertGetId([ 'follow_up_logs_id' => $logs_id, 'follow_staff_id' => $data['follow_staff_id'], 'follow_content' => $data['follow_content'], 'reminder_time' => $data['reminder_time'], 'reminder_method' => '3', 'task_status' => 1, 'create_time' => time() ]); } return "添加成功"; } public function sales_list(){ $sales = new Sales(); return $sales->order("id desc")->select()->toArray(); // return $this->pageQuery($search_model, function ($item, $key) { // // }); } public function create_task(array $data){ $follow_up_logs = new FollowUpLogs(); $follow_up_reminders = new FollowUpReminders(); // $logs_id = $follow_up_logs->insertGetId([ // 'sales_id' => $data['sales_id'], // 'staff_id' => $data['staff_id'], // 'role_id' => get_role_id($data['staff_id']), // 'entry_type' => $data['entry_type'], // 'follow_up_time' => $data['follow_up_time'], // 'create_time' => time() // ]); $follow_up_reminders->insertGetId([ 'follow_staff_id' => $data['follow_staff_id'], 'follow_content' => $data['follow_content'], 'reminder_time' => $data['reminder_time'], 'reminder_method' => '3', 'task_status' => 1, 'create_time' => time() ]); return "添加成功"; } public function my_client(array $data){ $member_info = $this->getInfo(); $sales = new Sales(); $where = []; $count = []; $where[] = ['is_gh','=',$data['is_gh']]; $seven_days_ago = date('Y-m-d H:i:s', strtotime('-7 days')); $seven_days_ago_30 = date('Y-m-d H:i:s', strtotime('-30 days')); $seven_days_ago_21 = date('Y-m-d H:i:s', strtotime('-21 days')); $seven_days_ago_60 = date('Y-m-d H:i:s', strtotime('-60 days')); $count[0] = $sales->where($where)->count(); $count[1] = $sales->where($where)->where([ ['is_status','=',1] ])->count(); $count[2] = $sales->where($where)->where([ ['follow_up_time','<',$seven_days_ago] ])->count(); $count[3] = $sales->where($where)->where([ ['follow_up_time','<',$seven_days_ago_30], ['is_status','=',1] ])->count(); $count[4] = $sales->where($where)->where([ ['follow_up_time','<',$seven_days_ago_21] ])->count(); $count[5] = $sales->where($where)->where([ ['follow_up_time','<',$seven_days_ago_60] ])->count(); if($data['type'] == 1){ $where[] = ['is_status','=',1]; } if($data['type'] == 2){ $where[] = ['follow_up_time','<',$seven_days_ago]; } if($data['type'] == 3){ $where[] = ['follow_up_time','<',$seven_days_ago_30]; $where[] = ['is_status','=',1]; } if($data['type'] == 4){ $where[] = ['follow_up_time','<',$seven_days_ago_21]; } if($data['type'] == 5){ $where[] = ['follow_up_time','<',$seven_days_ago_60]; } //今日代领 $gh['max_count'] = Db::name("zhjw_setting")->where(['field'=>'max_get_num'])->value("value"); $gh['lq_count'] = Db::name("zhjw_sales_get")->where([ ['staff_id','=',$member_info['staff_id']] ])->whereDay('create_time')->count(); $search_model = $sales->where($where)->order("id desc"); $list = $this->pageQuery($search_model, function ($item, $key) { $follow_up_logs = new FollowUpLogs(); $member = new Member(); $staff = new Staff(); $follow = $follow_up_logs->where(['sales_id' => $item['id']])->order("id desc")->find(); $item['follow'] = $follow; $item['hair_staff_id'] = $staff->where(['member_id' => $item['user_id']])->value("id"); }); return ['count' => $count,'gh' => $gh, 'list' => $list]; } public function client_list(array $data){ $member_info = $this->getInfo(); $sales = new Sales(); $where = []; if($data['student_name']){ $where[] = ['a.student_name','=',$data['student_name']]; } $search_model = $sales ->alias("a") ->join(['school_member' => 'b'],'a.user_id = b.member_id','left') ->join(['school_staff' => 'c'],'c.member_id = b.member_id','left') ->where($where) ->field("a.*,c.id as hair_staff_id") ->order("a.id desc")->select(); return $search_model ? $search_model->toArray() : []; } public function client_info(array $data){ $sales = new Sales(); $follow_up_logs = new FollowUpLogs(); $staff = new Staff(); $info = $sales ->where(['id' => $data['id']]) ->field([ 'id', 'student_name', 'student_phone', 'is_zdgz', 'source_channel', 'customer_source', 'age', 'sex' ]) ->find(); // dump($info);die; if($info){ $sex_arr = [0=>'保密',1=>'男',2 => '女']; $info['source_channel'] = get_gict_value('source_channel',$info['source_channel']); $info['customer_source'] = get_gict_value('customer_source',$info['customer_source']); $info['sex'] = $sex_arr[$info['sex']]; $info['follow'] = $follow_up_logs ->where(['sales_id' => $info['id']]) ->field([ 'follow_up_time', 'initial_customer_intent', ]) ->order("id desc") ->find(); if(!$info['follow']){ $info['follow'] = [ 'follow_up_time' => '', 'initial_customer_intent' => '' ]; } $info['gw'] = $staff->where(['id' => $info['get_staff_id']])->value("name"); $info['cj_count'] = $sales->where(['user_id' => $info['user_id'],'is_status' => 2])->count(); $info['ty_count'] = $sales->where(['user_id' => $info['user_id'],'is_status' => 1])->count(); } return $info->toArray(); } public function follow_list(array $data){ $follow_up_logs = new FollowUpLogs(); $list = $follow_up_logs ->alias("a") ->join(['school_zhjw_sales' => 'b'],'b.id = a.sales_id','left') ->where(['a.sales_id' => $data['sales_id']]) ->field("a.*,b.student_name,b.student_phone") ->order("a.id desc") ->select(); return $list->toArray(); } public function staff_list(array $data){ $where = []; if($data['type']){ $where[] = ['type','=',$data['type']]; } if($data['role_id']){ $where[] = ['role_id','=',$data['role_id']]; } $staff = new Staff(); $list = $staff ->where($where) ->order("id desc")->select(); return $list->toArray(); } public function set_call_up(array $data){ $member_info = $this->getInfo(); Db::name("zhjw_sales_phone")->insert([ 'staff_id' => $member_info['staff_id'], 'sales_id' => $data['sales_id'], 'create_time' => date("Y-m-d H:i:s") ]); return true; } public function list_call_up(array $data){ $list = Db::name("zhjw_sales_phone") ->alias("a") ->join(['school_zhjw_sales' => 'b'],'a.sales_id = b.id','left') ->join(['school_staff' => 'c'],'a.staff_id = c.id','left') ->where(['a.sales_id' => $data['sales_id']]) ->field("a.id,b.student_name,b.student_phone,c.name,a.create_time") ->order("a.id desc")->select(); return $list->toArray(); } public function with_sales_list(array $data){ $sales = new Sales(); $where = []; $where[] = ['is_status','=',2]; if($data['sales_id']){ $info = $sales->where(['id' => $data['sales_id']])->find(); if($data['type'] == 1){ $where[] = ['campuses_id','=',$info['campuses_id']]; } if($data['type'] == 2){ $where[] = ['class_id','=',$info['class_id']]; } if($data['type'] == 3){ $where[] = ['community_name','=',$info['community_name']]; } } $search_model = $sales->where($where)->order("id desc"); return $this->pageQuery($search_model, function ($item, $key) { $follow_up_logs = new FollowUpLogs(); $follow = $follow_up_logs->where(['sales_id' => $item['id']])->order("id desc")->find(); $item['follow'] = $follow; }); } public function get_sales(array $data){ $sales = new Sales(); $member_info = $this->getInfo(); Db::name("zhjw_sales_get")->insert([ 'staff_id' => $member_info['staff_id'], 'sales_id' => $data['sales_id'], 'create_time' => date("Y-m-d H:i:s") ]); $sales->where(['id' => $data['sales_id']])->update([ 'is_gh' => 2, 'get_staff_id' => $member_info['staff_id'] ]); return true; } public function get_enterprise_information(){ $enterprise_information = new EnterpriseInformation(); $member_info = $this->getInfo(); $info = $enterprise_information->where(['campuses_id' => $member_info['campuses_id']])->find(); return $info ? $info->toArray() : []; } public function contact_list(){ $member_info = $this->getInfo(); $staff = new Staff(); $contact = new Contact(); $list = $contact ->where(['closed_staff_id' => $member_info['staff_id']]) ->order("type asc,id desc") ->select(); if(!empty($list)){ $list = $list->toArray(); foreach ($list as $k=>$v){ $count = Db::name("staff_message")->where(['hair_staff_id' => $v['hair_staff_id'],'closed_staff_id' => $member_info['staff_id'],'status' => 2])->count(); if($v['type'] == 1){ $list[$k]['name'] = "系统消息"; $list[$k]['header'] = ""; }else{ $list[$k]['name'] = $staff->where(['id' => $v['hair_staff_id']])->value('name'); $list[$k]['header'] = $staff->where(['id' => $v['hair_staff_id']])->value('header'); } $list[$k]['count'] = $count; } } return $list; } public function send_message(array $data){ $member_info = $this->getInfo(); $staffMessage = new StaffMessage(); $contact = new Contact(); $is_friends = $contact->where(['hair_staff_id' => $member_info['staff_id'],'closed_staff_id' => $data['hair_staff_id']])->find(); if(!$is_friends){ $contact->insert([ 'hair_staff_id' => $member_info['staff_id'], 'closed_staff_id' => $data['hair_staff_id'], 'create_time' => date('Y-m-d H:i:s') ]); $contact->insert([ 'hair_staff_id' => $data['hair_staff_id'], 'closed_staff_id' => $member_info['staff_id'], 'create_time' => date('Y-m-d H:i:s') ]); } $staffMessage->insert([ 'hair_staff_id' => $data['hair_staff_id'], 'closed_staff_id' => $member_info['staff_id'], 'content' => $data['content'], 'create_time' => date("Y-m-d H:i:s") ]); return true; } public function contact_message(array $data){ $member_info = $this->getInfo(); $staffMessage = new StaffMessage(); $staffMessage ->where(['hair_staff_id' => $data['hair_staff_id'],'closed_staff_id' => $member_info['staff_id'],'status' => 2]) ->update(['status' => 1]); $search_model = $staffMessage ->where(function ($query) use ($member_info, $data) { $query->where([ ['closed_staff_id', '=', $member_info['staff_id']], ['hair_staff_id', '=', $data['hair_staff_id']] ])->whereOr(function ($query) use ($member_info, $data) { $query->where([ ['closed_staff_id', '=', $data['hair_staff_id']], ['hair_staff_id', '=', $member_info['staff_id']] ]); }); }) ->order("id asc"); $search_model = $this->pageQuery($search_model, function ($item, $key) use ($member_info, &$last_time, &$last_sender) { // 方向判断 if ($member_info['staff_id'] == $item['closed_staff_id']) { $item['direction'] = "right"; } else { $item['direction'] = "left"; } // 处理时间显示(5 分钟内不重复) $current_time = strtotime($item['create_time']); // 假设 created_at 字段是消息时间 if (!isset($last_time) || ($current_time - $last_time >= 300)) { $item['show_time'] = date("Y-m-d H:i", $current_time); // 显示时间 } else { $item['show_time'] = ""; // 5分钟内隐藏时间 } // 更新上一次的时间和发送者 $last_time = $current_time; }); return $search_model; } public function sign_client(){ $member_info = $this->getInfo(); $sales = new Sales(); $zhjw_contracts = new Contracts(); $where = []; $where[] = ['a.is_status','=',2]; $where[] = ['a.add_staff_id','=',$member_info['staff_id']]; $search_model = $sales ->alias('a') ->join(['school_member' => 'b'],'a.user_id = b.member_id','left') ->join(['school_staff' => 'c'],'b.member_id = c.member_id','left') ->join(['school_zhjw_students' => 'd'],'d.user_id = c.id','left') ->where($where) ->group("a.id") ->field("c.id,c.name,c.header,d.have_study_time,d.end_study_time,d.id as students_id,a.id as sales_id") ->order("a.id desc"); return $this->pageQuery($search_model, function ($item, $key) use ($zhjw_contracts) { $end_time = $zhjw_contracts->where(['student_id' => $item['students_id']])->order("end_date desc")->value('end_date'); $item['end_time'] = $end_time; }); } public function survey_list(array $data){ $survey = new ZhjwStudentsSurvey(); $search_model = $survey ->alias('a') ->where(['a.students_id' => $data['students_id']]) ->order("a.id desc"); $list = $this->pageQuery($search_model, function ($item, $key){ }); return ['standard' => standard(),'list' => $list]; } public function survey_info(array $data){ $survey = new ZhjwStudentsSurvey(); $info = $survey ->alias('a') ->where(['a.id' => $data['survey_id']]) ->find(); $info['standard'] = standard(); return $info->toArray(); } public function set_comment(array $data){ $assignments = new Assignments(); $assignments->where(['id' => $data['assignments_id']])->update([ 'comment' => $data['comment'], 'comment_time' => date("Y-m-d H:i:s"), 'status' => 3 ]); return true; } public function class_list(array $data){ $member_info = $this->getInfo(); $schedules = new Schedules(); $students = new Students(); $where = []; if($data['name']){ $where[] = ['b.name','=',$data['name']]; } $search_model = $schedules ->alias('a') ->join(['school_classes' => 'b'],'a.class_id = b.id','left') ->where(['a.staff_id' => $member_info['staff_id']]) ->where($where) ->field("a.class_id,b.name,b.max_students") ->group("a.class_id"); return $this->pageQuery($search_model, function ($item, $key) use ($students){ $students_list = $students ->alias("a") ->join(['school_staff' => 'b'],'b.id = a.user_id','left') ->where('a.id','in',$item['max_students']) ->field("a.id,b.name,b.header,a.have_study_time,a.end_study_time") ->select(); $count = 0; foreach ($students_list as $student){ if(($student['have_study_time'] - $student['end_study_time']) <= 2){ $count++; } } $item['students_list'] = $students_list; $item['students_count'] = count($students_list); $item['end_count'] = $count; }); } public function class_info(array $data){ $member_info = $this->getInfo(); $classes = new Classes(); $students = new Students(); $info = $classes->alias("a") ->join(['school_venues' => 'b'],'a.venue_id = b.id','left') ->where(['a.id' => $data['class_id']]) ->field("a.id,a.name,b.address,a.start_date,a.end_date,a.max_students") ->find(); $info['students_count'] = count(explode(",",$info['max_students'])); $students_list = $students ->alias("a") ->join(['school_staff' => 'b'],'b.id = a.user_id','left') ->where('a.id','in',$info['max_students']) ->field("a.id,b.name,b.header,a.have_study_time,a.end_study_time,a.expire_time") ->select(); foreach ($students_list as $key => $student){ $students_list[$key]['expire'] = false; if(($student['have_study_time'] - $student['end_study_time']) <= 2){ $students_list[$key]['expire'] = true; } } $info['students_list'] = $students_list; return $info->toArray(); } public function students_info(array $data){ $students = new Students(); $assignments = new Assignments(); $info = $students ->alias("a") ->join(['school_staff' => 'b'],'b.id = a.user_id','left') ->where('a.id','=',$data['students_id']) ->field("a.id,b.name,b.header,b.phone,a.age,a.have_study_time,a.end_study_time,a.expire_time") ->find(); if($info){ $info['assignments_list'] = $assignments ->alias("a") ->join(['school_courses' => 'b'],'a.courses_id = b.id','left') ->where(['a.student_id' => $data['students_id']]) ->field("a.id,a.submit_time,b.name as courses_name,a.status") ->order("a.submit_time desc") ->select(); } return $info ? $info->toArray() : []; } public function students_list(){ $students = new Students(); $now = date('Y-m-d H:i:s'); $twoDaysLater = date('Y-m-d H:i:s', strtotime('+2 days')); $search_model = $students ->alias("a") ->join(['school_staff' => 'b'], 'b.id = a.user_id', 'left') ->where([ ['a.expire_time','<>',''], ['a.expire_time','>=',$now], ['a.expire_time','<=',$twoDaysLater], ]) ->field("a.id, b.name, b.header, a.have_study_time, a.end_study_time, a.expire_time"); return $this->pageQuery($search_model, function ($item, $key){ }); } public function sktj(){ $sktj = new Sktj(); $member_info = $this->getInfo(); $list = $sktj->where(['staff_id' => $member_info['staff_id']])->order("month_date asc")->select(); return $list ? $list->toArray() : []; } //销售业绩统计 public function performance(){ $order = new Orders(); $sales = new Sales(); $staff = new Staff(); $member_info = $this->getInfo(); $data['goal'] = $member_info['goal']; $data['wx_performance'] = $order->where(['staff_id' => $member_info['staff_id']])->Sum("amount"); $data['new_performance'] = $order->where(['staff_id' => $member_info['staff_id'],'type' => 1])->Sum("amount"); $data['renew_performance'] = $order->where(['staff_id' => $member_info['staff_id'],'type' => 2])->Sum("amount"); $sales_count = $sales->where(['get_staff_id' => $member_info['staff_id']])->count(); $renew_count = $sales->where(['get_staff_id' => $member_info['staff_id'],'is_status' => 2])->count(); $st_count = $sales->where(['get_staff_id' => $member_info['staff_id'],'is_status' => 1])->count(); $data['cj_count'] = $renew_count; $data['cj_lv'] = ($renew_count / $sales_count) * 100; $data['st_count'] = $st_count; $data['st_lv'] = ($st_count / $sales_count) * 100; $gj_count = $sales->where(['get_staff_id' => $member_info['staff_id']])->where('follow_up_time','<>',null)->count(); $data['gj_count'] = $gj_count; $data['gj_lv'] = ($gj_count / $sales_count) * 100; $data['staff_list'] = []; $staff_list = $staff->where(['type' => 2])->select()->toArray(); foreach ($staff_list as $key => $val){ $data['staff_list'][$key]['name'] = $val['name']; $data['staff_list'][$key]['goal'] = $val['goal']; $data['staff_list'][$key]['wx_yj'] = $order->where(['staff_id' => $member_info['staff_id']])->Sum("amount"); } return $data; } //销售首页 public function xs_index(){ $order = new Orders(); $sales = new Sales(); $staff = new Staff(); $follow_up_logs = new FollowUpLogs(); $staffMessage = new StaffMessage(); $member_info = $this->getInfo(); $startOfMonth = strtotime(date('Y-m-01 00:00:00')); // 本月第一天 0点 $endOfMonth = strtotime(date('Y-m-t 23:59:59')); // 本月最后一天 23:59:59 $data['goal'] = get_goal_price($member_info['staff_id']); $data['goal_percent'] = 100; $data['yc_yj'] = $sales ->alias("a") ->join(['school_zhjw_follow_up_logs' => 'b'],'a.id = b.sales_id','left') ->join(['school_courses' => 'c'],'a.courses_id = c.id','left') ->where(['a.get_staff_id' => $member_info['staff_id']]) ->where('a.create_time', '>=', $startOfMonth) ->where('a.create_time', '<=', $endOfMonth) ->where('b.initial_customer_intent','in','A+,A,A-') ->group("a.id") ->Sum("c.price"); $data['yc_yj_percent'] = ($data['yc_yj'] / $data['goal']) * 100; $data['cj_yj'] = $order ->where(['staff_id' => $member_info['staff_id']]) ->where('create_time', '>=', $startOfMonth) ->where('create_time', '<=', $endOfMonth) ->Sum("amount"); $data['cj_yj_percent'] = ($data['cj_yj'] / $data['goal']) * 100; $sales_list = $sales ->alias("a") ->where(['a.get_staff_id' => $member_info['staff_id']]) ->select(); $data['dlx'] = 0; foreach ($sales_list as $key=>$val){ $is_log = $follow_up_logs->where(['sales_id' => $val['id']])->find(); if(!$is_log){ $data['dlx']++; } } $data['dlq'] = $sales->where(['is_gh' => 2])->count(); $data['dsf'] = $follow_up_logs->where(['staff_id' => $member_info['staff_id']])->where('follow_up_time','<',date("Y-m-d H:i:s"))->count(); $data['dxz'] = $follow_up_logs ->alias("a") ->join(['school_zhjw_sales' => 'b'],'a.sales_id = b.id','left') ->where(['staff_id' => $member_info['staff_id']]) ->where('get_staff_id','<>',$member_info['staff_id']) ->group("b.id") ->count(); $data['xx'] = $staffMessage->where(['hair_staff_id' => $member_info['staff_id'],'status' => 2])->count(); $data['date'] = date('m月').'01日 - '.date('m月t日'); return $data; } public function clocking_list(array $data){ $staffClocking = new StaffClocking(); $member_info = $this->getInfo(); $where = []; if($data['status']){ $where[] = ['status','=',$data['status']]; } $search_model = $staffClocking ->where([ ['staff_id','=',$member_info['staff_id']], ]) ->where($where) ->order("id desc"); return $this->pageQuery($search_model, function ($item, $key){ $courses = new Courses(); $item['courses'] = $courses->where(['id' => $item['courses_id']])->field("name,thumbnail")->find(); }); } public function clocking_rest(array $data){ $staffClocking = new StaffClocking(); $schedules = new Schedules(); $member_info = $this->getInfo(); // $add_time = $data['date'].' 00:00:00'; // $end_time = $data['date'].' 23:59:59'; $is_clocking = $staffClocking->where([ 'staff_id' => $member_info['staff_id'], 'create_time' => $data['date'] ])->find(); if($is_clocking){ return "日期考勤已生成,不可请假"; } if($member_info['role_id'] == 1){ $schedules_list = $schedules->where(['date_time' => $data['date'],'staff_id' => $member_info['staff_id']])->select(); foreach ($schedules_list as $k1=>$v1){ $time_slot = explode(",",$v1['time_slot']); Db::name("staff_clocking")->insert([ 'staff_id' => $member_info['staff_id'], 'status' => 2, 'create_time' => date("Y-m-d"), 'add_time' => $data['date'].' '.$time_slot[0].':00', 'end_time' => $data['date'].' '.$time_slot[1].':00', 'courses_id' => $v1['courses_id'], 'type' => 2 ]); } }else{ Db::name("staff_clocking")->insert([ 'staff_id' => $member_info['staff_id'], 'status' => 2, 'create_time' => date("Y-m-d"), 'add_time' => $data['date'].' 00:00:00', 'end_time' => $data['date'].' 23:59:59', 'type' => 1 ]); } return "请假成功"; } public function select_course_list(){ $course = new Courses(); $list = $course->select(); return $list->toArray(); } public function contracts_list(){ $contracts = new Contracts(); $member_info = $this->getInfo(); $search_model = $contracts ->where([ ['student_id','=',$member_info['students_id']], ]) ->field("id,title,file_data,signatory_a,signatory_b") ->order("id desc"); return $this->pageQuery($search_model, function ($item, $key){ }); } }