post(); $user = User::where(['id' => $request->user->id])->findOrEmpty(); if (!$user->is_photographer) { throw new Exception('您还不是摄影师,请先成为摄影师'); } $studio = Studio::where(['studio_name' => $post_data['studio_name']])->findOrEmpty(); if (!$studio->isEmpty()) { throw new Exception('工作室名称已存在,请更换名称'); } //@todo:判断是否一个人只能添加一个工作室 $res = Studio::create([ 'studio_name' => $post_data['studio_name'], 'img' => $post_data['img'], 'introductions' => $post_data['introductions'], 'user_id' => $request->user->id ]); if (!$res) { throw new Exception('添加失败'); } User::where(['id' => $request->user->id])->save(['studio_id' => $res->id]); return [ 'code' => ResponseCode::SUCCESS, 'msg' => '添加成功' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 工作室列表 * @param $request * @return array */ public function select($request) { try { $list = Studio::order('id desc')->select(); return [ 'code' => ResponseCode::SUCCESS, 'data' => $list, 'msg' => 'success' ]; }catch (Exception $e){ return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 详情 * @param $request * @return array */ public function detail($request) { try { $data = $request->get(); $studio = Studio::where(['id' => $data['id']])->findOrEmpty(); if ($studio->isEmpty()) { throw new Exception('工作室不存在'); } $studio = $studio->toArray(); $studio['is_me'] = 0; if((array)$request->user){ if($studio['user_id'] == $request->user->id){ $studio['is_me'] = 1; } } return [ 'code' => ResponseCode::SUCCESS, 'data' => $studio, ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 工作室摄影师 * @param $request * @return array */ public function getStudioPhotographer($request) { try { $studio = Studio::where(['id' => $request['studio_id']])->findOrEmpty(); if ($studio->isEmpty()) { throw new Exception('工作室不存在'); } $photographer = Photographer::where(['p.studio_id' => $studio->id])->alias('p'); $page = isset($request['page']) ? $request['page'] : 1; $limit = isset($request['limit']) ? $request['limit'] : 10; $total = $photographer->count(); $list = $photographer->page($page, $limit)->select(); foreach ($list as &$item) { $service_type_name = ''; if ($item['service_type']) { $service_type_name = ServiceType::where([ 'id' => explode(',', $item['service_type']) ]) ->field('service_name') ->order('sort desc, id desc') ->select(); if ($service_type_name) { $service_type_name = array_column($service_type_name->toArray(), 'service_name'); } } $item['service_type_name'] = $service_type_name; } return [ 'code' => ResponseCode::SUCCESS, 'data' => [ 'list' => $list, 'total' => $total, 'page' => $page ], ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 移除摄影师 * @param $request * @return array */ public function removePhotographer($request) { try { $data = $request->post(); $studio = Studio::where(['id' => $data['studio_id']])->findOrEmpty(); $photographer = Photographer::where(['id' => $data['photographer_id']])->findOrEmpty(); if ($studio->user_id != $request->user->id) { throw new Exception('非工作室管理者不能操作'); } $photographer->save(['studio_id' => 0]); User::where(['id' => $photographer->user_id])->save(['studio_id' => 0]); return [ 'code' => ResponseCode::SUCCESS, 'msg' => '操作成功' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } }