CrmBooklistController.php 2.9 KB

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