Ejemplo n.º 1
0
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);