PostRepositories.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: edz
  5. * Date: 2019-06-10
  6. * Time: 17:53
  7. */
  8. namespace App\Repositories;
  9. use App\Models\Behavior;
  10. use App\Models\PostCollect;
  11. use App\Models\PostData;
  12. use App\Models\PostLike;
  13. use Illuminate\Support\Facades\Log;
  14. use Illuminate\Support\Facades\Redis;
  15. class PostRepositories
  16. {
  17. public function __construct()
  18. {
  19. }
  20. /**
  21. * 更新帖子统计数量
  22. * @param $request
  23. * @return mixed
  24. */
  25. public function updatePostData($request)
  26. {
  27. $postId = $request['post_id'];
  28. $post = PostData::where('post_id', $postId)->first();
  29. if (isset($request['behavior_flag']) && $request['behavior_flag'] == 'read') {
  30. $post->pv += 1;
  31. $post->pv_real += 1;
  32. } elseif (isset($request['behavior_flag']) && $request['behavior_flag'] == 'unlike') {
  33. $post->dislike += 1;
  34. } elseif (isset($request['behavior_flag']) && $request['behavior_flag'] == 'like') {
  35. if($request['behavior_value']){
  36. $post->praise_count += 1;
  37. $post->praise_real_count += 1;
  38. PostLike::create(['uid'=>$request['target_id'],'post_id'=>$request['post_id']]);
  39. }else{
  40. $post->praise_count -= 1;
  41. $post->praise_real_count -= 1;
  42. PostLike::where(['uid'=>$request['target_id'],'post_id'=>$request['post_id']])->delete();
  43. }
  44. } elseif (isset($request['behavior_flag']) && $request['behavior_flag'] == 'forward') {
  45. $post->share_count += 1;
  46. $post->share_real_count += 1;
  47. } elseif (isset($request['behavior_flag']) && $request['behavior_flag'] == 'comment') {
  48. $post->comment_count += 1;
  49. } elseif (isset($request['behavior_flag']) && $request['behavior_flag'] == 'collect') {
  50. if($request['behavior_value']) {
  51. $post->collect_count += 1;
  52. $post->collect_real_count += 1;
  53. PostCollect::create(['uid'=>$request['target_id'],'post_id'=>$request['post_id']]);
  54. }else{
  55. $post->collect_count -= 1;
  56. $post->collect_real_count -= 1;
  57. PostCollect::where(['uid'=>$request['target_id'],'post_id'=>$request['post_id']])->delete();
  58. }
  59. }
  60. return $post->save();
  61. }
  62. /**
  63. * 收集所有有操作的帖子,存入redis
  64. * 供后续计算帖子权重
  65. * @param $id
  66. */
  67. public function collectPostId($id)
  68. {
  69. $key = "community_calc_post_score";
  70. Redis::sadd($key,$id);
  71. }
  72. }