diff --git a/admin/auto-imports.d.ts b/admin/auto-imports.d.ts index a51b7a66..08908edd 100644 --- a/admin/auto-imports.d.ts +++ b/admin/auto-imports.d.ts @@ -1,5 +1,5 @@ // Generated by 'unplugin-auto-import' export {} declare global { - const ElNotification: typeof import('element-plus/es')['ElNotification'] + } diff --git a/admin/components.d.ts b/admin/components.d.ts index 1c1852df..c7571e6b 100644 --- a/admin/components.d.ts +++ b/admin/components.d.ts @@ -15,6 +15,7 @@ declare module '@vue/runtime-core' { ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] ElButton: typeof import('element-plus/es')['ElButton'] + ElCalendar: typeof import('element-plus/es')['ElCalendar'] ElCard: typeof import('element-plus/es')['ElCard'] ElCascader: typeof import('element-plus/es')['ElCascader'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] diff --git a/niucloud/app/api/controller/member/Member.php b/niucloud/app/api/controller/member/Member.php index e228c437..4ea75174 100644 --- a/niucloud/app/api/controller/member/Member.php +++ b/niucloud/app/api/controller/member/Member.php @@ -133,15 +133,27 @@ class Member extends BaseApiController return ( new MemberService() )->set_pass($data); } + public function get_date(){ + return success(( new MemberService() )->getDate()); + } //课程列表 public function course_list(){ $data = $this->request->params([ - [ 'schedule_date', '' ] + [ 'schedule_date', '' ], + ['venue_id',''] ]); return success(( new MemberService() )->course_list($data)); } + public function venues_list(){ + $data = $this->request->params([ + [ 'schedule_date', '' ] + ]); + return success(( new MemberService() )->venues_list($data)); + } + + //课时列表 public function students_sign_list(){ return success(( new MemberService() )->students_sign_list()); @@ -184,4 +196,19 @@ class Member extends BaseApiController return success(( new MemberService() )->assignments_submit($data)); } + public function member_edit(){ + $data = $this->request->params([ + [ 'header', '' ], + [ 'name', '' ], + [ 'gender', '' ], + [ 'phone', '' ], + [ 'email', '' ], + [ 'username', '' ], + [ 'address', '' ], + [ 'birthday', '' ] + ]); + return success(( new MemberService() )->member_edit($data)); + } + + } diff --git a/niucloud/app/api/controller/upload/Upload.php b/niucloud/app/api/controller/upload/Upload.php index 85c5c672..31f1b604 100644 --- a/niucloud/app/api/controller/upload/Upload.php +++ b/niucloud/app/api/controller/upload/Upload.php @@ -19,7 +19,6 @@ use think\Response; class Upload extends BaseApiController { - /** * 图片上传 * @return Response diff --git a/niucloud/app/api/route/member.php b/niucloud/app/api/route/member.php index ec25ded1..aaacffec 100644 --- a/niucloud/app/api/route/member.php +++ b/niucloud/app/api/route/member.php @@ -108,7 +108,11 @@ Route::group('member', function () { Route::post('is_pass', 'member.Member/is_pass'); Route::post('set_pass', 'member.Member/set_pass'); - Route::post('course_list', 'member.Member/course_list'); + Route::get('get_date', 'member.Member/get_date'); + + Route::get('course_list', 'member.Member/course_list'); + + Route::get('venues_list', 'member.Member/venues_list'); Route::post('students_sign_list', 'member.Member/students_sign_list'); @@ -122,6 +126,9 @@ Route::group('member', function () { Route::post('assignments_submit', 'member.Member/assignments_submit'); + Route::post('member_edit', 'member.Member/member_edit'); + + })->middleware(ApiChannel::class) ->middleware(ApiCheckToken::class, true) ->middleware(ApiLog::class); diff --git a/niucloud/app/common.php b/niucloud/app/common.php index b2a22b3a..64a1d678 100644 --- a/niucloud/app/common.php +++ b/niucloud/app/common.php @@ -1031,3 +1031,18 @@ function get_user_type($member_id){ $role_id = (new \addon\zhjw\app\model\staff\Staff())->where(['member_id' => $member_id])->value("role_id"); return $role_id; } + +function getChineseWeekday($date) +{ + $weekdays = ['日', '一', '二', '三', '四', '五', '六']; + return '周' . $weekdays[$date->format('w')]; +} + + +function formatTimeRange($start, $end) +{ + $startDate = new DateTime($start); + $endDate = new DateTime($end); + + return $endDate->format('Y-m-d') . ' ' . $startDate->format('H:i') . ' - ' . $endDate->format('H:i'); +} diff --git a/niucloud/app/service/api/member/MemberService.php b/niucloud/app/service/api/member/MemberService.php index 455afc6c..fd579465 100644 --- a/niucloud/app/service/api/member/MemberService.php +++ b/niucloud/app/service/api/member/MemberService.php @@ -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,57 +252,108 @@ 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] = []; - } - $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]; + $info = $venues->where('id','=',$venue_id)->find()->toArray(); + return ['list' => $list,'venues_info' => $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 students_sign_list(){ $member_info = $this->getInfo(); $where['students_id'] = $member_info['students_id']; @@ -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 "修改成功"; } diff --git a/niucloud/app/service/core/member/CoreMemberService.php b/niucloud/app/service/core/member/CoreMemberService.php index 1e797438..2b478727 100644 --- a/niucloud/app/service/core/member/CoreMemberService.php +++ b/niucloud/app/service/core/member/CoreMemberService.php @@ -46,13 +46,18 @@ class CoreMemberService extends BaseCoreService public function modify(int $member_id, string $field, $data) { $field_name = match ($field) { - 'nickname' => 'nickname', 'headimg' => 'headimg', - 'member_label' => 'member_label', - 'member_level' => 'member_level', + 'name' => 'name', + 'username' => 'username', + 'address' => 'address', + 'gender' => 'gender', 'birthday' => 'birthday', - 'sex' => 'sex', + 'phone' => 'phone', + 'email' => 'email', }; + if($field_name == 'headimg' OR $field_name == 'headimg'){ + + } $where = array( ['member_id', '=', $member_id], );