| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | <?php/** * Share.php UTF-8 * 分享 * * @date    : 2017/2/7 22:30 * * @license 这不是一个自由软件,未经授权不许任何使用和传播。 * @author  : wuyonghong <wyh@huosdk.com> * @version : HUOSDK 7.0 */namespace huosdk\share;use huosdk\game\Game;use huosdk\game\Gamepack;use think\Config;use think\Db;use think\Loader;use think\Session;class Share {    /**     * 玩家ID与游戏ID为为空时 表示分享app     *     * @param int $mem_id     * @param int $game_id     *     * @return string     */    public function getGame($mem_id = 0, $game_id = 0) {        $_app_id = $game_id;        $_mem_id = $mem_id;        $cfg_app_congig = Config::get('config.HUOAPP');        if (empty($_mem_id)) {            return false;        }//        $_url = Url::build('wap/Game/read', ['gameid' => $_app_id, 'agentid' => $_mem_agent_id]);//        $_url = Config::get('domain.SDKSITE').$_url;//        if (in_array($_app_id, $cfg_app_congig)) { //没考虑双端问题        if ($_app_id == $cfg_app_congig['APP_APPID']) {//安卓            //分享app, 则分享每个app的下载地址            $_gp_class = new Gamepack($mem_id);            $_url = $_gp_class->getMemAppurl($mem_id);        } elseif ($_app_id == $cfg_app_congig['IOS_APP_APPID']) {//ios            $_url = SDKSITE."/ios/index.html";        } else {            //分享游戏 则分享官方游戏            $_g_class = new  Game();            $_url = $_g_class->getDownlink($_app_id);        }        //生成分享信息        $_title = Db::name('game_info')->where('app_id', $_app_id)->value('publicity');        $_content = Db::name('game_info')->where('app_id', $_app_id)->value('description');        $_share_id = $this->genLog($_mem_id, $_app_id, $_url, $_title, $_content);        Loader::import('phpqrcode.phpqrcode');        $object = new \QRcode();        $level = 3;        $size = 4;        $errorCorrectionLevel = intval($level);//容错级别        $matrixPointSize = intval($size);//生成图片大小        $filename = $_mem_id.".png";        $_path = Config::get('config.UPLOADPATH');        $_savepath = ROOT_SITE_PATH.$_path.$filename;        $object->png($_url, $_savepath, $errorCorrectionLevel, $matrixPointSize, 2);        $_rdata['shareid'] = $_share_id;        $_rdata['title'] = $_title ? $_title : '早游戏';        $_rdata['url'] = $_url;        $_rdata['sharetext'] = $_content ? $_content : '早游戏下载地址';        $_rdata['codeurl'] = Config::get('domain.STATICSITE').'/upload/share/'.$filename;        // 2017年8月4日23:38:23 wc        $_rdata['sharetotal'] = $this->getShareTotal($_mem_id);        $_rdata['memcnt'] = $this->getMemShareCnt($_mem_id);        // 判断是否分包成功        $_url = 1;        if ($_url) {            // 获取玩家分享获得的金币数            $_res = Db::name('options')->where(['option_name' => 'mem_share_icon'])->value('option_value');            $_mem_share_data = json_decode($_res, true);            $_mem_share_icon = $_mem_share_data['option_value'];            // 添加玩家积分            $_mitg_class = new \huosdk\integral\Memitg($_mem_id);            $_mitg_class->addbyAction(ITG_SHARE, $_mem_id);        }        return $_rdata;    }    /**     *  获取玩家分享获得的总金额     */    public function getShareTotal($_mem_id) {        $_sharetotal = Db::name('mem_integral_log')                         ->where(array('mem_id' => $_mem_id))                         ->sum('give_integral');        return empty($_sharetotal) ? 0 : ceil(100 * $_sharetotal) / 100;    }    /**     *  获取玩家分享获取的好友数     */    public function getMemShareCnt($_mem_id) {        $_memcnt = Db::name('members')                     ->where(array('parent_mem_id' => $_mem_id))                     ->count('id');        return empty($_memcnt) ? 0 : $_memcnt;    }    /**     * 生成分享ID     *     * @param int    $mem_id     * @param int    $app_id     * @param string $url     * @param string $title     * @param string $content     *     * @return bool|int|string     */    public function genLog($mem_id = 0, $app_id = 0, $url = '', $title = '', $content = '') {        $_share_data['mem_id'] = $mem_id;        $_share_data['app_id'] = $app_id;        $_share_data['imei'] = empty(Session::get('device_id', 'device')) ? '' : Session::get('device_id', 'device');        $_share_data['deviceinfo'] = empty(Session::get('deviceinfo', 'device'))            ? ''            : Session::get(                'deviceinfo', 'device'            );        $_share_data['userua'] = empty(Session::get('userua', 'device')) ? '' : Session::get('userua', 'device');        $_share_data['from'] = empty(Session::get('from', 'device')) ? '' : Session::get('from', 'device');        $_share_data['create_time'] = time();        $_share_data['title'] = empty($title) ? "" : $title;        $_share_data['content'] = empty($content) ? "" : $content;        $_share_data['url'] = $url;        $_id = Db::name('share_log')->insertGetId($_share_data);        if (false === $_id) {            return false;        }        return $_id;    }    public function getList(array $map, $page = 1, $offset = 10) {        $_mem_id = Session::get('id', 'user');        if (!$_mem_id) {            $_mem_id = Session::get('user.id');        }        $_map['parent_mem_id'] = $_mem_id;        $_field = [            'm.id'                      => 'id',            'FROM_UNIXTIME(m.reg_time)' => 'time',            "m.nickname"                => 'username',            "g.name"                    => 'gamename'        ];        $_join = [            [                Config::get('database.prefix').'game g',                'g.id=m.app_id',                'LEFT'            ]        ];        $_rdata['count'] = Db::name('members')                             ->alias('m')                             ->join($_join)                             ->where($_map)                             ->count();        if ($_rdata['count'] > 0) {            $_page = $page." , ".$offset;            $_list = Db::name('members')                       ->alias('m')                       ->field($_field)                       ->join($_join)                       ->where($_map)                       ->order("m.reg_time desc")                       ->page($_page)                       ->select();            if (empty($_list)) {                $_rdata['list'] = null;            } else {                $_rdata['list'] = $_list;            }        } else {            $_rdata = null;        }        return $_rdata;    }}
 |