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);

    }

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章