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.

100 lines
3.6 KiB

5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Service\v3\Implementations;
  3. use App\Model\v3\ServiceEvaluate;
  4. use App\Model\v3\User;
  5. use App\Service\v3\Interfaces\ServiceEvaluateServiceInterface;
  6. use Hyperf\DbConnection\Db;
  7. use Hyperf\Di\Annotation\Inject;
  8. class ServiceEvaluateService implements ServiceEvaluateServiceInterface
  9. {
  10. public function evaluate($data)
  11. {
  12. // 当前用户是否今日新注册并第一次提交评论
  13. $data['user_created_at'] = strtotime(User::where(['id' => $data['user_id']])->value('created_at'));
  14. $evaluateExist = ServiceEvaluate::where(['user_id' => $data['user_id']])->exists();
  15. $data['is_new_user'] = 0;
  16. if (
  17. !$evaluateExist
  18. && $data['user_created_at']>=strtotime(date('Y-m-d 00:00:00'))
  19. && $data['user_created_at']<=strtotime(date('Y-m-d 23:59:59'))
  20. ) {
  21. $data['is_new_user'] = 1;
  22. }
  23. // 计算评分平均分
  24. $score = $data['c_attitude'] + $data['c_service'] + $data['c_quality'];
  25. $data['c_average'] = round($score/3, 1);
  26. return ServiceEvaluate::create($data);
  27. }
  28. public function isPersonnel($user_id)
  29. {
  30. $res = Db::table('lanzu_service_personnel')
  31. ->where([
  32. ['user_id','=',$user_id],
  33. ['status','=',1]
  34. ])
  35. ->select('id','status')
  36. ->first();
  37. return $res;
  38. }
  39. public function getPersonnelInfo($service_personnel_id)
  40. {
  41. $res = Db::table('lanzu_service_personnel')
  42. ->where([
  43. ['id','=',$service_personnel_id],
  44. ['status','=',1]
  45. ])
  46. ->first();
  47. //如果存在服务专员则计算评价平均分
  48. if(!empty($res)) {
  49. $personnel_average = Db::table('lanzu_service_evaluate')->where(['service_personnel_id' => $service_personnel_id])->avg('c_average');
  50. $res->personnel_average = sprintf("%.1f", $personnel_average);
  51. }
  52. return $res;
  53. }
  54. public function getEvaluateList($data)
  55. {
  56. //踩坑 paginate 只能接收int型参数
  57. $per_page = isset($data['per_page']) && $data['per_page'] > 0 ? intval($data['per_page']) : 6;
  58. //查询评论列表 按照创建时间降序排序
  59. $res = ServiceEvaluate::join('ims_cjdc_user as u','u.id','=','lanzu_service_evaluate.user_id')
  60. ->where(['lanzu_service_evaluate.service_personnel_id'=>$data['service_personnel_id']])
  61. ->select('lanzu_service_evaluate.*','u.name','u.img')
  62. ->orderBy('lanzu_service_evaluate.created_at','desc')
  63. ->paginate($per_page);
  64. return $res;
  65. }
  66. public function getQuickEvaluate()
  67. {
  68. $data = (object)null;
  69. //获取快速评论标题
  70. $obj1 = (object)null;
  71. $obj1->title1 = '服务热情';
  72. $obj1->title2 = '工作仔细';
  73. $obj1->title3 = '亲和力强';
  74. $data->quick_evaluate_title = $obj1;
  75. //获取快速评论内容
  76. $obj2 = (object)null;
  77. $obj2->content1 = '懒族生活的小伙伴服务态度热情,非常耐心的解决我提出的要求。';
  78. $obj2->content2 = '清洗工作非常的细致入微,很干净!回家可以直接做菜了,很方便!非常感谢懒族小伙伴的服务。';
  79. $obj2->content3 = '懒族生活服务站的小伙伴聊天时就像朋友一样,亲和力很强。以后买菜就找他们啦!';
  80. $data->quick_evaluate_content = $obj2;
  81. //获取评论长度限制参数
  82. $obj3 = (object)null;
  83. $obj3->min_length = 15;
  84. $obj3->max_length = 150;
  85. $data->length = $obj3;
  86. return $data;
  87. }
  88. }