CoachController.php
10.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
<?php
namespace api\home\controller;
use api\home\model\ToolsModel;
use api\home\service\ToolsService;
use cmf\controller\RestBaseController;
use think\Db;
/**
* @title 教练端-个人中心
*/
class CoachController extends RestBaseController
{
/**
* @title 教练资格认证
* @description 教练资格认证接口
* @author Pan Haowen
* @url /home/coach/coachApply
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @return avatar:用户头像
* @return product:计划课程
*/
public function coachApply(){
$userId = $this->getUserId();
$data['avatar']=cmf_get_image_preview_url(Db::name('user')->where('id',$userId)->find()['avatar']);
$data['product']=Db::name('product')->where('delete_time',null)->select();
$this->success('获取数据成功',$data);
}
/**
* @title 教练资格认证提交
* @description 教练资格认证提交接口
* @author Pan Haowen
* @url /home/coach/coachApplyPost
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:avatar type:varchar require:1 desc:用户头像
* @param name:name type:varchar require:1 desc:姓名
* @param name:product type:varchar require:1 desc:产品id(多选用,隔开)
* @param name:type type:varchar require:1 desc:授课类型(多选用,隔开)
* @param name:training type:varchar require:1 desc:培训机构
* @param name:mobile type:int require:1 desc:授课电话
* @param name:card type:varchar require:1 desc:身份证号
* @param name:brief type:varchar require:1 desc:个人简介
*/
public function coachApplyPost()
{
$userId = $this->getUserId();
$param = $this->request->param();
$param['user_id']=$userId;
$param['create_time']=time();
$param['status']=0;
$param['product']=substr($param['product'],1,strlen($param['product'])-1);
// $param['product']=implode(',',$param['product']);
//判断是否有审核不通过的申请
$re = Db::name('coach')->where('user_id', $userId)->find();
if ($re) {
$data=Db::name('coach')->where('id', $re['id'])->update($param);
}else{
$data=Db::name('coach')->insert($param);
}
if ($data) {
$this->success('操作成功');
}else{
$this->error('操作失败');
}
}
/**
* @title 首页
* @description 教练资格认证提交接口
* @author Pan Haowen
* @url /home/coach/index
* @method POST
* @header name:XX-Token require:1 default: desc:token
*/
public function index()
{
$userId = $this->getUserId();
$coach=Db::name('coach')->where('user_id',$userId)->find();
$coach['avatar']=cmf_get_image_preview_url($coach['avatar']);
$coach['create_time']=date('Y-m-d H:i',$coach['create_time']);
$this->success('获取信息成功',$coach);
}
/**
* @title 教练主页
* @description 主页接口
* @author Pan Haowen
* @url /home/coach/coachIndex
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:coach_id type:int require:1 desc:教练id
* @param name:time type:int require:1 desc:时间搜索条件
*/
public function coachIndex()
{
$this->getUserId();
$param=$this->request->param();
$coach=Db::name('coach')->where('id',$param['coach_id'])->find();
$coach['avatar']=cmf_get_image_preview_url($coach['avatar']);
$coach['create_time']=date('Y年m月d日',$coach['create_time']);
$coach['type']=explode(',',$coach['type']);
$coach['product']=Db::name('product')->where(['delete_time'=>null,'id'=>['in',explode(',',$coach['product'])]])->field('name')->select();
$where=[];
// if (!empty($param['time'])) {
// $where['c.start_time'] = [['>= time', $param['time']], ['<= time', strtotime('+1 month', $param['time'])]];
// } else {
// $where['c.start_time'] = [['>= time', strtotime('+1 month', strtotime(date('Y-m', time())))], ['<= time', strtotime('+2 month', strtotime(date('Y-m', time())))]];
// }
$data=Db::name('coach_class_apply')
->alias('cca')
->join('class c','cca.class_id=c.id')
->join('product p','c.product_id=p.id')
->where($where)
->where(['cca.status'=>1,'cca.coach_id'=>$coach['id'],'p.delete_time'=>null,'c.delete_time'=>null,'c.status'=>1])
->field('p.name as pname,c.type,cca.coach_id,c.id as cid')
->select()
->each(function ($item) {
$item['times']=Db::name('coach_class')->where(['status'=>0,'coach_id'=>$item['coach_id'],'class_id'=>$item['cid']])->count();
$item['star']=Db::name('user_coach_class')
->alias('ucc')
->join('coach_class cc','ucc.coach_class_id=cc.id')
->where(['cc.status'=>0,'cc.coach_id'=>$item['coach_id'],'cc.class_id'=>$item['cid'],'ucc.status'=>1])
->avg('star');
return $item;
});
$new_arr=array();
foreach($data as $k=>$v ){
$new_arr[$v['pname']][] = $v;
}
$this->success("获取数据成功", ['data'=>$new_arr,'coach'=>$coach]);
}
/**
* @title 场所详情
* @description 场所详情接口
* @author Pan Haowen
* @url /home/coach/room
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:room_id type:int require:1 desc:场所id
* @param name:time type:int require:0 desc:筛选课程时间戳
* @return room:场所详情
* @return class:该场所课程
*/
public function room()
{
$userId = $this->getUserId();
$param = $this->request->param();
$data['room'] = Db::name('room')->where('id', $param['room_id'])->find();
//图片处理
$data['room']['thumbnail'] = cmf_get_image_preview_url($data['room']['thumbnail']);
//距离计算
$distance=new ToolsService();
$user = Db::name('user')->where('id', $userId)->find();
$dis=$distance->distance($user['jing'],$user['wei'],$data['room']['lng'],$data['room']['lat']);
if($dis<1000){
$dis=floor($dis).'m';
}else{
$dis=round(($dis/1000),1).'km';
}
$data['room']['distance'] = $dis;
//根据时间计算课程
$where['c.delete_time'] = null;
$where['c.status']=3;
$where['p.delete_time'] = null;
$where['c.room_id'] = $param['room_id'];
if (!empty($param['time'])) {
$time1=$param['time'];
$time2=strtotime('+1 month',$param['time']);
$where['c.start_time'] = [['>= time',intval($time1) ], ['<= time',$time2]];
}
else {
$where['c.start_time'] = [['>= time', strtotime('+1 month', strtotime(date('Y-m', time())))], ['<= time', strtotime('+2 month', strtotime(date('Y-m', time())))]];
}
$data['class'] = Db::name('class')
->alias('c')
->join('product p', 'c.product_id=p.id')
->where($where)
// ->where(['c.start_time'=>[['>= time',intval($param['time'])], ['<= time',$time2]]])
->group('c.product_id')
->field('p.*,c.room_id,count(*) as count')
->select()
->each(function ($item) {
$item['thumbnail'] = cmf_get_image_preview_url($item['thumbnail']);
return $item;
});
$this->success("获取数据成功", $data);
}
/**
* @title 计划产品
* @description 计划产品
* @author Pan Haowen
* @url /home/coach/Class
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:product_id type:int require:1 desc:产品id
* @param name:room_id type:int require:1 desc:场所id
* @param name:time type:int require:0 desc:筛选课程时间戳
* @return room:场所信息
* @return product:产品信息
* @return tuan:团课教程
* @return si:私课教程
*/
public function Class()
{
$userId = $this->getUserId();
$param = $this->request->param();
//场所信息
$data['room'] = Db::name('room')->where('id', $param['room_id'])->field('id,name,lat,lng,location')->find();
$distance=new ToolsService();
$user = Db::name('user')->where('id', $userId)->find();
$dis=$distance->distance($user['jing'],$user['wei'],$data['room']['lng'],$data['room']['lat']);
if($dis<1000){
$dis=floor($dis).'m';
}else{
$dis=round(($dis/1000),1).'km';
}
$data['room']['distance'] = $dis;
//产品信息
$data['product'] = Db::name('product')->where('id', $param['product_id'])->find();
$data['product']['thumbnail'] = cmf_get_image_preview_url($data['product']['thumbnail']);
//根据时间计算课程
$where['delete_time'] = null;
$where['room_id'] = $param['room_id'];
$where['product_id'] = $param['product_id'];
if (!empty($param['time'])) {
$where['start_time'] = [['>= time', intval($param['time'])], ['<= time', strtotime('+1 month', $param['time'])]];
} else {
$where['start_time'] = [['>= time', strtotime('+1 month', strtotime(date('Y-m', time())))], ['<= time', strtotime('+2 month', strtotime(date('Y-m', time())))]];
}
//团教课程
$data['tuan'] = Db::name('class')
->where($where)
->where(['type'=>1,'status'=>3])
->limit(2)
->select()
->each(function ($item) {
$item['avatar'] = Db::name('user_class_apply')->where(['class_id' => $item['id'], 'status' => 1])->limit(4)->select()->each(function ($item2) {
$user = Db::name('user')->where('id', $item2['user_id'])->find();
$item2['avatar'] = cmf_get_image_preview_url($user['avatar']);
$item2['user_name'] = $user['user_nickname'];
return $item2;
});
return $item;
});
//私教课程
$data['si'] = Db::name('class')
->where($where)
->where(['type'=>2,'status'=>3])
->limit(2)
->select()
->each(function ($item) {
$coach_id = Db::name('coach_class_apply')->where(['class_id' => $item['id'], 'status' => 1])->find()['coach_id'];
$coach = Db::name('coach')->where('id', $coach_id)->find();
$item['avatar'] = cmf_get_image_preview_url($coach['avatar']);
$item['coach_name'] = $coach['name'];
return $item;
});
$this->success("获取数据成功", $data);
}
}