|
|
|
@ -25,6 +25,7 @@ use core\base\BaseApiService; |
|
|
|
use core\exception\ApiException; |
|
|
|
use core\util\Barcode; |
|
|
|
use core\util\TokenAuth; |
|
|
|
use DateTime; |
|
|
|
use think\facade\Db; |
|
|
|
use think\Model; |
|
|
|
|
|
|
|
@ -78,15 +79,21 @@ class MemberService extends BaseApiService |
|
|
|
$role_id = get_user_type($this->member_id); |
|
|
|
if($role_id == 1){ |
|
|
|
//学员信息 |
|
|
|
$staff_id = (new Staff())->where(['member_id' => $this->member_id])->value('id'); |
|
|
|
$data = (new Students())->where(['user_id' => $staff_id])->find(); |
|
|
|
$staff = (new Staff())->where(['member_id' => $this->member_id])->find(); |
|
|
|
$info['staff_id'] = $staff['id']; |
|
|
|
$info['headimg'] = $staff['header']; |
|
|
|
$info['name'] = $staff['name'] ?? ''; |
|
|
|
$info['gender'] = $staff['gender']; |
|
|
|
$info['phone'] = $staff['phone']; |
|
|
|
$info['email'] = $staff['email']; |
|
|
|
$data = (new Students())->where(['user_id' => $staff['id']])->find(); |
|
|
|
$info['height'] = $data['height']; |
|
|
|
$info['weight'] = $data['weight']; |
|
|
|
$info['score'] = $data['score']; |
|
|
|
$info['students_id'] = $data['id']; |
|
|
|
$info['evaluation_time'] = $data['evaluation_time']; |
|
|
|
|
|
|
|
$info['name'] = $data['name'] ?? ''; |
|
|
|
// $info['name'] = $data['name'] ?? ''; |
|
|
|
|
|
|
|
//课程 |
|
|
|
$classes = new Classes(); |
|
|
|
@ -245,56 +252,107 @@ class MemberService extends BaseApiService |
|
|
|
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.start_date', '<=', $data['schedule_date']) |
|
|
|
->where('a.end_date', '>=', $data['schedule_date']) |
|
|
|
->where('a.status','<',3) |
|
|
|
->whereRaw("FIND_IN_SET(?, a.max_students)", [$member_info['students_id']]) |
|
|
|
->field("a.id,a.status,a.venue_id,a.start_date,a.end_date,a.max_students,a.name,b.name as address,d.name as courses_name, |
|
|
|
LENGTH(a.max_students) - LENGTH(REPLACE(a.max_students, ',', '')) + 1 as students_count,d.id as courses_id |
|
|
|
") |
|
|
|
->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 course_list($data){ |
|
|
|
$member_info = $this->getInfo(); |
|
|
|
$venues = new Venues(); |
|
|
|
$classes = new Classes(); |
|
|
|
$where = []; |
|
|
|
if($data['venue_id']){ |
|
|
|
$venue_id = $data['venue_id']; |
|
|
|
$where['a.venue_id'] = $venue_id; |
|
|
|
}else{ |
|
|
|
$venue_id = $this->get_venues_ids($data)[0]; |
|
|
|
$where['a.venue_id'] = $venue_id; |
|
|
|
} |
|
|
|
|
|
|
|
$classes_list = $classes |
|
|
|
$search_model = $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.start_date', '<=', $data['schedule_date']) |
|
|
|
->where('a.end_date', '>=', $data['schedule_date']) |
|
|
|
->where($where) |
|
|
|
->where('a.status','<',3) |
|
|
|
->whereRaw("FIND_IN_SET(?, a.max_students)", [$member_info['students_id']]) |
|
|
|
->field("a.id,a.status,a.venue_id,a.start_date,a.end_date,a.max_students,a.name,b.name as address,d.name as courses_name, |
|
|
|
LENGTH(a.max_students) - LENGTH(REPLACE(a.max_students, ',', '')) + 1 as students_count,d.id as courses_id |
|
|
|
") |
|
|
|
->group("a.venue_id") |
|
|
|
->select()->toArray(); |
|
|
|
->group("a.venue_id"); |
|
|
|
|
|
|
|
|
|
|
|
$list = $this->pageQuery($search_model, function ($item) use($member_info){ |
|
|
|
$where['a.students_id'] = $member_info['students_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) |
|
|
|
->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(); |
|
|
|
$item['has_sign_count'] = $has_sign; |
|
|
|
|
|
|
|
$groupedClassesList = []; |
|
|
|
$venue_ids = []; |
|
|
|
foreach ($classes_list as $item) { |
|
|
|
$item['date'] = formatTimeRange($item['start_date'], $item['end_date']); |
|
|
|
}); |
|
|
|
|
|
|
|
$has_sign = Db::name("zhjw_students_sign") |
|
|
|
->alias("a") |
|
|
|
->join(['school_member' => 'b'],'a.students_id = b.member_id','left') |
|
|
|
->where(['a.courses_id' => $item['courses_id']]) |
|
|
|
->field("a.id,b.headimg") |
|
|
|
->select(); |
|
|
|
$item['has_sign_count'] = count($has_sign); |
|
|
|
$item['has_sign_list'] = $has_sign; |
|
|
|
|
|
|
|
$venueId = $item['venue_id']; |
|
|
|
$venue_ids[] = $venueId; |
|
|
|
if (!isset($groupedClassesList[$venueId])) { |
|
|
|
$groupedClassesList[$venueId] = []; |
|
|
|
$info = $venues->where('id','=',$venue_id)->find()->toArray(); |
|
|
|
return ['list' => $list,'venues_info' => $info]; |
|
|
|
} |
|
|
|
$groupedClassesList[$venueId][] = $item; |
|
|
|
} |
|
|
|
$venue_ids = array_unique($venue_ids); |
|
|
|
$venue_list = $venues->where('id','in',$venue_ids)->select()->toArray(); |
|
|
|
return ['classes_list' => $groupedClassesList, 'venue_list' => $venue_list]; |
|
|
|
|
|
|
|
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 students_sign_list(){ |
|
|
|
$member_info = $this->getInfo(); |
|
|
|
@ -393,7 +451,30 @@ class MemberService extends BaseApiService |
|
|
|
]); |
|
|
|
|
|
|
|
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 "修改成功"; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|