### 购物车
#### 商城应用
在亚米商城中,用户将喜欢的商品加入到购物车中,点击购物车项进行提交订单,下面我们就简单来看看亚米商城的购物车界面。
![1566270806256](https://img.kancloud.cn/f9/9a/f99ab38b125931703a665d843f77d4c8_414x735.png)
当用户将商品加入购物车后,可以在`购物车`中查看到添加在购物车中的列表信息,点击需要购买的购物项进行确认订单页。
![1566270892129](https://img.kancloud.cn/e9/9c/e99cbab147c956cd7b7a554a5c2534d9_411x733.png)
**注意**:添加购物车的商品数据**千万一定必须持久化到 DB** 。好处如下:
- 数据分析。例如,哪些商品被添加到购物车很多,但是很少被下单,实现转换率漏斗。
- 业务拓展。例如,卖家基于买家购物车的商品信息,进行回访,促发购买。
- 用户体验。缓存总会过期,可能买家目前仅仅是添加到购物车,N 天后会进行购买。
#### 数据库实体
整体实体类关系如下图:
![1566349705473](https://img.kancloud.cn/fe/ce/fece72bd696a89e629bf1517e51fdd14_502x310.png)
model实体类
```java
@Data
@TableName("tz_basket")
public class Basket implements Serializable {
/**
* 主键
*/
@TableId
private Long basketId;
/**
* 店铺ID
*/
private Long shopId;
/**
* 产品ID
*/
private Long prodId;
/**
* SkuID
*/
private Long skuId;
/**
* 用户ID
*/
private String userId;
/**
* 购物车产品个数
*/
private Integer basketCount;
/**
* 购物时间
*/
private Date basketDate;
}
```
- `basketId` ,购物车主键ID,唯一自增
- `shopId` ,店铺Id
> shopId用来标识所属的店铺信息,区分店铺,后续可扩展为B2B2C模式
- `prodId` ,商品Id
- skuId,商品skuId
> 添加到新的商品 skuId 添加到购物车后,生成一条购物车项,如果购物车已存在此商品,对应的购物项的数量增加
- `userId` ,用户ID
- `basketCount`,添加在购物车的数量
- `basketDate` ,添加到购物车的最新时间
本文目前写的购物车是相对比较浅的,在实际项目中,结合在商城系统中的营销活动,有复杂的优惠价格计算逻辑等。
- 开发环境准备
- 基本开发手册
- 项目目录结构
- 权限管理
- 通用分页表格
- Swagger文档
- undertow容器
- 对xss攻击的防御
- 分布式锁
- 统一的系统日志
- 统一验证
- 统一异常处理
- 文件上传下载
- 一对多、多对多分页
- 认证与授权
- 从授权开始看源码
- 自己写个授权的方法-开源版
- 商城表设计
- 商品信息
- 商品分组
- 购物车
- 订单
- 地区管理
- 运费模板
- 接口设计
- 必读
- 购物车的设计
- 订单设计-确认订单
- 订单设计-提交订单
- 订单设计-支付
- 生产环境
- nginx安装与跨域配置
- 安装mysql
- 安装redis
- 传统方式部署项目
- docker
- 使用docker部署商城
- centos jdk安装
- docker centos 安装
- Docker Compose 安装与卸载
- docker 镜像的基本操作
- docker 容器的基本操作
- 通过yum安装maven
- 常见问题