| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 | <?phpnamespace App\Http\Controllers\QuickApp;use App\Consts\PushConst;use App\Libs\Push\OPPOPush\OPPOPushCommon;use App\Modules\AdPosition\Services\AdPositionService;use App\Modules\Channel\Services\QappSendOrderContentShieldConfigService;use App\Modules\SendOrder\Models\QappSendOrder;use App\Modules\User\Models\QappCallbackParams;use App\Modules\User\Models\QappChannelAccount;use App\Modules\User\Models\User;use App\Modules\User\Services\QappPackageService;use Illuminate\Http\Request;use App\Modules\OfficialAccount\Services\CustomMsgService;use App\Modules\SendOrder\Services\SendOrderService;use Hashids;use Cookie;use Redis;class WelcomeController extends BaseController{    private $send_order_id;    public function index(Request $request, string $send_order_id_encode)    {        $decode_id = Hashids::decode($send_order_id_encode);        if ($decode_id) {            $this->send_order_id     = $decode_id[0];            $send_order              = SendOrderService::getSendOrderStatic($this->send_order_id);            $distribution_channel_id = $send_order->distribution_channel_id;            $qappPackage             = QappPackageService::getPackage($distribution_channel_id);            $this->getCallbackParams($request);            $showGzh     = 0;            $sendOrderId = $this->send_order_id;            if ($sendOrderId && in_array($sendOrderId, explode(',', env('SHOW_GZH_SEND_ORDER_IDS')))) {                $showGzh = 1;            }            if ($send_order && $qappPackage) {                $this->sendOrderStatistic($send_order);//统计                $cid = $send_order->chapter_id;                $hash_bid = Hashids::encode($send_order->book_id);                $doShied = QappSendOrderContentShieldConfigService::doShied($this->send_order_id, _getIp());                if($doShied){                    if(isset($doShied['bid']) && isset($doShied['cid'])){                        $hash_bid = Hashids::encode($doShied['bid']);                        $cid = $doShied['cid'];                    }                }                return view('qapp.start')->with([                    'package'       => $qappPackage->package,                    'hash_bid'      => $hash_bid,                    'cid'           => $cid,                    'send_order_id' => $this->send_order_id,                    'show_gzh'      => $showGzh                ]);            }        }    }    /**     * 平台附加在推广链接后的参数存储     * @param $request     */    private function getCallbackParams($request)    {        $tid = $request->get('tid','');        $pageId = $request->get('pageId','');        try {            if(!empty($tid) && !empty($pageId)){                $qapp_send_order = QappSendOrder::getSendOrderById($this->send_order_id);                \Log::info('$qapp_send_order:'.json_encode($qapp_send_order).'$this->send_order_id:'.$this->send_order_id);                if($qapp_send_order && !empty($qapp_send_order)){                    if(isset($qapp_send_order['platform']) && $qapp_send_order['platform'] == PushConst::PROVIDER_OPPO){                        //用户ip                        $ip = _getIp();                        $provider = $qapp_send_order['platform'];                        $send_order_id = $this->send_order_id;                        $lbid = $request->get('lbid','');                        $params = json_encode(compact('tid','pageId','lbid'));                        QappCallbackParams::firstOrCreate(compact('ip','send_order_id','provider'),compact('params'));                    }                }            }        } catch (\Exception $e) {            \Log::info('oppo_request_error:'.$e->getMessage());        }    }    private function sendOrderStatistic($send_order)    {        $key             = date('Y-m-d');        $send_order_flag = Cookie::get('send_order_flag');        $send_orders     = explode(',', $send_order_flag);        //uv        if (!Cookie::get('send_order_flag_' . $this->send_order_id) && !in_array($this->send_order_id, $send_orders)) {            Redis::hincrby('send_order_uv_' . $this->send_order_id, $key, 1);            Redis::hincrby('send_order_uv_' . $this->send_order_id, 'total', 1);            array_push($send_orders, $this->send_order_id);            $str = implode(',', $send_orders);            Cookie::queue('send_order_flag', $str, env('U_COOKIE_EXPIRE'), null, null, false, false);        }        if (Cookie::get('send_order_flag_' . $this->send_order_id)) {            array_push($send_orders, $this->send_order_id);            $str = implode(',', $send_orders);            Cookie::queue('send_order_flag', $str, env('U_COOKIE_EXPIRE'), null, null, false, false);            Cookie::queue('send_order_flag_' . $this->send_order_id, null, -1);        }        //pv        Redis::hincrby('send_order_pv_' . $this->send_order_id, $key, 1); //每天        Redis::hincrby('send_order_pv_' . $this->send_order_id, 'total', 1); //汇总        Redis::sadd('send_order' . $key, $this->send_order_id);        if (isset($send_order->send_time) && $send_order->send_time) {        } else {            $uv = Redis::hget('send_order_uv_' . $this->send_order_id, $key);            if ($uv && $uv > 20) {                SendOrderService::updateSendOrderTime($this->send_order_id);            }        }    }    /**     * @apiVersion 1.0.0     * @apiDescription 获取客服二维码     * @api {GET} customer_img 获取客服二维码     * @apiHeader {String} [Authorization]  token     * @apiGroup User     * @apiName customer_img     * @apiSuccess {String}  data.name 名称.     * @apiSuccess {String}  data.url 图片地址.     * @apiSuccessExample {json} Success-Response:     *     *     {     *         "code": 0,     *         "msg": "",     *         "data": {}     */    public function getCustomerServiceImg(Request $request)    {        $link = CustomMsgService::customerImgUrlByChannelId($this->distribution_channel_id);        $name = 'zhenzhenyd';        if ($link && $link->customer_img_url) {            $url = $link->customer_img_url;        } else {            $url = env('KE_FU_QRCODE', 'https://cdn-novel.iycdm.com/static/img/kefu20190319.jpg');        }        // 获取客服信息        $package  = $request->header('x-package', '');        $supports = config('option.supports');        $support  = getProp($supports, $package, []);        if ($support) {            $url  = getProp($support, 'customerImage', 'https://cdn-novel.iycdm.com/static/img/kefu20190319.jpg');            $name = getProp($support, 'customerAccount', 'zhenzhenyd');        }        return response()->success(compact('url', 'name'));    }    /**     * 系统设置     * @return mixed     */    public function getOptions(Request $request)    {        // 获取包名        $package = $request->header('x-package', '');        // 获取客服信息        $supports = config('option.supports');        $support  = getProp($supports, $package, (object)[]);        // 获取用户信息        $user        = User::getUser($this->uid);        $sendOrderId = getProp($user, 'send_order_id');        // 获取派单信息        $adPositions = [];        if ($sendOrderId) {            $sendOrder      = QappSendOrder::getSendOrderById($sendOrderId);            $channelAccount = QappChannelAccount::getByAccount(getProp($sendOrder, 'account'));            $adPositions    = AdPositionService::getInstance()->getAdPositions($this->uid, getProp($channelAccount, 'id'));        }        // 配置        $data = [            'support'        => $support,            'task_center'    => [                'home_show'           => 1,                'pay_back_alert_show' => 1,            ],            'add_desk_alert' => [                'sign_out_app_show'    => $sendOrderId ? 1 : 0,                'sign_out_reader_show' => $sendOrderId ? 1 : 0,            ],            'position'       => [                'home_alert'    => getProp($adPositions, 'home_alert', []),                'reader_banner' => getProp($adPositions, 'reader_banner', []),                'open_alert' => getProp($adPositions, 'open_alert', []),            ]        ];        return response()->success($data);    }}
 |