You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

102 lines
3.7 KiB

<?php
namespace App\Service\v3\Implementations;
use App\Model\v3\ServiceEvaluate;
use App\Model\v3\ServicePersonnel;
use App\Model\v3\User;
use App\Service\v3\Interfaces\ServiceEvaluateServiceInterface;
use Hyperf\DbConnection\Db;
use Hyperf\Di\Annotation\Inject;
class ServiceEvaluateService implements ServiceEvaluateServiceInterface
{
public function evaluate($data)
{
// 当前用户是否今日新注册并第一次提交评论
$data['user_created_at'] = strtotime(User::where(['id' => $data['user_id']])->value('created_at'));
$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 = ServicePersonnel::query()
->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;
}
}