关于买家买入一件商品以后需要进行的逻辑

 public OrderDTO create(OrderDTO orderDTO) {

        String orderId = KeyUtil.genUniqueKey();
        BigDecimal orderAmount = new BigDecimal(BigInteger.ZERO);

        //1.查询商品(数量,价格)
        for (OrderDetail orderDetail : orderDTO.getOrderDetailList()) {
            ProductInfo productInfo = productService.findById(orderDetail.getProductId());
            if (null == productInfo) {
                throw new SellerException(ResultEnum.PRODUCT_NOT_EXIST);
            }
            //2.计算总价
            orderAmount = productInfo.getProductPrice().multiply(new BigDecimal(orderDetail.getProductCount())).add(orderAmount);
            //3.订单详情入库
            BeanUtils.copyProperties(productInfo, orderDetail);
            orderDetail.setDetailId(KeyUtil.genUniqueKey());
            orderDetail.setOrderId(orderId);
            OrderDetail orderDetail1 = orderDetailRepository.save(orderDetail);
            orderDetailRepository.save(orderDetail);
        }

        //3.写入订单数据库
        OrderMaster orderMaster = new OrderMaster();
        BeanUtils.copyProperties(orderDTO, orderMaster);
        orderMaster.setOrderId(orderId);
        orderMaster.setOrderAmount(orderAmount);
        orderMaster.setOrderStatus(OrderStatusEnum.NEW.getCode());
        orderMaster.setPayStatus(PayStatusEnum.WAIT.getCode());
        orderMasterRepository.save(orderMaster);

        //todo  4.扣库存

        List<CartDTO> cartDTOList = orderDTO.getOrderDetailList()
                .stream()
                .map(e -> new CartDTO(e.getProductId(), e.getProductCount()))
                .collect(Collectors.toList());
        productService.decreaseStock(cartDTOList);
        return null;
    }

如果涉及到高并发,需要使用redis的锁机制,来防止出现超卖的现象

原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/12000307.html

时间: 2024-10-10 16:27:22

关于买家买入一件商品以后需要进行的逻辑的相关文章

如何给一件商品定价?

本人大学狗,之前社团做一个公益项目,进了一批原材料后来做成产品后发现大家都不知道如何定价(或者说如何对产品定价才能吸引顾客的注意并诱发他们的消费欲望).之后我也对这个问题产生过疑问,求助了知乎.百度知道,发现都找不到一个比较系统的理论,挺郁闷的.直到买了微博上关注的黄成明老师@数据化管理 新出的一本书<数据化管理-洞悉零售及电子商务运营>,意外地看到他的关于商品定价的策略,感觉很系统化.很多干货,故摘抄其中一点写在这个回答上(强烈推荐大家去购买这本书,尤其是将来从事快消行业的童鞋,真是获益匪浅

ecshop二次开发 购物时为每件商品添加备注信息的修改方法

目标: 用户在选购商品加入购物车前可以为商品添加备注信息 加入购物车后可以在购物车查看备注信息 店主在查看订单时可以看到用户为商品添加的备注信息 用户在个人中心中可以看到商品的备注信息 目标一: 打开ecshop/goods.php,搜索"display"可以看到这句: $smarty->display('goods.dwt', $cache_id); 打开模板目录下的goods.dwt,搜索"<!-- {* 结束循环可选属性 *} -->",在这

php商城秒杀,可以购买多件商品,redis防高并发

<?php header('content-type:text/html;charset=utf-8');echo time();class SeckillRedis { static protected $validity_time = 30; // 有效期 5分钟 protected $goods_id; protected $user_queue_key; protected $goods_number_key; protected $user_id; public function __

多件商品根据概率抽奖

最近在项目中分配了一个抽奖模块的任务,这里先说一下需求把:每个抽奖活动后台会配置多个中奖奖品,分为特殊奖品和普通奖品,所有奖品的中奖概率之和加起来为1.用户端用户抽奖需要根据概率来随机抽中一个商品.开始我脑子生出来的第一想法是生成一个随机数,然后让这个随机数跟概率去比较,取小于这个随机数的最大一个概率对应的商品为中奖商品,后来一想,发现自己想的太简单直观了,这样抽中的商品中奖概率不满足配置的中奖概率.在网上搜了一下相关的问题,然后就弄清楚了.说来惭愧,这么一个简单的算法题,自己竟然第一时间没有没

OpenCart 2.x 系统商品数量库存减少逻辑

OpenCart 1.5.x以及2.x版本中,在后台编辑商品时,有设定是否减少库存(subtract)选项,如果选中了,则在后续订单中处理时会减少库存数量. 库存数量减少的机制因opencart版本不同而不同. 在OpenCart 2.x系列版本中,库存数量的减少是通过如下路径的model文件处理的. catalog/model/checkout/order.php // If current order status is not processing or complete but new

网易星球推黑钻竞拍,区块链手机挖矿进入变现阶段

明天,网易星球黑钻首次竞拍活动即将正式开放.目前,网易星球展示的黑钻竞拍项目有网易黑猪肉.网易考拉专场(这个太广泛了).神秘拍品. 下面何玺谈谈自己对黑钻竞拍的一些看法. 一.黑钻是连通网易产品和区块链网络的桥梁 在认识黑钻竞拍之前,我们先来了解一下网易星球黑钻,它是竞拍活动中的价值点. 黑钻是网易星球用户通过"手机挖矿"获得的加密数字货币. 黑钻:黑钻是依托于区块链技术,基于个人星球活动产生的奖励,可以用于星球上的消费与兑换等.除日常活动根据原力大小生长黑钻之外,原力大于35的用户有

电商商品秒杀系统架构分析与实战

网址:http://my.oschina.net/xianggao/blog/524943 0 系列目录 1 秒杀业务分析 2 秒杀技术挑战 3 秒杀架构原则 4 秒杀架构设计 4.1 前端层设计 4.2 站点层设计 4.3 服务层设计 4.4 数据库设计 4.4.1 基本概念 4.4.2 设计思路 5 大并发带来的挑战 5.1 请求接口的合理设计 5.2 高并发的挑战:一定要“快” 5.3 重启与过载保护 6 作弊的手段:进攻与防守 6.1 同一个账号,一次性发出多个请求 6.2 多个账号,一

揭秘Wish买家端的12种玩法

Wish是一个购物app,流行于北美和欧洲地区,主要的消费者是海外"剁手党".有外媒盘点了Wish的12个十分吸引消费者的用户体验设计,麦言社区编译整理如下: 1.货到支付 Wish买家可以选择下单14天后再付款的支付方式.有瑞典支付公司Klarna先帮买家支付,买家如不能按时还款,可延迟三次还款,每次的延迟费用达8英镑.这种货到支付是提高卖家销量的一个很好方式. 2.提供"即时优惠"(instant offers) 这个设计可以刺激消费者把商品添加到购物车,而且商

python制作爬虫爬取京东商品评论教程

作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计图表,非常的细致,有需要的小伙伴可以参考下 本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D共18个尺寸,以及超过700条的购买评论. 京东商品评论信息是由JS动态加载的,所以直接抓取商品详