Coupon.php 5.99 KB
<?php

/**
 * Created by PhpStorm.
 * User: Targaryen
 * Date: 2016/4/11
 * Time: 16:31
 */
use Action\AbstractAction;
use Coupon\CouponModel;
use LibModels\Wap\Coupon\CouponData;
use Plugin\DataProcess\CouponFloorProcess;
use Plugin\Helpers;


class CouponController extends AbstractAction
{
    /**
     * 领券楼层数据列表
     *
     * @author chengyao.guo
     */
    public function floorAction()
    {

        if (!$this->isApp()) {
            $this->setNavHeader('领券中心', true, SITE_MAIN);
        }
        $receiveData = filter_input_array(INPUT_GET, array(
            'code' => FILTER_DEFAULT
        ));
        $result = array();
        $uid = '';
        if ($this->isApp()) {
            $uid = $this->get('uid');
        } else {
            $uid = $this->getUid();
        }
        $resource = CouponData::getCouponRousource($receiveData['code'], $uid);
        if (isset($resource['code']) && $resource['code'] === 200) {
            $result = CouponFloorProcess::getContent($resource['data']);
        }else{
            $this->_view->display('index', array(
                'content' => array(
                    'noData' => true,
                ),
                'floorPage' => true
            ));
        }
        // 分享
        $shareData = CouponFloorProcess::getShare($receiveData['code'], '领券中心');
        $result[count($result)] = $shareData;
        $this->_view->display('index', array(
            'content' => $result,
            'floorPage' => true
        ));
    }

    /**
     * 领券操作
     *
     * @author chengyao.guo
     */
    public function receiveCouponAction()
    {
        $returnData = array();
        // 获取优惠券 ID
        $receiveData = filter_input_array(INPUT_GET, array(
            'couponID' => FILTER_DEFAULT
        ));
        // 跳转 URl
        $playUrl = Helpers::url('/coupon/floor');
        // 判断用户是否登录
        $isLogin = false;
        if ($this->isApp()) {
            if ($this->get('uid') && is_numeric($this->get('uid'))) {
                $isLogin = true;
            }
        } else {
            if ($this->getUid() && is_numeric($this->getUid())) {
                $isLogin = true;
            }
        }
        if (!$isLogin) {
            // 用户未登录,跳转登录页面
            $returnData['noLogin'] = true;
            if (!$this->isApp()) {
                $returnData['url'] = Helpers::url('/signin.html', array('refer' => $playUrl), 'default');
            } else {
                $playUrlEncode = strtr($playUrl, array('/' => '\\/'));
                $returnData['url'] = $playUrl . '?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"' . $playUrlEncode . '","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}';
            }
        } else {
            // 登录后调用领券接口
            $result = CouponData::receiveCoupon($this->getUid(), $receiveData['couponID']);
            switch ($result['code']) {
                case 200:
                    $returnData = array(
                        'msg' => '领券成功!',
                        'status' => true,
                    );
                    break;
                default:
                    $returnData = array(
                        'msg' => '领券失败!',
                        'status' => false,
                    );
                    break;
            }
        }
        echo json_encode($returnData);
    }

    /**
     * 判断是否是 APP
     *
     * @return bool
     */
    public function isApp()
    {
        $userAgent = $this->getUserAgent();
        if (stristr($userAgent, 'ipad')) {
            return false;
        }
        $mobileAgents = array('iphone', 'android', "240x320", "acer", "acoon", "acs-", "abacho", "ahong", "airness", "alcatel", "amoi", "anywhereyougo.com", "applewebkit/525", "applewebkit/532", "asus", "audio", "au-mic", "avantogo", "becker", "benq", "bilbo", "bird", "blackberry", "blazer", "bleu", "cdm-", "compal", "coolpad", "danger", "dbtel", "dopod", "elaine", "eric", "etouch", "fly ", "fly_", "fly-", "go.web", "goodaccess", "gradiente", "grundig", "haier", "hedy", "hitachi", "htc", "huawei", "hutchison", "inno", "ipad", "ipaq", "ipod", "jbrowser", "kddi", "kgt", "kwc", "lenovo", "lg ", "lg2", "lg3", "lg4", "lg5", "lg7", "lg8", "lg9", "lg-", "lge-", "lge9", "longcos", "maemo", "mercator", "meridian", "micromax", "midp", "mini", "mitsu", "mmm", "mmp", "mobi", "mot-", "moto", "nec-", "netfront", "newgen", "nexian", "nf-browser", "nintendo", "nitro", "nokia", "nook", "novarra", "obigo", "palm", "panasonic", "pantech", "philips", "phone", "pg-", "playstation", "pocket", "pt-", "qc-", "qtek", "rover", "sagem", "sama", "samu", "sanyo", "samsung", "sch-", "scooter", "sec-", "sendo", "sgh-", "sharp", "siemens", "sie-", "softbank", "sony", "spice", "sprint", "spv", "symbian", "tablet", "talkabout", "tcl-", "teleca", "telit", "tianyu", "tim-", "toshiba", "tsm", "up.browser", "utec", "utstar", "verykool", "virgin", "vk-", "voda", "voxtel", "vx", "wap", "wellco", "wig browser", "wii", "windows ce", "wireless", "xda", "xde", "zte");
        $isMobile = false;
        foreach ($mobileAgents as $device) {
            if (stristr($userAgent, $device)) {
                $isMobile = true;
                break;
            }
        }
        return $isMobile;
    }

    /**
     * 获取用户User-Agent
     * @return bool
     */
    public function getUserAgent()
    {
        if (!isset($_SERVER['HTTP_USER_AGENT']) || empty($_SERVER['HTTP_USER_AGENT'])) {
            return '';
        }
        return $_SERVER['HTTP_USER_AGENT'];
    }


    /**
     * 获取优惠券
     */
    public function couponSendAction()
    {
        $callback = $this->get('callback');
        $token = $this->get('token', '');
        $uid = $this->getUid(true);
        $app = $this->get('app', array());

        $result = CouponModel::couponSend($uid, $token, $app);

        $this->helpJsonCallbackResult($callback, $result['code'], $result['message'], $result['data']);
    }
}