|
|
<?php
|
|
|
use Sdk\Controller\BaseController;
|
|
|
use Think\Log;
|
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | 徐州梦创信息科技有限公司—专业的游戏运营,推广解决方案.
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Copyright (c) 2013 http://www.vlcms.com All rights reserved.
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Author: kefu@vlcms.com QQ:97471547
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
|
/*
|
|
|
* 根据身份证号判断是否成年
|
|
|
* @param sting $idcard 身份证号码
|
|
|
* @author 鹿文学
|
|
|
*/
|
|
|
function is_adult($idcard, $adult=18) {
|
|
|
|
|
|
$id = substr($idcard,6,8);
|
|
|
$year = substr($id,0,4);
|
|
|
$month = substr($id,4,2);
|
|
|
$day = substr($id,6,2);
|
|
|
|
|
|
$old = (time()-strtotime($year.'-'.$month.'-'.$day))/31536000;
|
|
|
|
|
|
if(intval($old)>=$adult) {
|
|
|
return true;
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/* 支付验证 当前只有未成年
|
|
|
* return: array code 1成功 0失败 msg :错误消息
|
|
|
*/
|
|
|
|
|
|
function pay_check($user_id) {
|
|
|
$ret = array(
|
|
|
'code' => 1,
|
|
|
'msg' => '',
|
|
|
);
|
|
|
$idcard = M("user", "tab_")->where(array('id' => $user_id))->getField("idcard");
|
|
|
if (!$idcard) {
|
|
|
$ret['code'] = 0;
|
|
|
$ret['msg'] = '<div style="text-align:center;">未实名认证不可充值!</div><br/>请到“悬浮球->我的”进行实名认证';
|
|
|
return $ret;
|
|
|
}
|
|
|
if (is_adult($idcard, 18)) {
|
|
|
$ret['code'] = 1;
|
|
|
$ret['msg'] = '';
|
|
|
return $ret;
|
|
|
} else {
|
|
|
$ret['code'] = 0;
|
|
|
$ret['msg'] = '未成年禁止支付哟!';
|
|
|
return $ret;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 支付限额 wx alipay
|
|
|
function pay_limit($type='wx') {
|
|
|
C(BaseController::get_tool());
|
|
|
$configType = $type;
|
|
|
if ($configType== 'wx') {
|
|
|
$configType = 'wei_xin';
|
|
|
}
|
|
|
|
|
|
$date = date('Ymd');
|
|
|
if ($configType== 'wei_xin') {
|
|
|
$dwhere = "pay_date={$date} and (pay_way=2 or pay_way=3)";
|
|
|
} else if ($configType== 'alipay') {
|
|
|
$dwhere = "pay_date={$date} and pay_way=1";
|
|
|
} else { // 找不到的不限额
|
|
|
return false;
|
|
|
}
|
|
|
if (C($configType.".day_pay_limit") > 0) {
|
|
|
$todayTotal = M("pay_today_total", "tab_")->where($dwhere)->getField("price_cnt");
|
|
|
if ($todayTotal >= C($configType.".day_pay_limit")) { // 日限额
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$start = date('Ym01');
|
|
|
$end = date('Ymd');
|
|
|
if ($configType== 'wei_xin') {
|
|
|
$mwhere = "(pay_way=2 or pay_way=3) and pay_date>={$start} and pay_date<={$end}";
|
|
|
} else if ($configType== 'alipay') {
|
|
|
$mwhere = "pay_way=1 and pay_date>={$start} and pay_date<={$end}";
|
|
|
} else { // 找不到的不限额
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (C($configType.".month_pay_limit") > 0) {
|
|
|
$todayTotal = M("pay_today_total", "tab_")->where($mwhere)->sum("price_cnt");
|
|
|
if ($todayTotal >= C($configType.".month_pay_limit")) { // 月限额
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
/* //获取支付方式 */
|
|
|
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 3:
|
|
|
// return "微信APP";
|
|
|
// break;
|
|
|
// 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 integer $userid 我的账户编号
|
|
|
* @author 鹿文学
|
|
|
*/
|
|
|
function get_buddies_unagree_count($userid) {
|
|
|
$count = 0;
|
|
|
|
|
|
if(is_numeric($userid) && $userid>0) {
|
|
|
$map['_string'] = "(inviter_id = {$userid} and inviter_status in(2,3) and invitee_status=1 )";
|
|
|
$map['_complex'] = array('invitee_id'=>$userid,'invitee_status'=>array('in','2,3'),'inviter_status'=>1);
|
|
|
$map['_logic'] = 'or';
|
|
|
|
|
|
$count = M('buddies','tab_')->where($map)->count();
|
|
|
|
|
|
}
|
|
|
|
|
|
return $count;
|
|
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
*获取游戏设置信息
|
|
|
*/
|
|
|
function get_game_set_info($game_id = 0){
|
|
|
$game = M('GameSet','tab_');
|
|
|
$map['game_id'] = $game_id;
|
|
|
$data = $game->where($map)->find();
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 对数据进行编码转换
|
|
|
* @param array/string $data 数组
|
|
|
* @param string $output 转换后的编码
|
|
|
*/
|
|
|
function array_iconv($data, $output = 'utf-8') {
|
|
|
$encode_arr = array('UTF-8','ASCII','GBK','GB2312','BIG5','JIS','eucjp-win','sjis-win','EUC-JP');
|
|
|
$encoded = mb_detect_encoding($data, $encode_arr);
|
|
|
|
|
|
if (!is_array($data)) {
|
|
|
return mb_convert_encoding($data, $output, $encoded);
|
|
|
}
|
|
|
else {
|
|
|
foreach ($data as $key=>$val) {
|
|
|
$key = array_iconv($key, $output);
|
|
|
if(is_array($val)) {
|
|
|
$data[$key] = array_iconv($val, $output);
|
|
|
} else {
|
|
|
$data[$key] = mb_convert_encoding($data, $output, $encoded);
|
|
|
}
|
|
|
}
|
|
|
return $data;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取游戏appstor上线状态
|
|
|
* @param $game_id 游戏id
|
|
|
* @return mixed appstatus 上线状态
|
|
|
* @author zhaochao
|
|
|
*/
|
|
|
function get_game_appstatus($game_id){
|
|
|
$map['id']=$game_id;
|
|
|
$game=M('game','tab_')->where($map)->find();
|
|
|
if($game['sdk_version']==2&&$game['appstatus']==1){
|
|
|
return true;
|
|
|
}elseif($game['sdk_version']==2&&$game['appstatus']==0){
|
|
|
return false;
|
|
|
}elseif($game['sdk_version']==1){
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
/**
|
|
|
* 邮件发送函数
|
|
|
*/
|
|
|
function sendMail($to,$rand) {
|
|
|
Vendor('phpmailer.PHPMailerAutoload');
|
|
|
$mail = new \PHPMailer(); //实例化
|
|
|
$mail->IsSMTP(); // 启用SMTP
|
|
|
$mail->Host=C('email_set.smtp'); //smtp服务器的名称(这里以126邮箱为例:smtp.126.com)
|
|
|
$mail->SMTPAuth = TRUE;//C('MAIL_SMTPAUTH'); //启用smtp认证
|
|
|
$mail->SMTPSecure = 'ssl'; //设置使用ssl加密方式登录鉴权
|
|
|
$mail->Port = C('email_set.smtp_port'); //设置ssl连接smtp服务器的远程服务器端口号
|
|
|
$mail->CharSet = 'UTF-8';
|
|
|
$mail->Username = C('email_set.smtp_account'); //你的邮箱名
|
|
|
$mail->Password = C('email_set.smtp_password') ; //邮箱密码
|
|
|
$mail->From = C('email_set.smtp_account'); //发件人地址(也就是你的邮箱地址)
|
|
|
$mail->FromName = C('email_set.smtp_name'); //发件人姓名
|
|
|
$mail->AddAddress($to,"尊敬的客户");
|
|
|
$mail->WordWrap = 50; //设置每行字符长度
|
|
|
$mail->IsHTML(TRUE); // 是否HTML格式邮件
|
|
|
$mail->CharSet='utf-8'; //设置邮件编码
|
|
|
$mail->Subject =C('email_set.title'); //邮件主题
|
|
|
$content=M("tool",'tab_')->where(array('name'=>'email_set'))->getField('template');
|
|
|
$reg="/#code#/";
|
|
|
$content=preg_replace($reg,$rand,$content);
|
|
|
$mail->Body = $content; //邮件内容
|
|
|
$c = strip_tags($content);
|
|
|
$mail->AltBody = $c; //邮件正文不支持HTML的备用显示
|
|
|
return($mail->Send());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取微信app登录参数
|
|
|
* @return [type] [description]
|
|
|
*/
|
|
|
function get_game_param($game_id,$field="",$type=''){
|
|
|
$map['game_id']=0; empty($type) || $map['type'] = $type;
|
|
|
$find=M('param','tab_')->field($field)->where($map)->find();
|
|
|
if(null==$find){
|
|
|
$map['game_id']=$game_id;
|
|
|
$find=M('param','tab_')->field($field)->where($map)->find();
|
|
|
}
|
|
|
return $find;
|
|
|
}
|
|
|
/**
|
|
|
* 生成随机汉字字符串
|
|
|
* @param $num 数量
|
|
|
* @return [type] [description]
|
|
|
*/
|
|
|
|
|
|
function getChinaChar($num)
|
|
|
{
|
|
|
$char = file_get_contents(APP_PATH.'Sdk/SecretKey/Data/chinaChar.txt');
|
|
|
$str = '';
|
|
|
$length = strlen($char);
|
|
|
$len = mb_strlen($char);
|
|
|
for($i = 0;$i < $num;$i++)
|
|
|
{
|
|
|
$rand = rand(0,$len);
|
|
|
$str .= substr($char,$rand*3,3);
|
|
|
}
|
|
|
return $str;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 公共返回方法
|
|
|
* @param number $code 200成功 非200失败
|
|
|
* @param string $msg 错误提示
|
|
|
* @param unknown $data 业务数据
|
|
|
*/
|
|
|
function re_msg($code=200,$msg='',$data=[])
|
|
|
{
|
|
|
$ret['code'] = $code;
|
|
|
$ret['msg'] = $msg;
|
|
|
$ret['data'] = $data;
|
|
|
echo base64_encode(json_encode($ret));
|
|
|
exit();
|
|
|
}
|
|
|
|
|
|
function jsonOutput($status=0, $msg='', $data=[]) {
|
|
|
$ret['status'] = $status;
|
|
|
$ret['msg'] = $msg;
|
|
|
$ret['data'] = $data;
|
|
|
echo json_encode($ret);
|
|
|
exit();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 使用淘宝接口 判断ip,,,确定是否属于该地区
|
|
|
* @param $ip
|
|
|
* @return bool
|
|
|
*/
|
|
|
function ip_is_country($ip, $country_id=['US'], $country=['美国'])
|
|
|
{
|
|
|
$url = "http://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query={$ip}&co=&resource_id=6006";
|
|
|
$url2 = "http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
|
|
|
$res = file_get_contents($url);
|
|
|
if (!$res) { // 走淘宝
|
|
|
$res = file_get_contents($url2);
|
|
|
Log::write("taobao:".serialize($res));
|
|
|
if (!empty($res)) {
|
|
|
$ipData = json_decode($res,true);
|
|
|
if ($ipData['code']==0 && in_array($ipData['data']['country_id'],$country_id)) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
if ($ipData['code']==0 && in_array($ipData['data']['country'],$country)) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
} else {
|
|
|
$res= iconv('GB2312', 'UTF-8', $res);
|
|
|
$ipData = json_decode($res, true);
|
|
|
Log::write("sina:".serialize($res));
|
|
|
if ($ipData['status']==0 && substr($ipData['data'][0]['location'], 0, strlen($country[0])) == $country[0]) {
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* 记录行为日志
|
|
|
* @param [type] $log [description]
|
|
|
* @return [type] [description]
|
|
|
*/
|
|
|
function log_action($log) {
|
|
|
if(!empty($log['uid'])) {
|
|
|
$log['account'] = M('user', 'tab_')->where(['id' => $log['uid']])->getField('account');
|
|
|
}
|
|
|
if(!empty($log['game_id'])) {
|
|
|
$log['game_name'] = M('game', 'tab_')->where(['id' => $log['game_id']])->getField('game_name');
|
|
|
}
|
|
|
$log['ip'] = get_client_ip();
|
|
|
$log['create_time'] = time();
|
|
|
M('user_action_log', 'tab_')->data($log)->add();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否开启苹果内购通知
|
|
|
* @return bool
|
|
|
*/
|
|
|
function getAppleInteriorBuyStatus() {
|
|
|
|
|
|
$appleInteriorBuyStatus = M('tool','tab_')->where(['name'=>'apple_interior_buy'])->getField('status');
|
|
|
|
|
|
return $appleInteriorBuyStatus?true:false;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 记录行为日志
|
|
|
* @param $user_id
|
|
|
* @return bool
|
|
|
*/
|
|
|
function getIpForbitWhiteList($user_id) {
|
|
|
|
|
|
$is_white_list = M('forbit_ip', 'tab_')->where(['user_id'=>$user_id,'status'=>1])->find();
|
|
|
|
|
|
return $is_white_list?true:false;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 聚合数据短信接口
|
|
|
* @param $phone 电话号码
|
|
|
* @param $tpl_id 模板id
|
|
|
* @param $key 模板密钥
|
|
|
* @param $code 验证码
|
|
|
* @return array
|
|
|
*/
|
|
|
function juheSmsCode($phone,$tpl_id,$key,$code) {
|
|
|
$post['mobile'] = $phone;
|
|
|
$post['tpl_id'] = $tpl_id;
|
|
|
$tpl_value=urlencode("#code#={$code}&#m#=10");
|
|
|
$post['tpl_value'] = $tpl_value;
|
|
|
$post['key'] = $key;
|
|
|
|
|
|
$return = json_decode(curl_post(C("JUHE_SMSURL"),$post),true);
|
|
|
|
|
|
return $return;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取用户折扣
|
|
|
* @param $game_id 游戏ID
|
|
|
* @param $promote_id 渠道ID
|
|
|
* @param $user_id 用户ID
|
|
|
* @return mixed
|
|
|
*/
|
|
|
function get_discount($gameId, $userId)
|
|
|
{
|
|
|
//获取折扣
|
|
|
$res = [
|
|
|
'discount' => 10,
|
|
|
'discount_type' => 0,
|
|
|
];
|
|
|
|
|
|
$baseGame = M('base_game', 'tab_')->where([
|
|
|
'android_game_id|ios_game_id' => $gameId
|
|
|
])->find();
|
|
|
if (!$baseGame) {
|
|
|
return $res;
|
|
|
}
|
|
|
|
|
|
$time = time();
|
|
|
$discount = M('game_discount','tab_')->where([
|
|
|
'base_game_id' => $baseGame['id'],
|
|
|
'start_time' => ['elt', $time],
|
|
|
'end_time' => ['gt', $time],
|
|
|
'status' => 1,
|
|
|
])->find();
|
|
|
if (!$discount) {
|
|
|
return $res;
|
|
|
}
|
|
|
|
|
|
$exists = M('spend','tab_')->where([
|
|
|
'user_id' => $userId,
|
|
|
'pay_status' => 1
|
|
|
])->where("(game_id={$baseGame['android_game_id']} or game_id={$baseGame['ios_game_id']})")->find();
|
|
|
if ($exists) {
|
|
|
$res = [
|
|
|
'discount' => $discount['second_rate'],
|
|
|
'discount_type' => 1,
|
|
|
];
|
|
|
} else {
|
|
|
$res = [
|
|
|
'discount' => $discount['first_rate'],
|
|
|
'discount_type' => 0,
|
|
|
];
|
|
|
}
|
|
|
return $res;
|
|
|
}
|
|
|
|
|
|
// 未成年强制下线处理
|
|
|
function forceOffline($userId) {
|
|
|
$user = M('user', 'tab_')->where(['id' => $userId])->find();
|
|
|
if ($user['age_status'] == 3) {
|
|
|
echo base64_encode (json_encode(array(
|
|
|
"code" => 9999,
|
|
|
"msg" => "您已下线,请重新登入",
|
|
|
"data" => ""
|
|
|
)));
|
|
|
exit ();
|
|
|
}
|
|
|
} |