Authored by wangshijie

add 优惠券可用不可用业务

查询用户优惠券可用不可用列表接口业务逻辑
-----
### 1.gateway入口
接口地址:method=app.Shopping.listCoupon,需要参数:int uid,required = true.
Postman模拟URL示例:http://192.168.102.205:8080/gateway?method=app.Shopping.listCoupon&uid=8041834&debug=XYZ
类名:com.yoho.gateway.controller.order.shopping.ShoppingController,方法名:listCoupon
### 2.返回
通过serviceCaller调用order模块的order.listCoupon服务进行具体的业务操作。
返回两个优惠券list:usable_coupons和unusable_coupons
### 3.调用order.listCoupon服务的具体过程
#### 3.1order模块的服务入口
服务入口:com.yoho.yhorder.shopping.restapi.ShoppingCouponController的listCoupon方法。
postman模拟URL示例:http://192.168.102.205:8084/order/shopping/listCoupon,post请求,body:{"uid":8041834}
方法中调用ShoppingCouponService的listCoupon方法
返回ShoppingCouponListResponse对象
#### 3.2listCoupon的执行过程
#### 3.2.1调用chargeUsableCoupon方法,返回ChargeContext对象,结果放在ChargeTotal中
#### 3.2.1.1生成算费参数ChargeParam,
设置CartType=ORDINARY_CART_TYPE,
ChargeType=LISTCOUPONO_CHARGE_TYPE
是否需要计算运费:不需要
是否需要查询有货币:不需要
是否需要查询红包:不需要
是否需要校验货到付款:不需要
##### 3.2.1.2chargeContextFactory构建ChargeContext算费上下文(具体见算费上下文ChargeContext构建具体过程.md文档)
##### 3.2.1.3chargerService.charge进行购物车算费(具体见购物车算费.md文档的LISTCOUPONO_CHARGE_TYPE计算优惠券可用不可用部分)
##### 3.2.2将ChargeContext.ChargeTotal中的结果包装到ShoppingCouponListResponse中返回
... ...
... ... @@ -50,6 +50,20 @@
对普通商品、gift,priceGift,outlet分别计算费用,并累加存入total中。
##### 1.4.7根据优惠(优惠券、红包、运费等)计算最后价格
##### 1.4.8是否可货到付款判断
#### LISTCOUPONO_CHARGE_TYPE计算优惠券可用不可用:
#### 调用doListCouponCharge方法进行具体计算
##### 1.4.1异步调用促销模块的promotion.queryUserNoUsedCoupons服务获取用户当前可用的优惠券。
##### 1.4.2mainGoodsVIP算费,调用vipCharge.charge方法(具体同上)
##### 1.4.3计算outlets,调用outletsCharge.charge方法(具体同上)
##### 1.4.4计算促销,promotionCharge.charge方法(具体同上)
##### 1.4.5计算优惠券可用不可用usableCouponCharge.charge方法。
maingoods不为空才进行计算
获取用户可用优惠券列表,进行优惠券相对当前购物车计算可用不可用,具体过程如下。
遍历优惠券:
不在使用期限的优惠券不可用
遍历maingoods筛选出可用优惠券的商品
如果没有该优惠券的商品,该优惠券不可用,免邮券除外(免邮没有商品限制,只有金额和数量限制)
对符合该优惠券的商品进行使用条件的匹配计算,是否达到金额或购买数量,满足可用,不满足不可用
#### 预售产品、限购商品、计算优惠券可用不可用(未完待续)
... ...