IndexController.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace App\Http\Controllers\WapBrowser\Index;
  3. use Illuminate\Http\Request;
  4. use App\Modules\Book\Services\BookConfigService;
  5. use App\Http\Controllers\Wap\Book\Transformers\BookTransformer;
  6. use App\Http\Controllers\WapBrowser\BaseController;
  7. use Cache;
  8. use Cookie;
  9. use App\Modules\SendOrder\Services\SendOrderService;
  10. use Redis;
  11. class IndexController extends BaseController
  12. {
  13. /* 新版 index */
  14. public function index(Request $request)
  15. {
  16. $subjects = [
  17. [
  18. 'label' => '轮播',
  19. 'key' => 'LOOP',
  20. ],
  21. [
  22. 'label' => '热书推荐',
  23. 'key' => 'HOT',
  24. ],
  25. [
  26. 'label' => '神书推荐',
  27. 'key' => 'ZHIBO',
  28. ],
  29. [
  30. 'label' => '编辑推荐',
  31. 'key' => 'RECOM',
  32. ],
  33. [
  34. 'label' => '新书推荐',
  35. 'key' => 'NEW_RECOM',
  36. ],
  37. ];
  38. $SEX = $sex = $request->has('type') && $request->input('type') == 'male' ? 'MALE' : 'FEMALE';
  39. //$SEX = $sex === 'male' ? "MALE" : "FEMALE";
  40. foreach ($subjects as &$subject) {
  41. $subject['list'] = BookConfigService::getBooksByIds(explode(',', env("BOOK_{$SEX}_{$subject['key']}")));
  42. }
  43. $ranks = [
  44. BookConfigService::getBooksByIds([677, 694, 638, 642, 641, 673, 635, 639, 637, 4]),
  45. BookConfigService::getBooksByIds([2, 638, 642, 635, 639, 4, 743, 680, 736, 73]),
  46. BookConfigService::getBooksByIds([638, 677, 694, 635, 612, 693, 634, 642, 775, 780]),
  47. ];
  48. return view('wap-browser.index.index', [
  49. 'title' => '书城',
  50. 'sex' => $SEX,
  51. 'subjects' => $subjects,
  52. 'ranks' => $ranks,
  53. ]);
  54. }
  55. public function yun(Request $request, $t, $domain, $param)
  56. {
  57. $h5_scheme = env('H5_SCHEME', 'https');
  58. if (is_numeric($t)) {
  59. $domain_distribution_channel_id = $t;
  60. } else {
  61. $domain_distribution_channel_id = decodeDistributionChannelId($t);
  62. }
  63. $link = SendOrderService::getRedirectUrlById($param);
  64. //判单是否存在 且要为浏览器派单
  65. if (!$link || $link->promotion_point == 1) {
  66. return redirect()->to($h5_scheme . '://' . _domain() . '/');
  67. }
  68. //访问时的site id与派单的site id 不一致 直接返回首页
  69. if ($link->distribution_channel_id != $domain_distribution_channel_id) {
  70. return redirect()->to($h5_scheme . '://' . _domain());
  71. }
  72. $key = date('Y-m-d');
  73. Cookie::queue('send_order_id', $param, env('U_COOKIE_EXPIRE'), null, null, false, false);
  74. $url = $h5_scheme . '://' . _domain(). $link->redirect_url;
  75. $send_order_flag = Cookie::get('send_order_flag');
  76. $send_orders = explode(',', $send_order_flag);
  77. //uv
  78. if (!in_array($param, $send_orders)) {
  79. Redis::hincrby('browser_send_order_uv_' . $param, $key, 1);
  80. Redis::hincrby('browser_send_order_uv_' . $param, 'total', 1);
  81. array_push($send_orders, $param);
  82. $str = implode(',', $send_orders);
  83. Cookie::queue('send_order_flag', $str, env('U_COOKIE_EXPIRE'), null, null, false, false);
  84. }
  85. //pv
  86. Redis::hincrby('browser_send_order_pv_' . $param, $key, 1);//每天
  87. Redis::hincrby('browser_send_order_pv_' . $param, 'total', 1);//汇总
  88. Redis::sadd('browser_send_order' . $key, $param);
  89. if (empty($link->send_time)) {
  90. $uv = Redis::hget('browser_send_order_uv_' . $param, $key);
  91. $this->updateSendOrderTime($param, $uv);
  92. }
  93. return redirect()->to($url);
  94. }
  95. protected function updateSendOrderTime($send_order_id, $uv)
  96. {
  97. if ($uv && $uv >= 20) {
  98. try {
  99. SendOrderService::updateSendOrderTime($send_order_id);
  100. } catch (\Exception $e) {
  101. }
  102. }
  103. return false;
  104. }
  105. }