InfoController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 view(Request $request){
  13. $id = $request->id;
  14. $dream = DreamInfoModel::with('img')->find($id);
  15. $user_id = $request->user_id;
  16. $times = (strtotime($dream->end_time) -time());
  17. if ($times>=3600*24) {
  18. $days =floor($times/3600/24) .'天';
  19. } elseif($times>3600 && $times< 3600*24){
  20. $days = floor($times/3600) .'小时';
  21. }elseif($times <=0){
  22. $days = '已结束';
  23. }else{
  24. $days =floor ($times/60) .'分钟';
  25. }
  26. // 支持者
  27. $support_dream = SupportDreamModel::where('dream_id',$id)->get();
  28. $top = [] ;
  29. $topuser = []; //所有支持用户排行
  30. $top3user = []; // 支持用户排行前三
  31. foreach ($support_dream as $item) {
  32. if (!array_key_exists($item->user_id,$top)) {
  33. $top[$item->user_id] = $item->score;
  34. }else{
  35. $top[$item->user_id] += $item->score;
  36. }
  37. }
  38. arsort($top);
  39. foreach ($top as $user_id => $score){
  40. $user1 = UserInfoModel::find($user_id);
  41. if (!empty($user1)) {
  42. $user1->score = $score;
  43. $topuser[] = $user1;
  44. if(count($top3user) <= 2) $top3user[] = $user1 ;
  45. }
  46. }
  47. // 互动
  48. $interactions = InteractionInfo::where('dream_id',$id)->with(['comments' => function ($query) {
  49. $query->orderBy('created_at');
  50. }])->orderBy('id','desc')->get();
  51. // 梦想
  52. $dream = DreamInfoModel::find($id);
  53. $setting = BaseSettingsModel::where('category','score')->select('key','value','sort')->first();
  54. $a = count($setting) > 0 ? $setting->key : 0;
  55. $b = ceil((time()-strtotime($dream->created_at))/60); //梦想发布分钟数
  56. $c = count($setting) > 0 ? $setting->value : 3;
  57. if(empty($c)) $c = 3;
  58. $n = count($setting) > 0 ? $setting->sort : 0;
  59. $number =round( $n*exp(-$a*(pow($b,1/$c)))+1,2);
  60. if ($number <= 1) $number = 1;
  61. $dream = DreamInfoModel::with(['imgs','user'])->find($id);
  62. $dream->signs = explode(',',$dream->sign);
  63. $dream->topuser = $topuser;
  64. $dream->top3user = $top3user;
  65. $dream->interactions = $interactions;
  66. $dream->number = $number;
  67. $dream->a = $a;
  68. $dream->c = $c;
  69. // dd($topuser);
  70. // foreach ($topuser as $key => $cal) {
  71. // dump($key);
  72. // }
  73. // dd();
  74. return view('admin.share1',compact('dream','days','user_id','topuser','top3user','interactions'));
  75. }
  76. }