function local2market($server_changes_arr) { $db = new db_conn(); //$server_changes_arr=array(1,2); //echo "开始将服务器修改的数据更新到超市...<br>"; if (sizeof($server_changes_arr) > 0) { $local2server_ids = implode(',', $server_changes_arr); if (strlen($local2server_ids) > 0) { $db->local_conn(); $local2server_arr = $db->fetch_all("SELECT id,user_id,card_no,card_money,card_type FROM `plj_user_card` where id in(" . $local2server_ids . ") ORDER BY `id` DESC"); $server_changes_where = ''; //将card_id 转换为超市数据表VipToPos的VipCode格式'201604540000001',并拼接为where foreach ($server_changes_arr as $sv) { $card_no = $db->result_first("SELECT card_no FROM `plj_user_card` where id='" . $sv . "'"); $longNo = cardNo2longNo($card_no); if (strlen($server_changes_where) <= 0) { $server_changes_where .= " VipCode='" . $longNo . "' "; } else { $server_changes_where .= " or VipCode='" . $longNo . "'"; } } $db->close(); $db->market_conn(); $market_ids_arr = $db->market_query("select VipCode,OverTotal,VerifyMark from [VipDB].[dbo].[VipToPos] where " . $server_changes_where); $db->market_conn_close(); //echo "需要对比".sizeof($market_ids_arr)."条...<br>"; $num = 0; foreach ($local2server_arr as $lkey => $lval) { $num++; foreach ($market_ids_arr as $skey => $sval) { if (cardNo2longNo($lval['card_no']) == $sval['VipCode']) { $yue_sub = bcsub($lval['card_money'], $sval['OverTotal'], 2); $yue = $sval['OverTotal'] + $yue_sub; //最终写入超市的余额 $yue = bcsub($yue, 0, 2); if ($yue_sub != 0) { //更新超市上的余额,不记录超市上的日志 //echo $num." card_no:".$sval['VipCode'].",更新余额..."; $db->market_conn(); $VerifyMark = ToVerifyMark($sval['VipCode'], $yue); //校验位 $bool_u2s = $db->market_dosql("update [VipDB].[dbo].[VipToPos] set OverTotal = '" . $yue . "',VerifyMark='" . $VerifyMark . "' where VipCode='" . $sval['VipCode'] . "'"); //如果有消费金额,更新超市的累计消费金额和累计支出金额 if ($yue_sub < 0) { //查询Vip表累计消费金额SumTendTotal和累计支出金额SumPayTotal $market_vip_arr = $db->market_query("select VipCode,SumTendTotal,SumPayTotal from [VipDB].[dbo].[Vip] where VipCode = '" . $sval['VipCode'] . "'\n"); if (!empty($market_vip_arr)) { $SumTendTotal = (double) $market_vip_arr[0]['SumTendTotal'] + abs($yue_sub); //要更新到超市的 累计消费金额 $SumPayTotal = (double) $market_vip_arr[0]['SumPayTotal'] + abs($yue_sub); //要更新到超市的 累计支出金额 } $bool_u2v = $db->market_dosql("update [VipDB].[dbo].[Vip] set SumTendTotal = '" . $SumTendTotal . "',SumPayTotal='" . $SumPayTotal . "' where VipCode='" . $sval['VipCode'] . "'"); } $db->market_conn_close(); //本地同时记录一条一模一样的日志 $db->local_conn(); //添加本地act日志 if (isset($bool_u2s) && $bool_u2s) { $db->query("INSERT INTO `act_log` (`card_id`, `card_no`, `value`, `type`, `time`, `log`) VALUES ('" . $lval['id'] . "', '" . $lval['card_no'] . "', '" . $yue_sub . "', '8', '" . date('Y-m-d H:i:s') . "', '更新了超市卡No." . $sval['VipCode'] . "的余额" . $sval['OverTotal'] . "为" . $yue . "');\n"); } if (isset($bool_u2v) && $bool_u2v) { $db->query("INSERT INTO `act_log` (`card_id`, `card_no`, `value`, `type`, `time`, `log`) VALUES ('" . $lval['id'] . "', '" . $lval['card_no'] . "', '" . $yue_sub . "', '9', '" . date('Y-m-d H:i:s') . "', '更新了超市卡No." . $sval['VipCode'] . "的累计消费金额" . $market_vip_arr[0]['SumTendTotal'] . "为" . $SumTendTotal . ",累计支出金额" . $market_vip_arr[0]['SumPayTotal'] . "为" . $SumPayTotal . "');\n"); } $db->close(); //echo "成功<br>"; } else { //echo $num." card_no:".$sval['VipCode']."余额未变动,<font color='#FF0000'>不更新...</font><br>"; } } } } } } else { //echo "<font color='#FF0000'>服务器无数据更新...</font><br>"; } }
<?php class db_conn { function mysql_database($hostname, $username, $password, $database) { mysql_connect("bluepiclear.ceofrws5syj6.ap-southeast-1.rds.amazonaws.com:3306", "bluepiroot", "Plat!num9enL") or die(mysql_error()); mysql_select_db("clearmyd_gtndbptl_new") or die(mysql_error()); } } $obj = new db_conn(); $obj->mysql_database(localhost, username, password, database);