flower_svr/include/data.function.inc.php
2021-06-11 16:09:56 +08:00

1493 lines
42 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?PHP
/**
*功能:加密解密函数
*@param string $string 要加密字符串
*@param string $operation 动作 DECODE 解密, ENCODE 加密
*@param string $key 加密key
*@param int expiry
*@return string 加密或解密的字符串
*/
function uc_authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key ? $key : '12R,sf2$1U5)kk#UI9.wiu');
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == 'DECODE') {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 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;
}