CrmBooklistController.php 2.8 KB

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