flower_svr/class/gzhq_lottery.class.php
2021-06-15 14:20:59 +08:00

175 lines
6.1 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: ddcai
* Date: 2018/6/11
* Time: 13:40
*/
class gzhq_lottery extends gzhq_base{
//提交订单
public function lottery_act(){
$return_arr = array(
"ga" => 'game_txt_tip',
"code" => 1,
"gd" => array(
'uid'=>0,
'msg'=>"fail"
)
);
$redis_conn = $this->arr['server']->redis_pool->get();
$mysql_conn = $this->arr['server']->mysql_pool->get();
$tmp_user_info = $this->arr['server']->get_user_by_fd($this->arr['fd']);
if($tmp_user_info['uid']) {//如果用户登陆正常
$uid = $tmp_user_info['uid'];
$ip = $this->arr['ip'];
$lottery_id = $this->arr['d']["lottery_id"]; //任务ID
if( empty($lottery_id) ){
$return_arr["gd"]["msg"] = "数据不能为空";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}
$user_prop = get_game_user_prop($uid,$mysql_conn,$redis_conn);//用户属性
//任务数据
$lottery_info = $GLOBALS["SYS_FLOWER_LOTTERY"][$lottery_id];
if(!$lottery_info){
$return_arr["gd"]["msg"] = "获取数据出错";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}
/*if($user_prop['grade']<$lottery_info['grade']){
$return_arr["gd"]["msg"] = "你的等级不够,不能接该任务";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}
if($user_prop['grade']>$lottery_info['grade2']){
$return_arr["gd"]["msg"] = "你的等级已超过该任务等级,不能接该任务";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}*/
//判断任务是否已完成
$daytime = date("Y-m-d",time());
$user_lottery = get_user_lottery($uid,$lottery_id,$daytime,$mysql_conn,$redis_conn);
if($user_lottery['num']>=$lottery_info['num'] || $user_lottery['is_ok'] == 2 ){
$return_arr["gd"]["msg"] = "该任务已完成";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}
//判断物品数量
$check_goods = check_user_good($uid,$lottery_info['goods'],$mysql_conn,$redis_conn);
if(!$check_goods){
$return_arr["gd"]["msg"] = "物品不足,无法提交!";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}
$del_goods = del_user_good($uid,$ip,$lottery_info['goods'],$mysql_conn,$redis_conn);
if(!$del_goods){
$return_arr["gd"]["msg"] = "扣除物品失败";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}
//检测仓库
$is_store = get_store_good_pos($uid,$mysql_conn,$redis_conn);
if(!$is_store){
$return_arr["gd"]["msg"] = "仓库空间不足";
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}
if(($user_lottery['num']+1)==$lottery_info['num']){//已完成订单
$up_arr = array(
//'get_good' => json_encode($lottery_info['goods3'],JSON_UNESCAPED_UNICODE), //实际获取物品
'num' => ($user_lottery['num']+1), //接任务的次数
'is_ok' => 2, //是否已完成任务
'up_time' => date("Y-m-d H:i:s",time()), //完成时间
'up_ip' => $ip //完成时IP
);
}else{//未完成订单
$up_arr = array(
//'get_good' => json_encode($lottery_info['goods3'],JSON_UNESCAPED_UNICODE), //实际获取物品
'num' => ($user_lottery['num']+1) //接任务的次数
);
}
$num = $user_lottery['num']+1;
$info = update_game_user_lottery($uid,$lottery_id,$daytime,$up_arr,$mysql_conn,$redis_conn);
if($info){
//循环奖励
if($lottery_info['goods3']){
foreach($lottery_info['goods3'] as $k=>$v){
//入仓库
$goods_arr = array(
'good_id' => $v['id'],
'num' => $v['num']?$v['num']:1
);
store_good_data_save($uid,$goods_arr,$ip,$mysql_conn,$redis_conn);
}
}
//更新用户完成订单总数
$num_arr = array(
'order_num' => 'order_num+1', //完成的订单总数
'up_time' => date("Y-m-d H:i:s",time()) //数据更新时间
);
update_game_num($uid,$num_arr,$mysql_conn,$redis_conn);
//获取新数据
$new_user_lottery = get_user_lottery($uid,$lottery_id,$daytime,$mysql_conn,$redis_conn);
$info = array(
'lottery_id' => $lottery_id,
'task_uid' => $new_user_lottery['task_uid'],
'task_uid_pic' => $new_user_lottery['task_uid_pic'],//'分配任务用户头像'
'type' => $new_user_lottery['type'],//'任务类型',
'is_ok' => $new_user_lottery['is_ok'],//'是否已完成任务',
'num' => $num,
'msg' => '提交订单成功'
);
$return_arr = array(
"ga" => 'lottery_act_bak',
"code" => 1,
"gd" => $info?$info:''
);
}else{
$return_arr["gd"]["msg"] = "提交订单失败";
}
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
$this->arr['server']->send_user($this->arr['fd'],$return_arr);
return true;
}else{
echo("用户不在线:fd=".$this->arr['fd']."||uid=".$tmp_user_info['uid']);
}
$this->arr['server']->redis_pool->put($redis_conn);
$this->arr['server']->mysql_pool->put($mysql_conn);
return true;
}
}