<?php
    header("Content-type: text/html; charset=utf-8");
    session_start();
    include_once("DB.class.php");

    //测试数据,初始化金额为1000.
    // $_SESSION['account'] = 1000;

    // 获得订单总额
    $order_money = $_GET['total'];

    //获得账户余额
    $uid = $_SESSION['uid'];
    // var_dump($uid);
    $sql = "select account from tb_user where id = $uid";
    $account = $dao->getOne($sql);

    if($account>=$order_money){
        $order = $_SESSION['order'] ;
        // 从数据库中减掉库存

        foreach($order as $item){
            $kucun = $item['num'];
            $id = $item['goods_id'];
            $sql = "update tb_goods set number =number-{$kucun} where id ={$id}";
            // var_dump($sql);
            // die();
            $dao->exec($sql);
        }

            //减去金额
        $account-=$order_money;
        $sql = "update tb_user set account = {$account} where id = $uid";
        $dao->exec($sql);
        echo "下单成功!账户余额:¥$account";
        $_SESSION['order'] = '';
    }else{
        echo "下单失败!订单所需金额:$order_money,账户余额:¥$account,余额不足!!";

    }

?>

工具类代码DB.class.ph获取:https://www.cnblogs.com/mzzone/p/10911891.html

业务逻辑

下单之后用户要进行判断库存,和用户金额是否充足。

充足的话进行修改数据库的库存和余额。

订单结算submit_order.php扣库存,扣账号金额(学生笔记)的更多相关文章

  1. 自实现CAS原理JAVA版,模拟下单库存扣减

    在做电商系统时,库存是一个非常严格的数据,根据CAS(check and swap)原来下面对库存扣减提供两种方法,一种是redis,一种用java实现CAS. 第一种 redis实现: 以下这个类是 ...

  2. 利用redis实现分布式事务锁,解决高并发环境下库存扣减

    利用redis实现分布式事务锁,解决高并发环境下库存扣减   问题描述: 某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖 解决方案一 利用数据 ...

  3. day86:luffy:前端发送请求生成订单&结算页面优惠劵的实现

    目录 1.前端发送请求生成订单 1.前端点击支付按钮生成订单 2.结算成功之后应该清除结算页面的数据 3.后端计算结算页面总原价格和总的真实价格并存到数据库订单表中 2.优惠劵 1.准备工作 2.前端 ...

  4. PHP如何实现处理过期或者超时订单的,并还原库存

    订单是我们在日常开发中经常会遇到的一个功能,最近在做一个订单过期与超时的开发.订单过期与超时就不用我解释了吧,其实两者都是同一个问题来着,就是订单未支付的处理,我们要做的是对这些未支付的订单到了一定时 ...

  5. 使用session存储,购物车结算add_to_order.php(学生笔记)

    <?php session_start(); include_once("DB.class.php"); //接受并解析前端传过来的json,转换成数组. $goods_li ...

  6. MySQL 单笔订单满6个及以上产品且金额>=300赠送优惠券_20161103

    活动内容: 单笔订单满6个及以上产品(帽子.浴巾除外),金额满赠300元,即赠送300-10元(除帽子.浴巾外)优惠券一张.需求数据:满足条件的用户ID活动时间:11.2-11.5(4天)活动规则:① ...

  7. MM52 历史库存及历史金额查询

    "表:TABLES:MSEG,LFA1,MARA,EKPO,EKKO,MARD,EKBE,EKET.********************************************* ...

  8. json字符串转为php数组,使用随机字符串生成订单号(学生笔记)

    //提交订单 function add_order(){ session_start(); // var_dump($_SESSION); // die(); // session_destroy() ...

  9. k3 cloud出现应收单下推收款单,把收款单是结算方式修改成银行承兑汇票之后保存提示:收款单明细中结算方式为票据业务的实收金额之和不等于票据的当前占用金额之和,请检查数据!

    收款单结算方式选择[银行承兑汇票],系统就默认该笔业务在系统中要存在一张应收票据.则在应收票据页签,需要选择一张出纳的应收票据(要先存在应收票据,才能保存单据,相当于是根据这张票据审核生成的这张收单单 ...

随机推荐

  1. 运算符副作用总结与例子(js)

    js中运算符副作用总结与例子 js中赋值运算符,递增递减运算符,delete运算符具有副作用,简单地说就是前后表达式的值会相互影响,除此之外其它的js运算符都没有副作用. 但函数表达式和对象创建表达式 ...

  2. Bootstrap模板-Amaretti.2.6.2

    密罐地址: 点我下载

  3. Delphi解析修改Json文件,基于superobject.pas(ISuperObject)

    在经过一系列的波折后,还是觉得delphi读取并修改json文件来的方便: 在网络上找到一个delphi的三方库ISuperObject,添加到项目后直接引用就行: 下载地址 ISuperObject ...

  4. .Net Core控制台&EFCore连接Mysql

    在用惯了Asp.Net Core提供的基架后,反过来想一想,貌似忘记了控制台如何去连接数据库了,因此,写一篇文章来借此巩固下并以后再来回顾时,加快步骤. 1.新建一个.Net Core控制台,然后安装 ...

  5. SAP Business One对象清单

    中文描述 对象号 表名 主键 英文描述 总账科目 1 OACT AcctCode G/L Accounts 业务伙伴 2 OCRD CardCode Business Partner 银行代码 3 O ...

  6. vue集成cesium,webgis平台第一步(附源码下载)

    vue-cesium-platform Vue结合Cesium的web端gis平台 初步效果 笔记本性能限制,运行Cesium温度飙到70度以上.所以平时开发时先开发界面,之后加载Cesium地球 当 ...

  7. [Linux] linux路由表

    路由表用于决定数据包从哪个网口发出,其主要判断依据是目标IP地址Linux路由表其实有2个主要概念:按顺序走路由策略,在路由策略对应的路由表中匹配规则路由策略(rule)路由表(table) 查看所有 ...

  8. Mac上打开终端的7种简单方法

    终端机是用于给Mac命令的便捷工具,尽管它可能会吓倒许多人.毕竟,这不像输入句子然后Mac响应那样简单.如果您有兴趣学习使用Terminal或只想输入一两个命令,我们在下面列出了一些文章,可以帮助您使 ...

  9. Vue---记一次通过{{}}获取json数据-页面渲染不出来的坑

    前两天干活儿的时候碰到一个Vue的问题,让我这个菜鸡完全摸不到头脑,需求如下:前端页面点击表格中的某一行的详情按钮,会弹出一个Dialog,然后Dialog中有选项卡,选项卡中再有具体的table来展 ...

  10. JS---DOM---元素创建的不同方式---三种方式,5个案例

    元素创建-----为了提高用户的体验   元素创建的三种方式: 1. document.write("标签的代码及内容"); 2. 对象.innerHTML="标签及代码 ...