InfoController.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Http\Controllers\Admin\Share;
  3. use App\Models\BaseSettingsModel;
  4. use App\Models\DreamInfoModel;
  5. use App\Models\InteractionInfo;
  6. use App\Models\SupportDreamModel;
  7. use App\Models\UserInfoModel;
  8. use Illuminate\Http\Request;
  9. use App\Http\Controllers\Controller;
  10. class InfoController extends Controller
  11. {
  12. public function getMd5($str)
  13. {
  14. $start = strripos($str, '/');
  15. $last = substr($str, $start);
  16. return $last;
  17. }
  18. public function view(Request $request){
  19. $id = $request->id;
  20. $dream = DreamInfoModel::with('img')->find($id);
  21. $user_id = $request->user_id;
  22. $times = (strtotime($dream->end_time) -time());
  23. if ($times>=3600*24) {
  24. $days =floor($times/3600/24) .'天';
  25. } elseif($times>3600 && $times< 3600*24){
  26. $days = floor($times/3600) .'小时';
  27. }elseif($times <=0){
  28. $days = '已结束';
  29. }else{
  30. $days =floor ($times/60) .'分钟';
  31. }
  32. // 支持者
  33. $support_dream = SupportDreamModel::where('dream_id',$id)->get();
  34. $top = [] ;
  35. $topuser = []; //所有支持用户排行
  36. $top3user = []; // 支持用户排行前三
  37. foreach ($support_dream as $item) {
  38. if (!array_key_exists($item->user_id,$top)) {
  39. $top[$item->user_id] = $item->score;
  40. }else{
  41. $top[$item->user_id] += $item->score;
  42. }
  43. }
  44. arsort($top);
  45. foreach ($top as $user_id => $score){
  46. $user1 = UserInfoModel::find($user_id);
  47. if (!empty($user1)) {
  48. $user1->score = $score;
  49. $topuser[] = $user1;
  50. if(count($top3user) <= 2) $top3user[] = $user1 ;
  51. }
  52. }
  53. // 互动
  54. $interactions = InteractionInfo::where('dream_id',$id)->with(['comments' => function ($query) {
  55. $query->orderBy('created_at');
  56. }])->orderBy('id','desc')->get();
  57. foreach ($interactions as $k => $v){
  58. if ($v->video) $v->interaction_md5 = $this->getMd5($v->video);
  59. }
  60. // 梦想
  61. $dream = DreamInfoModel::find($id);
  62. $setting = BaseSettingsModel::where('category','score')->select('key','value','sort')->first();
  63. $a = count($setting) > 0 ? $setting->key : 0;
  64. $b = ceil((time()-strtotime($dream->created_at))/60); //梦想发布分钟数
  65. $c = count($setting) > 0 ? $setting->value : 3;
  66. if(empty($c)) $c = 3;
  67. $n = count($setting) > 0 ? $setting->sort : 0;
  68. $number =round( $n*exp(-$a*(pow($b,1/$c)))+1,2);
  69. if ($number <= 1) $number = 1;
  70. $dream = DreamInfoModel::with(['imgs','user'])->find($id);
  71. $dream->signs = explode(',',$dream->sign);
  72. $dream->topuser = $topuser;
  73. $dream->top3user = $top3user;
  74. $dream->interactions = $interactions;
  75. $dream->number = $number;
  76. $dream->a = $a;
  77. $dream->c = $c;
  78. $dream->dream_md5 = $this->getMd5($dream->video);
  79. return view('admin.share1',compact('dream','days','user_id','topuser','top3user','interactions'));
  80. }
  81. }