WelcomeController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace App\Http\Controllers\QuickApp;
  3. use App\Modules\AdPosition\Services\AdPositionService;
  4. use App\Modules\SendOrder\Models\QappSendOrder;
  5. use App\Modules\SendOrder\Models\QuickAppSendOrder;
  6. use App\Modules\User\Models\QappChannelAccount;
  7. use App\Modules\User\Services\QappPackageService;
  8. use Illuminate\Http\Request;
  9. use App\Modules\OfficialAccount\Services\CustomMsgService;
  10. use App\Modules\SendOrder\Services\SendOrderService;
  11. use Hashids;
  12. use Cookie;
  13. use Redis;
  14. class WelcomeController extends BaseController
  15. {
  16. private $send_order_id;
  17. public function index(Request $request, string $send_order_id_encode)
  18. {
  19. $decode_id = Hashids::decode($send_order_id_encode);
  20. if ($decode_id) {
  21. $this->send_order_id = $decode_id[0];
  22. $send_order = SendOrderService::getSendOrderStatic($this->send_order_id);
  23. $distribution_channel_id = $send_order->distribution_channel_id;
  24. $qappPackage = QappPackageService::getPackage($distribution_channel_id);
  25. if ($send_order && $qappPackage) {
  26. $this->sendOrderStatistic($send_order);//统计
  27. return view('qapp.welcome')->with([
  28. 'package' => $qappPackage->package,
  29. 'hash_bid' => Hashids::encode($send_order->book_id),
  30. 'cid' => $send_order->chapter_id,
  31. 'send_order_id' => $this->send_order_id
  32. ]);
  33. }
  34. }
  35. }
  36. private function sendOrderStatistic($send_order)
  37. {
  38. $key = date('Y-m-d');
  39. $send_order_flag = Cookie::get('send_order_flag');
  40. $send_orders = explode(',', $send_order_flag);
  41. //uv
  42. if (!Cookie::get('send_order_flag_' . $this->send_order_id) && !in_array($this->send_order_id, $send_orders)) {
  43. Redis::hincrby('send_order_uv_' . $this->send_order_id, $key, 1);
  44. Redis::hincrby('send_order_uv_' . $this->send_order_id, 'total', 1);
  45. array_push($send_orders, $this->send_order_id);
  46. $str = implode(',', $send_orders);
  47. Cookie::queue('send_order_flag', $str, env('U_COOKIE_EXPIRE'), null, null, false, false);
  48. }
  49. if (Cookie::get('send_order_flag_' . $this->send_order_id)) {
  50. array_push($send_orders, $this->send_order_id);
  51. $str = implode(',', $send_orders);
  52. Cookie::queue('send_order_flag', $str, env('U_COOKIE_EXPIRE'), null, null, false, false);
  53. Cookie::queue('send_order_flag_' . $this->send_order_id, null, -1);
  54. }
  55. //pv
  56. Redis::hincrby('send_order_pv_' . $this->send_order_id, $key, 1); //每天
  57. Redis::hincrby('send_order_pv_' . $this->send_order_id, 'total', 1); //汇总
  58. Redis::sadd('send_order' . $key, $this->send_order_id);
  59. if (isset($send_order->send_time) && $send_order->send_time) {
  60. } else {
  61. $uv = Redis::hget('send_order_uv_' . $this->send_order_id, $key);
  62. if ($uv && $uv > 20) {
  63. SendOrderService::updateSendOrderTime($this->send_order_id);
  64. }
  65. }
  66. }
  67. /**
  68. * @apiVersion 1.0.0
  69. * @apiDescription 获取客服二维码
  70. * @api {GET} customer_img 获取客服二维码
  71. * @apiHeader {String} [Authorization] token
  72. * @apiGroup User
  73. * @apiName customer_img
  74. * @apiSuccess {String} data.name 名称.
  75. * @apiSuccess {String} data.url 图片地址.
  76. * @apiSuccessExample {json} Success-Response:
  77. *
  78. * {
  79. * "code": 0,
  80. * "msg": "",
  81. * "data": {}
  82. */
  83. public function getCustomerServiceImg()
  84. {
  85. $link = CustomMsgService::customerImgUrlByChannelId($this->distribution_channel_id);
  86. $name = 'zhenzhenyd';
  87. if ($link && $link->customer_img_url) {
  88. $url = $link->customer_img_url;
  89. } else {
  90. $url = env('KE_FU_QRCODE', 'https://cdn-novel.iycdm.com/static/img/kefu20190319.jpg');
  91. }
  92. return response()->success(compact('url', 'name'));
  93. }
  94. /**
  95. * 系统设置
  96. * @return mixed
  97. */
  98. public function getOptions(Request $request)
  99. {
  100. // 获取包名
  101. $package = $request->header('x-package', '');
  102. $sendOrderId = $request->header('send-order-id', '');
  103. // 获取客服信息
  104. $supports = config('option.supports');
  105. $support = getProp($supports, $package, (object)[]);
  106. // 获取派单信息
  107. $adPositions = [];
  108. // if ($sendOrderId) {
  109. // $sendOrder = QappSendOrder::getSendOrderById($sendOrderId);
  110. // $channelAccount = QappChannelAccount::getByAccount(getProp($sendOrder, 'account'));
  111. // $adPositions = AdPositionService::getInstance()->getAdPositions($this->uid, getProp($channelAccount, 'id'));
  112. // }
  113. // 配置
  114. $data = [
  115. 'support' => $support,
  116. 'task_center' => [
  117. 'home_show' => 1,
  118. 'pay_back_alert_show' => 1,
  119. ],
  120. 'position' => [
  121. 'home_alert' => getProp($adPositions, 'home_alert', []),
  122. 'reader_banner' => getProp($adPositions, 'reader_banner', [])
  123. ]
  124. ];
  125. return response()->success($data);
  126. }
  127. }