2025-08-01 11:39:06 +08:00

310 lines
14 KiB
PHP

<?php
namespace addons\xilufitness\controller;
use addons\xilufitness\services\CoachService;
use addons\xilufitness\services\CourseService;
/**
* @ApiSector(教练接口)
* @ApiRoute(addons/xilufitness/coach)
* @ApiWeigh(1)
* @package addons\xilufitness\controller
*/
class Coach extends Base
{
protected $noNeedLogin = ['index','detail','getList'];
/**
* @ApiTitle('教练列表')
* @ApiSummary('获取教练列表')
* @ApiRoute('addons/xilufitness/coach/index')
* @ApiMethod('GET')
* @ApiParams(name='lat',type='string',required=true,description="纬度")
* @ApiParams(name='lng',type='string',required=true,description="经度")
* @ApiParams(name='province_id',type='string',required=false,description='省id')
* @ApiParams(name='city_id',type='string',required=false,description='市id')
* @ApiParams(name='area_id',type='string',required=false,description='区域id')
* @ApiParams(name='cate_pid',type='string',required=false,description='顶级课程分类id')
* @ApiParams(name='cate_id',type='string',required=false,description='子级课程分类id')
* @ApiParams(name='keywords',type='string',required=false,description='关键词')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function index(){
$lat = $this->request->param('lat/s',$this->lat);
$lng = $this->request->param('lng/s',$this->lng);
$province_id = $this->request->param('province_id/s',0,'xilufitness_get_id_value');
$city_id = $this->request->param('city_id/s',0,'xilufitness_get_id_value');
$area_id = $this->request->param('area_id/s',0,'xilufitness_get_id_value');
$cate_pid = $this->request->param('cate_pid/s',0,'xilufitness_get_id_value');
$cate_id = $this->request->param('cate_id/s',0,'xilufitness_get_id_value');
$keywords = $this->request->param('keywords/s','');
$result = CoachService::getInstance()->getCoachList($lat,$lng,$cate_pid,$cate_id,$keywords,$city_id,$province_id,$area_id);
$this->success('',$result);
}
/**
* @ApiTitle('获取教练详情')
* @ApiSummary('获取教练详情')
* @ApiRoute('addons/xilufitness/coach/detail')
* @ApiMethod('GET')
* @ApiParams(name='id',type='string',required=true,description="教练id")
* @ApiParams(name='shop_id',type='string',required=true,description="门店id")
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function detail(){
$id = $this->request->param('id',0,'xilufitness_get_id_value');
$shop_id = $this->request->param('shop_id',0,'xilufitness_get_id_value');
$result = CoachService::getInstance()->getDetail($id,$shop_id);
$this->success('',$result);
}
/**
* @ApiTitle('获取教练/课程/活动/列表')
* @ApiSummary('获取教练/课程/活动/列表')
* @ApiRoute('addons/xilufitness/coach/getList')
* @ApiMethod('GET')
* @ApiParams(name='id',type='string',required=true,description="教练id")
* @ApiParams(name='shop_id',type='string',required=true,description="门店id")
* @ApiParams(name='is_type',type='integer',required=true,description="类型 1 团课 2 私教 3 活动")
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function getList(){
$id = $this->request->param('id',0,'xilufitness_get_id_value');
$shop_id = $this->request->param('shop_id',0,'xilufitness_get_id_value');
$is_type = $this->request->param('is_type/d',0);
$result = CoachService::getInstance()->getList($id,$shop_id,$is_type);
$this->success('',$result);
}
/**
* @ApiTitle('获取教练个人数据信息')
* @ApiSummary('获取教练个人数据信息')
* @ApiRoute('addons/xilufitness/coach/getCoachInfo')
* @ApiMethod('GET')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function getCoachInfo(){
$result = CoachService::getInstance()->getCoachInfo();
$this->success('',$result);
}
/**
* @ApiTitle('提交报备信息')
* @ApiSummary('提交报备信息')
* @ApiRoute('addons/xilufitness/coach/addReport')
* @ApiMethod('post')
* @ApiParams(name='start_at',type='string',require = true, description = '开始时间')
* @ApiParams(name='end_at',type='string',require = true, description = '结束时间')
* @ApiParams(name='description',type='string',require = true, description = '请假事由')
* @ApiParams(name='id',type='string',require = true, description = '教练id')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function addReport(){
$start_at = $this->request->param('start_at');
$end_at = $this->request->param('end_at');
$description = $this->request->param('description');
$id = $this->request->param('id',0,'xilufitness_get_id_value');
$result = CoachService::getInstance()->addReport($id,$start_at,$end_at,$description);
if($result['code'] == 1){
$this->success('请求成功');
}
$this->error($result['msg'] ?? '提交失败');
}
/**
* @ApiTitle('报备信息列表')
* @ApiSummary('报备信息列表')
* @ApiRoute('addons/xilufitness/coach/getReports')
* @ApiMethod('post')
* @ApiParams(name='page',type='integer',require = true, description = '分页码')
* @ApiParams(name='id',type='string',require = true, description = '教练id')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function getReports(){
$id = $this->request->param('id',0,'xilufitness_get_id_value');
$result = CoachService::getInstance()->getReportList($id);
$this->success('',$result);
}
/**
* @ApiTitle('收入明细列表')
* @ApiSummary('收入明细列表')
* @ApiRoute('addons/xilufitness/coach/getCashList')
* @ApiMethod('post')
* @ApiParams(name='page',type='integer',require = true, description = '分页码')
* @ApiParams(name='id',type='string',require = true, description = '教练id')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function getCashList(){
$id = $this->request->param('id',0,'xilufitness_get_id_value');
$result = CoachService::getInstance()->getCashList($id);
$this->success('',$result);
}
/**
* @ApiTitle('教练提现')
* @ApiSummary('教练提现')
* @ApiRoute('addons/xilufitness/coach/addWithdraw')
* @ApiMethod('post')
* @ApiParams(name='withdraw_price',type='Floater',require = true, description = '提现金额')
* @ApiParams(name='id',type='string',require = true, description = '教练id')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function addWithdraw(){
$id = $this->request->param('id',0,'xilufitness_get_id_value');
$price = $this->request->param('withdraw_price');
$result = CoachService::getInstance()->addWithdraw($id,$price);
if($result['code'] == 1){
$this->success('提交成功');
} else {
$this->error($result['msg'] ?? '提交失败');
}
}
/**
* @ApiTitle('教练排课列表')
* @ApiSummary('教练排课列表')
* @ApiRoute('addons/xilufitness/coach/getScheduling')
* @ApiMethod('get')
* @ApiParams(name='course_type',type='integer',require = true, description = '课程类型')
* @ApiParams(name='day_date',type='string',require = true, description = '日期')
* @ApiParams(name='page',type='integer',require = true, description = '分页码')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function getScheduling(){
$course_type = $this->request->param('course_type/d',1);
$day_date = $this->request->param('day_date','');
$day_date = !empty($day_date) && !is_numeric($day_date) ? strtotime($day_date) : strtotime(date('Y-m-d',time()));
$result = CoachService::getInstance()->getScheduling($course_type,$day_date);
$timeList = CourseService::getInstance()->getClassTime();
$result = array_merge($result,['timeList' => $timeList['list'], 'day_date' => date('Y-m-d',time())]);
$this->success('',$result);
}
/**
* @ApiTitle('教练排课详情')
* @ApiSummary('教练排课详情')
* @ApiRoute('addons/xilufitness/coach/getSchedulingDetail')
* @ApiMethod('get')
* @ApiParams(name='is_type',type='integer',require = true, description = '类型')
* @ApiParams(name='id',type='string',require = true, description = '排课id')
* @ApiParams(name='work_camp_id',type='string',require = true, description = '活动排课id')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function getSchedulingDetail(){
$id = $this->request->param('id',0,'xilufitness_get_id_value');
$work_camp_id = $this->request->param('work_camp_id',0,'xilufitness_get_id_value');
$is_type = $this->request->param('is_type/d',1);
$result = CoachService::getInstance()->getSchedulingDetail($id,$work_camp_id,$is_type);
$userListResult = CourseService::getInstance()->getSignList(($is_type == 3 ? $work_camp_id : $id),$is_type);
$result = array_merge($result,['userList' => $userListResult['list'], 'user_count' => $userListResult['user_count']]);
$this->success('',$result);
}
/**
* @ApiTitle('学员排行')
* @ApiSummary('教练排课详情')
* @ApiRoute('addons/xilufitness/coach/getStudentRanking')
* @ApiMethod('get')
* @ApiParams(name='page',type='integer',require = true, description = '分页')
* @ApiParams(name='coach_id',type='string',require = true, description = '教练id')
* @ApiHeaders(name = "brand-key", type = 'string',require = true, description = '应用key')
* @ApiReturnParams(name='code', type='integer',required=true, sample="0")
* @ApiReturnParams(name='msg', type='string',required=true, sample="获取成功")
* @ApiReturnParams(name='data', type='bject',required=true, description= "扩展数据")
* @ApiReturn({
'code' => 1,
'msg' => '获取成功',
'data' => {}
*})
*/
public function getStudentRanking(){
$coach_id = $this->request->param('coach_id',0,'xilufitness_get_id_value');
$result = CoachService::getInstance()->getStudentRanking($coach_id);
$this->success('',$result);
}
}