CrmBooklistController.php 3.6 KB

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