编辑代码

<?php 
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
$activityConfig =array(
	"8" => array(
		"activity" => 2,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 1,
		"top_up" => 0,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("credits",88)),
	),
	"9" => array(
		"activity" => 2,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 2,
		"top_up" => 0,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("coin",30000)),
	),
	"10" => array(
		"activity" => 2,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 3,
		"top_up" => 0,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("box_key_purple",30)),
	),
	"11" => array(
		"activity" => 2,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 4,
		"top_up" => 0,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("credits",215)),
	),
	"12" => array(
		"activity" => 2,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 5,
		"top_up" => 0,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array(71003,1)),
	),
	"13" => array(
		"activity" => 3,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 1,
		"top_up" => 6,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("credits",100),array(71002,1),array(58012,5)),
	),
	"14" => array(
		"activity" => 3,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 2,
		"top_up" => 6,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("credits",100),array(71002,1),array(58012,5)),
	),
	"15" => array(
		"activity" => 3,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 3,
		"top_up" => 6,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("credits",100),array(71002,1),array(58012,5)),
	),
	"16" => array(
		"activity" => 3,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 4,
		"top_up" => 6,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array("credits",100),array(71002,1),array(58012,5)),
	),
	"17" => array(
		"activity" => 3,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 5,
		"top_up" => 6,
		"sign" => 0,
		"expend" => 0,
		"awards" => array(array(51303,10)),
	),
	"18" => array(
		"activity" => 3,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 6,
		"top_up" => 6,
		"sign" => 1,
		"expend" => 0,
		"awards" => array(array("box_key_gold",50)),
	),
	"19" => array(
		"activity" => 4,
		"begin_time" => "2022/4/28 20:00:00",
		"end_time" => "2022/5/5 23:59:59",
		"login_num" => 1,
		"top_up" => 0,
		"sign" => 0,
		"expend" => array(0,60,120,180,240,300,360,420),
		"awards" => array(array(100,array(51303,10)),array(100,array(51303,10)),array(200,array(51303,5)),array(200,array(51303,5)),array(1000,array(59233,10)),array(1000,array(59234,10)),array(2000,array(71002,1)),array(2000,array(71003,1))),
	),
	);
// echo "==>>>>config=".json_encode($activityConfig)."\n";

/**
    * 获取到玩家活动数据
    * @param $activity_type
    * @return mixed
    */

function getPlayerActivityData($activity_type)
{
    // $data=array("2" => array(
    //     "activity_num" => 1,
    //     "activity_award" => [],
    //     "activity_time" =>array("8"=>1650969849),
    // ));
    $data=[];
    if (empty($data) || !isset($data[$activity_type])) {
        $data[$activity_type]["activity_num"] = 0;
        $data[$activity_type]["activity_award"] = [];
        $data[$activity_type]["activity_time"] = [];
    }
    echo "=====>>data=".json_encode($data)."\n";
    return $data;
}

// foreach ($activityConfig as $config) {
//     echo "==>>>>config=".json_encode($config)."\n";
// }

/**
    * 按类型获取活动配置
    * @param $activity_type
    * @return array
    */
function getActivityConfigByType($activityConfig,$activity_type)
{
    // echo "==>>>>config=".json_encode($activityConfig)."\n";
    $activity_array = [];
    foreach ($activityConfig as $activity_id=>$config) {
        if ($activity_type == $config["activity"]) {
            array_push($activity_array, [$activity_id => $config]);
        }
    }
    echo "==>>>>activity_array=".json_encode($activity_array)."\n";
    return $activity_array;
}


/**
    * 返回活动数据
    */
function getData($activityConfig)
{
    $data = [];
    // $this->getConfig();
    $now = time();
    $activity_type = 2;
    $player_data = getPlayerActivityData($activity_type);
    $result=[];
    if (!empty($player_data)) {
        array_push($result,["data"=>$player_data]);
    }
    array_push($result,["config" => $activityConfig]);
    return $result;
}

/**
* 转盘活动数据更新
*/
function updateRotaryActivity($request_data,$activityConfig,$player_data)
{
    // echo "=====updateRotaryActivity=====\n";
    $activity_id = $request_data["activity_id"];
    $activity_type=$request_data["activity_type"];
    // $data = getPlayerActivityData($activity_type);
    $activity_config=$activityConfig[$activity_id];
    $result_award =[];
    // echo "==>>>>===>>activity_config=" . json_encode($activity_config) . "\n";
    if (isset($activity_config)) {
        $activity_awards = $activity_config["awards"];
        // echo "==>>>>===>>activity_awards=" . json_encode($activity_awards) . "\n";
        $weight = 0;
        $temp_data = [];
        foreach ($activity_awards as $key => $awards) {
            $key += 1;
            // echo "==activity_awards  key={$key}\n";
            $already_exist = false;
            foreach ($player_data[$activity_type]['activity_time'] as $already_value) {
                if (isset($already_value[$key])) {
                    // echo "==already_value" . json_encode($already_value[$key]) . "\n";
                    $already_exist = true;
                }
            }
            if (!$already_exist) {
                $weight += $awards[0];
                for ($i = 0; $i < $awards[0]; $i++) {
                    $temp_data[] = $key;
                }
            }
        }
        // echo "==weight={$weight}\n";
        if ($weight > 0) {
            // echo "==temp_data=" . json_encode($temp_data) . "\n";
            $rand_index = rand(0, $weight - 1);
            // echo "==rand_index={$rand_index}\n";
            $rand_result = $temp_data[$rand_index];
            // echo "==rand_result={$rand_result}\n";
            $result_award = $activity_awards[$rand_result-1][1];
            // echo "==result_award=" . json_encode($result_award) . "\n";
            $rotary_time = time();
            $player_data[$activity_type]["activity_num"] += 1;
            // echo "=====activity_num={$data[$activity_type]['activity_num']}\n";
            array_push($player_data[$activity_type]["activity_time"], [$rand_result => $rotary_time]);
            if($rand_result>5){
                array_push($player_data[$activity_type]["activity_award"], [$rand_result => $result_award]);
            }
            echo "==>>>>U.R.A result_award=" . json_encode($result_award) . "\n";
        // $this->saveData($data);
        }
    }
    return $player_data;
}

/**
* 领取奖励
* @param $request_data
* @return array
*/
function getAwards($request_data,$activityConfig,$player_data)
{
    echo "=====getAwards=====\n";
    $activity_type = $request_data["activity_type"];
    $activity_id = $request_data["activity_id"];
    $awards = [];
    $receive = false;
    $complete = false;
    // $player_data = $this->getPlayerActivityData($activity_type);
    // $this->getConfig();
    if (!isset($activityConfig[$activity_id])) {
        return $awards;
    }
    if (!empty($player_data[$activity_type]["activity_time"])) {
        foreach ($player_data[$activity_type]["activity_time"] as $activity_time) {
            echo "==>>>>activity_time=" . json_encode($activity_time) . "\n";
            if (isset($activity_time[$activity_id])) {
                echo "==>>>>aaaa=\n";
                $complete=true;
                break;
            }
        }
    }
    echo "==>>>>complete={$complete}\n";
    if (!empty($player_data[$activity_type]["activity_award"])) {
        foreach ($player_data[$activity_type]["activity_award"] as $activity_award) {
            echo "==>>>>activity_time=" . json_encode($activity_award) . "\n";
            if (isset($activity_award[$activity_id])) {
                echo "==>>>>bbb=";
                $receive = false;
            }
        }
    }
    echo "==>>>>receive={$receive}\n";
    if ($complete && !$receive) {
        $_awards = $activityConfig[$activity_id]["awards"];
        foreach ($_awards as $item) {
            $k = $item[0];
            $v = $item[1];
            if (isset($awards[$k])) {
                $awards[$k] += $v;
            } else {
                $awards[$k] = $v;
            }
        }
        array_push($player_data[$activity_type]["activity_award"], [$activity_id => $awards]);
        // $this->saveData($request_data);
    }
    echo "==>>>>awards=" . json_encode($awards) . "\n";
    return $player_data;
}

/**
    * 充值活动数据更新
    * @param $payment_info
    */
function updatePaymentSuccessActivity($request_data,$activity_config_by_type,$activityConfig,$player_data)
{
    echo "=====updatePaymentSuccessActivity=====\n";
    $activity_type = 3;
    // $player_data = $this->getPlayerActivityData($activity_type);
    // $activity_config = $this->getActivityConfigByType($activity_type);
    if (count($activity_config_by_type) >= $player_data[$activity_type]["activity_num"]) {
        $payment_time = time();
        $player_data[$activity_type]["activity_num"] += 1;
        echo "=====activity_num={$player_data[$activity_type]['activity_num']}====\n";
        foreach ($activityConfig as $activity_id => $config) {
            if ($config["activity"] == $activity_type && $config["login_num"] == $player_data[$activity_type]["activity_num"] && $request_data["cash_fee"] >= $config["top_up"]) {
                array_push($player_data[$activity_type]["activity_time"], [$activity_id => $payment_time]);
                echo "==>>>>U.P.S.A player_data=" . json_encode($player_data) . "\n";
            }
        }
        // $this->saveData($player_data);
    }
    return $player_data;
}

/**
    * 登录活动数据更新
    */
function loginActivityDaily($activity_config_by_type,$activityConfig,$player_data)
{
    echo "=====loginActivityDaily=====\n";
    $activity_type = 2;
    // $data = $this->getPlayerActivityData($activity_type);
    // $activity_config = $this->getActivityConfig($activity_type);
    if (count($activity_config_by_type) >= $player_data[$activity_type]["activity_num"]) {
        $first_time = true;
        $login_time = time();
        if (isset($player_data[$activity_type]["activity_time"])) {
            echo "==>>>>activity_time=" . json_encode($player_data[$activity_type]["activity_time"]) . "\n";
            foreach ($player_data[$activity_type]["activity_time"] as $activity_id => $activity_time) {
                if (isSameDay($activity_time, $login_time)) {
                    $first_time = false;
                    echo "==first_time=false>>>>activity_id={$activity_id}===activity_time={$activity_time}====\n";
                }
            }
        }
        if ($first_time) {
            $player_data[$activity_type]["activity_num"] += 1;
            echo "=====activity_num={$player_data[$activity_type]['activity_num']}====\n";
            foreach ($activityConfig as $activity_id => $config) {
                if ($config["activity"] == $activity_type && $config["login_num"] == $player_data[$activity_type]["activity_num"]) {
                    array_push($player_data[$activity_type]["activity_time"], [$activity_id => $login_time]);
                }
            }
            // $this->saveData($data);
        }
    }
    echo "==>>>>===>>player_data=" . json_encode($player_data) . "\n";
    return $player_data;
}


function sendMailAwards($a,$activityConfig,$data)
{
    $activity_type = 4;
    $activity_id = 19;
    // $data = getPlayerActivityData($activity_type);
    if (!empty($data)) {
        $awards = [];
        if (count($data[$activity_type]["activity_time"]) != count($data[$activity_type]["activity_award"])) {
            $complete = [];
            echo "==>>>>activity_time=" . json_encode($data[$activity_type]["activity_time"]) . "\n";
            foreach ($data[$activity_type]["activity_time"] as $activity_time) {
                foreach ($activity_time as $key => $value) {
                    array_push($complete, $key);
                }
            }
            echo "==>>>>complete=" . json_encode($complete) . "\n";
            echo "==>>>>activity_award=" . json_encode($data[$activity_type]["activity_award"]) . "\n";
            foreach ($data[$activity_type]["activity_award"] as $activity_award) {
                foreach ($activity_award as $key => $value) {
                    echo "==>>key={$key}>>value=" . json_encode($value) . "\n";
                    $index = array_search($key, $complete);
                    echo "==>>index={$index}>>\n";
                    if ($index >= 0) {
                        unset($complete[$index]);
                    }
                }
            }
            $awards_tem = [];
            $_awards = $activityConfig[$activity_id]["awards"];
            echo "==>>>>complete=" . json_encode($complete) . "\n";
            foreach ($complete as $key => $value) {
                echo "==>>key={$key}>>value={$value}\n";
                array_push($awards_tem, $_awards[$value][1]);
            }
            foreach ($awards_tem as $item) {
                $k = $item[0];
                $v = $item[1];
                if (isset($awards[$k])) {
                    $awards[$k] += $v;
                } else {
                    $awards[$k] = $v;
                }
            }
            echo "==>>>>awards=" . json_encode($awards) . "\n";
        }
    }
    // if (!empty($awards)) {
    //     secho("sendMailAwards======{$this->uid}=======awards:", $awards);
    //     $language = getLanguage($this->uid, $this->redis);
    //     $title = getTipText("festivaI_activity_mail_1000", $language);
    //     $content = getTipText("festivaI_activity_mail_1001", $language);
    //     $content_to = getTipText(3319, $language);
    //     $content_from = getTipText(3321, $language);
    //     $mail = $this->loader->model("Mail", $this)->init($this->uid);
    //     $mail->sendMail($title, $content_to, $content, $content_from, $awards);
    //     secho("连续登录活动结束发送奖励=======", ["uid" => $this->uid, "awards" => $awards]);
    // }
}

echo "=====>>activityConfig=" . json_encode($activityConfig) . "\n";
$request_data=array("activity_type"=>4,"activity_id"=>19,"cash_fee"=>6);
echo "=====>>request_data=" . json_encode($request_data) . "\n";
$activity_type = $request_data["activity_type"];
$activity_id = $request_data["activity_id"];
// $player_data = getPlayerActivityData($activity_type);

// $rotary_info["activity_id"]="19";
// $rotary_info["activity_type"]=$activity_type;
// for($i=0;$i<5;$i++){
//     // echo "==>>>>***********************************i={$i}\n";
//     $data=updateRotaryActivity($rotary_info,$activityConfig,$data);
//     // echo "==>>>>===>>rotary_result=" . json_encode($data) . "\n";
// }
// $activity_config_by_type=getActivityConfigByType($activityConfig,$activity_type);

// $player_data=loginActivityDaily($activity_config_by_type,$activityConfig,$player_data);

// $player_data=updatePaymentSuccessActivity($request_data,$activity_config_by_type,$activityConfig,$player_data);

// $player_data=updateRotaryActivity($request_data,$activityConfig,$player_data);

// $result=getAwards($request_data,$activityConfig,$player_data);


// echo "==>>>>===>>data=" . json_encode($data) . "\n";
// sendMailAwards(1,$activityConfig,$data);

$result=getData($activityConfig);
echo "=====>>result=" . json_encode($result) . "\n";