Example #1
0
 $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) {
Example #2
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";
     }
 }