于宏哲PHP 1 year ago
parent
commit
6c46e2e984
  1. 2
      admin/auto-imports.d.ts
  2. 1
      admin/components.d.ts
  3. 29
      niucloud/app/api/controller/member/Member.php
  4. 1
      niucloud/app/api/controller/upload/Upload.php
  5. 9
      niucloud/app/api/route/member.php
  6. 15
      niucloud/app/common.php
  7. 133
      niucloud/app/service/api/member/MemberService.php
  8. 13
      niucloud/app/service/core/member/CoreMemberService.php

2
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']
}

1
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']

29
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));
}
}

1
niucloud/app/api/controller/upload/Upload.php

@ -19,7 +19,6 @@ use think\Response;
class Upload extends BaseApiController
{
/**
* 图片上传
* @return Response

9
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);

15
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');
}

133
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,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 "修改成功";
}

13
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],
);

Loading…
Cancel
Save