架構設計(基礎的組件)
涉及到的數據表
用戶信息表 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 {
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);
}