278 lines
8.9 KiB
PHP
278 lines
8.9 KiB
PHP
|
|
<?php
|
|||
|
|
/**
|
|||
|
|
* Zeed Platform Project
|
|||
|
|
* Based on Zeed Framework & Zend Framework.
|
|||
|
|
*
|
|||
|
|
* BTS - Billing Transaction Service
|
|||
|
|
* CAS - Central Authentication Service
|
|||
|
|
*
|
|||
|
|
* LICENSE
|
|||
|
|
* http://www.zeed.com.cn/license/
|
|||
|
|
*
|
|||
|
|
* @category Zeed
|
|||
|
|
* @package Zeed_ChangeMe
|
|||
|
|
* @subpackage ChangeMe
|
|||
|
|
* @copyright Copyright (c) 2010 Zeed Technologies PRC Inc. (http://www.zeed.com.cn)
|
|||
|
|
* @author Zeed Team (http://blog.zeed.com.cn)
|
|||
|
|
* @since 2010-9-13
|
|||
|
|
* @version SVN: $Id$
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
class Com_MLQueue
|
|||
|
|
{
|
|||
|
|
private $_regionid2gameid = array(
|
|||
|
|
201 => array(
|
|||
|
|
'host' => '172.18.27.101:1433',
|
|||
|
|
'user' => 'ddinterface_test',
|
|||
|
|
'password' => 'dd123456',
|
|||
|
|
'dbname' => 'passport_mqueue',
|
|||
|
|
'queuetable' => 'informer_queue_ML3099'),
|
|||
|
|
202 => array(
|
|||
|
|
'host' => '172.18.27.101:1433',
|
|||
|
|
'user' => 'ddinterface_test',
|
|||
|
|
'password' => 'dd123456',
|
|||
|
|
'dbname' => 'passport_mqueue',
|
|||
|
|
'queuetable' => 'informer_queue_ML3099'),
|
|||
|
|
211 => array(
|
|||
|
|
'host' => '172.18.27.101:1433',
|
|||
|
|
'user' => 'ddinterface_test',
|
|||
|
|
'password' => 'dd123456',
|
|||
|
|
'dbname' => 'passport_mqueue',
|
|||
|
|
'queuetable' => 'informer_queue_ML3099'),
|
|||
|
|
// 201 => 'ML3011',
|
|||
|
|
// 202 => 'ML3012',
|
|||
|
|
// 211 => 'ML3013',
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
private $_link = null;
|
|||
|
|
private static $_instance = null;
|
|||
|
|
private $_enable = false;
|
|||
|
|
|
|||
|
|
private function _connect($regionid = null)
|
|||
|
|
{
|
|||
|
|
if ($this->_enable && is_array($this->_regionid2gameid)) {
|
|||
|
|
if (null !== $regionid) {
|
|||
|
|
$regionid = (int) $regionid;
|
|||
|
|
|
|||
|
|
if (! isset($this->_regionid2gameid[$regionid])) {
|
|||
|
|
throw new Zeed_Exception("Unknown regionid '{$regionid}', can not query ML SQL Server.");
|
|||
|
|
} else {
|
|||
|
|
$db = $this->_regionid2gameid[$regionid];
|
|||
|
|
|
|||
|
|
$link = mssql_connect($db['host'], $db['user'], $db['password']);
|
|||
|
|
if (! $link || ! mssql_select_db($db['dbname'], $link)) {
|
|||
|
|
$mssqlMessage = 'Unable to connect or select ML SQL Server database, MSSQL error: ' . mssql_get_last_message();
|
|||
|
|
Zeed_Log::instance()->log($mssqlMessage, Zeed_Log::WARN);
|
|||
|
|
throw new Zeed_Exception($mssqlMessage);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$this->_link[$regionid] = $link;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
foreach ($this->_regionid2gameid as $_regionid => $_db) {
|
|||
|
|
|
|||
|
|
$link = mssql_connect($_db['host'], $_db['user'], $_db['password']);
|
|||
|
|
if (! $link || ! mssql_select_db($_db['dbname'], $link)) {
|
|||
|
|
$mssqlMessage = 'Unable to connect or select ML SQL Server database, MSSQL error: ' . mssql_get_last_message();
|
|||
|
|
Zeed_Log::instance()->log($mssqlMessage, Zeed_Log::WARN);
|
|||
|
|
throw new Zeed_Exception($mssqlMessage);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$this->_link[$_regionid] = $link;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return $this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static function instance()
|
|||
|
|
{
|
|||
|
|
if (null === self::$_instance) {
|
|||
|
|
self::$_instance = new self();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return self::$_instance;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private function __construct()
|
|||
|
|
{
|
|||
|
|
$this->_enable = Zeed_Config::loadGroup('ml.enable_ml_queue');
|
|||
|
|
$regionid2gameid = Zeed_Config::loadGroup('ml.mlqueuedb');
|
|||
|
|
if (is_array($regionid2gameid)) {
|
|||
|
|
$this->_regionid2gameid = $regionid2gameid;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public function __destruct()
|
|||
|
|
{
|
|||
|
|
if ($this->_link && is_array($this->_link)) {
|
|||
|
|
foreach ($this->_link as $link) {
|
|||
|
|
mssql_close($link);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 激活梦幻龙族
|
|||
|
|
* 激活梦幻龙族电信1、电信2、网通1帐号
|
|||
|
|
*
|
|||
|
|
* @param string $username 通行证帐号
|
|||
|
|
* @param string $userpassword 帐号原文密码
|
|||
|
|
* @param integer $birthday 用户生日,UNIX 时间戳
|
|||
|
|
*
|
|||
|
|
* @return boolean 成功返回 true, 失败返回 false
|
|||
|
|
*/
|
|||
|
|
public function active($username, $userpassword, $birthday, $regionid = null)
|
|||
|
|
{
|
|||
|
|
$password = (string) $userpassword;
|
|||
|
|
$username = (string) $username;
|
|||
|
|
|
|||
|
|
$birthday = date('Ymd', $birthday);
|
|||
|
|
|
|||
|
|
return $this->_insertQueue("0,{$username},{$password},{$birthday}", $regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 新手卡
|
|||
|
|
*
|
|||
|
|
* @param string $username 通行证帐号
|
|||
|
|
* @param string $userpassword 帐号原文密码
|
|||
|
|
* @param integer $birthday 用户生日,UNIX 时间戳
|
|||
|
|
*
|
|||
|
|
* @return boolean 成功返回 true, 失败返回 false
|
|||
|
|
*/
|
|||
|
|
public function newbieCard($username, $cardno, $regionid = null)
|
|||
|
|
{
|
|||
|
|
$username = (string) $username;
|
|||
|
|
$cardno = (string) $cardno;
|
|||
|
|
|
|||
|
|
return $this->_insertQueue("7,{$username},{$cardno}", $regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 冻结梦幻龙族中的帐号
|
|||
|
|
*
|
|||
|
|
* @param string $username 通行证帐号
|
|||
|
|
*
|
|||
|
|
* @return boolean 成功返回 true, 失败返回 false
|
|||
|
|
*/
|
|||
|
|
public function freeze($username, $regionid = null)
|
|||
|
|
{
|
|||
|
|
$username = (string) $username;
|
|||
|
|
|
|||
|
|
return $this->_insertQueue("2,{$username},0", $regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 解冻梦幻龙族中的帐号
|
|||
|
|
*
|
|||
|
|
* @param string $username 通行证帐号
|
|||
|
|
*
|
|||
|
|
* @return boolean 成功返回 true, 失败返回 false
|
|||
|
|
*/
|
|||
|
|
public function unfreeze($username, $regionid = null)
|
|||
|
|
{
|
|||
|
|
$username = (string) $username;
|
|||
|
|
|
|||
|
|
return $this->_insertQueue("2,{$username},1", $regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 修改梦幻龙族中帐号密码
|
|||
|
|
*
|
|||
|
|
* @param string $username 通行证帐号
|
|||
|
|
* @param string $password 新的原文密码
|
|||
|
|
*
|
|||
|
|
* @return boolean 成功返回 true, 失败返回 false
|
|||
|
|
*/
|
|||
|
|
public function modifyPassword($username, $userpassword, $regionid = null)
|
|||
|
|
{
|
|||
|
|
$password = (string) $userpassword;
|
|||
|
|
$username = (string) $username;
|
|||
|
|
|
|||
|
|
return $this->_insertQueue("4,{$username},{$password}", $regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 修改梦幻龙族中帐号生日
|
|||
|
|
*
|
|||
|
|
* @param string $username 通行证帐号
|
|||
|
|
* @param integer $birthday 帐号生日,UNIX 时间戳
|
|||
|
|
*/
|
|||
|
|
public function modifyBirthday($username, $birthday, $regionid = null)
|
|||
|
|
{
|
|||
|
|
$birthday = (int) $birthday;
|
|||
|
|
$username = (string) $username;
|
|||
|
|
|
|||
|
|
$birthday = date('Ymd', $birthday);
|
|||
|
|
|
|||
|
|
return $this->_insertQueue("5,{$username},{$birthday}", $regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 梦幻龙族充值
|
|||
|
|
* 将充值点数插入到梦龙充值队列
|
|||
|
|
*
|
|||
|
|
* @param integer $regionid 资产域,梦龙分区资产域
|
|||
|
|
* @param string $username 通行证帐号
|
|||
|
|
* @param integer $point 充值点数
|
|||
|
|
* @param string $billno 充值订单号
|
|||
|
|
*/
|
|||
|
|
public function charge($regionid, $username, $point, $billno)
|
|||
|
|
{
|
|||
|
|
$username = (string) $username;
|
|||
|
|
$point = (int) $point;
|
|||
|
|
$billno = (string) $billno;
|
|||
|
|
|
|||
|
|
return $this->_insertQueue("1,{$username},{$point},{$billno}", $regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private function _insertQueue($data, $regionid = null)
|
|||
|
|
{
|
|||
|
|
if (! $this->_enable) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$data = (string) $data;
|
|||
|
|
$timenow = DATENOW;
|
|||
|
|
|
|||
|
|
$sql = '';
|
|||
|
|
try {
|
|||
|
|
if (! isset($this->_link[$regionid]) || ! $this->_link[$regionid]) {
|
|||
|
|
$this->_connect($regionid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (null !== $regionid) {
|
|||
|
|
$link = $this->_link[$regionid];
|
|||
|
|
$queuetable = $this->_regionid2gameid[$regionid]['queuetable'];
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO {$queuetable} (create_ts, data) VALUES ('{$timenow}', '{$data}')";
|
|||
|
|
|
|||
|
|
$result = @mssql_query($sql, $link);
|
|||
|
|
} else {
|
|||
|
|
foreach ($this->_regionid2gameid as $_regionid => $_db) {
|
|||
|
|
$link = $this->_link[$_regionid];
|
|||
|
|
$queuetable = $_db['queuetable'];
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO {$queuetable} (create_ts, data) VALUES ('{$timenow}', '{$data}')";
|
|||
|
|
|
|||
|
|
$result = @mssql_query($sql, $link);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (! $result) {
|
|||
|
|
throw new Zeed_Exception('ML SQL Server query error, MSSQL error: ' . mssql_get_last_message());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
Zeed_Log::instance()->log(sprintf('can not insert ml queue, error msg : "%s" sql: "%s" data: "%s" regionid: "%s"', $e->getMessage(), $sql, $data, $regionid), Zeed_Log::WARN);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// End ^ Native EOL ^ encoding
|