CrmBooklistController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace App\Http\Controllers\Wap\User;
  3. use App\Modules\User\Services\AnnuallyMonthlyUser;
  4. use Illuminate\Http\Request;
  5. use App\Http\Controllers\Controller;
  6. use App\Modules\Book\Services\CrmBookAutoRecommendService;
  7. use Hashids;
  8. use DB;
  9. class CrmBooklistController extends Controller
  10. {
  11. public function index(Request $request)
  12. {
  13. $month = date('n');
  14. $this->statsDetail($this->getUserColumnValue('id'),'entrance');
  15. return view('crm.entrance')->with(compact('month'));
  16. }
  17. public function bookshow(Request $request)
  18. {
  19. $booklists = (new CrmBookAutoRecommendService)->getRecommendBooksFromRedis();
  20. $book_models = collect($booklists)->groupBy('category_id')
  21. ->map(function ($item, $key) {
  22. $category = collect($item)->first();
  23. $category_id = $category['category_id'];
  24. $category_name = $category['category_name'];
  25. $books = collect($item)->sortByDesc('recommend_index')->values()->transform(function ($item) {
  26. $item['star'] = intval(($item['recommend_index'] - 50) / 10);
  27. $item['link'] = sprintf(
  28. '%s://site%s.%s.com/detail?id=%s&crm=%s',
  29. env('PROTOCOL'),
  30. encodeDistributionChannelId($this->getUserColumnValue('channel_id')),
  31. env('CUSTOM_HOST'),
  32. Hashids::encode($item['bid']),
  33. 'crm_book_show_'.$item['bid']
  34. );
  35. return $item;
  36. })->take(4)->all();
  37. return compact('category_id', 'category_name', 'books');
  38. })->all();
  39. $annually_monthly_user = new AnnuallyMonthlyUser();
  40. $is_annually_monthly_user = $annually_monthly_user->is_monthly || $annually_monthly_user->is_annually;
  41. $this->statsDetail($this->getUserColumnValue('id'),'bookshow');
  42. return view('crm.bookshow')->with(compact('book_models','is_annually_monthly_user'));
  43. }
  44. public function booklist(Request $request)
  45. {
  46. $month = date('n');
  47. $category_id = $request->get('category_id', 0);
  48. $books = [];
  49. if ($category_id) {
  50. $booklists = (new CrmBookAutoRecommendService)->getRecommendBooksFromRedis();
  51. $books = collect($booklists)->where('category_id', $category_id)->transform(function ($item) {
  52. $item['link'] = sprintf(
  53. '%s://site%s.%s.com/detail?id=%s&crm=%s',
  54. env('PROTOCOL'),
  55. encodeDistributionChannelId($this->getUserColumnValue('channel_id')),
  56. env('CUSTOM_HOST'),
  57. Hashids::encode($item['bid']),
  58. 'crm_book_list_'.$item['bid']
  59. );
  60. return $item;
  61. })->all();
  62. }
  63. $this->statsDetail($this->getUserColumnValue('id'),'booklist');
  64. return view('crm.booklist', compact('books', 'month')); #->with(compact('books', 'month'));
  65. }
  66. private function getUserColumnValue(string $column)
  67. {
  68. $user = app()->make('user');
  69. if ($user) {
  70. return $user->$column;
  71. }
  72. }
  73. private function statsDetail($uid,$page,$bid=0)
  74. {
  75. try{
  76. DB::table('crm_visit_detail')->insert([
  77. 'uid'=>$uid,'page'=>$page,
  78. 'bid'=>$bid,'day'=>date('Y-m-d'),
  79. 'created_at'=>date('Y-m-d H:i:s'),
  80. 'updated_at'=>date('Y-m-d H:i:s')
  81. ]);
  82. }catch (\Exception $e){}
  83. }
  84. }