FollowSrv.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. class FollowSrv
  3. {
  4. /**
  5. * @param array $data
  6. * @param string $table
  7. * @param array $users [1 => ['username' => 'xxx', ...] ... ]
  8. */
  9. public static function formatWithFollowList(array $data, string $table, array $users = [])
  10. {
  11. $followIds = [];
  12. foreach ($data as &$record) {
  13. $record['follow_ids'] = $record['follow_ids'] ? explode(',', $record['follow_ids']) : [];
  14. rsort($record['follow_ids']);
  15. $record['follow_ids'] = array_slice($record['follow_ids'], 0, 5);
  16. $followIds = Helper::concatArray($followIds, $record['follow_ids']);
  17. $record['follow_list'] = [];
  18. }
  19. if ($followIds) {
  20. $follows = Helper::arrayColumn(
  21. DB::getListWithCriteria($table, DbCriteria::simpleCompare([
  22. 'id' => $followIds
  23. ])->setSelect('id, detail, user_id, create_date')),
  24. null,
  25. 'id'
  26. );
  27. foreach ($data as &$record) {
  28. foreach ($record['follow_ids'] as $followId) {
  29. if (isset($follows[$followId])) {
  30. $followInfo = $follows[$followId];
  31. $followInfo['avatar'] = !empty($users[$followInfo['user_id']]['avatar']) ? $users[$followInfo['user_id']]['avatar'] : '/zqcrm/avatar/20250926/9PLsci1dwXLcb8Iw.jpg';
  32. $followInfo['avatar'] = Helper::getImageUrl($followInfo['avatar'], '', 1);
  33. $followInfo['detail'] = strip_tags($followInfo['detail']);
  34. $followInfo['username'] = $users[$followInfo['user_id']]['username'] ?? '';
  35. $record['follow_list'][] = $followInfo;
  36. }
  37. }
  38. unset($record['follow_ids']);
  39. }
  40. }
  41. return $data;
  42. }
  43. }