0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { return $keyc.str_replace('=', '', base64_encode($result)); } } //获取用户信息 function get_uinfo_by_uid($uid,$arr=array(),$conn=false){ if(empty($uid)){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } $where = " and uid=".$uid; $data = get_info($conn,"game_member",$arr,$where); return $data; } //获取用户信息 function get_uinfo_by_name($myname,$arr=array(),$conn=false){ if(empty($myname)){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } $where = " and user_name='".$myname."'"; $data = get_info($conn,"game_member",$arr,$where); return $data; } //获取用户信息 function get_uinfo_by_tel($myname,$arr=array(),$conn=false){ if(empty($myname)){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } $where = " and tel='".$myname."'"; $data = get_info($conn,"game_member",$arr,$where); return $data; } //通过用户unionid获取用户的uid function get_uid_by_unionid($unionid,$conn=false){ if(empty($unionid)){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } $where = " and key2='".$unionid."'"; $data = get_info($conn,"game_member_third",array('uid'),$where); if(isset($data['uid'])){ return $data['uid']; } return false; } //产生玩家的uid function get_user_uid($conn=false){ if(!$conn){ $conn = $GLOBALS["conn"]; } while(true){ $num = mt_rand(100000000,999999999); //如果UID不存在,则跳出并返回 if(!exist_check($conn,"game_member",array('uid'=>$num))){ break; } } return $num; } //匹配敏感字库 function get_sensitive_font($str,$conn=false){ if(!$conn){ $conn = $GLOBALS["conn"]; } $sql = "select name from ".get_table("game_global_sensitive_font")." WHERE LOCATE(name,'".$str."')"; $rs = $conn->Query($sql); if($rs){ $row=$conn->FetchArray($rs); return $row; }else{ return false; } } /** * 错误消息输出 */ function json_error_msg($str,$issucc=0){ $return_arr = array( 'code' => $issucc?1:2, 'msg' => $str ); $string= return_ajax($return_arr); die($string); } /** * 获取当月第一天及最后一天 */ function getthemonth($date){ $firstday = date('Y-m-01', strtotime($date));//当月的第一天 $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));//最后一天 return array($firstday,$lastday); } /** * 获取当年第一天及最后一天 */ function gettheyeat($date){ $firstday = date('Y-01-01', strtotime($date));//当年的第一天 $lastday = date('Y-m-d', strtotime("$firstday +12 month -1 day"));//最年一天 return array($firstday,$lastday); } /** * 返回每个月具体天数的数据 * $str 总天数 * $typestr1 参数1 是否有值 * $typestr2 当月具体的天数 */ function get_num_list($str,$typestr1,$typestr2){ $data = ''; for($i=0;$i<$str;$i++){ $data[$i] = array( $typestr1=>0, $typestr2=>$i+1 ); } return $data; } /** * 返回每天具体每小时的数据 */ function get_num_list_house($typestr1,$typestr2){ $data = ''; for($i=0;$i<24;$i++){ $data[$i] = array( $typestr1=>0, $typestr2=>($i<10?'0'.$i:$i) ); } return $data; } /** * 获取一年中每周的开始日期和结束日期的方法 */ function get_week($year){ $year_start = $year . "-01-01"; $year_end = $year . "-12-31"; $startday = strtotime($year_start); if (intval(date('N', $startday)) != '1') { $startday=strtotime("next Monday",$startday);//获取年第一周的起始日期时间戳 } $year_monday = date("Y-m-d", $startday);//获取年第一周的起始日期 $endday = strtotime($year_end); $end_d = intval(date('N', $endday));//最后一天周几 if ($end_d != '7') { $less_d = 7-$end_d; $endday=strtotime("+$less_d day",$endday);//获取年最后一周的结束日期时间戳 } $num = intval(date('W', $endday));//一年的总周数 for ($i = 1; $i <= $num; $i++) { $j = $i -1; $start_date = date("Y-m-d", strtotime("$year_monday +$j week ")); $end_day = date("Y-m-d", strtotime("$start_date +6 day")); if($i<=9){ $i = '0'.$i; } $week_array[$i] = array( $start_date, $end_day, ); } return $week_array; } /** * 获取用户第三方绑定信息 */ function get_third_uinfo_uid($userid,$type,$arr=array(),$conn=false){ if(empty($userid)){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } $type = $type?intval($type):1; $where = " and uid=".$userid." and type=".$type; $data = get_info($conn,"game_member_third",$arr,$where); return $data?$data:false; } //===================================================================== //==============begin redis里的操作===================================== //随机返回给客户端连接的服务器 function get_server_adder($myredis,$uid=0){ if(empty($uid)){ return false; } $user_key = USER_LOGIN_KEY.$uid;; //判断用户是否已经有长连接,如果有,则返回当前的长连接节点给他 if($myredis->exists($user_key)){ $tmp_val = $myredis->get($user_key); if(!empty($tmp_val)){ $tmp_val = json_decode($tmp_val,true); if(!empty($tmp_val['ws'])){ return $tmp_val['ws']; } } } $tmp_return = array_rand(SYS_SERVER_NODE,1); return SYS_SERVER_NODE[$tmp_return]; } //设置用户WEB登陆 /* array( "ws" =>,//"游戏URL:端口", "time" =>登陆时间, "uid" =>,//"用户ID", ) */ function set_web_login($myredis,$uid,$data){ //用户登入完的key $user_key = USER_LOGIN_KEY.$uid; return $myredis->set($user_key,json_encode($data));//设置登陆的cookies; } //获取用户WEB登陆 /* 输入参数: * $uid 用户ID * 返回参数: */ function get_web_login($myredis,$uid){ //用户登入完的key $user_key = USER_LOGIN_KEY.$uid; if($myredis->exists($user_key)){ $tmp_val = $myredis->get($user_key); if(!empty($tmp_val)){ return json_decode($tmp_val,true); } } return false; } //T掉前一个在线用户 function del_user_redis($myredis,$uid){ //用户登入完的key $user_key = USER_LOGIN_KEY.$uid; //判断用户是否有登陆,以及有建立长连接 if($myredis->exists($user_key)){ return $myredis->delete($user_key);//删掉原来的找连接 } return false; } //生成加密的临时登陆key /* $arr = array( 'uid' =>$tmp_user_info['uid'],//用户的uid 'ip'=>$ip,//ip连接时的ip 'time'=>THIS_DATETIME//连接时的时间截 ); */ function set_login_token($arr){ $arr = json_encode($arr); return base64_encode(uc_authcode($arr, 'ENCODE')); } //解密临时登陆key function get_login_token($str){ if($str){ $val = uc_authcode(base64_decode($str),'DECODE'); if(!empty($val)){ $val = json_decode($val,true); }else{ $val = false; } return $val; }else{ return false; } } //把信息插入redis队列 /* $myredis=>redis连接, $key=>队列key, $data=>array( 't'=>生成消息的时间, 'uid'=>用户的UID, 'a'=>要执行的动作, 'm'=>要执行的模块, 'd'=>相关的数据(数组) ) */ function set_reids_push($myredis,$key,$data){ if(!isset($data['t']) || !isset($data['uid']) || !isset($data['a']) || !isset($data['m']) || !isset($data['d']) ){ return false; } $tmp_return = $myredis->LPUSH($key,json_encode($data)); if($tmp_return){ return true; } return false; } //返回消息队列尾的消息 /* $myredis=>redis连接, $key=>队列key 返回的内容 $data=>array( 't'=>生成消息的时间, 'uid'=>用户的UID, 'a'=>要执行的动作, 'm'=>要执行的模块, 'd'=>相关的数据(数组) ) or false */ function get_reids_push($myredis,$key){ if( empty($key) ){ return false; } $data = $myredis->RPOP($key); if(!empty($data)){ $data = json_decode($data,true); if(isset($data['uid']) && !empty($data['uid']) ){ return $data; }else{ return false; } }else{ return false; } } //返回消息队列头的消息 /* $myredis=>redis连接, $key=>队列key 返回的内容 $data=>array( 't'=>生成消息的时间, 'uid'=>用户的UID, 'a'=>要执行的动作, 'm'=>要执行的模块, 'd'=>相关的数据(数组) ) or false */ function get_reids_push2($myredis,$key){ if( empty($key) ){ return false; } $data = $myredis->LPOP($key); if(!empty($data)){ $data = json_decode($data,true); if(isset($data['uid']) && !empty($data['uid']) ){ return $data; }else{ return false; } }else{ return false; } } //==============end redis里的操作======================================= //===================================================================== //返回大的二维码地址 function get_ewm($uid){ //底图 $tmp_share_bg = "../uploadfile/share_nul.png"; $area_id = AREA_ID; $file_path = WEBPATH_DIR_INC.'uploadfile/ewm/member/my'.$uid.'_'.$area_id.'.png'; //判断是否已经有生成过这个用户的分享图片 if( file_exists($file_path) ){ return $file_path; } $myurl = WEBPATH_DIR_INC.'?reuserid='.$uid.'&areaid='.$area_id; $myfile = new zdeFile(); $PNG_TEMP_DIR = "../uploadfile/ewm/member/"; if (!file_exists($PNG_TEMP_DIR)){ $myfile->mkDir($PNG_TEMP_DIR); } $filename = 'my'.$uid.'_'.$area_id.'.png'; $filename2 = $PNG_TEMP_DIR.$filename; if( $myfile->touch($filename2,true) ){ QRcode::png($myurl, $filename2, 'H', '10', 2); $logo = '../uploadfile/logo.png'; $QR = imagecreatefromstring(file_get_contents($filename2)); $QR_width = imagesx($QR); $QR_height = imagesy($QR); if($logo !== FALSE) { $logo = imagecreatefromstring(file_get_contents($logo)); $logo_width = imagesx($logo); $logo_height = imagesy($logo); $logo_qr_width = $QR_width / 5; $scale = $logo_width / $logo_qr_width; $logo_qr_height = $logo_height / $scale; $from_width = ($QR_width - $logo_qr_width) / 2; imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); } imagepng($QR,$filename2); unset($QR,$logo); //合成底图 $tmp_qr = imagecreatefromstring(file_get_contents($filename2)); $tmp_qr_width = imagesx($tmp_qr); $tmp_qr_height = imagesy($tmp_qr); $tmp_share_bg = imagecreatefromstring(file_get_contents($tmp_share_bg)); $share_bg_width = imagesx($tmp_share_bg); $share_bg_height = imagesy($tmp_share_bg); $from_width = ($share_bg_width-240)/2;//二维码放的起点X imagecopyresampled($tmp_share_bg, $tmp_qr, $from_width, 272, 0, 0, 240, 240, $tmp_qr_width, $tmp_qr_height); imagepng($tmp_share_bg,$filename2); unset($tmp_qr,$tmp_share_bg); $myimg = WEBPATH_DIR_INC.'uploadfile/ewm/member/'.basename($filename); } return $myimg; } //返回小二维码地址 function get_ewm2($uid){ $area_id = AREA_ID; $file_path = WEBPATH_DIR_INC.'uploadfile/ewm2/member/min_my'.$uid.'_'.$area_id.'.png'; //判断是否已经有生成过这个用户的分享图片 if(file_exists($file_path) ){ return $file_path; } $myurl = WEBPATH_DIR_INC.'?reuserid='.$uid.'&areaid='.$area_id; $myfile = new zdeFile(); $PNG_TEMP_DIR = "../uploadfile/ewm2/member/"; if (!file_exists($PNG_TEMP_DIR)){ $myfile->mkDir($PNG_TEMP_DIR); } $filename = 'min_my'.$uid.'_'.$area_id.'.png'; $filename2 = $PNG_TEMP_DIR.$filename; if( $myfile->touch($filename2,true) ){ QRcode::png($myurl, $filename2, 'H', '10', 2); $logo = '../uploadfile/logo.png'; $QR = imagecreatefromstring(file_get_contents($filename2)); $QR_width = imagesx($QR); $QR_height = imagesy($QR); if($logo !== FALSE) { $logo = imagecreatefromstring(file_get_contents($logo)); $logo_width = imagesx($logo); $logo_height = imagesy($logo); $logo_qr_width = $QR_width / 5; $scale = $logo_width / $logo_qr_width; $logo_qr_height = $logo_height / $scale; $from_width = ($QR_width - $logo_qr_width) / 2; imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); } imagepng($QR,$filename2); } $myimg = WEBPATH_DIR_INC.'uploadfile/ewm2/member/'.basename($filename); return $myimg; } //从某个范围获取N个不同的随机数 /* * $begin=>开始数, * $end=>结束数, * $arr=>array(),要返回的数组 * $num=>要求的个数, * $diff=true(是否要求不同,默认是要求不同的) */ function get_mt_rand($begin,$end,$arr,$num,$diff=true){ $tmp_arr = mt_rand($begin,$end); if(!in_array($tmp_arr,$arr)){ $arr[] = $tmp_arr; $num--; } if($num<1){ return $arr; }else{ return get_mt_rand($begin,$end,$arr,$num,$diff); } } //添加会员登陆日志 /* $arr = array( 'uid'=>玩家ID, 'user_name'=>'自己定义名称', 'reg_time'=>'注册时间', 'reg_ip'=>'注册IP', 'login_time'=>'登陆时间', 'login_ip'=>'登陆IP', 'source_id'=>'渠道ID', 'source_id2'=>'渠道ID2', 'referee_id'=>'推荐人ID', 'referee_time'=>'推荐时间', ) */ function add_user_area_login($arr,$conn=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } //存一下登陆日志 $add_arr = array( 'uid'=>$arr['uid'], 'user_name'=>$arr['user_name'], 'reg_time'=>$arr['reg_time'], 'reg_ip'=>$arr['reg_ip'], 'login_time'=>$arr['login_time'], 'login_ip'=>$arr['login_ip'], 'source_id'=>$arr['source_id'], 'source_id2'=>$arr['source_id2'], 'referee_id'=>$arr['referee_id'], 'referee_time'=>$arr['referee_time'] ); $add_rs = add_record($conn,'game_member_login_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_login_log:'.json_encode($add_arr) ,"error_log","add_sql"); unset($add_arr,$add_rs); } return true; } //初始化用户属性数据 /* $arr = array( 'uid'=>'用户ID', ); */ function add_member_prop($arr,$conn=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } //开启事务 $conn->BeginRoll(); $tmp_check = array('uid'=>$arr['uid']); //如果未初始化用户的数据,则进行初始化 if(!exist_check($conn,'game_member_prop',$tmp_check)){ //用户属性 $add_arr = array( 'uid'=>$arr['uid'],//'用户ID', 'have_gold'=>$GLOBALS['SYS_FLOWER_MEMBER_2'][1]['num'],// 可用宝石数 'used_gold'=>0,// 已用宝石数 'grade'=>1,// 当前等级 'exp'=>0,// 当前等级经验 'up_time'=>date("Y-m-d H:i:s",time())// 升级时间 ); $add_rs = add_record($conn,'game_member_prop',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_prop:'.json_encode($add_arr) ,"error_log","add_sql"); unset($add_arr,$add_rs); $conn->RollBack(); return false; } } $conn->CommitRoll(); return true; } //初始化用户数据统计数据 /* $arr = array( 'uid'=>'用户ID', ); */ function add_game_num($arr,$conn=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } //开启事务 $conn->BeginRoll(); $tmp_check = array('uid'=>$arr['uid']); //如果未初始化用户的数据,则进行初始化 if(!exist_check($conn,'game_num',$tmp_check)){ //用户属性 $add_arr = array( 'uid'=>$arr['uid'],//'用户ID', 'flower_num'=>0,// 种植的花卉总数 'order_num'=>0,// 完成的订单总数 'goods_num'=>0,// 制造的商品总数 'up_time'=>date("Y-m-d H:i:s",time())// 数据更新时间 ); $add_rs = add_record($conn,'game_num',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_num:'.json_encode($add_arr) ,"error_log","add_game_num_sql"); unset($add_arr,$add_rs); $conn->RollBack(); return false; } } $conn->CommitRoll(); return true; } //初始化用户花田数据 /* $arr = array( 'uid'=>'用户ID', ); */ function add_member_flower_field($arr,$conn=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } //开启事务 $conn->BeginRoll(); $tmp_check = array( 'uid' => $arr['uid'] ); //如果未初始化用户的数据,则进行初始化 if(!exist_check($conn,'game_flower_field',$tmp_check)){ //用户花田数据 //for($i = 1; $i <= $GLOBALS['SYS_FLOWER_MEMBER_2'][1]['field']; $i++) { for($i = 1; $i <= 9; $i++) { $add_arr = array( 'uid' => $arr['uid'],//'用户ID', 'ff_id' => 'ht0'.$i,// 花田编号 'ff_vip' => ($i==1?2:1),// 花田等级 'ff_exp' => 0,// 花田的经验值 'w_uid' => '0',// 浇水ID 'w_time' => 0,// 浇水总节省时间 'w_js_time' => '0000-00-00 00:00:00',// 可浇水时间 'w_produce' => 0,// 浇水增加的产量 'w_rate' => 0,// 浇水增加的产量百份比 'fat_uid' => '0',// 施肥ID 'fat_time' => '0000-00-00 00:00:00',// 施肥时间 'fat_produce'=> 0,// 施肥增加的产量 'fat_rate' => 0,// 施肥增加的产量百份比 'seed_num' => '0',// 种子编号 'ger_time' => '0000-00-00 00:00:00',// 发芽时间 'grow_time' => '0000-00-00 00:00:00',// 生长时间 'bud_time' => '0000-00-00 00:00:00',// 花苞时间 'mature_time'=> '0000-00-00 00:00:00',// 成熟时间 'grow_static'=> 0 // 生长状态 ); $add_rs = add_record($conn,'game_flower_field',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_flower_field:'.json_encode($add_arr) ,"error_log","add_game_flower_field_sql"); unset($add_arr,$add_rs); $conn->RollBack(); return false; } } } $conn->CommitRoll(); return true; } //添加用户工厂数据 /* $arr = array( 'uid'=>'用户ID', ); */ function add_member_factory($arr,$conn=false){ //如果用户ID为空 if( empty($arr['uid']) ){ return false; } //工厂编号 if( empty($arr['mf_id']) ){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } //开启事务 $conn->BeginRoll(); $tmp_check = array( 'uid' => $arr['uid'],'mf_id' => $arr['mf_id'] ); //如果未初始化用户的数据,则进行初始化 if(!exist_check($conn,'game_member_factory',$tmp_check)){ $add_arr = array( 'uid' => $arr['uid'],//'用户ID', 'mf_id' => $arr['mf_id'],//'工厂编号', 'grade' => $arr['grade'], 'exp' => 0, //当前经验数 'open_seat_num' => $arr['open_seat_num'], //已开放生产位数量 'max_seat_num' => $arr['max_seat_num'], //最大生产位数量 'used_seat_num' => 0, //已用生产位数量 'goods_num' => 0, //已经生产的物品总数量 'being_goods' => '', //正在生产的物品 'queue_goods' => '', //准备生产的物品队列 'succ_goods' => '' //已完成生产的物品 ); $add_rs = add_record($conn,'game_member_factory',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_factory:'.json_encode($add_arr) ,"error_log","add_game_member_factory_sql"); unset($add_arr,$add_rs); $conn->RollBack(); return false; } } $conn->CommitRoll(); return true; } //初始化用户仓库数据 /* $arr = array( 'uid'=>'用户ID', ); */ function add_member_store($arr,$conn=false){ //如果用户ID为空 if( empty($arr['uid']) ){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } //开启事务 $conn->BeginRoll(); $tmp_check = array( 'uid' => $arr['uid'] ); //如果未初始化用户的数据,则进行初始化 if(!exist_check($conn,'game_member_store',$tmp_check)){ $add_arr = array( 'uid' => $arr['uid'],//'用户ID', 'grade' => 1,//仓库初始等级 'num' => $GLOBALS['SYS_STORE_INFO'][1]['num'],//仓库总大小 'num2' => 0,//仓库已使用数量 'num3' => $GLOBALS['SYS_STORE_INFO'][1]['num2'],//每格的大小 'name' => '1',//仓库名称 'add_time' => date("Y-m-d H:i:s",time()), //获得时间 'up_time' => '0000-00-00 00:00:00' // 修改时间 ); $add_rs = add_record($conn,'game_member_store',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_store:'.json_encode($add_arr) ,"error_log","add_game_member_store_sql"); unset($add_arr,$add_rs); $conn->RollBack(); return false; } } $conn->CommitRoll(); return true; } //添加用户到会员表 /* $tmp_user= array( 'gzhq_nickname' => $user_obj['nickname'], 'gzhq_name' => 'HQ@'.THIS_DATETIME.cai_get_pwd(4), 'gzhq_pwd' => '', 'gzhq_sex' => $user_obj['sex'], 'gzhq_wximg' =>$user_obj['headimgurl'], 'gzhq_country'=>$user_obj['country'], 'gzhq_province'=>$user_obj['province'], 'gzhq_city'=>$user_obj['city'], 'ip'=>ip, 'gzhq_reid'=>推荐人ID 'source_id'=>'', 'source_id2'=>'', 'gzhq_email'=>'', 'gzhq_tel'=>'', 'sys_name'=>'手机系统ID', ); */ function add_user_reg($tmp_user,$conn=false){ if(!$conn){ $conn = $GLOBALS["conn"]; } //进行新用户的插入 $rearr = array( 'uid' => get_user_uid($conn), 'pwd' =>$tmp_user['gzhq_pwd'],//用户密码', 'user_name' =>$tmp_user['gzhq_name'],//'用户帐号', 'user_nickname' =>$tmp_user['gzhq_nickname'],//'用户昵称', 'user_avatar' =>$tmp_user['gzhq_wximg'],//'用户头像', 'sex' =>$tmp_user['gzhq_sex'],//'性别', 'reg_time' =>date("Y-m-d H:i:s",THIS_DATETIME),//'注册时间', 'reg_ip' =>$tmp_user['ip'],//注册时IP', 'login_num' =>0,//'登陆次数', 'last_time' =>date("Y-m-d H:i:s",THIS_DATETIME),//'最后登陆时间', 'last_ip' =>$tmp_user['ip'],//'最后登陆IP', 'country' =>$tmp_user['gzhq_country'],//'所在国家', 'province' =>$tmp_user['gzhq_province'],//'所在省', 'city' =>$tmp_user['gzhq_city'],//'所在市', 'area' =>'',//'所在区', 'email' =>$tmp_user['gzhq_email'],//'邮箱', 'tel' =>$tmp_user['gzhq_tel'],//'电话号码', 'address' =>'',//'联系地址', 'id_number' =>'',//'身份证号', 'true_name' =>'',//'真实姓名', 'referee_id' =>$tmp_user['gzhq_reid'],//'推荐人ID', 'referee_time' =>date("Y-m-d H:i:s",THIS_DATETIME),//'推荐时间', 'source_id' =>$tmp_user['source_id'],//'来源渠道ID', 'source_id2' =>$tmp_user['source_id2'],//'来源渠道ID2', 'wx'=>'',// 微信号 'is_open_wx'=>'1',//是否公开微信号', 'referee_num'=>'',//'推荐码', 'chat_ok'=>'1',//'聊天气泡', 'sys_ok'=>'1',//'系统广播', 'music_ok'=>'1',//'音效', 'day_ok'=>'1',//'推送提醒(白天)', 'night_ok'=>'1',//'推送提醒(晚上)', 'xz_ok'=>'1',//'用户星座', 'sign_info'=>'',//'个性签名', 'up_time'=>date("Y-m-d H:i:s",THIS_DATETIME),//'修改时间', 'sys_name' => $tmp_user['sys_name'] ); $tmp_record = add_record($conn,"game_member",$rearr,true); if(isset($tmp_record['id'])) { unset($tmp_user); //初始化注册用户的信息(参照变量$tmp_arr) $tmp_user_info = array( "uid" => $rearr['uid'], "user_name" => $rearr['user_name'], "pwd" => $rearr['pwd'], "user_nickname" => $rearr['user_nickname'], "user_avatar" => $rearr['user_avatar'], "sex" => $rearr['sex'], "reg_time" => $rearr['reg_time'], "reg_ip" => $rearr['reg_ip'], "email" => $rearr['email'], "tel" => $rearr['tel'], "referee_id" => $rearr['referee_id'], "referee_time" => $rearr['referee_time'], "source_id" => $rearr['source_id'], "source_id2" => $rearr['source_id2'] ); sys_log_write_content( 'game_member:'.$tmp_record['error'] ,"error_log","add_sql2"); return $tmp_user_info; }else{ sys_log_write_content( 'game_member:'.json_encode($rearr) ,"error_log","add_sql"); return false; } } //添加用户宝石日志 /* $arr = array( 'data_id'=>'服务唯ID', 'uid'=>'用户ID', 'card_num'=>'数量', 'state'=>'处理状态', //1锁定,2取消,3成功 'create_time'=>'记录时间', 'create_ip'=>'记录IP', 'mod_time'=>'修改时间', 'mod_ip'=>'修改IP', 'info'=>'备注', 'pay_type'=>'消耗类型'//1获得,2失去 ) */ function add_gold_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'data_id'=>$arr['data_id'], 'uid'=>$arr['uid'], 'card_num'=>$arr['card_num'], 'state'=>$arr['state'], 'create_time'=>$arr['create_time'], 'create_ip'=>$arr['create_ip'], 'mod_time'=>$arr['mod_time'], 'mod_ip'=>$arr['mod_ip'], 'info'=>$arr['info'], 'pay_type'=>$arr['pay_type'] ); $add_rs = add_record($conn,'game_global_gold_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_global_gold_log:'.json_encode($add_arr) ,"error_log","add_game_global_gold_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户等级升级日志 /* $arr = array( 'uid'=>'用户ID', 'before_grade'=>'升级前的等级', 'after_grade'=>'升级后的等级', 'exp'=>'升级时所用的经验', 'gold'=>'升级时所用的宝石', 'add_time'=>'升级时间', 'info'=>'备注' ) */ function add_member_grade_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'before_grade'=>$arr['before_grade'], 'after_grade'=>$arr['after_grade'], 'exp'=>$arr['exp'], 'gold'=>$arr['gold'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_grade_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_grade_log:'.json_encode($add_arr) ,"error_log","add_game_member_grade_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户花田升级/解锁日志 /* $arr = array( 'uid'=>'用户ID', 'ff_id'=>'花田ID', 'type'=>'类型', 'before_vip'=>'升级前的等级', 'after_vip'=>'升级后的等级', 'exp'=>'升级时所用的经验', 'gold'=>'升级时所用的宝石', 'add_time'=>'升级时间', 'info'=>'备注' ) */ function add_member_flower_field_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'ff_id'=>$arr['ff_id'], 'type'=>$arr['type'], 'before_vip'=>$arr['before_vip'], 'after_vip'=>$arr['after_vip'], 'exp'=>$arr['exp'], 'gold'=>$arr['gold'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_flower_field_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_flower_field_log:'.json_encode($add_arr) ,"error_log","add_game_member_flower_field_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户花田浇水日志 /* $arr = array( 'uid'=>'用户ID', 'w_uid'=>'浇水好友ID', 'ff_id'=>'花田ID', 'w_id'=>'浇水id', 'w_vip'=>'浇水等级', 'w_exp'=>'增加花田经验数', 'w_exp2'=>'增加玩家经验数', 'w_t'=>'有效时长', 'add_time'=>'浇水时间', 'info'=>'备注' ) */ function add_member_flower_water_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'w_uid'=>$arr['w_uid'], 'ff_id'=>$arr['ff_id'], 'w_id'=>$arr['w_id'], 'w_vip'=>$arr['w_vip'], 'w_exp'=>$arr['w_exp'], 'w_exp2'=>$arr['w_exp2'], 'w_t'=>$arr['w_t'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_flower_water_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_flower_water_log:'.json_encode($add_arr) ,"error_log","add_game_member_flower_water_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户花田施肥日志 /* $arr = array( 'uid'=>'用户ID', 'f_uid'=>'施肥好友ID', 'ff_id'=>'花田ID', 'f_id'=>'施肥id', 'f_vip'=>'施肥等级', 'f_num'=>'增加产量', 'f_num2'=>'增加生长时间的百分比', 'f_exp'=>'增加花田经验数', 'f_exp2'=>'增加玩家经验数', 'f_t'=>'有效时长', 'add_time'=>'施肥时间', 'info'=>'备注' ) */ function add_member_flower_ferti_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'f_uid'=>$arr['f_uid'], 'ff_id'=>$arr['ff_id'], 'f_id'=>$arr['f_id'], 'f_vip'=>$arr['f_vip'], 'f_num'=>$arr['f_num'], 'f_num2'=>$arr['f_num2'], 'f_exp'=>$arr['f_exp'], 'f_exp2'=>$arr['f_exp2'], 'f_t'=>$arr['f_t'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_flower_ferti_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_flower_ferti_log:'.json_encode($add_arr) ,"error_log","add_game_member_flower_ferti_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户花田种植日志 /* $arr = array( 'uid'=>'用户ID', 'ff_id'=>'花田ID', 'ff_vip'=>'花田等级', 'gold'=>'所需宝石', 'seed_num'=>'种子编号', 'add_time'=>'种植时间', 'info'=>'备注' ) */ function add_member_flower_plant_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'ff_id'=>$arr['ff_id'], 'ff_vip'=>$arr['ff_vip'], 'gold'=>$arr['gold'], 'seed_num'=>$arr['seed_num'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_flower_plant_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_flower_plant_log:'.json_encode($add_arr) ,"error_log","add_game_member_flower_plant_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户花田收获日志 /* $arr = array( 'uid'=>'用户ID', 'ff_id'=>'花田ID', 'ff_vip'=>'花田等级', 'num'=>'收获数量', 'seed_num'=>'种子编号', 'add_time'=>'收获时间', 'info'=>'备注' ) */ function add_member_flower_reward_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'ff_id'=>$arr['ff_id'], 'ff_vip'=>$arr['ff_vip'], 'num'=>$arr['num'], 'seed_num'=>$arr['seed_num'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_flower_reward_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_flower_reward_log:'.json_encode($add_arr) ,"error_log","add_game_member_flower_reward_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户经验日志 /* $arr = array( 'uid'=>'用户ID', 'num'=>'数量', 'type'=>'类型',//1获得2失去 'add_time'=>'添加时间', 'info'=>'备注' ) */ function add_member_exp_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'num'=>$arr['num'], 'type'=>$arr['type'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_exp_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_exp_log:'.json_encode($add_arr) ,"error_log","add_game_member_exp_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户用户物品使用日志(记录物品回收数据) /* $arr = array( 'uid'=>'用户ID', 'good_id'=>'物品ID', 'store_id'=>'仓库ID', 'pos'=>'仓库位置', 'num'=>'物品数量', 'add_time'=>'回收时间', 'add_ip'=>'回收时IP', 'info'=>'物品信息' ) */ function add_member_goods_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'good_id'=>$arr['good_id'], 'store_id'=>$arr['store_id'], 'pos'=>$arr['pos'], 'num'=>$arr['num'], 'add_time'=>$arr['add_time'], 'add_ip'=>$arr['add_ip'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_goods_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_goods_log:'.json_encode($add_arr) ,"error_log","add_game_member_goods_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户工厂升级/解锁日志数据表 /* $arr = array( 'uid'=>'用户ID', 'mf_id'=>'工厂编号', 'type'=>'类型', 'before_vip'=>'升级前的等级', 'after_vip'=>'升级后的等级', 'exp'=>'升级时所用的经验', 'gold'=>'升级时所用的宝石', 'add_time'=>'升级时间', 'info'=>'备注' ) */ function add_member_factory_upgrade_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'mf_id'=>$arr['mf_id'], 'type'=>$arr['type'], 'before_vip'=>$arr['before_vip'], 'after_vip'=>$arr['after_vip'], 'exp'=>$arr['exp'], 'gold'=>$arr['gold'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_factory_upgrade_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_factory_upgrade_log:'.json_encode($add_arr) ,"error_log","add_game_member_factory_upgrade_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户用户工厂生产日志 /* $arr = array( 'uid'=>'用户ID', 'mf_id'=>'工厂编号', 'mf_vip'=>'工厂等级', 'gold'=>'所需宝石', 'goods_num'=>'物品编号', 'add_time'=>'生产时间', 'info'=>'备注' ) */ function add_member_factory_output_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'mf_id'=>$arr['mf_id'], 'mf_vip'=>$arr['mf_vip'], 'gold'=>$arr['gold'], 'goods_num'=>$arr['goods_num'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_factory_output_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_factory_output_log:'.json_encode($add_arr) ,"error_log","add_game_member_factory_output_log_sql"); unset($add_arr,$add_rs); } return true; } //添加用户工厂收获日志 /* $arr = array( 'uid'=>'用户ID', 'mf_id'=>'工厂编号', 'ff_vip'=>'工厂等级', 'num'=>'收获数量', 'goods_num'=>'物品编号', 'add_time'=>'收获时间', 'info'=>'备注' ) */ function add_member_factory_reward_log($arr,$conn=false,$myredis=false){ //如果用户ID为空 if(empty($arr['uid'])){ return false; } if(!$conn){ $conn = $GLOBALS["conn"]; } if(!$myredis){ $myredis = $GLOBALS["myredis"]; } $add_arr = array( 'uid'=>$arr['uid'], 'mf_id'=>$arr['mf_id'], 'mf_vip'=>$arr['mf_vip'], 'num'=>$arr['num'], 'goods_num'=>$arr['goods_num'], 'add_time'=>$arr['add_time'], 'info'=>$arr['info'] ); $add_rs = add_record($conn,'game_member_factory_reward_log',$add_arr); if(!isset($add_rs['id'])){//如果添加失败 sys_log_write_content( 'game_member_factory_reward_log:'.json_encode($add_arr) ,"error_log","add_game_member_factory_reward_log_sql"); unset($add_arr,$add_rs); } return true; } //请求游戏服务器给登陆的用户发送数据 /*输入参数 $uid=>的线用户uid, $param=发送的参数, $method='post',//请求方式 , $header=''//头部消息 返回执行的结果 */ function do_act_post_websocket($uid,$param=null,$myredis=false,$method='post',$header=''){ if(!$myredis){ $myredis = $GLOBALS['myredis']; } //sys_log_write_content( $uid.'-----------' ,"error_log","do_act_post_websocket"); if($uid==1){//如果是系统的消息则需要发给所有的游戏服务器 $re = ""; foreach(SYS_SERVER_NODE as $key=>$val){ if(isset($val['ws']) && !empty($val['ws'])){ $re .= post_request("https://".$val['ws'], "token=" . $param); } } return $re; }else{ //获取用户登陆的游戏服务器 $tmp_login = get_web_login($myredis,$uid); if($tmp_login){ $re = ""; if(!empty($tmp_login['ws']['ws'])){ //sys_log_write_content( $uid.':http://'.$tmp_login['ws']['ws'] ,"error_log","do_act_post_websocket"); $re = post_request("https://".$tmp_login['ws']['ws'], "token=" . $param); return $re; } } } return false; }