### 购物车 #### 商城应用 在亚米商城中,用户将喜欢的商品加入到购物车中,点击购物车项进行提交订单,下面我们就简单来看看亚米商城的购物车界面。 ![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` ,添加到购物车的最新时间 本文目前写的购物车是相对比较浅的,在实际项目中,结合在商城系统中的营销活动,有复杂的优惠价格计算逻辑等。