架构设计(基础的组件)
涉及到的数据表
用户信息表 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);
}