PictureListTransformer.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/6/6
  6. * Time: 14:08
  7. */
  8. namespace App\Transformers\Circle;
  9. use App\Models\InterestCircle;
  10. use App\Models\InterestCirclePicture;
  11. use App\Traits\UserTrait;
  12. use Illuminate\Support\Carbon;
  13. use Illuminate\Support\Facades\Redis;
  14. use League\Fractal\TransformerAbstract;
  15. class PictureListTransformer extends TransformerAbstract
  16. {
  17. use UserTrait;
  18. public function transform(InterestCirclePicture $interestCirclePicture)
  19. {
  20. $user = $this->formatUser($this->userInfo($interestCirclePicture['uid']));
  21. return [
  22. 'id' => $interestCirclePicture['patch_num'],
  23. 'user' => $user ? $user : new \stdClass(),
  24. 'imgs' => $this->getImgs($interestCirclePicture),
  25. 'created_at' => Carbon::parse($interestCirclePicture['created_at'])->toDateTimeString(),
  26. ];
  27. }
  28. public function getImgs(InterestCirclePicture $interestCirclePicture)
  29. {
  30. $imgs = [];
  31. $key = 'circle_picture_' . $interestCirclePicture['patch_num'];
  32. $tmp = Redis::get($key);
  33. if (empty($tmp)) {
  34. $picList = InterestCirclePicture::where('patch_num', $interestCirclePicture['patch_num'])->get();
  35. foreach ($picList as $pic) {
  36. $imgs[] = $pic->image;
  37. }
  38. } else {
  39. $imgs = json_decode($tmp, true);
  40. }
  41. return $imgs;
  42. }
  43. }