<?php

/* * **************************************************
 * 此代码为员工在公司工作期间创作.
 * 使用权和所有权归属于公司和员工共有.
 * 收益的权利归属于公司.
 *         ——石家庄龙游科技有限公司
 * ************************************************** */

namespace loyalsoft;

include_once __DIR__ . '/../../main.php';
require_once ROOTDIR . '/Util/OpenSSLVerify.php';                               # Ps. 这个文件和类名没有对应关系.
/**
 * 验证回归礼包模块(设计思路, 从A游戏中领取一个密码, 在B游戏中输入密码,然后B游戏服来A游戏服验证,通过的给予奖励)
 * 这个类是A服的验证代码,验证是否曾在本服中留下记录.
 * @author gwang email:mail@wanggangzero.cn
 * @copyright © 2015-6-8, SJZ LoyalSoft Corporation & gwang. All rights reserved.
 */

class VerifyReturnCode {

    //put your code here
    const SQL_SelectReturnCode = "Select * from `tab_returncode` where oid='%s' and returncode='%s';";

    /**
     * 验证回归密码
     * @param string $oid  玩家oid
     * @param string $returncode  曾经留下的回归密码
     * @return int 0 不通过, 1 通过
     */
    public static function Verify($oid, $returncode) {
        $sql = sprintf(self::SQL_SelectReturnCode, $oid, $returncode);
        $data = daoInst()->query($sql)->fetchAll();
        if (count($data) > 0) {
            $info = $data[0];
            $ret = array(
                'ret' => 1,
                'msg' => array(
                    'name' => $info->name,
                    'lvl' => $info->lvl,
                    'cash' => $info->cash,
                    'charge_amt' => $info->charge_amt
                )
            );
        } else {
            $ret = array(
                'ret' => 0,
                'msg' => "没有找到匹配的记录."
            );
        }
        return $ret;
    }

}

$valueMap = HttpUtil::getQueryParas(); // array
if (!is_array($valueMap)) {
    exit("无参数");
}

InitZoneId(); # 初始化分区信息 Ps. $_REQUEST["zoneid"]
$oid = "";
$retcode = "";
$sign = "";
if (isset($valueMap["oid"])) {
    $valueMap['oid'] = urldecode($valueMap['oid']);
    $oid = CommUtil::zb64decode($valueMap["oid"]);
} else {
    exit("缺少参数 'oid'!");
}
if (isset($valueMap["retcode"])) {
    $valueMap['retcode'] = urldecode($valueMap['retcode']);
    $retcode = CommUtil::zb64decode($valueMap["retcode"]);
} else {
    exit("缺少参数 'retcode'!");
}
if (isset($valueMap["sign"])) {
    $valueMap['sign'] = urldecode($valueMap["sign"]);
    $sign = $valueMap['sign'];
} else {
    exit("缺少参数 'sign'!");
}
$keypath = __DIR__ . "/../../Util/key";
// 验证并查找回归密码记录
$myrsa = new MyRsa($keypath);

if (!$myrsa->verify_arr($valueMap, $sign)) {
    exit("签名验证失败");
}


# 使用公钥加密
echo $myrsa->pubEncrypt(JsonUtil::encode(VerifyReturnCode::Verify($oid, $retcode)));
unset($myrsa);
