post(); $validate = new RequirementValidate(); if (!$validate->check($data)) { throw new Exception($validate->getError()); } $user = User::where(['id' => $request->user->id])->findOrEmpty(); // if ($user->is_photographer) { // throw new Exception('只有普通用户可以发布需求哟~'); // } $requirement = Requirement::create([ 'user_id' => $request->user->id, 'user_name' => $data['user_name'], 'sex' => $data['sex'], 'mobile' => $data['mobile'], 'service_address' => $data['service_address'], 'service_time' => $data['service_time'], 'service_type' => $data['service_type'], 'is_need_deposit' => $data['is_need_deposit'], 'price' => $data['price'], 'mark' => $data['mark'], 'status' => 1,//0:初始化 1:竞价中 2:已竞价 3:已完成 4:用户取消' ]); if (!$requirement) { throw new Exception('发布失败'); } $requirement_trade_no = generate_order_no('D'); //生成一条需求订单 $requirement_order = RequirementOrder::create([ 'requirement_id' => $requirement->id, 'requirement_trade_no' => $requirement_trade_no, ]); $requirement->save(['requirement_trade_no' => $requirement_trade_no]); return [ 'code' => ResponseCode::SUCCESS, 'msg' => '发布成功', ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 删除需求 * @param $request * @return array */ public function del($request) { try { $data = $request->post(); $requirement = Requirement::where(['id' => $data['id']])->findOrEmpty(); if ($requirement->findOrEmpty()) { throw new Exception('未找到需求'); } if ($requirement->user_id != $request->user->id) { throw new Exception('非需求发布者,不能操作'); } //@todo:约定某些状态无法删除 if ($requirement->status == 0) { } $res = $requirement->delete(); if (!$res) { throw new Exception('删除失败'); } return [ 'code' => ResponseCode::SUCCESS, 'msg' => '操作成功', ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 需求详情 * @param $request * @return array */ public function detail($request) { try { $requirement = Requirement::where(['id' => $request['id']])->with(['serviceType'])->findOrEmpty(); if ($requirement->isEmpty()) { throw new Exception('需求未找到'); } return [ 'code' => ResponseCode::SUCCESS, 'data' => $requirement, ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 用户自己的需求列表 * @param $request * @return array */ public function getUserSelfRequirementList($request) { try { $data = $request->get(); $requirement = Requirement::order('id desc')->where(['user_id' => $request->user->id]); if (isset($data['service_type']) && $data['service_type'] != '') { $requirement->where(['service_type' => $data['service_type']]); } if (isset($data['status']) && $data['status']) { if ($data['status'] == 1) { $requirement->where(['status' => [1, 2]]); } else { $requirement->where(['status' => $data['status']]); } } $page = isset($data['page']) ? $data['page'] : 1; $limit = isset($data['limit']) ? $data['limit'] : 10; $total = $requirement->count(); $list = $requirement->page($page, $limit)->with(['serviceType', 'bidWinPhotographer'])->select(); 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 getRequirement($request) { try { $requirement = Requirement::order('id desc'); if (isset($request['service_type']) && !empty($request['service_type'])) { $requirement->where(['service_type' => $request['service_type']]); } $page = isset($request['page']) ? $request['page'] : 1; $limit = isset($request['limit']) ? $request['limit'] : 10; $total = $requirement->count(); $list = $requirement->page($page, $limit)->with('serviceType')->select(); 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 getBidRequirements($request) { try { $requestData = $request->get(); $photographer = Photographer::where(['user_id' => $request->user->id])->findOrEmpty(); $service_type = []; if ($photographer->service_type) { $service_type = explode(',', $photographer->service_type); } $requirement = Requirement::where(['service_type' => $service_type]); if (isset($requestData['status']) && $requestData['status']) { if ($requestData['status'] == 1) { $requirement->where(['status' => [1, 2]]); } else { $requirement->where(['status' => $requestData['status']]); } } $page = isset($requestData['page']) ? $requestData['page'] : 1; $limit = isset($requestData['limit']) ? $requestData['limit'] : 10; $total = $requirement->count(); $list = $requirement->with('serviceType')->page($page, $limit)->order('id desc')->select(); return [ 'code' => ResponseCode::SUCCESS, 'data' => [ 'list' => $list, 'total' => $total, 'page' => $page, ] ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } public function cance() { } }