633 lines
21 KiB
PHP
633 lines
21 KiB
PHP
<?php
|
||
/**
|
||
* Created by PhpStorm.
|
||
* User: abcdefg
|
||
* Date: 2017/7/24
|
||
* Time: 14:37
|
||
*/
|
||
|
||
/**
|
||
* 同锟斤拷锟斤拷锟斤拷戏锟侥斤拷锟斤拷锟斤拷志锟斤拷
|
||
*/
|
||
|
||
require_once dirname(__DIR__) . '/common/config.inc.php';
|
||
require_once dirname(__DIR__) . '/common/DatabaseHelper.php';
|
||
|
||
|
||
/**
|
||
* @note
|
||
* @param mixed $message
|
||
* @return bool
|
||
*/
|
||
function OutputDebugMessage($message) {
|
||
if (is_object($message) || is_array($message))
|
||
$message = JsonObjectToJsonString($message);
|
||
|
||
$nowdate = date('Y-m-d');
|
||
$nowtime = date('H:i:s');
|
||
$pathname = Characet(dirname($_SERVER['SCRIPT_FILENAME']) . '/debug/synchronize', 'gbk');
|
||
$filename = "{$pathname}/{$nowdate}.log";
|
||
$message = Characet($message, 'gbk');
|
||
|
||
if (!is_dir($pathname))
|
||
mkdir($pathname, 0777, true);
|
||
|
||
if ($file = fopen($filename, 'a+')) {
|
||
if (mb_strstr($message, PHP_EOL, false, USEDCHARSET) != PHP_EOL)
|
||
$message .= PHP_EOL;
|
||
|
||
fwrite($file, "{$nowtime} ====> {$message}");
|
||
fclose($file);
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
date_default_timezone_set('Asia/Shanghai');
|
||
|
||
/// 锟叫讹拷锟角凤拷锟斤拷要停锟斤拷
|
||
if (TIMED_OFF_NEEDED) {
|
||
$Now = date('H:i:s');
|
||
if ($Now >= TIMED_OFF_BEGIN && $Now <= TIMED_OFF_END) {
|
||
$output = JsonObjectToJsonString([
|
||
'time' => date('Y-m-d H:i:s'),
|
||
'code' => ERRORCODE_SERVERTURNOFF,
|
||
'info' => sprintf(ERRORINFO_SERVERTURNOFF, TIMED_OFF_BEGIN, TIMED_OFF_END),
|
||
]);
|
||
|
||
OutputDebugMessage($output);
|
||
die($output);
|
||
}
|
||
}
|
||
|
||
/// 锟斤拷锟斤拷锟斤拷锟捷匡拷
|
||
$owner_param = new ConnectParameter(MASTER_HOSTNAME, MASTER_HOSTPORT, MASTER_DATABASE, MASTER_USERNAME, MASTER_PASSWORD, MASTER_PERSISTENT, MASTER_CHARSET);
|
||
/// 锟斤拷戏锟斤拷锟捷匡拷
|
||
if (DEBUG_MODE)
|
||
$external_param = new ConnectParameter('rm-bp16sbf0l9cavp7h9o.mysql.rds.aliyuncs.com', 3306, 'youle_games', 'develop', 'develop123!@#', MASTER_PERSISTENT, MASTER_CHARSET);
|
||
else
|
||
$external_param = new ConnectParameter('rm-bp1749tfxu2rpq670lo.mysql.rds.aliyuncs.com', 3306, 'game_db', 'games', 'Games0791!!', MASTER_PERSISTENT, MASTER_CHARSET);
|
||
//$external_param = new ConnectParameter('rm-bp1x3i28se22s9z75o.mysql.rds.aliyuncs.com', 3306, 'game_db', 'games', 'Games2017@)!&', MASTER_PERSISTENT, MASTER_CHARSET);
|
||
|
||
/** @var IPDOHelper $owner_db */
|
||
$owner_db = new PDODelegator(DATABASE_TYPE);
|
||
/** @var IPDOHelper $external_db */
|
||
$external_db = new PDODelegator(DATABASE_TYPE);
|
||
|
||
if (!$owner_db->connect($owner_param)) {
|
||
OutputDebugMessage($owner_db->geterrors());
|
||
die (JsonObjectToJsonString($owner_db->geterrors()));
|
||
}
|
||
|
||
if (!$external_db->connect($external_param)) {
|
||
OutputDebugMessage($external_db->geterrors());
|
||
die (JsonObjectToJsonString($external_db->geterrors()));
|
||
}
|
||
|
||
|
||
$processcount = isset($_REQUEST['processcount']) ? intval($_REQUEST['processcount']) : 100;
|
||
if (empty($processcount))
|
||
$processcount = 100;
|
||
|
||
$command = <<<EOL
|
||
select
|
||
idx, uspl_agentid, uspl_channelid, uspl_playerid, uspl_unionid, uspl_opt, uspl_optdata, uspl_opttime, uspl_state, uspl_statetime
|
||
from
|
||
ct_user_process_log
|
||
where
|
||
uspl_state = 0
|
||
limit
|
||
{$processcount}
|
||
|
||
EOL;
|
||
$logs = $external_db->request($command);
|
||
|
||
$succeeded = '';
|
||
$failed = '';
|
||
|
||
$succeededcount = 0;
|
||
$failedcount = 0;
|
||
$totalcount = count($logs);
|
||
if (0 == $totalcount) {
|
||
$output = JsonObjectToJsonString([
|
||
'time' => date('Y-m-d H:i:s'),
|
||
'total' => $totalcount,
|
||
'succeeded' => $succeededcount,
|
||
'failed' => $failedcount,
|
||
]);
|
||
|
||
die ($output);
|
||
}
|
||
|
||
$owner_db->begintransaction();
|
||
$external_db->begintransaction();
|
||
try {
|
||
if ($totalcount > 0) {
|
||
$error_code = 0;
|
||
$error_info = 'success';
|
||
|
||
foreach ($logs as $log) {
|
||
switch ($log->uspl_opt) {
|
||
case 1: /// 1:锟斤拷锟斤拷锟斤拷锟?
|
||
$line = __LINE__;
|
||
|
||
$data = JsonStringToJsonObject($log->uspl_optdata); /// {"openid":"openid100001", "unionid":"unionid100001", "nickname":"nickname100001","avatar":"","sex":1,"province":"锟斤拷锟斤拷","city":"锟较诧拷"}
|
||
if (!is_object($data)) {
|
||
$failed .= $log->idx . ',';
|
||
OutputDebugMessage('sync error: invalid json data' . PHP_EOL . 'data: ' . JsonObjectToJsonString($log));
|
||
$failedcount++;
|
||
break;
|
||
}
|
||
|
||
/// 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟较?
|
||
$command = /** @lang text */<<<EOL
|
||
replace into player(play_agentid, play_channelid, play_playerid, play_openid, play_unionid, play_nickname, play_avatar, play_sex, play_province, play_city, play_regtime)
|
||
values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||
EOL;
|
||
$ret = $owner_db->execute($command,
|
||
$log->uspl_agentid, $log->uspl_channelid, $log->uspl_playerid, $data->openid, $data->unionid,
|
||
$data->nickname, $data->avatar, $data->sex, $data->province, $data->city, $log->uspl_opttime);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_1;
|
||
}
|
||
|
||
/// 锟斤拷询锟角凤拷锟斤拷匹锟斤拷拇锟斤拷锟斤拷锟较?锟斤拷unionid锟斤拷openid匹锟戒)
|
||
if (!empty($data->unionid)) {
|
||
$command = /** @lang text */<<<EOL
|
||
select idx from sales_user where saus_agentid = ? and saus_channelid = ? and saus_unionid = ?
|
||
EOL;
|
||
$ret = $owner_db->request($command, $log->uspl_agentid, $log->uspl_channelid, $data->unionid);
|
||
} elseif (!empty($data->openid)) {
|
||
$command = /** @lang text */<<<EOL
|
||
select idx from sales_user where saus_agentid = ? and saus_channelid = ? and saus_openid = ?
|
||
EOL;
|
||
$ret = $owner_db->request($command, $log->uspl_agentid, $log->uspl_channelid, $data->openid);
|
||
}
|
||
|
||
if (!$owner_db->isdone()) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_1;
|
||
}
|
||
elseif (!empty($ret)) {
|
||
$command = /** @lang text */'update sales_user set player_id = ?, saus_salesman = 1 where idx = ?';
|
||
$ret = $owner_db->execute($command, $log->uspl_playerid, $ret[0]->idx);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_1;
|
||
}
|
||
} else {
|
||
/// 锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷息
|
||
$command = /** @lang text */'update ct_agent_list set max_sales_id = max_sales_id + floor(rand() * (12-6) + 6) where agent_id = ?';
|
||
$ret = $owner_db->execute($command, $log->uspl_agentid);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_1;
|
||
}
|
||
|
||
$command = /** @lang text */'select max_sales_id as agen_maxsalesid, default_sales_power as agen_salespower from ct_agent_list where agent_id = ?';
|
||
$agent = $owner_db->request($command, $log->uspl_agentid);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_1;
|
||
} elseif (empty($agent)) {
|
||
$ret = false;
|
||
$line = __LINE__;
|
||
$error_code = -1;
|
||
$error_info = "锟揭诧拷锟斤拷指锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟絳$log->uspl_agentid}";
|
||
goto end_case_1;
|
||
}
|
||
|
||
$sales_id = $agent[0]->agen_maxsalesid;
|
||
$sales_power = $agent[0]->agen_salespower;
|
||
$password = md5(rand(1000, 9999));
|
||
|
||
$command = /** @lang text */<<<EOL
|
||
insert into sales_user(
|
||
saus_agentid, saus_channelid, saus_salesid, saus_power, saus_openid,
|
||
saus_unionid, saus_nickname, saus_avatar, saus_sex, saus_province,
|
||
saus_city, saus_firsttime, saus_lasttime, saus_saletime, player_id,
|
||
saus_salesman, password
|
||
) values (
|
||
?, ?, ?, ?, ?,
|
||
?, ?, ?, ?, ?,
|
||
?, ?, ?, ?, ?,
|
||
1, ?
|
||
)
|
||
EOL;
|
||
$ret = $owner_db->execute($command,
|
||
$log->uspl_agentid, $log->uspl_channelid, $sales_id, $sales_power, $data->openid,
|
||
$data->unionid, $data->nickname, $data->avatar, $data->sex, $data->province,
|
||
$data->city, $log->uspl_opttime, $log->uspl_opttime, $log->uspl_opttime, $log->uspl_playerid,
|
||
$password);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_1;
|
||
}
|
||
|
||
$sales_user = [
|
||
'id' => 0,
|
||
'agentid' => $log->uspl_agentid,
|
||
'channelid' => $log->uspl_channelid,
|
||
'openid' => $data->openid,
|
||
'unionid' => $data->unionid,
|
||
'nickname' => $data->nickname,
|
||
'avatar' => $data->avatar,
|
||
'sex' => $data->sex,
|
||
'province' => $data->province,
|
||
'city' => $data->city,
|
||
'firsttime' => $log->uspl_opttime,
|
||
'lasttime' => $log->uspl_opttime,
|
||
'salesman' => 1,
|
||
'salesid' => $sales_id,
|
||
'level' => 0,
|
||
'parentid' => null,
|
||
'salestype' => 1,
|
||
'roomcard' => 0,
|
||
'bean' => 0,
|
||
'saletime' => $log->uspl_opttime,
|
||
'tel' => null,
|
||
'wechat' => null,
|
||
'invitecode' => null,
|
||
'power' => null,
|
||
'pushrate1' => 33,
|
||
'pushrate2' => 8,
|
||
'pushmoney1' => 0,
|
||
'pushmoney2' => 0,
|
||
];
|
||
|
||
$command = /** @lang text */<<<EOL
|
||
insert into ct_user_process_log(to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process)
|
||
values(?, ?, ?, 21, ?, ?, ?, 0)
|
||
EOL;
|
||
$ret = $owner_db->execute($command,
|
||
$log->uspl_agentid, $log->uspl_channelid, $sales_id,
|
||
JsonObjectToJsonString($sales_user), '目锟斤拷锟矫伙拷为注锟斤拷拇锟斤拷锟斤拷锟较?锟斤拷oper_data为锟矫伙拷unionid锟斤拷', time());
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_1;
|
||
}
|
||
}
|
||
|
||
end_case_1:
|
||
if ($ret && $owner_db->isdone()) {
|
||
$succeeded .= $log->idx . ',';
|
||
$succeededcount++;
|
||
|
||
$output = 'sync done: ' . JsonObjectToJsonString($log);
|
||
} else {
|
||
$failed .= $log->idx . ',';
|
||
$failedcount++;
|
||
|
||
$output = sprintf('sync error: %s(%d) on line %d.' . PHP_EOL . 'data: %s.', $error_info, $error_code, $line, JsonObjectToJsonString($log));
|
||
}
|
||
|
||
OutputDebugMessage($output);
|
||
break;
|
||
|
||
case 2: /// 2:锟斤拷锟斤拷锟斤拷锟斤拷
|
||
$line = __LINE__;
|
||
|
||
/// 锟睫革拷锟斤拷业锟斤拷锟斤拷锟斤拷锟?
|
||
$command = /** @lang text */<<<EOL
|
||
update
|
||
player
|
||
set
|
||
play_invitecode = ?
|
||
where
|
||
play_agentid = ? and play_channelid = ? and play_playerid = ?
|
||
EOL;
|
||
$ret = $owner_db->execute($command, $log->uspl_optdata, $log->uspl_agentid, $log->uspl_channelid, $log->uspl_playerid);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
}
|
||
|
||
/// 锟斤拷取锟斤拷应锟侥达拷锟斤拷锟斤拷录
|
||
$command = /** @lang text */'select idx from sales_user where saus_agentid = ? and saus_channelid = ? and player_id = ?';
|
||
$ret = $owner_db->request($command, $log->uspl_agentid, $log->uspl_channelid, $log->uspl_playerid);
|
||
if (!$owner_db->isdone()) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
} elseif (!empty($ret)) { /// 锟斤拷锟斤拷锟斤拷锟叫讹拷应锟侥达拷锟斤拷锟剿伙拷锟斤拷蠖ǘ锟接︼拷拇锟斤拷锟斤拷锟较?
|
||
$id = $ret[0]->idx;
|
||
} else { /// 锟斤拷锟斤拷锟斤拷没锟叫讹拷应锟侥达拷锟斤拷锟剿伙拷锟斤拷锟斤拷锟斤拷锟缴讹拷应锟侥达拷锟斤拷锟剿伙拷
|
||
/// 锟饺诧拷询锟斤拷应锟斤拷锟斤拷锟斤拷锟较革拷锟较?
|
||
$command = /** @lang text */'select play_openid openid, play_unionid unionid, play_nickname nickname, play_avatar avatar, play_sex sex, play_province province, play_city city from player where play_agentid = ? and play_channelid = ? and play_playerid = ?';
|
||
$data = $owner_db->request($command, $log->uspl_agentid, $log->uspl_channelid, $log->uspl_playerid);
|
||
if (!$owner_db->isdone()) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
} elseif (empty($data)) {
|
||
$data = $external_db->request($command, $log->uspl_agentid, $log->uspl_channelid, $log->uspl_playerid);
|
||
if (!$external_db->isdone()) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
} elseif (empty($data)) {
|
||
$data = (object)[
|
||
'openid' => null,
|
||
'unionid' => $log->uspl_unionid,
|
||
'nickname' => null,
|
||
'avatar' => null,
|
||
'sex' => null,
|
||
'province' => null,
|
||
'city' => null,
|
||
];
|
||
} else {
|
||
$data = $data[0];
|
||
}
|
||
} else {
|
||
$data = $data[0];
|
||
}
|
||
|
||
/// 锟斤拷询锟角凤拷锟斤拷匹锟斤拷拇锟斤拷锟斤拷锟较?锟斤拷unionid锟斤拷openid匹锟戒)
|
||
if (!empty($data->unionid)) {
|
||
$command = /** @lang text */'select idx from sales_user where saus_agentid = ? and saus_channelid = ? and saus_unionid = ?';
|
||
$ret = $owner_db->request($command, $log->uspl_agentid, $log->uspl_channelid, $data->unionid);
|
||
} elseif (!empty($data->openid)) {
|
||
$command = /** @lang text */'select idx from sales_user where saus_agentid = ? and saus_channelid = ? and saus_openid = ?';
|
||
$ret = $owner_db->request($command, $log->uspl_agentid, $log->uspl_channelid, $data->openid);
|
||
}
|
||
|
||
if (!$owner_db->isdone()) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
}
|
||
elseif (!empty($ret)) {
|
||
$id = $ret[0]->idx;
|
||
} else {
|
||
/// 锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷息
|
||
$command = /** @lang text */
|
||
'update ct_agent_list set max_sales_id = max_sales_id + floor(rand() * (12-6) + 6) where agent_id = ?';
|
||
$ret = $owner_db->execute($command, $log->uspl_agentid);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
}
|
||
|
||
$command = /** @lang text */
|
||
'select max_sales_id as agen_maxsalesid, default_sales_power as agen_salespower from ct_agent_list where agent_id = ?';
|
||
$agent = $owner_db->request($command, $log->uspl_agentid);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
}
|
||
|
||
$sales_id = $agent[0]->agen_maxsalesid;
|
||
$sales_power = $agent[0]->agen_salespower;
|
||
$password = md5(rand(1000, 9999));
|
||
|
||
$command = /** @lang text */<<<EOL
|
||
insert into sales_user(
|
||
saus_agentid, saus_channelid, saus_salesid, saus_power, saus_openid,
|
||
saus_unionid, saus_nickname, saus_avatar, saus_sex, saus_province,
|
||
saus_city, saus_firsttime, saus_lasttime, saus_saletime, player_id,
|
||
saus_salesman, password
|
||
) values (
|
||
?, ?, ?, ?, ?,
|
||
?, ?, ?, ?, ?,
|
||
?, ?, ?, ?, ?,
|
||
1, ?
|
||
)
|
||
EOL;
|
||
$ret = $owner_db->execute($command,
|
||
$log->uspl_agentid, $log->uspl_channelid, $sales_id, $sales_power, $data->openid,
|
||
$data->unionid, $data->nickname, $data->avatar, $data->sex, $data->province,
|
||
$data->city, $log->uspl_opttime, $log->uspl_opttime, $log->uspl_opttime, $log->uspl_playerid,
|
||
$password);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
}
|
||
|
||
$id = $owner_db->lastinsertid();
|
||
|
||
$sales_user = [
|
||
'id' => $id,
|
||
'agentid' => $log->uspl_agentid,
|
||
'channelid' => $log->uspl_channelid,
|
||
'openid' => $data->openid,
|
||
'unionid' => $data->unionid,
|
||
'nickname' => $data->nickname,
|
||
'avatar' => $data->avatar,
|
||
'sex' => $data->sex,
|
||
'province' => $data->province,
|
||
'city' => $data->city,
|
||
'firsttime' => $log->uspl_opttime,
|
||
'lasttime' => $log->uspl_opttime,
|
||
'salesman' => 1,
|
||
'salesid' => $sales_id,
|
||
'level' => 0,
|
||
'parentid' => null,
|
||
'salestype' => 1,
|
||
'roomcard' => 0,
|
||
'bean' => 0,
|
||
'saletime' => $log->uspl_opttime,
|
||
'tel' => null,
|
||
'wechat' => null,
|
||
'invitecode' => null,
|
||
'power' => null,
|
||
'pushrate1' => 33,
|
||
'pushrate2' => 8,
|
||
'pushmoney1' => 0,
|
||
'pushmoney2' => 0,
|
||
];
|
||
/// 锟斤拷录锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷志
|
||
$command = /** @lang text */<<<EOL
|
||
insert into ct_user_process_log(to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process)
|
||
values(?, ?, ?, 21, ?, ?, ?, 0)
|
||
EOL;
|
||
$ret = $owner_db->execute($command,
|
||
$log->uspl_agentid, $log->uspl_channelid, $sales_id,
|
||
JsonObjectToJsonString($sales_user), '目锟斤拷锟矫伙拷为注锟斤拷拇锟斤拷锟斤拷锟较?锟斤拷oper_data为锟矫伙拷unionid锟斤拷', time());
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// 锟斤拷取锟斤拷锟斤拷锟角凤拷同锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟?
|
||
$command = /** @lang text */'select sync_invitecode from ct_channel_list where agent_id = ? and channel_id = ?';
|
||
$ret = $owner_db->request($command, $log->uspl_agentid, $log->uspl_channelid);
|
||
$sync_invitecode = empty($ret) ? 0 : intval($ret[0]->sync_invitecode);
|
||
if (0 != $sync_invitecode) {
|
||
/// 锟睫改讹拷应锟斤拷锟斤拷锟斤拷录锟斤拷锟斤拷锟斤拷锟斤拷
|
||
$command = /** @lang text */<<<EOL
|
||
update
|
||
sales_user
|
||
set
|
||
saus_parentid = ?,
|
||
saus_invitecode = ?,
|
||
player_id = ?,
|
||
saus_salesman = 1
|
||
where
|
||
idx = ?
|
||
EOL;
|
||
$ret = $owner_db->execute($command, $log->uspl_optdata, $log->uspl_optdata, $log->uspl_playerid, $id);
|
||
if (!$ret) {
|
||
$line = __LINE__;
|
||
$error_code = $owner_db->GetErrorCode();
|
||
$error_info = $owner_db->GetErrorInfo();
|
||
goto end_case_2;
|
||
}
|
||
}
|
||
|
||
end_case_2:
|
||
if ($ret && $owner_db->isdone()) {
|
||
$succeeded .= $log->idx . ',';
|
||
$succeededcount++;
|
||
|
||
$output = 'sync done: ' . JsonObjectToJsonString($log);
|
||
} else {
|
||
$failed .= $log->idx . ',';
|
||
$failedcount++;
|
||
|
||
$output = sprintf('sync error: %s(%d) on line %d.' . PHP_EOL . 'data: %s.', $error_info, $error_code, $line, JsonObjectToJsonString($log));
|
||
}
|
||
|
||
OutputDebugMessage($output);
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/// 锟缴癸拷锟斤拷锟斤拷锟侥硷拷录锟斤拷状态锟睫革拷为1
|
||
if (!empty($succeeded)) {
|
||
$succeeded = substr($succeeded, 0, strlen($succeeded) - 1);
|
||
$command = /** @lang text */<<<EOL
|
||
update
|
||
ct_user_process_log
|
||
set
|
||
uspl_state = 1
|
||
where
|
||
idx in ({$succeeded})
|
||
EOL;
|
||
$external_db->execute($command);
|
||
}
|
||
|
||
/// 锟斤拷锟斤拷失锟杰的硷拷录锟斤拷状态锟睫革拷为-1
|
||
if (!empty($failed)) {
|
||
$failed = substr($failed, 0, strlen($failed) - 1);
|
||
$command = /** @lang text */<<<EOL
|
||
update
|
||
ct_user_process_log
|
||
set
|
||
uspl_state = -1
|
||
where
|
||
idx in ({$failed})
|
||
EOL;
|
||
$external_db->execute($command);
|
||
}
|
||
}
|
||
|
||
if (!$owner_db->commit())
|
||
throw new Exception($owner_db->GetErrorInfo(), $owner_db->GetErrorCode());
|
||
if (!$external_db->commit())
|
||
throw new Exception($external_db->GetErrorInfo(), $external_db->GetErrorCode());
|
||
|
||
$output = JsonObjectToJsonString([
|
||
'time' => date('Y-m-d H:i:s'),
|
||
'total' => $totalcount,
|
||
'succeeded' => $succeededcount,
|
||
'failed' => $failedcount,
|
||
]);
|
||
|
||
if (($succeededcount + $failedcount) != $totalcount)
|
||
OutputDebugMessage($output);
|
||
} catch (Exception $Exception) {
|
||
$owner_db->rollback();
|
||
$external_db->rollback();
|
||
$output = JsonObjectToJsonString([
|
||
'time' => date('Y-m-d H:i:s'),
|
||
'code' => $Exception->getCode(),
|
||
'info' => $Exception->getMessage(),
|
||
]);
|
||
OutputDebugMessage($output);
|
||
}
|
||
|
||
die ($output);
|
||
|
||
|
||
/*
|
||
insert into ct_user_process_log(to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process)
|
||
select
|
||
saus_agentid,
|
||
saus_channelid,
|
||
saus_salesid,
|
||
21,
|
||
concat('{',
|
||
'"id":"', ifnull(idx, 0),
|
||
'","agentid":"', ifnull(saus_agentid, ''),
|
||
'","channelid":"', ifnull(saus_channelid, ''),
|
||
'","openid":"', ifnull(saus_openid, ''),
|
||
'","unionid":"', ifnull(saus_unionid, ''),
|
||
'","nickname":"', ifnull(saus_nickname, ''),
|
||
'","avatar":"', ifnull(saus_avatar, ''),
|
||
'","sex":"', ifnull(saus_sex, ''),
|
||
'","province":"', ifnull(saus_province, ''),
|
||
'","city":"', ifnull(saus_city, ''),
|
||
'","firsttime":"', ifnull(saus_firsttime, ''),
|
||
'","lasttime":"', ifnull(saus_lasttime, ''),
|
||
'","salesman":"', ifnull(saus_salesman, 0),
|
||
'","salesid":"', ifnull(saus_salesid, ''),
|
||
'","level":"', ifnull(saus_level, ''),
|
||
'","parentid":"', ifnull(saus_parentid, ''),
|
||
'","salestype":"', ifnull(saus_salestype, ''),
|
||
'","roomcard":"', ifnull(saus_roomcard, 0),
|
||
'","bean":"', ifnull(saus_bean, 0),
|
||
'","saletime":"', ifnull(saus_saletime, ''),
|
||
'","tel":"', ifnull(saus_tel, ''),
|
||
'","wechat":"', ifnull(saus_wechat, ''),
|
||
'","invitecode":"', ifnull(saus_invitecode, 0),
|
||
'","power":"', ifnull(saus_power, ''),
|
||
'","pushrate1":"', ifnull(saus_pushrate1, 0),
|
||
'","pushrate2":"', ifnull(saus_pushrate2, 0),
|
||
'","pushmoney1":"', ifnull(saus_pushmoney1, 0),
|
||
'","pushmoney2":"', ifnull(saus_pushmoney2, 0),
|
||
'"}'
|
||
),
|
||
'目锟斤拷锟矫伙拷为注锟斤拷拇锟斤拷锟斤拷锟较?锟斤拷oper_data为锟矫伙拷unionid锟斤拷',
|
||
unix_timestamp(),
|
||
0
|
||
from
|
||
sales_user
|
||
where
|
||
saus_agentid = 'veRa0qrBf0df2K1G4de2tgfmVxB2jxpv' and saus_channelid = 'FtJf073aa0d6rI1xD8J1Y42fINTm0ziK' and saus_salesid = 240973
|
||
*/
|