Showing
1 changed file
with
42 additions
and
0 deletions
新员工入职培训/算费上下文ChargeContext构建具体过程.md
0 → 100644
1 | +算费上下文ChargeContext构建具体过程 | ||
2 | +-------- | ||
3 | +### ChargeContext由ChargeContextFactory.build()构建,参数:Boolean selected、ChargeParam, | ||
4 | +### ChargeContext需要构建的信息: | ||
5 | + 用户信息:vip、当月订单数、有货币、红包 | ||
6 | + 购物车中商品的详情:价格,是否货到付款,是否下架,outlet、促销信息等 | ||
7 | +### 具体实现过程: | ||
8 | +根据ChargeParam中的List<ShoppingItem>是否为空类进行不同的构建过程, | ||
9 | +如果为空则调用buildByShoppingCart通过购物车构建。 | ||
10 | +如果不为空,则是立即购物,通过buildByShoppingItems进行构建。 | ||
11 | +#### buildByShoppingCart构建过程如下: | ||
12 | + 1)通过ChargeParam中的uid和shoppingkey找到购物车对象ShoppingCart,为空则抛异常。 | ||
13 | + 如果uid>0,通过uid到数据库表shoppingCart查询到物车对象ShoppingCart | ||
14 | + 如果uid<=0再通过shoppingkey,到数据库表shoppingCart查询到物车对象ShoppingCart。 | ||
15 | + 2)根据ShoppingCart设置ChargeParam的属性(uid,shoppingkey,shoppingcarid) | ||
16 | + 因为uid或shoppingkey可能有一个为空,所以查询到购物车后统一更新这两个值 | ||
17 | + 3)查询设置商品的详细信息List<ShoppingCartItems> shoppingCartGoodsList。 | ||
18 | + 根据shoppingCartId到数据库表shopping_cart_items中 | ||
19 | + 查询当前购物车中商品的信息List<ShoppingCartItems> goodsList。 | ||
20 | + 从goodsList获取到skns、skus | ||
21 | + 根据skns到商品模块查询到商品的详细信息 | ||
22 | + 然后将商品的各种信息(价格,是否货到付款,是否下架,outlet等保存到good的extmap中) | ||
23 | + 根据skns到促销模块查询商品的购买数量限制信息,并设置good的购买限制, | ||
24 | + 根据good的促销id查询促销信息(先到缓存,再到数据库中查询) | ||
25 | + 根据促销信息设置good的promotion_type和real_price、last_Price | ||
26 | + promotion_type=Gift为赠品,real和last Price为0, | ||
27 | + promotion_type=Needpaygift为加价购商品,real和last Price为add_cost, | ||
28 | + 4)根据ChargeParam和shoppingCartGoodsList调用doBuild()构建ChargeContext并返回 | ||
29 | + 将shoppingCartGoodsList转换成List<ChargeGoods>(利用反射将map中的属性设置到ChargeGoods中) | ||
30 | + 并将List<ChargeGoods>保存到ChargeContext。 | ||
31 | + 根据uid到用户模块和数据获取各种相关信息,并保持到UserInfo中。 | ||
32 | + 调用users.getVipSimpleInfo服务,获取用户的vip信息。 | ||
33 | + 到order表查询用户当月点单数。 | ||
34 | + 调用users.getYohoCoin服务,获取用户的有货币信息,并转化成货币。 | ||
35 | + 调用users.selectRedenvelopesCount服务,获取用户的红包, | ||
36 | + 将UserInfo保存到ChargeContext中。 | ||
37 | +#### buildByShoppingItems构建过程: | ||
38 | + 1)首先将ChargeParam中的List<ShoppingItem>转换为List<ShoppingCartItems> | ||
39 | + 2)下面的处理和buildByShoppingCart中通过购物车ShoppingCartid到数据库查到 | ||
40 | + List<ShoppingCartItems> goodsList后的处理过程相同 | ||
41 | + | ||
42 | + |
-
Please register or login to post a comment