05秒杀系统业务之三 订单服务

架构设计(基础的组件)

涉及到的数据表

用户信息表 user_info

字段定义
id用户id
name用户名
gender性别0为女,1为男
age年龄
register_mode注册方式
third_party_id第三方

用户密码表 user_password

字段定义
id密码表的id
encrpt_password密码加密存储(在后端用加密之后进行存储)
user_id用户id

商品表 item

字段定义
id商品的id
title商品的title
price商品的价格
description商品的描述
img_url商品图片的连接
salses商品的销量

商品库存表 item_stock

字段定义
id商品库存表id
stock商品的库存
item_id商品的id

商品订单表 order_info

字段定义
id订单id(借助下面的sequence_info可以生成)
item_id对应的商品id
user_id用户id(哪个用户下单
item_price商品的价格(可以是促销价格,也就可以是商品的原价格)
amout下单的数量
order_price这个订单的总价格(item_price*amout)
promo_id秒杀优惠的id

序列号信息表sequence_info

字段定义
name表命
current_value当前值
step步长

在这里插入图片描述

用户下单

在这里插入图片描述

  • 前端传递给后端:需要下单的商品,下单的数量
  • 后端对得到的数据进行分析,首先如果用户没有登录则报错给前端一个用户需要登录的信息
  • 否则进行下单的业务,首先对各个字段进行校验,然后生成订单号,订单号的计算有一定的规则,扣减库存增加销量,生成订单
 @RequestMapping(value = "/createOrder",method = {RequestMethod.POST},consumes = {CONTENT_TYPE_FORMED})
    @ResponseBody
    public CommonReturnType createOrder(@RequestParam(name="itemId") Integer itemId,
                                        @RequestParam(name="amount") Integer amount
                                        ) throws BusinessException {

        //从Session中获取
        HttpSession session = this.httpServletRequest.getSession();

        Boolean isLogin = (Boolean)session.getAttribute("IS_LOGIN");

        if(isLogin==null||!isLogin.booleanValue()){
            throw new BusinessException(EmBusinessError.USER_NOT_LOGIN,"用户还未登录,不能下单");
        }

        UserModel userModel = (UserModel) session.getAttribute("USER_LOG");

              orderService.createOrder(userModel.getId(),itemId,promoId,amount);


           return CommonReturnType.create(null);

    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值