<?php
// ==================== 微信静默登录 ====================
$appId     = 'wx3a53b2e64c8df6b8';
$appSecret = '69eb6153d5dffcdbcae0f32088738a4a';


// 数据库配置
$dbHost = 'localhost';
$dbName = 'jcw_golden_palm_';
$dbUser = 'jcw_golden_palm_';
$dbPass = 'wE4D3Bswb7LxezHP';

session_start();

// ---------- 数据库连接 ----------
try {
    $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8mb4", $dbUser, $dbPass, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);
} catch (PDOException $e) {
    die('数据库连接失败: ' . $e->getMessage());
}

// ---------- 记录或更新用户登录信息 ----------
function saveUserLogin($pdo, $openid, $accessToken = '', $refreshToken = '', $expiresIn = 0)
{
    $now = date('Y-m-d H:i:s');
    $sql = "INSERT INTO wx_users (openid, access_token, refresh_token, expires_in, first_login_at, last_login_at, login_count)
            VALUES (:openid, :access_token, :refresh_token, :expires_in, :now, :now, 1)
            ON DUPLICATE KEY UPDATE
                access_token   = VALUES(access_token),
                refresh_token  = VALUES(refresh_token),
                expires_in     = VALUES(expires_in),
                last_login_at  = :now2,
                login_count    = login_count + 1";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        ':openid'        => $openid,
        ':access_token'  => $accessToken,
        ':refresh_token' => $refreshToken,
        ':expires_in'    => $expiresIn,
        ':now'           => $now,
        ':now2'          => $now,
    ]);
}

// ---------- 获取当前页面完整 URL ----------
function getCurrentUrl()
{
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
    return $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

// ---------- HTTP GET 请求 ----------
function httpGet($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

// ---------- 已登录判断 ----------
if (!empty($_SESSION['wx_openid'])) {
    // 已有登录态，直接渲染页面
    $isOpenid = true;

    // 判断是否已填写过表单（name 和 tel 不为空即视为已参与）
    $stmt = $pdo->prepare("SELECT name, tel FROM wx_users WHERE openid = :openid LIMIT 1");
    $stmt->execute([':openid' => $_SESSION['wx_openid']]);
    $userInfo = $stmt->fetch(PDO::FETCH_ASSOC);
    $hasParticipated = ($userInfo && !empty($userInfo['name']) && !empty($userInfo['tel']));
} else {
    $isOpenid = false;
    $code = isset($_GET['code']) ? trim($_GET['code']) : '';

    if ($code) {
        // 用 code 换取 access_token + openid
        $tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?"
            . "appid={$appId}"
            . "&secret={$appSecret}"
            . "&code={$code}"
            . "&grant_type=authorization_code";

        $response = httpGet($tokenUrl);
        $data = json_decode($response, true);

        if (!empty($data['openid'])) {
            $_SESSION['wx_openid']       = $data['openid'];
            $_SESSION['wx_access_token'] = $data['access_token'];

            // 保存到数据库
            saveUserLogin($pdo, $data['openid'], $data['access_token'], $data['refresh_token'], $data['expires_in']);

            // 重定向去掉 code 参数，避免刷新重复获取
            $redirectUrl = strtok(getCurrentUrl(), '?');
            header('Location: ' . $redirectUrl);
            exit;
        } else {
            // code 无效或过期，重新授权
            $authorizeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?"
                . "appid={$appId}"
                . "&redirect_uri=" . urlencode(getCurrentUrl())
                . "&response_type=code"
                . "&scope=snsapi_base"
                . "&state=STATE#wechat_redirect";
            header('Location: ' . $authorizeUrl);
            exit;
        }
    } else {
        // 无 code，发起静默授权跳转
        $authorizeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?"
            . "appid={$appId}"
            . "&redirect_uri=" . urlencode(getCurrentUrl())
            . "&response_type=code"
            . "&scope=snsapi_base"
            . "&state=STATE#wechat_redirect";
        header('Location: ' . $authorizeUrl);
        exit;
    }
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <title>国寿616客户节</title>
  <script type="text/javascript" src="https://gs616.golden-palm.com.cn/js/jquery.js"></script>
  <link rel="stylesheet" href="https://gs616.golden-palm.com.cn/styles.css">
</head>
<body>
	<div class="loadpage" style="background: url(https://gs616.golden-palm.com.cn/imgs/loadbg.jpg) no-repeat center;background-size: cover;">
	加载中……
	</div>
	<div class="page hide">
		<header class="page-header">
		  <img class="logo slide-from-left" data-anim data-delay="0.1" src="https://gs616.golden-palm.com.cn/imgs/logo.png"  />
		  <img class="logo2 slide-from-right" data-anim data-delay="0.2" src="https://gs616.golden-palm.com.cn/imgs/logo2.png"  />
		</header>
		<div class="wb">
			<div class="slog">
				<div class="fxq slide-diagonal" data-anim data-delay="0.15"><img src="https://gs616.golden-palm.com.cn/imgs/fxq.png" /></div>
				<div class="tit1 slide-from-left p1" data-anim data-delay="0.25"><img src="https://gs616.golden-palm.com.cn/imgs/tit1.png" /></div>
				<div class="tit2 slide-from-right p1" data-anim data-delay="0.35"><img src="https://gs616.golden-palm.com.cn/imgs/tit2.png" /></div>
				<div class="posterdom text"><h4><img src="https://gs616.golden-palm.com.cn/imgs/icon2.png">分享领福利</h4><h2>国寿616客户节 我已经通关啦！<br/>来和我一起赢环球门票</h2><h3>分享到朋友圈，邀请好友一起参与国寿安保616客户节赢北京知名主题乐园门票和实物权益</h3></div>
			</div>
			<div class="lay2">
				<div class="s1 slide-from-left" data-anim data-delay="0.45"><img src="https://gs616.golden-palm.com.cn/imgs/618.png" /></div>
				<div class="people slide-from-bottom" data-anim data-delay="0.6"><img src="https://gs616.golden-palm.com.cn/imgs/people.png" /></div>
				<div class="niu slide-from-right" data-anim data-delay="0.7"><img src="https://gs616.golden-palm.com.cn/imgs/niu.png" /></div>
				<div class="guang fade-in" data-anim data-delay="0.8"><img src="https://gs616.golden-palm.com.cn/imgs/guang.png" /></div>
				<div class="fc slide-from-right" data-anim data-delay="0.9"><img src="https://gs616.golden-palm.com.cn/imgs/fc.png" /></div>
			</div>
		</div>
		<div class="btn slide-from-bottom p1" data-anim data-delay="1" id="openModalBtn"><img src="https://gs616.golden-palm.com.cn/imgs/btn1.png" /></div>
		<div class="posterdom bot">
			<div class=" text-2"><h4><img src="https://gs616.golden-palm.com.cn/imgs/icon1.png" />操作指南</h4><p>点击右上角「…」，分享到朋友圈；或长按保存海报，分享给好友</p></div>
		</div>
		<div class="links">
			<a href="javascript:;" class="link1 slide-from-right" data-anim data-delay="1.05" alt="活动规则"><img src="https://gs616.golden-palm.com.cn/imgs/link2.png" /></a>
			<a href="javascript:;" class="link2 slide-from-right" data-anim data-delay="1.15" alt="奖品展示"><img src="https://gs616.golden-palm.com.cn/imgs/link1.png" /></a>
		</div>
		<div class="posterdom posterimg"><img src="https://gs616.golden-palm.com.cn/imgs/poster.jpg" /></div>
	</div>
	<div class="gamepage game-container" id="gameContainer">
	
	    <!-- 计时器 -->
	    <div class="timer-display" id="timerDisplay">⏱ 20s</div>
	
	    <!-- 球门 -->
	    <div class="goal-area">
	        <div class="goal-frame">
	            <div class="goal-net"></div>
	        </div>
	    </div>
	
	    <!-- 轨迹画布 -->
	    <div class="trajectory-container">
	        <canvas id="trajectoryCanvas"></canvas>
	    </div>
	
	    <!-- 蓄力条 -->
	    <div class="power-bar-container">
	        <div class="power-bar-fill" id="powerBar"></div>
	    </div>
	    <div class="power-text">长按足球蓄力<span id="powerLabel">0</span> · 松开射门</div>
	
	    <!-- 足球 -->
	    <div class="football-wrap" id="footballWrap">
	       <div id="football" class="football-img" ><img src="https://gs616.golden-palm.com.cn/imgs/zq.png" style="pointer-events: none;" /></div>
	        <div class="football-shadow" id="footballShadow"></div>
	    </div>
	
	    <!-- UI -->
	   <div class="ui-overlay">
	        <!-- <div class="arc-indicator" id="arcIndicator">⚡ 弧线: 居中</div>
	        <div class="hint-text">↔️ <span>拖动足球</span> 调整位置 · 长按蓄力</div> -->
	       <!-- <button class="shoot-btn" id="shootBtn">⚽ 蓄力射门</button> -->
			<div class="btn shoot-btn" id="shootBtn"><img src="https://gs616.golden-palm.com.cn/imgs/btn2.png" style="pointer-events: none;" /></div>
	    </div>
	
	    <!-- 结果弹窗 -->
	    <div class="result-modal" id="resultModal">
	        <div class="result-icon" id="resultIcon">⚽</div>
	        <div class="result-title" id="resultTitle">进球！</div>
	        <div class="result-sub" id="resultSub">完美弧线，直挂死角</div>
	        <button class="modal-btn" id="replayBtn">🔄 再来一球</button>
	    </div>
	
	</div>
	<div id="confettiContainer" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 100; background: transparent;">
	    <canvas id="confettiCanvas" style="width: 100%; height: 100%; display: block;"></canvas>
	</div>
	<div class="float">
		<div class="info">
			<!-- 活动结束 -->
			<div class="cont end " style="width: 100%;height:100%;display: flex;flex-direction: column;justify-content: center;align-items: center;">
				<h2 style="display: flex;justify-content: center;align-items: center;color:#ffde00;font-size: 1.2rem;"><img src="imgs/icon3.png" style="width: 1rem;margin-right: .2rem;" />活动已结束</h2>
				<h3 style="text-align: center;padding:1rem 0;font-size: 1rem;">欢迎关注国寿安保资讯<br>参与更多活动。</h3>
			</div>
			<!-- 活动规则 -->
			<div class="cont ruls">
				<h2><img src="https://gs616.golden-palm.com.cn/imgs/icon3.png" />活动规则：</h2>
				<div class="f1">
				<p><b>1、游戏时间：2026年6月16日至2026年6月23日</b></p>
				<br/>
				<p><b>2、游戏规则：</b></p>
				<p>（1）用户参与足球射门游戏，选择射门方向完成操作；</p>
				<p>（2）射门成功即获得答题机会，射门失败可重新挑战；</p>
				<p>（3）答对题目即可留下信息，获得抽奖机会，答错可选择继续答题；</p>
				<br/>
				<p><b>3、领奖规则</b></p>
				<p>（1）中奖用户需如实填写个人收货信息，如信息填写不全或错误将视为放弃中奖资格；</p>
				<p>（2）每个微信账号仅限参与一次活动，不可通过重复参与活动获得多次抽奖机会；</p>
				<p>4、本活动最终解释权归国寿安保基金管理有限公司所有. </p>  
				</div>
				<div class="btn close" ><img src="https://gs616.golden-palm.com.cn/imgs/btn5.png" /></div>
			</div>
			
			<!-- 奖品展示 -->
			<div class="cont prize">
				<h2><img src="https://gs616.golden-palm.com.cn/imgs/icon2.png " />奖品</h2>
				<div class="df">
					<div class="w100">
						<img src="https://gs616.golden-palm.com.cn/imgs/pu2.png" />
						<span>环球影城门票<em>（2026年9月30日前有效）</em></span>
					</div>
				</div>
				<div class="df">
					<div class="w100">
						<img src="https://gs616.golden-palm.com.cn/imgs/pu3.png" />
						<span>小爱音箱</span>
					</div>
					<div class="w100">
						<img src="https://gs616.golden-palm.com.cn/imgs/pu1.png" />
						<span>精美玩偶</span>
					</div>
				</div>
				
				<div class="btn close"><img src="https://gs616.golden-palm.com.cn/imgs/btn5.png" /></div>
			</div>
			
			<!-- 填写个人信息 -->
			<div class="cont information">
				<h2>请正确填写个人信息</h2>
				<h3>为了顺利把奖品送到你手里，请填写一下收货信息吧！</h3>
				<form name="informationform" class="f1">
				<div class="inpwp"><input type="text" name="name" placeholder="姓名" /></div>
				<div class="inpwp"><input type="text" name="tel" placeholder="手机号" /></div>
				<div class="inpwp"><input type="text" name="email" placeholder="电子邮箱地址" /></div>
				<div class="inpwp"><input type="text" name="address" placeholder="邮寄地址" /></div>
				</form>
				<div class="btn" id="subform"><img src="https://gs616.golden-palm.com.cn/imgs/btn5.png" /></div>
			</div>
			
			<!-- 答错 -->
			<div class="cont fail ">
				<div class="h">
					<img src="https://gs616.golden-palm.com.cn/imgs/fail.png" class="lian" />
					<h2>哎呀，差一点就答对啦</h2>
					<h3>别灰心，再试一次，这次一定能成功！</h3>
				</div>
				<div class="btn" id="nextQuestionBtn"><img src="https://gs616.golden-palm.com.cn/imgs/btn8.png" /></div>
			</div>
			
			<!-- 射门失败 -->
			<div class="cont fail2 ">
				<div class="h">
					<img src="https://gs616.golden-palm.com.cn/imgs/fail.png" class="lian" />
					<h2>射门失败</h2>
					<h3>再接再厉</h3>
				</div>
				<div class="btn" id="fail2Btn"><img src="https://gs616.golden-palm.com.cn/imgs/btn3.png" /></div>
			</div>
			<!-- 射门成功 -->
			<div class="cont suess gs">
			    <div class="sw">
			        <div class="qiu slide-from-left" data-anim data-delay="0.05"><img src="https://gs616.golden-palm.com.cn/imgs/zq.png" /></div>
			        <div class="niu slide-from-bottom" data-anim data-delay="1015"><img src="https://gs616.golden-palm.com.cn/imgs/niu.png" /></div>
			        <div class="pan slide-from-right" data-anim data-delay="0.25"><img src="https://gs616.golden-palm.com.cn/imgs/fc.png" /></div>
			        <div class="guang slide-from-bottom" data-anim data-delay="0.35"><img src="https://gs616.golden-palm.com.cn/imgs/guang.png" /></div>
			    </div>
			    <div class="st">
			        <h2>哇 ，恭喜您射门成功！</h2>
			        <h3>胜利就在前方 <br/>我们继续前进吧！</h3>
			    </div>
			    <div class="btn" id="gsBtn"><img src="https://gs616.golden-palm.com.cn/imgs/btn4.png" /></div>
			</div>
			
			<!-- 答题 -->
			<div class="cont question ">
				<div class="h">
				  <h2 id="questionText">题目加载中...</h2>
				  <div class="asks" id="optionsContainer">
					<div class="option" data-index="0">A. 选项1</div>
					<div class="option" data-index="1">B. 选项2</div>
					<div class="option" data-index="2">C. 选项3</div>
					<div class="option" data-index="3">D. 选项4</div>
				  </div>
				</div>
				<div class="btn" id="submitAnswer"><img src="https://gs616.golden-palm.com.cn/imgs/btn8.png" /></div>
			</div>
			
			<!-- 已参加过 -->
			<div class="cont participated">
				<div class="h">
				  <h2><img src="https://gs616.golden-palm.com.cn/imgs/icon3.png" /> 温馨提示</h2>
				  <p>您已参加过该活动，<br>请关注国寿安保基金其他活动</p>
				</div>
			</div>
			<div class="bg"><img src="https://gs616.golden-palm.com.cn/imgs/bg3.png"></div>
	  </div>
  </div>
  <div class="gamesuesson suess">
      <div class="sw">
          <div class="qiu slide-from-left" data-anim data-delay="1.05"><img src="https://gs616.golden-palm.com.cn/imgs/zq.png" /></div>
          <div class="niu slide-from-bottom" data-anim data-delay="1.15"><img src="https://gs616.golden-palm.com.cn/imgs/niu.png" /></div>
          <div class="pan slide-from-right" data-anim data-delay="1.25"><img src="https://gs616.golden-palm.com.cn/imgs/fc.png" /></div>
          <div class="guang slide-from-bottom" data-anim data-delay="1.35"><img src="https://gs616.golden-palm.com.cn/imgs/guang.png" /></div>
      </div>
      <div class="st">
          <h2>恭喜通关！</h2>
          <h3>就差最后一步，即可解锁抽奖资格，赢取好礼！</h3>
      </div>
      <div class="btn" id="subover"><img src="https://gs616.golden-palm.com.cn/imgs/btn7.png" /></div>
  </div>
	
	<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
	<script src="https://gs616.golden-palm.com.cn/js/utils.js?1"></script>
	<script src="https://gs616.golden-palm.com.cn/js/audio-manager.js?1"></script>
	<script src="https://gs616.golden-palm.com.cn/js/celebration.js"></script>
	<script src="https://gs616.golden-palm.com.cn/js/game-shooting.js"></script>
	<script src="https://gs616.golden-palm.com.cn/js/quiz-system.js"></script>
	<script>
		//已参与调用
		function showParticipated(){
			$('.float').addClass('show').find('.participated').addClass('show')
		}
		// ==================== 微信 JS-SDK 分享配置 ====================
		(function() {
			<?php if(strtotime("2026-06-24 00:00:00") < time()){ ?>
				$('.float').addClass('show').find('.end').addClass('show');
			<?php } ?>
			<?php if (!empty($hasParticipated)): ?>
			showParticipated();
			<?php endif; ?>
			$.ajax({
				url: 'api/jssdk_config.php',
				type: 'GET',
				data: { url: location.href.split('#')[0] },
				dataType: 'json',
				success: function(res) {
					if (res.code !== 0) {
						console.error('获取 JS-SDK 签名失败:', res.msg);
						return;
					}
					var cfg = res.data;
					wx.config({
						debug: false,
						appId: cfg.appId,
						timestamp: cfg.timestamp,
						nonceStr: cfg.nonceStr,
						signature: cfg.signature,
						jsApiList: [
							'updateAppMessageShareData',
							'updateTimelineShareData'
						]
					});

					wx.ready(function() {
						// ====== 分享给朋友 ======
						wx.updateAppMessageShareData({
							title: '诚邀您参加“国寿616”客户节线上答题活动',        // TODO: 填写分享标题
							desc: '国寿安保基金616客户节答题领奖品',         // TODO: 填写分享描述
							link: location.href.split('#')[0],
							imgUrl: 'https://jcw.golden-palm.com.cn/imgs/share_icon.jpg',       // TODO: 填写分享图标 URL（绝对路径）
							success: function() {},
							fail: function(err) { console.error('updateAppMessageShareData fail', err); }
						});

						// ====== 分享到朋友圈 ======
						wx.updateTimelineShareData({
							title: '诚邀您参加“国寿616”客户节线上答题活动',        // TODO: 填写分享标题
							link: location.href.split('#')[0],
							imgUrl: 'https://jcw.golden-palm.com.cn/imgs/share_icon.jpg',       // TODO: 填写分享图标 URL（绝对路径）
							success: function() {},
							fail: function(err) { console.error('updateTimelineShareData fail', err); }
						});
					});

					wx.error(function(res) {
						console.error('wx.config error:', res);
					});
				},
				error: function() {
					console.error('请求 JS-SDK 签名接口失败');
				}
			});
		})();
		
		
	</script>
</body>
</html>
