CommentController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Http\Controllers\Client;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\Client\Comment\CreateRequest;
  5. use App\Services\Client\CommentService;
  6. use Illuminate\Http\Request;
  7. class CommentController extends Controller
  8. {
  9. protected CommentService $service;
  10. public function __construct(CommentService $service)
  11. {
  12. $this->service = $service;
  13. }
  14. /**
  15. * 提交评价
  16. *
  17. * @group 评价管理
  18. *
  19. * @bodyParam order_id integer required 订单ID
  20. * @bodyParam score integer required 评分(1-5)
  21. * @bodyParam content string 评价内容
  22. * @bodyParam images array 图片列表
  23. * @bodyParam images.* string 图片地址
  24. * @bodyParam is_anonymous boolean 是否匿名
  25. * @bodyParam tag_ids array 标签ID列表
  26. * @bodyParam tag_ids.* integer 标签ID
  27. *
  28. * @response {
  29. * "code": 0,
  30. * "message": "操作成功",
  31. * "data": {
  32. * "id": 1,
  33. * "message": "评价提交成功"
  34. * }
  35. * }
  36. */
  37. public function store(CreateRequest $request): array
  38. {
  39. $data = $request->validated();
  40. return $this->success($this->service->create($data));
  41. }
  42. /**
  43. * 获取技师评价列表
  44. *
  45. * @group 评价管理
  46. *
  47. * @queryParam coach_id integer required 技师ID
  48. * @queryParam score integer 评分筛选(1-5)
  49. * @queryParam tag_id integer 标签筛选
  50. * @queryParam page integer 页码 Example: 1
  51. * @queryParam per_page integer 每页数量 Example: 10
  52. *
  53. * @response {
  54. * "code": 0,
  55. * "message": "操作成功",
  56. * "data": {
  57. * "total": 100,
  58. * "current_page": 1,
  59. * "last_page": 10,
  60. * "items": [
  61. * {
  62. * "id": 1,
  63. * "score": 5,
  64. * "content": "服务很好",
  65. * "images": ["url1", "url2"],
  66. * "created_at": "2024-01-01 12:00:00",
  67. * "user": {
  68. * "id": 1,
  69. * "nickname": "用户昵称",
  70. * "avatar": "头像地址"
  71. * },
  72. * "tags": [
  73. * {
  74. * "id": 1,
  75. * "name": "标签名称"
  76. * }
  77. * ]
  78. * }
  79. * ]
  80. * }
  81. * }
  82. */
  83. public function index(Request $request): array
  84. {
  85. $filters = $request->validate([
  86. 'coach_id' => 'required|integer|exists:coach_users,id',
  87. 'score' => 'nullable|integer|min:1|max:5',
  88. 'tag_id' => 'nullable|integer|exists:coach_comment_tags,id',
  89. 'page' => 'nullable|integer|min:1',
  90. 'per_page' => 'nullable|integer|min:1|max:50',
  91. ]);
  92. return $this->success($this->service->getCoachComments($filters['coach_id'], $filters));
  93. }
  94. }