|
|
算费上下文ChargeContext构建具体过程
|
|
|
--------
|
|
|
### ChargeContext由ChargeContextFactory.build()构建,参数:Boolean selected、ChargeParam,
|
|
|
### ChargeContext需要构建的信息:
|
|
|
用户信息:vip、当月订单数、有货币、红包
|
|
|
购物车中商品的详情:价格,是否货到付款,是否下架,outlet、促销信息等
|
|
|
### 具体实现过程:
|
|
|
根据ChargeParam中的List<ShoppingItem>是否为空类进行不同的构建过程,
|
|
|
如果为空则调用buildByShoppingCart通过购物车构建。
|
|
|
如果不为空,则是立即购物,通过buildByShoppingItems进行构建。
|
|
|
#### buildByShoppingCart构建过程如下:
|
|
|
1)通过ChargeParam中的uid和shoppingkey找到购物车对象ShoppingCart,为空则抛异常。
|
|
|
如果uid>0,通过uid到数据库表shoppingCart查询到物车对象ShoppingCart
|
|
|
如果uid<=0再通过shoppingkey,到数据库表shoppingCart查询到物车对象ShoppingCart。
|
|
|
2)根据ShoppingCart设置ChargeParam的属性(uid,shoppingkey,shoppingcarid)
|
|
|
因为uid或shoppingkey可能有一个为空,所以查询到购物车后统一更新这两个值
|
|
|
3)查询设置商品的详细信息List<ShoppingCartItems> shoppingCartGoodsList。
|
|
|
根据shoppingCartId到数据库表shopping_cart_items中
|
|
|
查询当前购物车中商品的信息List<ShoppingCartItems> goodsList。
|
|
|
从goodsList获取到skns、skus
|
|
|
根据skns到商品模块查询到商品的详细信息
|
|
|
然后将商品的各种信息(价格,是否货到付款,是否下架,outlet等保存到good的extmap中)
|
|
|
根据skns到促销模块查询商品的购买数量限制信息,并设置good的购买限制,
|
|
|
根据good的促销id查询促销信息(先到缓存,再到数据库中查询)
|
|
|
根据促销信息设置good的promotion_type和real_price、last_Price
|
|
|
promotion_type=Gift为赠品,real和last Price为0,
|
|
|
promotion_type=Needpaygift为加价购商品,real和last Price为add_cost,
|
|
|
4)根据ChargeParam和shoppingCartGoodsList调用doBuild()构建ChargeContext并返回
|
|
|
将shoppingCartGoodsList转换成List<ChargeGoods>(利用反射将map中的属性设置到ChargeGoods中)
|
|
|
并将List<ChargeGoods>保存到ChargeContext。
|
|
|
根据uid到用户模块和数据获取各种相关信息,并保持到UserInfo中。
|
|
|
调用users.getVipSimpleInfo服务,获取用户的vip信息。
|
|
|
到order表查询用户当月点单数。
|
|
|
调用users.getYohoCoin服务,获取用户的有货币信息,并转化成货币。
|
|
|
调用users.selectRedenvelopesCount服务,获取用户的红包,
|
|
|
将UserInfo保存到ChargeContext中。
|
|
|
#### buildByShoppingItems构建过程:
|
|
|
1)首先将ChargeParam中的List<ShoppingItem>转换为List<ShoppingCartItems>
|
|
|
2)下面的处理和buildByShoppingCart中通过购物车ShoppingCartid到数据库查到
|
|
|
List<ShoppingCartItems> goodsList后的处理过程相同
|
|
|
|
|
|
|
|
|
\ No newline at end of file |
...
|
...
|
|