zoukankan      html  css  js  c++  java
  • 库存,优惠券处理机制

    创建订单的时候,扣库存,扣优惠券。
    订单取消的时候,回滚库存,回滚优惠券。
    这种方式,能够避免多使用,多卖出。(支付完成时,扣库存,容易多卖)

    /**
     * 回滚优惠券
     */
    public function rollbackCoupon($user_coupon_id) {
        // 判断是否过期
        $user_coupon = M('user_coupon');
        $user_coupon_info = $user_coupon->where(['id'=>$user_coupon_id,'status'=>2])->find();
        if (!$user_coupon_info) {
            // 不存在
            return true;
        }
    
        if ($user_coupon_info['valid_time'] < time()) {
            // 已过期
            return true;
        }
    
        // 设为未使用
        return $user_coupon->where(['id'=>$user_coupon_id])->save(['status'=>1]);
    }
    
    /**
     * 回滚订单商品库存
     */
    public function rollbackStock($order_id) {
        $product_order_item = M('product_order_item');
        $product_order_item_list = $product_order_item->where(['order_id'=>$order_id])->select();
        M()->startTrans();
        $product = M('product');
        $product_spec = M('product_spec');
        foreach($product_order_item_list as $k => $v) {
            if ($v['product_spec_id']) { // 有规格
                $flag = $product_spec->where(['id'=>$v['product_spec_id']])->setInc('stock',$v['num']);
                if ($flag === false) {
                    M()->rollback();
                    return false;
                }
            } else { // 无规格
                $flag = $product->where(['id'=>$v['product_id']])->setInc('stock',$v['num']);
                if ($flag === false) {
                    M()->rollback();
                    return false;
                }
            }
        }
        M()->commit();
        return true;
    }
    
  • 相关阅读:
    .net core 灵活读取配置文件
    SUSE12SP3-Mysql5.7安装
    SUSE12Sp3-MongoDB安装
    SUSE12Sp3-Supervisor 守护.net core进程
    SUSE12Sp3-Nginx安装
    SUSE12Sp3-.NET Core 2.2.1 runtime安装
    搭建consul 集群
    SUSE12Sp3安装配置.net core 生产环境(1)-IP,DNS,网关,SSH,GIT
    使用Consul 实现 MagicOnion(GRpc) 服务注册和发现
    使用MagicOnion实现gRPC
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/12725911.html
Copyright © 2011-2022 走看看