model = new Teachermodel; parent::_initialize(); //判断登录用户是否是员工 } /** * @ApiTitle( 老师详情) * @ApiSummary(老师详情) * @ApiMethod(GET) * @ApiParams(name = "id", type = "int",required=true,description = "老师id") * @ApiReturn({ * *}) */ public function detail(){ $id = $this->request->get('id/d',''); if(empty($id)){ $this->apierror(__('缺少必要参数')); } try { $res = $this->model->detail($id); } catch (\Exception $e){ // Log::log($e->getMessage()); $this->apierror($e->getMessage(),['errcode'=>$e->getCode()]); } $this->apisuccess('获取成功', ['detail' => $res]); } /** * @ApiTitle( 老师或专家列表(取决于搜索条件)) * @ApiSummary(老师或专家列表(取决于搜索条件)) * @ApiMethod(GET) * @ApiParams(name = "keywords", type = "string",required=false,description = "搜索关键字") * @ApiParams(name = "page", type = "string",required=true,description = "页数") * @ApiParams(name = "limit", type = "string",required=true,description = "条数") * @ApiParams(name = "status", type = "string",required=false,description = "查展示专家请传1,非专家也查请传0") * @ApiParams(name = "recommend", type = "string",required=false,description = "平台首页推荐:0=否,1=是") * @ApiParams(name = "shop_id", type = "string",required=false,description = "机构店铺id") * @ApiParams(name = "user_id", type = "string",required=false,description = "教师用户id") * @ApiReturn({ * *}) */ public function teacher_list() { $user_id = 0; $user = $this->auth->getUser();//登录用户 if($user)$user_id = $user['id']; $params=[ "shop_id"=>$this->auth->shop_id, ]; $page = $this->request->get('page/d', 0); //页数 $limit = $this->request->get('limit/d', 0); //条数 $params['keywords'] = $this->request->get('keywords/s', ''); //搜索关键字 $params['status'] = $this->request->get('status/s', ''); //搜索关键字 $params['recommend'] = $this->request->get('recommend/s', ''); //搜索关键字 $params['shop_id'] = $this->request->get('shop_id/d', ''); //搜索关键字 $params['user_id'] = $this->request->get('user_id/d', ''); //搜索关键字 // $type = $this->request->get('type/s', ''); //筛选学员和教练单 try{ //当前申请状态 $res = $this->model::allList($page, $limit,$params); // if($user_id =='670153'){ // file_put_contents("ceshi66.txt",(new AppointmentOrder())->getLastSql()); // } }catch (\Exception $e){ $this->apierror($e->getMessage()); } $this->apisuccess('查询成功', $res); } /** * @ApiTitle( 微信小程序码) * @ApiSummary(微信小程序码) * @ApiMethod(GET) * @ApiParams(name = "ids", type = "int",required=true,description = "老师id") * @ApiReturn({ * 微信小程序码图片流 *}) */ public function miniqrcode($ids = ''){ $param = $this->request->param(); try{ if(isset($param['ids']))$ids = $param['ids']; //设置模拟资格 $url = \app\common\model\school\classes\Teacher::getMiniQrcodeLink($ids); }catch (\Exception $e){ $this->apierror($e->getMessage()); } return $url["response"]; } protected function updateCheck($id,$params=[],$row=null){ // 课程存在售后订单则不允许操作 if($params && $row){ if(!$this->no_auth_fields_check($params,$row)){ return true; } } // 课程存在未完成订单则不允许操作 $classesLib = \app\common\model\school\classes\ClassesLib::where("teacher_id",$id)->find(); if($classesLib)$this->apierror("存在正在教授的课程无法继续操作!请将课程讲师更换成其他人或者删除该课程后再操作!"); } /** * @ApiTitle( 老师删除) * @ApiSummary(老师删除) * @ApiMethod(POST) * @ApiParams(name = "ids", type = "int",required=true,description = "老师id") * @ApiReturn({ * 微信小程序码图片流 *}) */ public function del($ids = "") { if (!$this->request->isPost()) { $this->apierror(__("Invalid parameters")); } $ids = $ids ? $ids : $this->request->post("ids"); if ($ids) { $pk = $this->model->getPk(); if($this->shopIdAutoCondition){ $this->model->where(array('shop_id'=>SHOP_ID)); } $list = $this->model->where($pk, 'in', $ids)->select(); foreach ($list as $item) { $this->updateCheck($item->id); } $count = 0; Db::startTrans(); try { foreach ($list as $k => $v) { $count += $v->delete(); } Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->apierror($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->apierror($e->getMessage()); } if ($count) { $this->apisuccess(); } else { $this->apierror(__('No rows were deleted')); } } $this->apierror(__('Parameter %s can not be empty', 'ids')); } protected function update_check(&$params,$row=null) { $shop_id = SHOP_ID; $manystore = Manystore::where("shop_id", $shop_id)->find(); if (!$manystore) { $this->apierror("店铺不存在"); } $params["manystore_id"] = $manystore["id"]; $params["shop_id"] = $shop_id; $user = User::where("id|nickname|realname|mobile", $params["user_id"])->find(); if(!$user) $this->apierror("未找到用户请先让用户登录小程序再提交表单"); //添加用户机构认证 try { \app\common\model\manystore\UserAuth::auth(0,$shop_id,$user["id"],0,'shop',$this->auth->id); }catch (\Exception $e){ } //如果开启了检测用户授权,则检测用户是否授权 if(config("site.shop_auth_user_check")){ if(!UserAuth::authcheck($shop_id,$user["id"])) $this->apierror("用户未授权当前机构!请先让用户授权同意您再操作!"); } $params["user_id"] = $user["id"]; $user_id = $params["user_id"]; //修改 if($row){ //用户已是其他的教师(搜索) $teacher_user = $this->model->where("user_id",$user_id)->where("id","<>",$row["id"])->find(); if($teacher_user){ $this->apierror("用户已存在或已是其他授权机构教师!"); } }else{ //新增 //用户已是教师(搜索) $teacher_user = $this->model->where("user_id",$user_id)->find(); if($teacher_user){ $this->apierror("用户已存在或已是其他授权机构教师!"); } } } /** * @ApiTitle( 老师添加) * @ApiSummary(老师添加) * @ApiMethod(POST) * @ApiParams(name = "user_id", type = "int",required=true,description = "教师前台用户id") * @ApiParams(name = "name", type = "int",required=true,description = "教师名") * @ApiParams(name = "head_image", type = "int",required=true,description = "教师头像") * @ApiParams(name = "content", type = "int",required=true,description = "教师简介") * @ApiParams(name = "status", type = "int",required=true,description = "机构展示专家信息:1=上架,2=下架") * @ApiParams(name = "recommend", type = "int",required=true,description = "平台首页推荐:0=否,1=是") * @ApiParams(name = "expert_image", type = "int",required=true,description = "专家头像") * @ApiParams(name = "expert_content", type = "int",required=true,description = "专家介绍") * @ApiParams(name = "weigh", type = "int",required=true,description = "weigh") * @ApiReturn({ * *}) */ public function add() { if ($this->request->isPost()) { $params = $this->request->post(); if ($params) { if($this->storeIdFieldAutoFill && STORE_ID ){ $params['store_id'] = STORE_ID; } if($this->shopIdAutoCondition && SHOP_ID){ $params['shop_id'] = SHOP_ID; } try { $this->update_check($params,$row=null); } catch (ValidateException|PDOException|Exception $e) { $this->apierror($e->getMessage()); } $result = false; Db::startTrans(); try { //是否采用模型验证 if ($this->modelValidate) { $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate; $this->model->validateFailException(true)->validate($validate); } $this->update_check($params,$row=null); $result = $this->model->allowField(true)->save($params); Db::commit(); } catch (ValidateException $e) { Db::rollback(); $this->apierror($e->getMessage()); } catch (PDOException $e) { Db::rollback(); $this->apierror($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->apierror($e->getMessage()); } if ($result !== false) { $this->apisuccess(); } else { $this->apierror(__('No rows were inserted')); } } $this->apierror(__('Parameter %s can not be empty', '')); } } /** * @ApiTitle( 老师编辑) * @ApiSummary(老师编辑) * @ApiMethod(POST) * @ApiParams(name = "ids", type = "int",required=true,description = "教师id") * @ApiParams(name = "user_id", type = "int",required=true,description = "教师前台用户id") * @ApiParams(name = "name", type = "int",required=true,description = "教师名") * @ApiParams(name = "head_image", type = "int",required=true,description = "教师头像") * @ApiParams(name = "content", type = "int",required=true,description = "教师简介") * @ApiParams(name = "status", type = "int",required=true,description = "机构展示专家信息:1=上架,2=下架") * @ApiParams(name = "recommend", type = "int",required=true,description = "平台首页推荐:0=否,1=是") * @ApiParams(name = "expert_image", type = "int",required=true,description = "专家头像") * @ApiParams(name = "expert_content", type = "int",required=true,description = "专家介绍") * @ApiParams(name = "weigh", type = "int",required=true,description = "weigh") * @ApiReturn({ * *}) */ public function edit($ids = null) { $ids = $ids ? $ids : $this->request->post("ids"); if ($this->request->isPost()) { if($this->shopIdAutoCondition){ $this->model->where(array('shop_id'=>SHOP_ID)); } $row = $this->model->where(array('id'=>$ids))->find(); if (!$row) { $this->apierror(__('No Results were found')); } $params = $this->request->post(); if ($params) { $result = false; try { $this->update_check($params,$row); } catch (ValidateException|PDOException|Exception $e) { $this->apierror($e->getMessage()); } Db::startTrans(); try { //是否采用模型验证 if ($this->modelValidate) { $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate; $row->validateFailException(true)->validate($validate); } $this->update_check($params,$row); $result = $row->allowField(true)->save($params); $classesLibs = \app\common\model\school\classes\ClassesLib::where( ['teacher_id'=>$row["id"]])->select(); foreach ($classesLibs as $classesLib){ $classesLib->user_id = $row["user_id"]; $classesLib->save(); //执行课程订单更新 \app\common\model\school\classes\ClassesLib::update_classes($classesLib["id"]); } Db::commit(); } catch (ValidateException $e) { Db::rollback(); $this->apierror($e->getMessage()); } catch (PDOException $e) { Db::rollback(); $this->apierror($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->apierror($e->getMessage()); } if ($result !== false) { $this->apisuccess("更新成功"); } else { $this->apierror(__('No rows were updated')); } } $this->apierror(__('Parameter %s can not be empty', '')); } } }