| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 | <?phpnamespace App\Http\Controllers\Wap\Subscribe;use Illuminate\Http\Request;use GuzzleHttp\Client;use App\Http\Controllers\Wap\BaseController;use Redis;use App\Modules\OfficialAccount\Services\OfficialAccountService;use App\Modules\OfficialAccount\Services\ForceSubscribeService;use Cookie;use Hashids;use Log;class SubscribeController extends BaseController{    /**     * @apiDefine Subscribe 强关     */    /**     * @apiVersion 1.0.0     * @apiDescription 获取强关二维码     * @api {get} subscribe/qrcode 获取强关二维码     * @apiGroup Subscribe     * @apiName getSubscribeQrcode     * @apiParam   {int}         bid bid     * @apiSuccess {int}         code 状态码     * @apiSuccess {String}      msg  信息     * @apiSuccess {object}      data 结果集     * @apiSuccess {String}      data.src 分页结果集     * @apiSuccessExample {json} Success-Response:     *     HTTP/1.1 200 OK     *     {     *       code: 0,     *       msg: "",     *       data:{     *           src:'sdfasdfas'     *       }     */    public function getSubscribeQrcode(Request $request)    {        $bid = $request->input('bid', 0);        if ($bid) {            try {                $bid = Hashids::decode($bid)[0];            } catch (\Exception $e) {            }        }        $bid = (int)$bid;        $officialAccount = $this->getOfficialAccount();        if ($officialAccount) {            $info['appid'] = $officialAccount->appid;            $src = $this->getRcodeInfo($info, $bid);            if ($src) {                return response()->success(['src' => $src,'head_img'=>$officialAccount->head_img]);            }        }        return response()->success();    }    protected function getOfficialAccount()    {        $distribution_channel_id = $this->distribution_channel_id;        $res = OfficialAccountService::canUseOfficialAccountByChannelId(compact('distribution_channel_id'));        if (isset($res->nickname) && !empty($res->nickname)) {            Cookie::queue('force_subscribe_name', $res->nickname, env('U_COOKIE_EXPIRE'));        }        return $res;    }    protected function getRcodeInfo($param, $bid)    {        $param_need = [            'gzh_app_id' => $param['appid'],            'scene_id' => $this->uid,            'timestamp' => time(),        ];        $param_need['sign'] = $this->getSign($param_need);        $client = new Client(['timeout' => 3.0,]);        try {            Log::info('ruo guan get qrcode url is:'.'https://zsyauth.aizhuishu.com/api/get_qrcode_url?'.http_build_query($param_need));            $qrcode_url_res = $client->request('get', 'https://zsyauth.aizhuishu.com/api/get_qrcode_url?' . http_build_query($param_need))->getBody()->getContents();            if ($qrcode_url_res) {                $qrcode_url = json_decode($qrcode_url_res, true);                if ($qrcode_url['code'] == 1) {                    //保存强关时的bid                    if (isset($qrcode_url['data']) && !empty($qrcode_url['data'])) {                        Redis::hset('force_subscribe_from_bid', $param['appid'] . '_' . $this->uid, $bid);                        $send_order_id = Cookie::get('send_order_id') ? Cookie::get('send_order_id') : 0;                        Redis::hset('force_subscribe_from_send_order_id', $param['appid'] . '_' . $this->uid, $send_order_id);                        Log::info('ruo guan uid is'.$this->uid.'--qrcode is:'.$qrcode_url['data']);                        return $qrcode_url['data'];                    }                }            }        } catch (\Exception $e) {            Redis::sadd('force_subscribe_qrcode:error', $param['appid'] . '_' . time());        }        return false;    }    //只获取用户的强关二维码    protected function getSimpleRcodeInfo($appid)    {        $param_need = [            'gzh_app_id' => $appid,            'scene_id' => $this->uid,            'timestamp' => time(),        ];        $param_need['sign'] = $this->getSign($param_need);        $client = new Client(['timeout' => 3.0,]);        try {            $qrcode_url_res = $client->request('get', 'https://zsyauth.aizhuishu.com/api/get_qrcode_url?' . http_build_query($param_need))->getBody()->getContents();            if ($qrcode_url_res) {                $qrcode_url = json_decode($qrcode_url_res, true);                if ($qrcode_url['code'] == 1) {                    if (isset($qrcode_url['data']) && !empty($qrcode_url['data'])) {                        return $qrcode_url['data'];                    }                }            }        } catch (\Exception $e) {        }        return false;    }    //获取用户的强关信息    function getFromUser()    {        Cookie::queue('force_show_qrcode', 1, -1);        $uid = $this->uid;        $user_info = ForceSubscribeService::forceSubscribeUsersByUid(compact('uid'));        if(isset($_GET['d']))        {        dump($user_info);            }        if($user_info)        {            $appid = $user_info->appid;            $official_account = OfficialAccountService::officialAccountByAppid(compact('appid'));            if(isset($_GET['d']))            {                dump($official_account);            }            $title = $official_account->nickname;            $img = 'https://open.weixin.qq.com/qr/code?username='.$official_account->name;            if(isset($_GET['d']))            {                $qrcode_url = $this->getSimpleRcodeInfo($appid);dump($qrcode_url);            }            if($qrcode_url = $this->getSimpleRcodeInfo($appid))//用服务号强关二维码            {                $img = $qrcode_url;            }        }else{            return redirect()->to('/recent');        }        $head_img_pool = [            'https://cdn-novel.iycdm.com/h5/subscribe/headimg/1.png',            'https://cdn-novel.iycdm.com/h5/subscribe/headimg/2.png',            'https://cdn-novel.iycdm.com/h5/subscribe/headimg/3.png'        ];        $head_img = array_random($head_img_pool);        return view('wap.userSubInfo',compact('head_img','img','title'));    }}
 |