ProblemService.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Services;
  3. use App\Models\Answer;
  4. use App\Models\Problem;
  5. use App\Models\User;
  6. class ProblemService
  7. {
  8. public static function problems(array $list)
  9. {
  10. $ids = array_column($list, 'id');
  11. $answer = Answer::getList($ids);
  12. return self::mergeProblem($list, $answer);
  13. }
  14. public static function mergeProblem(array $list,array $answer){
  15. $answer = array_column($answer, null,'problem_id');
  16. foreach ($list as &$item){
  17. if (strtotime($item['created_at']) < strtotime('-3 days')){
  18. $item['is_new'] = 0;
  19. }else{
  20. $item['is_new'] = 1;
  21. }
  22. if (isset($answer[$item['problem_id']])){
  23. $item['answer'] = $answer[$item['problem_id']];
  24. }else{
  25. $item['answer'] = new class {};
  26. }
  27. }
  28. return $list;
  29. }
  30. public static function getProblemRecommendList(int $limit,int $page)
  31. {
  32. $list = Problem::getList($page,$limit);
  33. $userList = array_column($list,'user_id');
  34. $atUserList = array_column($list,'at_user_id');
  35. $userList = array_unique(array_merge($userList,$atUserList));
  36. $userInfoList = User::getUserListInUserIds($userList);
  37. return ['list'=>$list,'userList'=>$userInfoList];
  38. }
  39. }