CommentTransformer.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/6/15
  6. * Time: 16:40
  7. */
  8. namespace App\Transformers\Post;
  9. use App\Models\PostComment;
  10. use App\Traits\UserTrait;
  11. use Carbon\Carbon;
  12. use Illuminate\Support\Facades\Log;
  13. use Illuminate\Support\Facades\Redis;
  14. use League\Fractal\TransformerAbstract;
  15. class CommentTransformer extends TransformerAbstract
  16. {
  17. use UserTrait;
  18. public function transform(PostComment $postComment)
  19. {
  20. $reply = [];
  21. $replyKey = 'post_new_reply_'.$postComment['id'];
  22. $replyData = Redis::GET($replyKey);
  23. if($replyData){
  24. $reply = json_decode($replyData);
  25. foreach($reply as &$item){
  26. $item['created_at'] = Carbon::parse($item->created_at)->diffForHumans();
  27. }
  28. }else{
  29. $replies = PostComment::where('parent_id', $postComment['id'])->orderBy('id', 'desc')->limit(2)->get();
  30. $redisReply = [];
  31. foreach($replies as $val){
  32. $userComment = $this->userInfo($val->uid);
  33. $replyUsername = '';
  34. if($val->reply_uid){
  35. $userReply = $this->userInfo($val->reply_uid);
  36. $replyUsername = $userReply['username'];
  37. }
  38. $reply[] = [
  39. 'uid' => $val->uid,
  40. 'username' => $userComment['username'],
  41. 'avatar' => $userComment['avatar'],
  42. 'reply_username' => $replyUsername,
  43. 'content' => $val->is_delete?'该评论已被删除':$val->content,
  44. 'created_at' => Carbon::parse($val->created_at)->diffForHumans(),
  45. 'is_delete' => $val->is_delete,
  46. ];
  47. $redisReply[] = [
  48. 'uid' => $val->uid,
  49. 'username' => $userComment['username'],
  50. 'avatar' => $userComment['avatar'],
  51. 'reply_username' => $replyUsername,
  52. 'content' => $val->is_delete?'该评论已被删除':$val->content,
  53. 'created_at' => $val->created_at,
  54. 'is_delete' => $val->is_delete,
  55. ];
  56. }
  57. Redis::SET($replyKey, json_encode($redisReply));
  58. Redis::EXPIRE($replyKey, 604800);
  59. }
  60. $user = $this->userInfo($postComment['uid']);
  61. return [
  62. 'id' => $postComment['id'],
  63. 'uid' => $postComment['uid'],
  64. 'username' => $user['username'],
  65. 'avatar' => $user['avatar'],
  66. 'content' => $postComment['is_delete']?'该评论已被删除':$postComment['content'],
  67. 'created_at' => Carbon::parse($postComment['created_at'])->diffForHumans(),
  68. 'reply_count' => $postComment['reply_count'],
  69. 'reply' => $reply,
  70. 'replys' => $reply,
  71. 'is_delete' => $postComment['is_delete'],
  72. ];
  73. }
  74. }