|
|
|
|
<?php
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | OneThink [ WE CAN DO IT JUST THINK IT ]
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
use Home\Controller\PromoteCoinController;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 前台公共库文件
|
|
|
|
|
* 主要定义前台公共函数库
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function is_weixin_brower()
|
|
|
|
|
{
|
|
|
|
|
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function is_in_qq_brower()
|
|
|
|
|
{
|
|
|
|
|
if (strpos($_SERVER['HTTP_USER_AGENT'], 'QQ/') !== false) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_apply_launch_status($applyid = 0, $gameid = 0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (is_numeric($applyid) && is_numeric($gameid) && $applyid > 0 and $gameid > 0) {
|
|
|
|
|
|
|
|
|
|
$launchmodel = M('apply_launch', 'tab_');
|
|
|
|
|
|
|
|
|
|
$launch = $launchmodel->field('launch_packge')->where(['apply_id' => $applyid, 'launch_game_id' => $gameid, 'launch_packge' => array('neq', 1)])->find();
|
|
|
|
|
|
|
|
|
|
return !empty($launch) ? true : false;
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 平台币来源
|
|
|
|
|
* @author 鹿文学
|
|
|
|
|
*/
|
|
|
|
|
function get_promote_coin_source_name($id = 0)
|
|
|
|
|
{
|
|
|
|
|
if (is_numeric($id) && $id > 0 && $id < 6) {
|
|
|
|
|
$list = get_promote_coin_source_list();
|
|
|
|
|
return $list[$id];
|
|
|
|
|
} else {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 平台币来源列表
|
|
|
|
|
* @author 鹿文学
|
|
|
|
|
*/
|
|
|
|
|
function get_promote_coin_source_list()
|
|
|
|
|
{
|
|
|
|
|
return [
|
|
|
|
|
1 => '后台发放',
|
|
|
|
|
2 => '自主充值',
|
|
|
|
|
3 => '渠道充值',
|
|
|
|
|
4 => '充值渠道',
|
|
|
|
|
5 => '充值子渠道',
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_user_by_game($promote_id, $game_id = '', $fields = 'user_id,user_account')
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
$map = [];
|
|
|
|
|
|
|
|
|
|
$game_id > 0 && $map['game_id'] = $game_id;
|
|
|
|
|
|
|
|
|
|
$promote_id > 0 && $map['promote_id'] = $promote_id;
|
|
|
|
|
|
|
|
|
|
$map['ppuid'] = 0;
|
|
|
|
|
|
|
|
|
|
$data = M("UserPlay", "tab_")->field($fields)->where($map)->group('user_id')->select();
|
|
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_pro_grade_name($id = 0, $flag = 0)
|
|
|
|
|
{
|
|
|
|
|
$list = ['', '一级渠道', '二级渠道', '三级渠道'];
|
|
|
|
|
if ($flag > 0)
|
|
|
|
|
return $list[$id + 1];
|
|
|
|
|
else
|
|
|
|
|
return $list[$id];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function check_another_status($game_id = 0, $promote_id = 0)
|
|
|
|
|
{
|
|
|
|
|
if (is_numeric($game_id) && $game_id > 0 && is_numeric($promote_id) && $promote_id > 0) {
|
|
|
|
|
|
|
|
|
|
$result = M('apply', 'tab_')->field('id')->where(['game_id' => $game_id, 'promote_id' => $promote_id])->find();
|
|
|
|
|
|
|
|
|
|
if (is_array($result) && $result['id'] > 0) {
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 截取指定两个字符之间字符串 */
|
|
|
|
|
function get_between($input, $start, $end)
|
|
|
|
|
{
|
|
|
|
|
$substr = substr($input, strlen($start) + strpos($input, $start), (strlen($input) - strpos($input, $end)) * (-1));
|
|
|
|
|
return $substr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检测用户是否登录
|
|
|
|
|
* @return integer 0-未登录,大于0-当前登录用户ID
|
|
|
|
|
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
|
|
|
|
*/
|
|
|
|
|
function is_login_promote()
|
|
|
|
|
{
|
|
|
|
|
$user = session('promote_auth');
|
|
|
|
|
if (empty($user)) {
|
|
|
|
|
return 0;
|
|
|
|
|
} else {
|
|
|
|
|
return session('promote_auth_sign') == data_auth_sign($user) ? $user['pid'] : 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_pay_sett($id)
|
|
|
|
|
{
|
|
|
|
|
switch ($id) {
|
|
|
|
|
case 0:
|
|
|
|
|
return "未提现";
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
|
return "已提现";
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检测验证码
|
|
|
|
|
* @param integer $id 验证码ID
|
|
|
|
|
* @return boolean 检测结果
|
|
|
|
|
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
|
|
|
|
*/
|
|
|
|
|
function check_verify($code, $id = 1)
|
|
|
|
|
{
|
|
|
|
|
$verify = new \Think\Verify();
|
|
|
|
|
return $verify->check($code, $id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取列表总行数
|
|
|
|
|
* @param string $category 分类ID
|
|
|
|
|
* @param integer $status 数据状态
|
|
|
|
|
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
|
|
|
|
*/
|
|
|
|
|
function get_list_count($category, $status = 1)
|
|
|
|
|
{
|
|
|
|
|
static $count;
|
|
|
|
|
if (!isset($count[$category])) {
|
|
|
|
|
$count[$category] = D('Document')->listCount($category, $status);
|
|
|
|
|
}
|
|
|
|
|
return $count[$category];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取段落总数
|
|
|
|
|
* @param string $id 文档ID
|
|
|
|
|
* @return integer 段落总数
|
|
|
|
|
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
|
|
|
|
*/
|
|
|
|
|
function get_part_count($id)
|
|
|
|
|
{
|
|
|
|
|
static $count;
|
|
|
|
|
if (!isset($count[$id])) {
|
|
|
|
|
$count[$id] = D('Document')->partCount($id);
|
|
|
|
|
}
|
|
|
|
|
return $count[$id];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取导航URL
|
|
|
|
|
* @param string $url 导航URL
|
|
|
|
|
* @return string 解析或的url
|
|
|
|
|
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
|
|
|
|
*/
|
|
|
|
|
function get_nav_url($url)
|
|
|
|
|
{
|
|
|
|
|
switch ($url) {
|
|
|
|
|
case 'http://' === substr($url, 0, 7):
|
|
|
|
|
case '#' === substr($url, 0, 1):
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$url = U($url);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return $url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_apply_dow_url($game_id = 0, $promote_id = 0)
|
|
|
|
|
{
|
|
|
|
|
$model = M('Apply', 'tab_');
|
|
|
|
|
$map['game_id'] = $game_id;
|
|
|
|
|
$map['promote_id'] = $promote_id;
|
|
|
|
|
$map['offline_status'] = 0;
|
|
|
|
|
$data = $model->where($map)->find();
|
|
|
|
|
if (empty($data['dow_url'])) {
|
|
|
|
|
$game_address = M('game', 'tab_')->where('id=' . $game_id)->find();
|
|
|
|
|
if ($game_address['sdk_version'] == 1) {
|
|
|
|
|
if ($game_address['add_game_address'] != '') {
|
|
|
|
|
$game_address_url = $game_address['add_game_address'];
|
|
|
|
|
return $game_address_url;
|
|
|
|
|
} else {
|
|
|
|
|
$game_address_url = $game_address['and_dow_address'];
|
|
|
|
|
return 'http://' . C('APPLY_DOWN_DOMAIN') . substr($game_address_url, 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if ($game_address['ios_game_address'] != '') {
|
|
|
|
|
$game_address_url = $game_address['ios_game_address'];
|
|
|
|
|
return $game_address_url;
|
|
|
|
|
} else {
|
|
|
|
|
$game_address_url = $game_address['ios_dow_address'];
|
|
|
|
|
return 'http://' . C('APPLY_DOWN_DOMAIN') . substr($game_address_url, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 'https://' . C('APPLY_DOWN_DOMAIN') . $data['dow_url'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_promote_list_by_id()
|
|
|
|
|
{
|
|
|
|
|
$map['parent_id'] = get_pid();
|
|
|
|
|
$pro = M("promote", "tab_")->where($map)->select();
|
|
|
|
|
return $pro;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function index_show($param = array())
|
|
|
|
|
{
|
|
|
|
|
$paramcount = count($param);
|
|
|
|
|
if ($paramcount > 0) {
|
|
|
|
|
$paramm[0][] = $param[0];
|
|
|
|
|
$paramm[0][] = $param[1];
|
|
|
|
|
$paramm[0][] = $param[2];
|
|
|
|
|
}
|
|
|
|
|
if ($paramcount - 3 > 0) {
|
|
|
|
|
$paramm[1][] = $param[3];
|
|
|
|
|
$paramm[1][] = $param[4];
|
|
|
|
|
$paramm[1][] = $param[5];
|
|
|
|
|
}
|
|
|
|
|
foreach ($paramm as $key => $value) {
|
|
|
|
|
foreach ($value as $k => $v) {
|
|
|
|
|
if ($v == '') {
|
|
|
|
|
unset($paramm[$key][$k]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $paramm;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取礼包激活码数量
|
|
|
|
|
function get_site_gift_num($id)
|
|
|
|
|
{
|
|
|
|
|
$data = M('site_gift', 'tab_')->find($id);
|
|
|
|
|
$novice = explode(',', $data['novice']);
|
|
|
|
|
$count = count($novice);
|
|
|
|
|
if (empty(array_pop($novice)) && $count > 0) {
|
|
|
|
|
$count--;
|
|
|
|
|
}
|
|
|
|
|
if (empty($novice[0])) {
|
|
|
|
|
//$count--;
|
|
|
|
|
}
|
|
|
|
|
return $count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取游戏类型
|
|
|
|
|
function get_game_type($id)
|
|
|
|
|
{
|
|
|
|
|
$game_type = D('SiteGame')->field('game_type')->find($id);
|
|
|
|
|
return $game_type['game_type'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取游戏名称
|
|
|
|
|
function get_site_game_name($id)
|
|
|
|
|
{
|
|
|
|
|
$game_type = D('SiteGame')->field('game_name')->find($id);
|
|
|
|
|
return $game_type['game_name'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取游戏图标
|
|
|
|
|
function get_site_game_icon($id)
|
|
|
|
|
{
|
|
|
|
|
$data = D('SiteGame')->field('game_icon')->find($id);
|
|
|
|
|
$icon_url = get_cover($data['game_icon'], 'path');
|
|
|
|
|
return $icon_url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取游戏ID
|
|
|
|
|
function get_game_id($game_name)
|
|
|
|
|
{
|
|
|
|
|
$map['game_name'] = $game_name;
|
|
|
|
|
$map['promote_id'] = PID;
|
|
|
|
|
$game_type = M('Game', 'tab_')->field('id')->where($map)->find();
|
|
|
|
|
return $game_type['id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_game_icon()
|
|
|
|
|
{
|
|
|
|
|
$data = $game_type = M('Game', 'tab_')->field('icon')->find($id);
|
|
|
|
|
return $data['icon'];
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_site_game_id($game_name)
|
|
|
|
|
{
|
|
|
|
|
$map['game_name'] = $game_name;
|
|
|
|
|
$map['promote_id'] = PID;
|
|
|
|
|
$game_type = D('SiteGame')->field('id')->where($map)->find();
|
|
|
|
|
return $game_type['id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断手机访问型号
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
function get_device_type()
|
|
|
|
|
{
|
|
|
|
|
//全部变成小写字母
|
|
|
|
|
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
|
|
|
|
|
$type = 'other';
|
|
|
|
|
//分别进行判断
|
|
|
|
|
if (strpos($agent, 'iphone') || strpos($agent, 'ipad')) {
|
|
|
|
|
$type = 'ios';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (strpos($agent, 'android')) {
|
|
|
|
|
$type = 'android';
|
|
|
|
|
}
|
|
|
|
|
return $type;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取支付方式
|
|
|
|
|
function get_pay_way($id = null)
|
|
|
|
|
{
|
|
|
|
|
if (!isset($id)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
switch ($id) {
|
|
|
|
|
case -1:
|
|
|
|
|
return "绑币";
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
return "平台币";
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
return "支付宝";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
case 3:
|
|
|
|
|
case 4:
|
|
|
|
|
return "微信";
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
return "聚宝云";
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
return "竣付通";
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
return "苹果支付";
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
return "金猪支付";
|
|
|
|
|
break;
|
|
|
|
|
case 9:
|
|
|
|
|
return "双乾支付";
|
|
|
|
|
break;
|
|
|
|
|
case 15:
|
|
|
|
|
return "双乾支付-快捷";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取支付方式
|
|
|
|
|
function getPayStatusName($status)
|
|
|
|
|
{
|
|
|
|
|
switch ($status) {
|
|
|
|
|
case -1:
|
|
|
|
|
return "绑币";
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
return "平台币";
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
return "支付宝";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
case 3:
|
|
|
|
|
case 4:
|
|
|
|
|
return "微信";
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
return "聚宝云";
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
return "竣付通";
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
return "苹果支付";
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
return "金猪支付";
|
|
|
|
|
break;
|
|
|
|
|
case 9:
|
|
|
|
|
return "双乾支付";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取打包状态
|
|
|
|
|
* @param [type] $promote_id [description]
|
|
|
|
|
* @param [type] $game_id [description]
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function get_enable_status($promote_id = 0, $game_id = 0)
|
|
|
|
|
{
|
|
|
|
|
if ($promote_id != 0 && $game_id != 0) {
|
|
|
|
|
$map['promote_id'] = $promote_id;
|
|
|
|
|
$map['game_id'] = $game_id;
|
|
|
|
|
$data = M('apply', 'tab_')->field('enable_status')->where($map)->find();
|
|
|
|
|
if ($data) {
|
|
|
|
|
return $data['enable_status'];
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取打包id ,单价 分成比例
|
|
|
|
|
* @param [type] $promote_id [description] 0:id 1:money 2:ratio
|
|
|
|
|
* @param [type] $game_id [description]
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function get_apply_id($promote_id = 0, $game_id = 0, $type = 0)
|
|
|
|
|
{
|
|
|
|
|
if ($promote_id != 0 && $game_id != 0) {
|
|
|
|
|
$map['promote_id'] = $promote_id;
|
|
|
|
|
$map['game_id'] = $game_id;
|
|
|
|
|
$data = M('apply', 'tab_')->field('id,promote_ratio,promote_money')->where($map)->find();
|
|
|
|
|
if ($type == 1) {
|
|
|
|
|
return $data['promote_money'];
|
|
|
|
|
die;
|
|
|
|
|
} elseif ($type == 2) {
|
|
|
|
|
return $data['promote_ratio'];
|
|
|
|
|
die;
|
|
|
|
|
} else {
|
|
|
|
|
return $data['id'];
|
|
|
|
|
die;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (empty($data)) {
|
|
|
|
|
$data = M('game', 'tab_')->field('id,ratio,money')->find($game_id);
|
|
|
|
|
if ($type == 1) {
|
|
|
|
|
return $data['money'];
|
|
|
|
|
die;
|
|
|
|
|
} elseif ($type == 2) {
|
|
|
|
|
return $data['ratio'];
|
|
|
|
|
die;
|
|
|
|
|
} else {
|
|
|
|
|
return $data['id'];
|
|
|
|
|
die;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取打包状态
|
|
|
|
|
* @param [type] $promote_id [description]
|
|
|
|
|
* @param [type] $game_id [description]
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function get_apply_status($promote_id = 0, $game_id = 0)
|
|
|
|
|
{
|
|
|
|
|
if ($promote_id != 0 && $game_id != 0) {
|
|
|
|
|
$map['promote_id'] = $promote_id;
|
|
|
|
|
$map['game_id'] = $game_id;
|
|
|
|
|
$info = M('apply', 'tab_')->field('status')->where($map)->find();
|
|
|
|
|
if ($info) {
|
|
|
|
|
return $info['status'];
|
|
|
|
|
} else {
|
|
|
|
|
$game = M('Game', 'tab_');
|
|
|
|
|
$gdata = $game->where(array('id' => $game_id))->find();
|
|
|
|
|
$ratio = $gdata['ratio'];
|
|
|
|
|
$money = $gdata['money'];
|
|
|
|
|
$sdk_version = $gdata['sdk_version'];
|
|
|
|
|
$model = M('Apply', 'tab_');
|
|
|
|
|
$data['game_id'] = $game_id;
|
|
|
|
|
$data['game_name'] = get_game_name($game_id);
|
|
|
|
|
$data['promote_id'] = session("promote_auth.pid");
|
|
|
|
|
$data['promote_account'] = session("promote_auth.account");
|
|
|
|
|
$data['apply_time'] = NOW_TIME;
|
|
|
|
|
$data['status'] = 1;
|
|
|
|
|
$data['sdk_version'] = $sdk_version;
|
|
|
|
|
$data['ratio'] = $ratio;
|
|
|
|
|
$data['money'] = $money;
|
|
|
|
|
|
|
|
|
|
$res = $model->add($data);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [获取游戏版本]
|
|
|
|
|
* @param [type] $id [description]
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function game_version($id)
|
|
|
|
|
{
|
|
|
|
|
$game = M('game', 'tab_');
|
|
|
|
|
$map['id'] = $id;
|
|
|
|
|
$data = $game->field('sdk_version')->where($map)->find();
|
|
|
|
|
if ($data['id'] == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return $data['version'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取IOS游戏名称
|
|
|
|
|
function get_ios_game_name($game_id = null, $field = 'id')
|
|
|
|
|
{
|
|
|
|
|
$map[$field] = $game_id;
|
|
|
|
|
$map['game_version'] = 0;
|
|
|
|
|
$data = M('Game', 'tab_')->where($map)->find();
|
|
|
|
|
if (empty($data)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$game_name = explode("(", $data['game_name']);
|
|
|
|
|
return $game_name[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_version($game_id = '')
|
|
|
|
|
{
|
|
|
|
|
if ($game_id) {
|
|
|
|
|
$res = M('game_source', 'tab_')->field('version')->where(['game_id' => $game_id])->find();
|
|
|
|
|
return $res['version'];
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//根据id获取游戏原包更新时间
|
|
|
|
|
function get_source_time($game_id)
|
|
|
|
|
{
|
|
|
|
|
$model = M('game_source', 'tab_');
|
|
|
|
|
$map['game_id'] = $game_id;
|
|
|
|
|
$res = $model->where($map)->find();
|
|
|
|
|
return $res['create_time'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*推广员搜索游戏下拉列表
|
|
|
|
|
*/
|
|
|
|
|
function get_promote_serach_game()
|
|
|
|
|
{
|
|
|
|
|
$game = M("game", "tab_");
|
|
|
|
|
if (!empty($type)) {
|
|
|
|
|
$map['developers'] = $type == 1 ? array('EQ', 0) : array('GT', 0);
|
|
|
|
|
$map['game_status'] = $type == 1 ? 1 : array('in', '0,1');
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$map['apply_status'] = 1;
|
|
|
|
|
$map['online_status'] = 1;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
$map['down_port'] = 1;
|
|
|
|
|
$lists = $game->field('id,game_name,sdk_version,relation_game_name,icon,relation_game_id')->where($map)->group('relation_game_id')->select();
|
|
|
|
|
if (empty($lists)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return $lists;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getPromoteSearchGame()
|
|
|
|
|
{
|
|
|
|
|
$game = M("game", "tab_");
|
|
|
|
|
if (!empty($type)) {
|
|
|
|
|
$map['developers'] = $type == 1 ? array('EQ', 0) : array('GT', 0);
|
|
|
|
|
$map['game_status'] = $type == 1 ? 1 : array('in', '0,1');
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$map['apply_status'] = 1;
|
|
|
|
|
$map['online_status'] = 1;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
$map['down_port'] = 1;
|
|
|
|
|
$lists = $game->field('id,game_name,sdk_version,relation_game_name,icon,relation_game_id')->where($map)->select();
|
|
|
|
|
if (empty($lists)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return $lists;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//二级推广员id
|
|
|
|
|
function get_promote_child_ids($id)
|
|
|
|
|
{
|
|
|
|
|
$map1['parent_id'] = $id;
|
|
|
|
|
$arr1 = M('promote', 'tab_')->where($map1)->field('id')->select();
|
|
|
|
|
if ($arr1) {
|
|
|
|
|
return $arr1;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取原包信息
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function get_game_source_info($id)
|
|
|
|
|
{
|
|
|
|
|
$map["game_id"] = $id;
|
|
|
|
|
$data = M('GameSource', 'tab_')->where($map)->find();
|
|
|
|
|
if (empty($data)) {
|
|
|
|
|
$result = '';
|
|
|
|
|
} else {
|
|
|
|
|
$result = $data;
|
|
|
|
|
}
|
|
|
|
|
if (empty($result['file_size'])) {
|
|
|
|
|
$result['file_size'] = 0;
|
|
|
|
|
}
|
|
|
|
|
return $result;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取游戏信息
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function get_game_info($id = 0)
|
|
|
|
|
{
|
|
|
|
|
$map["id"] = $id;
|
|
|
|
|
$data = M('Game', 'tab_')->where($map)->find();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取游戏区服
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function getServer_name($game_name = "")
|
|
|
|
|
{
|
|
|
|
|
$data = M('server', 'tab_')->where(['game_name' => $game_name])->select();
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取游戏已开服的区服
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function getServer_name_on($game_name = "", $status = 1)
|
|
|
|
|
{
|
|
|
|
|
$map['game_name'] = $game_name;
|
|
|
|
|
$map['start_time'] = ['lt', time()];
|
|
|
|
|
if ($status == 2) {
|
|
|
|
|
$map['show_status'] = 1;
|
|
|
|
|
}
|
|
|
|
|
$data = M('server', 'tab_')->where($map)->order('server_id asc')->select();
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 统计推广员总流水
|
|
|
|
|
* @param [type] $id [description]
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function sum_promote_total_money($id)
|
|
|
|
|
{
|
|
|
|
|
$map['promote_id'] = $id;
|
|
|
|
|
$map['pay_status'] = 1;
|
|
|
|
|
$res = M('Spend', 'tab_')->field("SUM(pay_amount) as pay_amount")->where($map)->select();
|
|
|
|
|
return $res[0]['pay_amount'] == null ? '0.00' : $res[0]['pay_amount'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function get_promote_levels($id = 0)
|
|
|
|
|
{
|
|
|
|
|
$data = M('promote', 'tab_')->field('parent_id, level')->where(array('id' => $id))->find();
|
|
|
|
|
switch ($data['level']) {
|
|
|
|
|
case '1':
|
|
|
|
|
return "会长";
|
|
|
|
|
break;
|
|
|
|
|
case '2':
|
|
|
|
|
return "部门长";
|
|
|
|
|
break;
|
|
|
|
|
case '3':
|
|
|
|
|
return "组长";
|
|
|
|
|
break;
|
|
|
|
|
case '4':
|
|
|
|
|
return "组员";
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [上线渠道]
|
|
|
|
|
* @param [type] $id [description]
|
|
|
|
|
* @param [type] $pid [description]
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function get_top_promote($id, $pid)
|
|
|
|
|
{
|
|
|
|
|
if ($pid == 0) {
|
|
|
|
|
$pro = M("promote", "tab_")->field('account')->where(array('id' => $id))->find();
|
|
|
|
|
} else {
|
|
|
|
|
$map['id'] = $pid;
|
|
|
|
|
$pro = M("promote", "tab_")->field('account')->where($map)->find();
|
|
|
|
|
}
|
|
|
|
|
if ($pro == '') {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return $pro['account'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_promote_list($select = '')
|
|
|
|
|
{
|
|
|
|
|
$list = M("Promote", "tab_")->field('id,account,balance_coin')->select();//where("status=1")->
|
|
|
|
|
if (empty($list)) {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
if ($select == 111) {
|
|
|
|
|
$new['id'] = -1;
|
|
|
|
|
$new['account'] = "全站用户";
|
|
|
|
|
array_unshift($list, $new);
|
|
|
|
|
}
|
|
|
|
|
return $list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [获取所有一级推广员]
|
|
|
|
|
* @return [type] [description]
|
|
|
|
|
*/
|
|
|
|
|
function get_all_toppromote()
|
|
|
|
|
{
|
|
|
|
|
$map['status'] = 1;
|
|
|
|
|
$map['parent_id'] = 0;
|
|
|
|
|
$list = M("Promote", "tab_")->where($map)->select();
|
|
|
|
|
if (empty($list)) {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
return $list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取sdk类型名称
|
|
|
|
|
function getSDKTypeName($sdkType, $chinese = false)
|
|
|
|
|
{
|
|
|
|
|
$android = 'Android';
|
|
|
|
|
|
|
|
|
|
if ($chinese) {
|
|
|
|
|
$android = '安卓';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch ($sdkType) {
|
|
|
|
|
case 0:
|
|
|
|
|
$sdkName = $android . '+ios';
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
$sdkName = $android;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$sdkName = 'ios';
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $sdkName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取sdk类型
|
|
|
|
|
function getSDKType()
|
|
|
|
|
{
|
|
|
|
|
$sdkTypeData = array(
|
|
|
|
|
1 => '安卓',
|
|
|
|
|
2 => 'ios',
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return $sdkTypeData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断是否有推广员权限 $parentId-父推广员ID $promoterId-推广员ID $promoterParentId-推广员父ID
|
|
|
|
|
function hasPromotePermission($parentId, $promoteId)
|
|
|
|
|
{
|
|
|
|
|
if ($promoteId == $parentId) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return isParentPromote($parentId, $promoteId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isParentPromote($parentId, $promoteId)
|
|
|
|
|
{
|
|
|
|
|
$promoteParentId = D('Promote')->where(array('id' => $promoteId))->getField('parent_id');
|
|
|
|
|
|
|
|
|
|
if ($promoteParentId == $parentId) {
|
|
|
|
|
return true;
|
|
|
|
|
} elseif ($promoteParentId == 0) {
|
|
|
|
|
return false;
|
|
|
|
|
} else {
|
|
|
|
|
return isParentPromote($parentId, $promoteParentId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取所有该类型的渠道 $promoteId-渠道ID $promoteType-1:本账号 2:组长 3:推广员
|
|
|
|
|
function getAllPromoteListByType($promoteType = 1, $retOne = false, $promoteId = PID)
|
|
|
|
|
{
|
|
|
|
|
$childPromoteData = array();
|
|
|
|
|
|
|
|
|
|
switch ($promoteType) {
|
|
|
|
|
case 1:
|
|
|
|
|
$map['id'] = $promoteId;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
case 3:
|
|
|
|
|
case 4:
|
|
|
|
|
$map['chain'] = ['like', '%/' . $promoteId . '/%'];
|
|
|
|
|
$map['level'] = $promoteType;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!empty($map)) {
|
|
|
|
|
if ($retOne) {
|
|
|
|
|
$childPromoteData = D('Promote')->where($map)->getField('id', true);
|
|
|
|
|
} else {
|
|
|
|
|
$childPromoteData = D('Promote')->where($map)->field('id,account,nickname,real_name')->select();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $childPromoteData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取所有子渠道ID
|
|
|
|
|
function getAllPromoteIdsByType($promoteIds, $level = 3, $nowLevel = 1)
|
|
|
|
|
{
|
|
|
|
|
if (!empty($promoteIds)) {
|
|
|
|
|
$map['parent_id'] = ['in', $promoteIds];
|
|
|
|
|
$nowLevel++;
|
|
|
|
|
|
|
|
|
|
$promoteData = D('Promote')
|
|
|
|
|
->where($map)
|
|
|
|
|
->getField('id', true);
|
|
|
|
|
|
|
|
|
|
if (count($promoteData) > 0) {
|
|
|
|
|
$promoteIdsStr = implode(',', $promoteData);
|
|
|
|
|
$thisMap['parent_id'] = ['in', $promoteIdsStr];
|
|
|
|
|
$thisPromoteDataCount = D('Promote')->where($thisMap)->count('id');
|
|
|
|
|
|
|
|
|
|
if ($thisPromoteDataCount > 0 && $level > $nowLevel) {
|
|
|
|
|
return getAllPromoteIdsByType($promoteIdsStr, $level, $nowLevel);
|
|
|
|
|
} else {
|
|
|
|
|
if ($level == $nowLevel) {
|
|
|
|
|
return $promoteIdsStr;
|
|
|
|
|
} else {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取所有子渠道列表 $type 1-返回数组 2-返回id数组 3-返回id字符串
|
|
|
|
|
function getAllChildPromoteList($type = 1, $promoteId = PID)
|
|
|
|
|
{
|
|
|
|
|
$childPromoteData = array();
|
|
|
|
|
$childPromoteIds = getAllChildPromoteIds($promoteId);
|
|
|
|
|
|
|
|
|
|
if (!empty($childPromoteIds)) {
|
|
|
|
|
$map['id'] = ['in', $childPromoteIds];
|
|
|
|
|
|
|
|
|
|
switch ($type) {
|
|
|
|
|
case 1:
|
|
|
|
|
$childPromoteData = D('Promote')->where($map)->field('id,account,nickname')->select();
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$childPromoteData = D('Promote')->where($map)->getField('id');
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$childPromoteData = $childPromoteIds;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $childPromoteData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取所有子渠道ID
|
|
|
|
|
function getAllChildPromoteIds($promoteId)
|
|
|
|
|
{
|
|
|
|
|
if (!empty($promoteId)) {
|
|
|
|
|
$model = D('Promote');
|
|
|
|
|
$promote = $model->field('chain,level')->where(array('id' => $promoteId))->find();
|
|
|
|
|
$map['chain'] = ['like', $promote['chain'] . $promoteId . '/%'];
|
|
|
|
|
$map['level'] = ['gt', $promote['level']];
|
|
|
|
|
|
|
|
|
|
$promoteData = D('Promote')
|
|
|
|
|
->where($map)
|
|
|
|
|
->getField('id', true);
|
|
|
|
|
|
|
|
|
|
if (count($promoteData) > 0) {
|
|
|
|
|
return implode(',', $promoteData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获上级渠道ID
|
|
|
|
|
function getParentPromoteId($promoteId)
|
|
|
|
|
{
|
|
|
|
|
$map['id'] = $promoteId;
|
|
|
|
|
|
|
|
|
|
return D('Promote')->where($map)->getField('parent_id');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获会长渠道ID
|
|
|
|
|
function getGrandPromoteId($promoteId)
|
|
|
|
|
{
|
|
|
|
|
$model = D('Promote');
|
|
|
|
|
$map['id'] = $promoteId;
|
|
|
|
|
|
|
|
|
|
$data = $model->field('parent_id,chain,level')->where($map)->find();
|
|
|
|
|
if (empty($data)) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch ($data['level']) {
|
|
|
|
|
case 1:
|
|
|
|
|
return $promoteId;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
return $data['parent_id'];
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
case 4:
|
|
|
|
|
$ids = explode('/', $data['chain']);
|
|
|
|
|
return (isset($ids[1]) ? $ids[1] : 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getGamePermission($gameId)
|
|
|
|
|
{
|
|
|
|
|
$gameData = M('Game', 'tab_')
|
|
|
|
|
->where(array('id' => $gameId))
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
if (count($gameData) == 2) {
|
|
|
|
|
$applyIdAnd = M('Apply', 'tab_')->where(array('game_id' => $gameData[0]['id']))->getField('id');
|
|
|
|
|
$applyIdIos = M('Apply', 'tab_')->where(array('game_id' => $gameData[1]['id']))->getField('id');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (empty($applyIdAnd) || empty($applyIdIos)) {
|
|
|
|
|
return 1;
|
|
|
|
|
} else {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isMinPromote($promoteId = PID)
|
|
|
|
|
{
|
|
|
|
|
return D('Promote')->where(array('id' => $promoteId))->getField('grand_id');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断渠道游戏是否添加--安卓+ios
|
|
|
|
|
function addedAboutDoubleSdk($promoteId, $gameId)
|
|
|
|
|
{
|
|
|
|
|
$promoteData = D('Promote')->where(array('id' => $promoteId))->find();
|
|
|
|
|
$gameData = M('Game', 'tab_')->where(array('id' => $gameId))->find();
|
|
|
|
|
|
|
|
|
|
$map['tab_game.relation_game_id'] = $gameData['relation_game_id'];
|
|
|
|
|
if ($promoteData['parent_id'] == 0) {
|
|
|
|
|
$count = M('Game', 'tab_')
|
|
|
|
|
->join('tab_apply on tab_game.id = tab_apply.game_id and tab_apply.offline_status = 0 and tab_apply.promote_id = ' . $promoteId)
|
|
|
|
|
->where($map)
|
|
|
|
|
->count();
|
|
|
|
|
|
|
|
|
|
$added = ($count == 2) ? 1 : 0;
|
|
|
|
|
} else {
|
|
|
|
|
$applyData = M('Game', 'tab_')
|
|
|
|
|
->field('tab_game.id,ta_2.id as apply_id')
|
|
|
|
|
->join('tab_apply as ta_1 on tab_game.id = ta_1.game_id and ta_1.offline_status = 0 and ta_1.promote_id = ' . $promoteData['parent_id'])
|
|
|
|
|
->join('left join tab_apply as ta_2 on tab_game.id = ta_2.game_id and ta_2.offline_status = 0 and ta_2.promote_id = ' . $promoteId)
|
|
|
|
|
->where($map)
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
$added = 0;
|
|
|
|
|
$count = 0;
|
|
|
|
|
foreach ($applyData as $list) {
|
|
|
|
|
if ($list['apply_id'] > 0) {
|
|
|
|
|
$count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($count == count($applyData)) {
|
|
|
|
|
$added = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $added;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function hideStar($string, $start = 0, $length = 0, $re = '*')
|
|
|
|
|
{
|
|
|
|
|
if (empty($string)) return false;
|
|
|
|
|
$strarr = array();
|
|
|
|
|
$mb_strlen = mb_strlen($string);
|
|
|
|
|
while ($mb_strlen) {
|
|
|
|
|
$strarr[] = mb_substr($string, 0, 1, 'utf8');
|
|
|
|
|
$string = mb_substr($string, 1, $mb_strlen, 'utf8');
|
|
|
|
|
$mb_strlen = mb_strlen($string);
|
|
|
|
|
}
|
|
|
|
|
$strlen = count($strarr);
|
|
|
|
|
$begin = $start >= 0 ? $start : ($strlen - abs($start));
|
|
|
|
|
$end = $last = $strlen - 1;
|
|
|
|
|
if ($length > 0) {
|
|
|
|
|
$end = $begin + $length - 1;
|
|
|
|
|
} elseif ($length < 0) {
|
|
|
|
|
$end -= abs($length);
|
|
|
|
|
}
|
|
|
|
|
for ($i = $begin; $i <= $end; $i++) {
|
|
|
|
|
$strarr[$i] = $re;
|
|
|
|
|
}
|
|
|
|
|
if ($begin >= $end || $begin >= $last || $end > $last) return false;
|
|
|
|
|
return implode('', $strarr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ios下载链接处理
|
|
|
|
|
function getIosDownloadLink($gameId, $promoteId)
|
|
|
|
|
{
|
|
|
|
|
$downloadLink = get_apply_dow_url($gameId, $promoteId);
|
|
|
|
|
$gameData = M('Game', 'tab_')->where(array('id' => $gameId))->find();
|
|
|
|
|
|
|
|
|
|
if ($downloadLink == ('https://' . $_SERVER['HTTP_HOST']) || $gameData['dow_status'] == 0) {
|
|
|
|
|
return ('https://' . $_SERVER['HTTP_HOST']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$gameSourceData = M('GameSource', 'tab_')->where(array('game_id' => $gameId))->find();
|
|
|
|
|
|
|
|
|
|
$data['game_id'] = $gameId;
|
|
|
|
|
$data['promote_id'] = $promoteId;
|
|
|
|
|
$data['download_link'] = $downloadLink;
|
|
|
|
|
$data['game_icon'] = 'https://' . $_SERVER['HTTP_HOST'] . get_cover($gameData['icon'], 'path');
|
|
|
|
|
$data['pack_name'] = $gameSourceData['pack_name'];
|
|
|
|
|
$data['version'] = $gameSourceData['version'];
|
|
|
|
|
$data['source_version'] = $gameSourceData['source_version'];
|
|
|
|
|
$data['relation_game_name'] = $gameData['relation_game_name'];
|
|
|
|
|
|
|
|
|
|
return getIosPlistFile($data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getIosPlistFile($data)
|
|
|
|
|
{
|
|
|
|
|
$sourceVersion = empty($data['source_version']) ? 0 : $data['source_version'];
|
|
|
|
|
$fileName = __DIR__ . '/../../../Plist/manifest_' . $data['game_id'] . '_' . $data['promote_id'] . '_' . $sourceVersion . '.plist';
|
|
|
|
|
$fileUrl = 'https://' . $_SERVER['HTTP_HOST'] . '/Plist/manifest_' . $data['game_id'] . '_' . $data['promote_id'] . '_' . $sourceVersion . '.plist';
|
|
|
|
|
// if (!file_exists($fileName)) {
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
$obj['items'][0]['assets'][0] = [
|
|
|
|
|
'kind' => 'software-package',
|
|
|
|
|
'url' => $data['download_link'],
|
|
|
|
|
];
|
|
|
|
|
$obj['items'][0]['assets'][1] = [
|
|
|
|
|
'kind' => 'display-image',
|
|
|
|
|
'url' => $data['game_icon'],
|
|
|
|
|
];
|
|
|
|
|
$obj['items'][0]['assets'][2] = [
|
|
|
|
|
'kind' => 'full-size-image',
|
|
|
|
|
'url' => $data['game_icon'],
|
|
|
|
|
];
|
|
|
|
|
$obj['items'][0]['metadata']['bundle-identifier'] = $data['bao_name'];
|
|
|
|
|
$obj['items'][0]['metadata']['bundle-version'] = empty($data['version']) ? '1.0' : $data['version'];
|
|
|
|
|
$obj['items'][0]['metadata']['kind'] = 'software';
|
|
|
|
|
$obj['items'][0]['metadata']['title'] = $data['relation_game_name'];
|
|
|
|
|
Vendor('XmlOperate.XmlOperate');
|
|
|
|
|
$plist = new PropertyList($obj);
|
|
|
|
|
$xml = $plist->xml();
|
|
|
|
|
|
|
|
|
|
file_put_contents($fileName, $xml, LOCK_EX);
|
|
|
|
|
|
|
|
|
|
return 'itms-services://?action=download-manifest&url=' . $fileUrl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getCoinTypeName($coinType)
|
|
|
|
|
{
|
|
|
|
|
$coinTypeName = '';
|
|
|
|
|
switch ($coinType) {
|
|
|
|
|
case 1:
|
|
|
|
|
$coinTypeName = '通用币';
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$coinTypeName = '绑定币';
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $coinTypeName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getCoinStatusName($status)
|
|
|
|
|
{
|
|
|
|
|
$statusName = '';
|
|
|
|
|
switch ($status) {
|
|
|
|
|
case 1:
|
|
|
|
|
$statusName = '正常';
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$statusName = '锁定';
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$statusName = '验证失败';
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $statusName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getCoinRecordTypeName($type = 0)
|
|
|
|
|
{
|
|
|
|
|
if ($type == 0) {
|
|
|
|
|
return PromoteCoinController::$type;
|
|
|
|
|
} else {
|
|
|
|
|
return PromoteCoinController::$type[$type];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getCoinRecordSubTypeName($type = 0)
|
|
|
|
|
{
|
|
|
|
|
if ($type == 0) {
|
|
|
|
|
return PromoteCoinController::$subType;
|
|
|
|
|
} else {
|
|
|
|
|
return PromoteCoinController::$subType[$type];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getCoinRecordHandleTypeName($type = 0)
|
|
|
|
|
{
|
|
|
|
|
if ($type == 0) {
|
|
|
|
|
return PromoteCoinController::$handleType;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function promoteCan($promoteId, \Closure $callback)
|
|
|
|
|
{
|
|
|
|
|
$level = get_promote_level(session('promote_auth.pid'));
|
|
|
|
|
return $callback($level);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取下级游戏添加权限
|
|
|
|
|
function getChildGameAddPermission($promoteId)
|
|
|
|
|
{
|
|
|
|
|
return D('Promote')->where(array('id' => $promoteId))->getField('child_game_permission');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function gameSearch($relationGameId, $sdkVersion)
|
|
|
|
|
{
|
|
|
|
|
$map['_string'] = '1 = 1';
|
|
|
|
|
if ($relationGameId != 0) {
|
|
|
|
|
$map['relation_game_id'] = $relationGameId;
|
|
|
|
|
}
|
|
|
|
|
if ($sdkVersion != 0) {
|
|
|
|
|
$map['sdk_version'] = $sdkVersion;
|
|
|
|
|
}
|
|
|
|
|
$gameIds = M('game', 'tab_')->where($map)->getField('id', true);
|
|
|
|
|
$gameIds = $gameIds ?? [-1];
|
|
|
|
|
|
|
|
|
|
return $gameIds;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function convertAmountToCn($num) {
|
|
|
|
|
//判断$num是否存在
|
|
|
|
|
if(!$num) return '零圆';
|
|
|
|
|
//保留小数点后两位
|
|
|
|
|
$num = round($num, 2);
|
|
|
|
|
//将浮点转换为整数
|
|
|
|
|
$tem_num = $num * 100;
|
|
|
|
|
//判断数字长度
|
|
|
|
|
$tem_num_len = strlen($tem_num);
|
|
|
|
|
if($tem_num_len > 14) {
|
|
|
|
|
return '数值过大';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//大写数字
|
|
|
|
|
$dint = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
|
|
|
|
|
//大写金额单位
|
|
|
|
|
$danwei = array('仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟', '佰', '拾', '圆');
|
|
|
|
|
$danwei1 = array('角', '分');
|
|
|
|
|
|
|
|
|
|
//空的变量用来保存转换字符串
|
|
|
|
|
$daxie = '';
|
|
|
|
|
|
|
|
|
|
//分割数字,区分圆角分
|
|
|
|
|
list($left_num, $right_num) = explode('.', $num);
|
|
|
|
|
|
|
|
|
|
//计算单位长度
|
|
|
|
|
$danwei_len = count($danwei);
|
|
|
|
|
//计算分割后的字符串长度
|
|
|
|
|
$left_num_len = strlen($left_num);
|
|
|
|
|
$right_num_len = strlen($right_num);
|
|
|
|
|
|
|
|
|
|
//循环计算亿万元等
|
|
|
|
|
for($i = 0; $i < $left_num_len; $i++) {
|
|
|
|
|
//循环单个文字
|
|
|
|
|
$key_ = substr($left_num, $i, 1);
|
|
|
|
|
|
|
|
|
|
//判断数字不等于0或数字等于0与金额单位为亿、万、圆,就返回完整单位的字符串
|
|
|
|
|
if($key_ !== '0' || ($key_ == '0' && ($danwei[$danwei_len - $left_num_len + $i] == '亿' || $danwei[$danwei_len - $left_num_len + $i] == '万' || $danwei[$danwei_len - $left_num_len + $i] == '圆'))) {
|
|
|
|
|
$daxie = $daxie . $dint[$key_] . $danwei[$danwei_len - $left_num_len + $i];
|
|
|
|
|
} else {
|
|
|
|
|
//否则就不含单位
|
|
|
|
|
$daxie = $daxie . $dint[$key_];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//循环计算角分
|
|
|
|
|
for($i = 0; $i < $right_num_len; $i++) {
|
|
|
|
|
$key_ = substr($right_num, $i, 1);
|
|
|
|
|
if($key_ > 0) {
|
|
|
|
|
$daxie = $daxie . $dint[$key_] . $danwei1[$i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//计算转换后的长度
|
|
|
|
|
$daxie_len = strlen($daxie);
|
|
|
|
|
//设置文字切片从0开始,utf-8汉字占3个字符
|
|
|
|
|
$j = 0;
|
|
|
|
|
while($daxie_len > 0) {
|
|
|
|
|
//每次切片两个汉字
|
|
|
|
|
$str = substr($daxie, $j, 6);
|
|
|
|
|
//判断切片后的文字不等于零万、零圆、零亿、零零
|
|
|
|
|
if($str == '零万' || $str == '零圆' || $str == '零亿' || $str == '零零') {
|
|
|
|
|
//重新切片
|
|
|
|
|
$left = substr($daxie, 0, $j);
|
|
|
|
|
$right = substr($daxie, $j + 3);
|
|
|
|
|
$daxie = $left . $right;
|
|
|
|
|
}
|
|
|
|
|
$j += 3;
|
|
|
|
|
$daxie_len -= 3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $daxie . '整';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//记录工作人员相关操作日志
|
|
|
|
|
function recordPromoteLogs($module,$action_type) {
|
|
|
|
|
$id = get_pid();
|
|
|
|
|
$promoteInfo = M("promote","tab_")->field('account')->where(['id'=>$id])->find();
|
|
|
|
|
$promoteLogsData['action_type'] = $action_type;
|
|
|
|
|
$promoteLogsData['module'] = $module;
|
|
|
|
|
$promoteLogsData['promote'] = $promoteInfo['account'];
|
|
|
|
|
$promoteLogsData['promote_id'] = $id;
|
|
|
|
|
$promoteLogsData['ip'] = $_SERVER['REMOTE_ADDR'];
|
|
|
|
|
$promoteLogsData['create_time'] = time();
|
|
|
|
|
M('promote_action_logs','tab_')->add($promoteLogsData);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取测试资源可用余额
|
|
|
|
|
* promote_id=>推广员id,
|
|
|
|
|
* game_id=>游戏id,
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function getAvailableBalance($promote_id=0,$game_id=0,$server_id='') {
|
|
|
|
|
|
|
|
|
|
if (!$promote_id||!$game_id||!$server_id) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$availableBalanceData = M('promote_game_available_balance','tab_')
|
|
|
|
|
->field('available_balance')
|
|
|
|
|
->where(['promote_id'=>$promote_id,'game_id'=>$game_id,'server_name'=>$server_id])
|
|
|
|
|
->find();
|
|
|
|
|
|
|
|
|
|
return $availableBalanceData['available_balance']?$availableBalanceData['available_balance']:0;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取同一个公司的会长
|
|
|
|
|
* $promoteType=>推广员等级,
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function getPromoteLists($promoteType = 1) {
|
|
|
|
|
$map['level'] = $promoteType;
|
|
|
|
|
$company = M('promote','tab_')->field("company_id")->where(['id'=>get_pid()])->find();
|
|
|
|
|
|
|
|
|
|
$map['company_id'] = $company['company_id'];
|
|
|
|
|
|
|
|
|
|
$data = M('promote','tab_')
|
|
|
|
|
->field('id,account,real_name')
|
|
|
|
|
->where($map)
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* csv 导出函数
|
|
|
|
|
* @param [array] $data 一般为数据库查询结果集
|
|
|
|
|
* @param [string] $title 表格名称
|
|
|
|
|
* @param [array] $fields [字段=>首行名称,...]例如:['name'=>'名称']
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
function data2csv(&$data,$title,$fields){
|
|
|
|
|
set_time_limit(0);
|
|
|
|
|
ini_set('memory_limit', '-1'); //设置内存不受限制
|
|
|
|
|
$csvFileName = $title.'.csv';
|
|
|
|
|
//设置好告诉浏览器要下载excel文件的headers
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Type: application/vnd.ms-excel;charset=utf-8');
|
|
|
|
|
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
|
|
|
|
|
header('Expires: 0');
|
|
|
|
|
header('Cache-Control: must-revalidate');
|
|
|
|
|
header('Pragma: public');
|
|
|
|
|
$fp = fopen('php://output', 'a');//打开output流
|
|
|
|
|
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));//转码,防止乱码
|
|
|
|
|
$field = array_keys($fields);
|
|
|
|
|
//生成首行
|
|
|
|
|
$header = array_values($fields);
|
|
|
|
|
fputcsv($fp, $header);
|
|
|
|
|
|
|
|
|
|
$index = 0;
|
|
|
|
|
foreach ($data as $row) {
|
|
|
|
|
$a = [];
|
|
|
|
|
foreach($field as $k=>$v){
|
|
|
|
|
// $a[$v] = $row[$v] . "\t";//防止格式错误
|
|
|
|
|
$a[$v] = $row[$v];
|
|
|
|
|
}
|
|
|
|
|
if ($index == 10000) { //每次写入1000条数据清除内存
|
|
|
|
|
$index = 0;
|
|
|
|
|
ob_flush();//清除内存
|
|
|
|
|
flush();
|
|
|
|
|
}
|
|
|
|
|
$index++;
|
|
|
|
|
fputcsv($fp, $a);
|
|
|
|
|
}
|
|
|
|
|
ob_flush();
|
|
|
|
|
fclose($fp); //每生成一个文件关闭
|
|
|
|
|
die();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function is_active_menu(array $controllers, array $actions, \Closure $otherCondition = null)
|
|
|
|
|
{
|
|
|
|
|
$controllerStatus = true;
|
|
|
|
|
$actionStatus = true;
|
|
|
|
|
$otherConditionStatus = true;
|
|
|
|
|
if ($controllers && !in_array(CONTROLLER_NAME, $controllers)) {
|
|
|
|
|
$controllerStatus = false;
|
|
|
|
|
}
|
|
|
|
|
if ($actions && !in_array(ACTION_NAME, $actions)) {
|
|
|
|
|
$actionStatus = false;
|
|
|
|
|
}
|
|
|
|
|
if ($otherCondition) {
|
|
|
|
|
$otherConditionStatus = $otherCondition();
|
|
|
|
|
}
|
|
|
|
|
if ($controllerStatus && $actionStatus && $otherConditionStatus) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function is_active_class(array $controllers, array $actions, \Closure $otherCondition = null)
|
|
|
|
|
{
|
|
|
|
|
if (is_active_menu($controllers, $actions, $otherCondition)) {
|
|
|
|
|
return 'active';
|
|
|
|
|
}
|
|
|
|
|
return '';
|
|
|
|
|
}
|