From 3aa5ac4d552d4f434eed815f8330f239e9f99624 Mon Sep 17 00:00:00 2001 From: weigang Date: Sat, 12 Sep 2020 19:53:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=AF=84=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/ServiceEvaluateController.php | 75 +++++++++++++ app/Model/v3/ServiceEvaluate.php | 32 ++++++ app/Request/v3/EvaluateRequest.php | 66 ++++++++++++ app/Request/v3/PersonnelRequest.php | 43 ++++++++ .../ServiceEvaluateService.php | 101 ++++++++++++++++++ .../ServiceEvaluateServiceInterface.php | 18 ++++ config/autoload/dependencies.php | 1 + config/routes.php | 8 +- 8 files changed, 340 insertions(+), 4 deletions(-) create mode 100644 app/Controller/v3/ServiceEvaluateController.php create mode 100644 app/Model/v3/ServiceEvaluate.php create mode 100644 app/Request/v3/EvaluateRequest.php create mode 100644 app/Request/v3/PersonnelRequest.php create mode 100644 app/Service/v3/Implementations/ServiceEvaluateService.php create mode 100644 app/Service/v3/Interfaces/ServiceEvaluateServiceInterface.php diff --git a/app/Controller/v3/ServiceEvaluateController.php b/app/Controller/v3/ServiceEvaluateController.php new file mode 100644 index 0000000..bad733e --- /dev/null +++ b/app/Controller/v3/ServiceEvaluateController.php @@ -0,0 +1,75 @@ +evaluateService->evaluate($this->request->all()); + return $this->success($ret); + + } + + /** + *获取服务专员基本信息 + */ + public function isPersonnel(UserRequest $validator) + { + //根据用户iD 获取服务专员详细信息 + $user_id = $this->request->input('user_id', 0); + $res = $this->evaluateService->isPersonnel($user_id); + return $this->success($res); + } + + /** + *获取服务专员基本信息 + */ + public function getPersonnelInfo(PersonnelRequest $validator) + { + //根据服务专员iD 获取服务专员详细信息 + $service_personnel_id = $this->request->input('service_personnel_id', 0); + $res = $this->evaluateService->getPersonnelInfo($service_personnel_id); + //如果存在服务专员则获取配置信息 + if(!empty($res)) { + $config = $this->evaluateService->getQuickEvaluate(); + $res->config = $config; + } + return $this->success($res); + } + + /** + *获取服务专员评价列表 + */ + public function getEvaluateList(PersonnelRequest $validator) + { + //获取服务专员评价列表 + return $this->success($this->evaluateService->getEvaluateList($this->request->all())); + } + +} \ No newline at end of file diff --git a/app/Model/v3/ServiceEvaluate.php b/app/Model/v3/ServiceEvaluate.php new file mode 100644 index 0000000..05153a4 --- /dev/null +++ b/app/Model/v3/ServiceEvaluate.php @@ -0,0 +1,32 @@ + 'datetime:Y-m-d h:i:s', + 'updated_at' => 'datetime:Y-m-d h:i:s', + ]; + +} \ No newline at end of file diff --git a/app/Request/v3/EvaluateRequest.php b/app/Request/v3/EvaluateRequest.php new file mode 100644 index 0000000..44afae2 --- /dev/null +++ b/app/Request/v3/EvaluateRequest.php @@ -0,0 +1,66 @@ + 'required|nonempty', + 'c_service' => 'required|nonempty', + 'c_quality' => 'required|nonempty', + 'content' => 'required|nonempty|strlen:15,150', + 'user_id' => 'required|nonempty|integer|exists:ims_cjdc_user,id', + 'service_personnel_id' => 'required|nonempty|integer|exists_enable:lanzu_service_personnel,id,status=1|not_equal:user_id,lanzu_service_personnel,id,user_id', + 'market_id' => 'required|nonempty|integer|exists:ims_cjdc_market,id', + ]; + } + + public function messages(): array + { + return [ + 'user_id.exists' => ':attribute不存在', + 'service_personnel_id.exists' => ':attribute不存在', + 'market_id.exists' => ':attribute不存在', + 'user_id.*' => ':attribute信息不正确', + 'service_personnel_id.exists_enable' => ':attribute不存在或被禁用', + 'service_personnel_id.not_equal' => ':attribute不能是自己', + 'service_personnel_id.*' => ':attribute信息不正确', + 'market_id.*' => ':attribute信息不正确', + 'c_attitude.*' => ':attribute信息不正确', + 'c_service.*' => ':attribute信息不正确', + 'c_quality.*' => ':attribute信息不正确', + 'content.strlen' => ':attribute字数限制在:min~:max字', + 'content.*' => ':attribute信息不正确', + ]; + } + + public function attributes(): array + { + return [ + 'user_id' => '用户', + 'service_personnel_id' => '服务专员', + 'market_id' => '服务专员市场', + 'c_attitude' => '服务态度评分', + 'c_service' => '服务值评分', + 'c_quality' => '服务质量评分', + 'content' => '服务评价内容', + ]; + } +} diff --git a/app/Request/v3/PersonnelRequest.php b/app/Request/v3/PersonnelRequest.php new file mode 100644 index 0000000..086064e --- /dev/null +++ b/app/Request/v3/PersonnelRequest.php @@ -0,0 +1,43 @@ + 'required|nonempty|integer|exists_enable:lanzu_service_personnel,id,status=1', + ]; + } + + public function messages(): array + { + return [ + 'service_personnel_id.exists_enable' => ':attribute不存在或被禁用', + 'service_personnel_id.*' => ':attribute信息不正确' + ]; + } + + public function attributes(): array + { + return [ + 'service_personnel_id' => '服务专员', + ]; + } +} diff --git a/app/Service/v3/Implementations/ServiceEvaluateService.php b/app/Service/v3/Implementations/ServiceEvaluateService.php new file mode 100644 index 0000000..d0cbbb6 --- /dev/null +++ b/app/Service/v3/Implementations/ServiceEvaluateService.php @@ -0,0 +1,101 @@ + $data['user_id']])->value('join_time'); + $evaluateExist = ServiceEvaluate::where(['user_id' => $data['user_id']])->exists(); + + $data['is_new_user'] = 0; + if ( + !$evaluateExist + && $data['user_created_at']>=strtotime(date('Y-m-d 00:00:00')) + && $data['user_created_at']<=strtotime(date('Y-m-d 23:59:59')) + ) { + $data['is_new_user'] = 1; + } + + // 计算评分平均分 + $score = $data['c_attitude'] + $data['c_service'] + $data['c_quality']; + $data['c_average'] = round($score/3, 1); + + return ServiceEvaluate::create($data); + } + + public function isPersonnel($user_id) + { + $res = Db::table('lanzu_service_personnel') + ->where([ + ['user_id','=',$user_id], + ['status','=',1] + ]) + ->select('id','status') + ->first(); + return $res; + } + + public function getPersonnelInfo($service_personnel_id) + { + $res = Db::table('lanzu_service_personnel') + ->where([ + ['id','=',$service_personnel_id], + ['status','=',1] + ]) + ->first(); + //如果存在服务专员则计算评价平均分 + if(!empty($res)) { + $personnel_average = Db::table('lanzu_service_evaluate')->where(['service_personnel_id' => $service_personnel_id])->avg('c_average'); + $res->personnel_average = sprintf("%.1f", $personnel_average); + } + return $res; + } + + public function getEvaluateList($data) + { + //踩坑 paginate 只能接收int型参数 + $per_page = isset($data['per_page']) && $data['per_page'] > 0 ? intval($data['per_page']) : 6; + //查询评论列表 按照创建时间降序排序 + $res = ServiceEvaluate::join('ims_cjdc_user as u','u.id','=','lanzu_service_evaluate.user_id') + ->where(['lanzu_service_evaluate.service_personnel_id'=>$data['service_personnel_id']]) + ->select('lanzu_service_evaluate.*','u.name','u.img') + ->orderBy('lanzu_service_evaluate.created_at','desc') + ->paginate($per_page); + return $res; + } + + + public function getQuickEvaluate() + { + $data = (object)null; + //获取快速评论标题 + $obj1 = (object)null; + $obj1->title1 = '服务热情'; + $obj1->title2 = '工作仔细'; + $obj1->title3 = '亲和力强'; + $data->quick_evaluate_title = $obj1; + //获取快速评论内容 + $obj2 = (object)null; + $obj2->content1 = '懒族生活的小伙伴服务态度热情,非常耐心的解决我提出的要求。'; + $obj2->content2 = '清洗工作非常的细致入微,很干净!回家可以直接做菜了,很方便!非常感谢懒族小伙伴的服务。'; + $obj2->content3 = '懒族生活服务站的小伙伴聊天时就像朋友一样,亲和力很强。以后买菜就找他们啦!'; + $data->quick_evaluate_content = $obj2; + //获取评论长度限制参数 + $obj3 = (object)null; + $obj3->min_length = 15; + $obj3->max_length = 150; + $data->length = $obj3; + return $data; + } + +} \ No newline at end of file diff --git a/app/Service/v3/Interfaces/ServiceEvaluateServiceInterface.php b/app/Service/v3/Interfaces/ServiceEvaluateServiceInterface.php new file mode 100644 index 0000000..06cf662 --- /dev/null +++ b/app/Service/v3/Interfaces/ServiceEvaluateServiceInterface.php @@ -0,0 +1,18 @@ + \App\Service\v3\Implementations\UserCommunityBindService::class, \App\Service\v3\Interfaces\BadgeServiceInterface::class => \App\Service\v3\Implementations\BadgeService::class, \App\Service\v3\Interfaces\InitialDeliveryServiceInterface::class => \App\Service\v3\Implementations\InitialDeliveryService::class, + \App\Service\v3\Interfaces\ServiceEvaluateServiceInterface::class => \App\Service\v3\Implementations\ServiceEvaluateService::class, ]; diff --git a/config/routes.php b/config/routes.php index e31e2de..afa19de 100644 --- a/config/routes.php +++ b/config/routes.php @@ -141,10 +141,10 @@ Router::addGroup('/v3/', function () { Router::post('userAddress/getAddressAndDistributionPrice', 'App\Controller\v3\UserAddressController@getAddressAndDistributionPrice'); Router::post('withdraw/applyByStore', 'App\Controller\v3\WithdrawController@applyByStore'); Router::post('community/bind', 'App\Controller\v3\CommunityController@bind'); - Router::post('serviceEvaluate/evaluate', 'App\Controller\ServiceEvaluateController@evaluate'); - Router::post('serviceEvaluate/isPersonnel', 'App\Controller\ServiceEvaluateController@isPersonnel'); - Router::post('serviceEvaluate/getPersonnelInfo', 'App\Controller\ServiceEvaluateController@getPersonnelInfo'); - Router::post('serviceEvaluate/getEvaluateList', 'App\Controller\ServiceEvaluateController@getEvaluateList'); + Router::post('serviceEvaluate/evaluate', 'App\Controller\v3\ServiceEvaluateController@evaluate'); + Router::post('serviceEvaluate/isPersonnel', 'App\Controller\v3\ServiceEvaluateController@isPersonnel'); + Router::post('serviceEvaluate/getPersonnelInfo', 'App\Controller\v3\ServiceEvaluateController@getPersonnelInfo'); + Router::post('serviceEvaluate/getEvaluateList', 'App\Controller\v3\ServiceEvaluateController@getEvaluateList'); Router::post('home/market', 'App\Controller\v3\HomeController@marketInfo'); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]);