CrmBooklistController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Http\Controllers\Wap\User;
  3. use App\Client\SiteUser;
  4. use Illuminate\Http\Request;
  5. use App\Http\Controllers\Controller;
  6. use App\Modules\Book\Services\CrmBookAutoRecommendService;
  7. use Hashids;
  8. class CrmBooklistController extends Controller
  9. {
  10. private $channel_id;
  11. public function index(Request $request)
  12. {
  13. $month = date('n');
  14. return view('crm.entrance')->with(compact('month'));
  15. }
  16. public function bookshow(Request $request)
  17. {
  18. $user = app()->make('user');
  19. $this->channel_id = $user->channel_id;
  20. $booklists = (new CrmBookAutoRecommendService)->getRecommendBooksFromRedis();
  21. $book_models = collect($booklists)->groupBy('category_id')
  22. ->map(function ($item, $key) {
  23. $category = collect($item)->first();
  24. $category_id = $category['category_id'];
  25. $category_name = $category['category_name'];
  26. $books = collect($item)->sortByDesc('recommend_index')->values()->transform(function ($item) {
  27. $item['star'] = intval(($item['recommend_index'] - 50) / 10);
  28. $item['link'] = sprintf(
  29. '%s://site%s.%s.com/detail?id=%s',
  30. env('PROTOCOL'),
  31. encodeDistributionChannelId($this->channel_id),
  32. env('CUSTOM_HOST'),
  33. Hashids::encode($item['bid'])
  34. );
  35. return $item;
  36. })->take(4)->all();
  37. return compact('category_id', 'category_name', 'books');
  38. })->all();
  39. return view('crm.bookshow')->with(compact('book_models'));
  40. }
  41. public function booklist(Request $request)
  42. {
  43. $user = app()->make('user');
  44. $this->channel_id = $user->channel_id;
  45. $month = date('n');
  46. $category_id = $request->get('category_id', 0);
  47. if ($category_id) {
  48. $booklists = (new CrmBookAutoRecommendService)->getRecommendBooksFromRedis();
  49. $books = collect($booklists)->where('category_id', $category_id)->transform(function ($item) {
  50. $item['link'] = sprintf(
  51. '%s://site%s.%s.com/detail?id=%s',
  52. env('PROTOCOL'),
  53. encodeDistributionChannelId($this->channel_id),
  54. env('CUSTOM_HOST'),
  55. Hashids::encode($item['bid'])
  56. );
  57. return $item;
  58. })->all();
  59. \Log::info($books);
  60. }
  61. return view('crm.booklist',compact('books', 'month'));#->with(compact('books', 'month'));
  62. }
  63. }