FeedbackController.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * 用户反馈控制器
  4. */
  5. declare(strict_types=1);
  6. namespace Modules\Api\Controllers;
  7. use App\Model\FeedbackModel;
  8. use App\Repositories\Service\CommonService;
  9. use App\Repositories\UserRepository;
  10. use App\Repositories\Utils\M3u8CacheRepository;
  11. use Carbon\Carbon;
  12. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  13. class FeedbackController extends BaseController
  14. {
  15. /**
  16. * 提交反馈
  17. * @return mixed
  18. */
  19. public function create(ValidatorFactoryInterface $validatorFactory)
  20. {
  21. $inputData = $this->getJsonData();
  22. $rules = [
  23. 'type' => 'required|int',
  24. 'content' => 'required|string'
  25. ];
  26. $validator = $validatorFactory->make($inputData, $rules);
  27. if ($validator->fails()) {
  28. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  29. return json_fail($validator->errors()->first());
  30. }
  31. $user_code = $this->getUserId();
  32. $data = [
  33. 'uid' => $user_code,
  34. 'type' => $inputData['type'],
  35. 'rid' => '',
  36. 'content' => $inputData['content'],
  37. ];
  38. $create = FeedbackModel::query()->create($data);
  39. if ($inputData['type'] == 2) {
  40. $create->content = M3u8CacheRepository::getImageUrl($create->content);
  41. }
  42. $user_info = make(UserRepository::class)
  43. ->getUserInfoFromCache($user_code);
  44. $create->avatar = $user_info['avatar'];
  45. Carbon::setLocale('zh');
  46. $create->time = Carbon::parse($create->created_at)->diffForHumans();
  47. unset($create->uid, $create->created_at);
  48. return json_success($create);
  49. }
  50. /**
  51. * 我的反馈列表
  52. * @return mixed
  53. */
  54. public function list(ValidatorFactoryInterface $validatorFactory)
  55. {
  56. $inputData = $this->getJsonData();
  57. $rules = [
  58. 'page' => 'required|int',
  59. 'page_size' => 'required|int',
  60. ];
  61. $validator = $validatorFactory->make($inputData, $rules);
  62. if ($validator->fails()) {
  63. return json_fail($validator->errors()->first());
  64. }
  65. $result = FeedbackModel::query()
  66. ->where(['uid' => $this->getUserId()])
  67. ->orderByDesc('id')
  68. ->paginate(
  69. (int)$inputData['page_size'],
  70. ['type','content','rid','created_at'],
  71. 'page',
  72. (int)$inputData['page']
  73. );
  74. $user_info = make(UserRepository::class)
  75. ->getUserInfoFromCache($this->getUserId());
  76. foreach ($result as $v) {
  77. if ($v->type == 2) {
  78. $v->content = M3u8CacheRepository::getImageUrl($v->content);
  79. }
  80. if (!$v->rid) {
  81. $v->avatar = $user_info['avatar'];
  82. }
  83. Carbon::setLocale('zh');
  84. $v->time = Carbon::parse($v->created_at)->diffForHumans();
  85. unset($v->created_at);
  86. }
  87. return json_success($result);
  88. }
  89. }