$orderNum = date('YmdHis') . rand(100, 999); $sqlInfo = "SELECT detailid,dprice,dnum,state FROM sh_store_goods_detail WHERE detailid={$gdetailid}"; $Mysql = new MySqlHelper(); $dataInfo = $Mysql->FetchData($sqlInfo); if ($dataInfo[0]['state'] != 'ON') { echo json_encode(array("code" => "110", "mess" => '该商品已经下架!')); return; } if ($dataInfo[0]['dnum'] < $sdnum) { echo json_encode(array("code" => "110", "mess" => '库存量不足!')); return; } $price = $dataInfo[0]['dprice']; $totalmoney = $price * $sdnum + $expressprice; $time = date("Y-m-d H:i:s", time()); $Mysql->Query("BEGIN"); $sqlInToOrder = "INSERT INTO sh_store_order (userid,ordertime,paystate,deliverstate,orderstate,money,discountmoney,countmoney,realpay,paytype,remarks,address,phone,`name`,expressPrice,ordernum) SELECT {$userID},'{$time}','N', 'NOT','PRE',{$totalmoney},0,{$totalmoney},0,4,'{$remarks}',concat(ar2.areaname,ar1.areaname,ar.areaname,a.detailaddress) AS address,a.tel,a.`name`,{$expressprice},'{$orderNum}' FROM sh_store_address a JOIN sh_store_area ar ON a.countyid=ar.areaid JOIN sh_store_area ar1 ON a.cityid=ar1.areaid JOIN sh_store_area ar2 ON a.provinceid=ar2.areaid WHERE id={$addressId} AND a.userid={$userID} AND delstate='N' limit 1"; //new Log("","ssss".$sqlInToOrder); $effectRow = $Mysql->ExecuteSql($sqlInToOrder); if ($effectRow > 0) { $sqlSearchOrderId = "SELECT orderid FROM sh_store_order WHERE ordernum='{$orderNum}' LIMIT 1 "; //new Log(""," ad".$sqlSearchOrderId); $dataTableSearchOID = $Mysql->FetchData($sqlSearchOrderId); $row = count($dataTableSearchOID); if ($row == 1) { $orderId = $dataTableSearchOID[0][0]; //插入订单详细信息到sh_store_order_detail表 $sqlInToOrderDetail = "INSERT INTO sh_store_order_detail (goodsid,price,orderid,num) values ({$gdetailid},{$price},{$orderId},{$sdnum}) "; //new Log("","详细".$sqlInToOrderDetail); $effectDetailRows = $Mysql->ExecuteSql($sqlInToOrderDetail); if ($effectDetailRows > 0) {
private function cutPurse($userShouldPay, $companyPay, $purseId, $coustomid, $balance, $elsebalance, $frozenmoney, $time, $rechargebalance) { $Mysql = new MySqlHelper(); $cutPruseSql = "UPDATE sh_purse SET balance =balance-{$userShouldPay}-{$companyPay} ,rechargebalance=rechargebalance-{$userShouldPay},elsebalance=elsebalance-{$companyPay} WHERE purseid={$purseId}"; $cutPruseRow = $Mysql->ExecuteSql($cutPruseSql); //插入钱包余额记录 $inPruseLogsql = "INSERT INTO sh_purse_log (userID,balance,elsebalance,rechargebalance,frozenmoney,createTime,logType) VALUES ({$coustomid},{$balance}-{$userShouldPay}-{$companyPay},{$elsebalance}-{$companyPay},{$rechargebalance}-{$userShouldPay},{$frozenmoney},'{$time}','BUY') "; $inPruseRow = $Mysql->ExecuteSql($inPruseLogsql); //new Log("","".$inPruseRow.$cutPruseRow); //判断事务是否完成 if ($cutPruseRow > 0 && $inPruseRow > 0) { //事务符合完成条件,提交 $Mysql->Query("COMMIT"); $Mysql->Query("END"); $this->_result_order = "PAY_SUCCESS"; } else { new Log("", "cutPruseSql==" . $cutPruseSql); new Log("", "inPruseLogsql==" . $inPruseLogsql); //事务不符合完成条件,回滚数据 $Mysql->Query("ROLLBACK"); $Mysql->Query("END"); $this->_result_order = "PAY_FAIL"; } }