// +---------------------------------------------------------------------- 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 麦当苗儿 */ 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 麦当苗儿 */ function check_verify($code, $id = 1) { $verify = new \Think\Verify(); return $verify->check($code, $id); } /** * 获取列表总行数 * @param string $category 分类ID * @param integer $status 数据状态 * @author 麦当苗儿 */ 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 麦当苗儿 */ 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 麦当苗儿 */ 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(); }