|
|
购物车算费过程
|
|
|
--------
|
|
|
### 算费结果在context对象的ChargeTotal中,调用ChargerService.charge(context).
|
|
|
### 1.docharge进行算费
|
|
|
#### 1.1对商品进行分类,
|
|
|
1.1.1 遍历ChargeContext中的chargeGoodsList,
|
|
|
首先判断是否下架,再根据是否是预售,结果存入preOffShelvesGoods或offShelvesGoods中。
|
|
|
根据库存信息,判断是否售罄,结果存入offShelvesGoods或soldOutGoods中。
|
|
|
根据chargeGoods信息,进行分类。(promotion id > 0, 说明是赠品或加价购商品,PromotionType=gift则是mainGoodsGift,否则是mainGoodsPriceGift。)
|
|
|
共分为:mainGoodsGift、mainGoodsPriceGift、advanceGoods、outletGoods、mainGoods。
|
|
|
如果购物车类型是预售,则mainGoods=advanceGoods(预售购物车只取mainGoods类别)
|
|
|
设置jit信息,goodlist中只要有一个是jit则,设置ChargeParam的IsJit为true。
|
|
|
#### 1.2进行初始化算费,调用InitCharge.charge方法,计算普通商品的总价和运费
|
|
|
遍历maingoods,
|
|
|
计算maingoods的购买数量goodsCount,
|
|
|
计算已选maingoods的购买数量selectedGoodsCount
|
|
|
计算已选且不是赠品和加价购商品的总价orderAmount
|
|
|
从ChargeParam中取得是否需要运费(默认不需要)以及是否加急等,计算运费(普通10元,加急加5元)。
|
|
|
将以上信息保存到ChargeTotal中并设置到chargeContext中
|
|
|
#### 1.3从ChargeParam中获取chargeType
|
|
|
#### 1.4根据chargeType执行对应的操作(分别是普通商品、预售产品、限购商品、计算优惠券可用不可用)
|
|
|
ORDINARY普通商品:
|
|
|
调用doOrdinaryCharge(chargeContext)进行具体算费。
|
|
|
1.4.1异步调用货到付款信息
|
|
|
1.4.2mainGoodsVIP算费,调用vipCharge.charge方法。
|
|
|
如果用户每个月订单数量大于阈值,则不享受VIP的优惠,返回。
|
|
|
计算优惠信息,优惠后价格、优惠比例:
|
|
|
遍历mainGoodsList,特价商品不享受vip,获取商品的折扣信息,
|
|
|
1-正常折扣
|
|
|
根据用户等级获取折扣量进行计算。
|
|
|
2-统一9.5折
|
|
|
3-无折扣
|
|
|
4-统一vip价
|
|
|
5-vip自定价
|
|
|
根据用户等级进行计算
|
|
|
如果发生了优惠则设置good的Real_price、Real_vip_price、Real_vip_price、优惠比例、优惠金额Vip_discount_money
|
|
|
如果是选择的商品,将优惠总额加到total中VipCutdownAmount上。
|
|
|
1.4.3计算outlets,调用outletsCharge.charge方法,
|
|
|
遍历OutletGoods,
|
|
|
取good的Real_price设置good的Real_price、Last_price
|
|
|
计算outletAmount总价。
|
|
|
如果总价outletAmount大于阈值,则享受9折优惠,遍历OutletGoods设置每个商品的新的价格,并将优惠总额加到total中VipCutdownAmount上,同时在chargeTotal.PromotionFormulaList中加入outlet优惠信息。
|
|
|
1.4.4计算促销,promotionCharge.charge方法,
|
|
|
获取所有促销信息,遍历促销信息,根据促销类型多态调用compute方法计算(具体计算比较复杂以后再详细描述)是否匹配优惠,如果匹配则设置good的相关信息。
|
|
|
1.4.5计算优惠券
|
|
|
根据ChargeParam中的conponCode远程调用促销模块的信息取到优惠卷的信息,如果没有优惠码则不计算返回。
|
|
|
根据优惠券的信息与mainGoods进行匹配计算,如果匹配则设置good和chargeTotal的相关信息。
|
|
|
|
|
|
1.4.6购物车计算
|
|
|
对普通商品、gift,priceGift,outlet分别计算费用,并累加存入total中。
|
|
|
1.4.7根据优惠(优惠券、红包、运费等)计算最后价格
|
|
|
1.4.8是否可货到付款判断
|
|
|
预售产品、限购商品、计算优惠券可用不可用(未完待续)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
购物车算费过程
|
|
|
--------
|
|
|
### 算费结果在context对象的ChargeTotal中,调用ChargerService.charge(context).
|
|
|
### 1.docharge进行算费
|
|
|
#### 1.1对商品进行分类,
|
|
|
1.1.1 遍历ChargeContext中的chargeGoodsList,
|
|
|
首先判断是否下架,再根据是否是预售,结果存入preOffShelvesGoods或offShelvesGoods中。
|
|
|
根据库存信息,判断是否售罄,结果存入offShelvesGoods或soldOutGoods中。
|
|
|
根据chargeGoods信息,进行分类。(promotion id > 0, 说明是赠品或加价购商品,PromotionType=gift则是mainGoodsGift,否则是mainGoodsPriceGift。)
|
|
|
共分为:mainGoodsGift、mainGoodsPriceGift、advanceGoods、outletGoods、mainGoods。
|
|
|
如果购物车类型是预售,则mainGoods=advanceGoods(预售购物车只取mainGoods类别)
|
|
|
设置jit信息,goodlist中只要有一个是jit则,设置ChargeParam的IsJit为true。
|
|
|
#### 1.2进行初始化算费,调用InitCharge.charge方法,计算普通商品的总价和运费
|
|
|
遍历maingoods,
|
|
|
计算maingoods的购买数量goodsCount,
|
|
|
计算已选maingoods的购买数量selectedGoodsCount
|
|
|
计算已选且不是赠品和加价购商品的总价orderAmount
|
|
|
从ChargeParam中取得是否需要运费(默认不需要)以及是否加急等,计算运费(普通10元,加急加5元)。
|
|
|
将以上信息保存到ChargeTotal中并设置到chargeContext中
|
|
|
#### 1.3从ChargeParam中获取chargeType
|
|
|
#### 1.4根据chargeType执行对应的操作(分别是普通商品、预售产品、限购商品、计算优惠券可用不可用)
|
|
|
ORDINARY普通商品:
|
|
|
调用doOrdinaryCharge(chargeContext)进行具体算费。
|
|
|
1.4.1异步调用货到付款信息
|
|
|
1.4.2mainGoodsVIP算费,调用vipCharge.charge方法。
|
|
|
如果用户每个月订单数量大于阈值,则不享受VIP的优惠,返回。
|
|
|
计算优惠信息,优惠后价格、优惠比例:
|
|
|
遍历mainGoodsList,特价商品不享受vip,获取商品的折扣信息,
|
|
|
1-正常折扣
|
|
|
根据用户等级获取折扣量进行计算。
|
|
|
2-统一9.5折
|
|
|
3-无折扣
|
|
|
4-统一vip价
|
|
|
5-vip自定价
|
|
|
根据用户等级进行计算
|
|
|
如果发生了优惠则设置good的Real_price、Real_vip_price、Real_vip_price、优惠比例、优惠金额Vip_discount_money
|
|
|
如果是选择的商品,将优惠总额加到total中VipCutdownAmount上。
|
|
|
1.4.3计算outlets,调用outletsCharge.charge方法,
|
|
|
遍历OutletGoods,
|
|
|
取good的Real_price设置good的Real_price、Last_price
|
|
|
计算outletAmount总价。
|
|
|
如果总价outletAmount大于阈值,则享受9折优惠,遍历OutletGoods设置每个商品的新的价格,并将优惠总额加到total中VipCutdownAmount上,同时在chargeTotal.PromotionFormulaList中加入outlet优惠信息。
|
|
|
1.4.4计算促销,promotionCharge.charge方法,
|
|
|
获取所有促销信息,遍历促销信息,根据促销类型多态调用compute方法计算(具体计算比较复杂以后再详细描述)是否匹配优惠,如果匹配则设置good的相关信息。
|
|
|
1.4.5计算优惠券
|
|
|
根据ChargeParam中的conponCode远程调用促销模块的信息取到优惠卷的信息,如果没有优惠码则不计算返回。
|
|
|
根据优惠券的信息与mainGoods进行匹配计算,如果匹配则设置good和chargeTotal的相关信息。
|
|
|
|
|
|
1.4.6购物车计算
|
|
|
对普通商品、gift,priceGift,outlet分别计算费用,并累加存入total中。
|
|
|
1.4.7根据优惠(优惠券、红包、运费等)计算最后价格
|
|
|
1.4.8是否可货到付款判断
|
|
|
预售产品、限购商品、计算优惠券可用不可用(未完待续)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\ No newline at end of file |
...
|
...
|
|