Modules_Api_Controllers_FeedbackController.proxy.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. use \Hyperf\Di\Aop\ProxyTrait;
  16. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  17. function __construct()
  18. {
  19. if (method_exists(parent::class, '__construct')) {
  20. parent::__construct(...func_get_args());
  21. }
  22. $this->__handlePropertyHandler(__CLASS__);
  23. }
  24. /**
  25. * 提交反馈
  26. * @return mixed
  27. */
  28. public function create(ValidatorFactoryInterface $validatorFactory)
  29. {
  30. $inputData = $this->getJsonData();
  31. $rules = ['type' => 'required|int', 'content' => 'required|string'];
  32. $validator = $validatorFactory->make($inputData, $rules);
  33. if ($validator->fails()) {
  34. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  35. return json_fail($validator->errors()->first());
  36. }
  37. $user_code = $this->getUserId();
  38. $data = ['uid' => $user_code, 'type' => $inputData['type'], 'rid' => '', 'content' => $inputData['content']];
  39. $create = FeedbackModel::query()->create($data);
  40. if ($inputData['type'] == 2) {
  41. $create->content = M3u8CacheRepository::getImageUrl($create->content);
  42. }
  43. $user_info = make(UserRepository::class)->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 = ['page' => 'required|int', 'page_size' => 'required|int'];
  58. $validator = $validatorFactory->make($inputData, $rules);
  59. if ($validator->fails()) {
  60. return json_fail($validator->errors()->first());
  61. }
  62. $result = FeedbackModel::query()->where(['uid' => $this->getUserId()])->orderByDesc('id')->paginate((int) $inputData['page_size'], ['type', 'content', 'rid', 'created_at'], 'page', (int) $inputData['page']);
  63. $user_info = make(UserRepository::class)->getUserInfoFromCache($this->getUserId());
  64. foreach ($result as $v) {
  65. if ($v->type == 2) {
  66. $v->content = M3u8CacheRepository::getImageUrl($v->content);
  67. }
  68. if (!$v->rid) {
  69. $v->avatar = $user_info['avatar'];
  70. }
  71. Carbon::setLocale('zh');
  72. $v->time = Carbon::parse($v->created_at)->diffForHumans();
  73. unset($v->created_at);
  74. }
  75. return json_success($result);
  76. }
  77. }