|
|
查询购物车接口业务逻辑
|
|
|
------
|
|
|
## 一、入口和返回\n
|
|
|
### 1.入口\n
|
|
|
method=app.Shopping.add,参数:uid、sale_channel、shopping_key,皆非必选参数,通常传uid或shopping_key\n
|
|
|
postman调用示例:\n
|
|
|
http://192.168.102.205:8080/gateway?method=app.Shopping.cart&uid=8041834&debug=XYZ\n
|
|
|
该接口由类com.yoho.gateway.controller.order.shopping的cart方法实现,\n
|
|
|
@RequestMapping(params = "method=app.Shopping.cart")\n
|
|
|
@ResponseBody\n
|
|
|
public ApiResponse cart(HttpServletRequest httpServletRequest,\n
|
|
|
@RequestParam(value = "sale_channel", required = false) String saleChannel,\n
|
|
|
@RequestParam(value = "uid", required = false) Integer uid,\n
|
|
|
@RequestParam(value = "shopping_key", required = false) String shoppingKey)\n
|
|
|
### 2.返回\n
|
|
|
主要分两类数据,预售商品和普通商品,因这两类数据是分开结算的。每类数据包括:促销信息和结算费用,各商品详情等。\n
|
|
|
## 二、服务调用\n
|
|
|
该接口会调用order模块的cartShopping服务,该服务会实现具体的查询业务。而该服务具体执行过程中会调用商品和促销模块的相关服务\n
|
|
|
##三、具体实现逻辑\n
|
|
|
1.进入gateway模块的com.yoho.gateway.controller.order.shopping.cart()方法\n
|
|
|
2.cart方法调用order.cartShopping服务\n
|
|
|
3.进入order模块的com.yoho.yhorder.shopping.restapi.ShoppingCartController.query()方法,该方法提供order.cartShopping服务\n
|
|
|
4.query方法调用com.yoho.yhorder.shopping.service.impl.ShoppingCartServiceImpl.query()方法。\n
|
|
|
5.再调用com.yoho.yhorder.shopping.service.impl.ShoppingCartQueryService.query()方法,\n
|
|
|
6.在ShoppingCartQueryService.query()方法中开始进行业务操作,先进行普通商品算费,再进行预售商品算费,然后将两类结果包装到ShoppingQueryResponse中返回。具体如下:\n
|
|
|
普通商品算费:\n
|
|
|
1)构建算费参数对象ChargeParam,设置CartType=ORDINARY_CART_TYPE、ChargeType=ORDINARY_CHARGE_TYPE。\n
|
|
|
2)生成算费上下文ChargeContext ordinaryChargeContext \n
|
|
|
3)调用ChargerService.charge()进行算费,算费结果在ChargeContext对象的ChargeTotal中\n
|
|
|
4)从ChargeContext中取出结果信息ShoppingChargeResult ordinaryChargeResult。\n
|
|
|
预售商品算费:\n
|
|
|
1)生成预售商品算费上下文ChargeContext preSaleChargeContext\n
|
|
|
2)构建预售商品算费对象(CartType=PRESALE_CART_TYPE、ChargeType=ADVANCE_CHARGE_TYPE)并设置到上下文preSaleChargeContext中,同时将商品列表(从ordinaryChargeContext获取)和用户信息保存上下文中。\n
|
|
|
3)调用ChargerService.charge()进行算费。\n
|
|
|
4)从preSaleChargeContext取出结果信息ShoppingChargeResult preSaleChargeResult\n
|
|
|
由ordinaryChargeResult和preSaleChargeResult构造结果ShoppingQueryResponse response,并返回。\n
|
|
|
## 一、入口和返回
|
|
|
### 1.入口
|
|
|
method=app.Shopping.add,参数:uid、sale_channel、shopping_key,皆非必选参数,通常传uid或shopping_key
|
|
|
postman调用示例:
|
|
|
http://192.168.102.205:8080/gateway?method=app.Shopping.cart&uid=8041834&debug=XYZ
|
|
|
该接口由类com.yoho.gateway.controller.order.shopping的cart方法实现
|
|
|
@RequestMapping(params = "method=app.Shopping.cart")
|
|
|
@ResponseBody
|
|
|
public ApiResponse cart(HttpServletRequest httpServletRequest,\n
|
|
|
@RequestParam(value = "sale_channel", required = false) String saleChannel,
|
|
|
@RequestParam(value = "uid", required = false) Integer uid,\n
|
|
|
@RequestParam(value = "shopping_key", required = false) String shoppingKey)
|
|
|
### 2.返回
|
|
|
主要分两类数据,预售商品和普通商品,因这两类数据是分开结算的。每类数据包括:促销信息和结算费用,各商品详情等。
|
|
|
## 二、服务调用
|
|
|
该接口会调用order模块的cartShopping服务,该服务会实现具体的查询业务。而该服务具体执行过程中会调用商品和促销模块的相关服务
|
|
|
##三、具体实现逻辑
|
|
|
1.进入gateway模块的com.yoho.gateway.controller.order.shopping.cart()方法
|
|
|
2.cart方法调用order.cartShopping服务
|
|
|
3.进入order模块的com.yoho.yhorder.shopping.restapi.ShoppingCartController.query()方法,该方法提供order.cartShopping服务
|
|
|
4.query方法调用com.yoho.yhorder.shopping.service.impl.ShoppingCartServiceImpl.query()方法。
|
|
|
5.再调用com.yoho.yhorder.shopping.service.impl.ShoppingCartQueryService.query()方法,
|
|
|
6.在ShoppingCartQueryService.query()方法中开始进行业务操作,先进行普通商品算费,再进行预售商品算费,然后将两类结果包装到ShoppingQueryResponse中返回。具体如下:
|
|
|
普通商品算费:
|
|
|
1)构建算费参数对象ChargeParam,设置CartType=ORDINARY_CART_TYPE、ChargeType=ORDINARY_CHARGE_TYPE。
|
|
|
2)生成算费上下文ChargeContext ordinaryChargeContext
|
|
|
3)调用ChargerService.charge()进行算费,算费结果在ChargeContext对象的ChargeTotal中
|
|
|
4)从ChargeContext中取出结果信息ShoppingChargeResult ordinaryChargeResult。
|
|
|
预售商品算费:
|
|
|
1)生成预售商品算费上下文ChargeContext preSaleChargeContext
|
|
|
2)构建预售商品算费对象(CartType=PRESALE_CART_TYPE、ChargeType=ADVANCE_CHARGE_TYPE)并设置到上下文preSaleChargeContext中,同时将商品列表(从ordinaryChargeContext获取)和用户信息保存上下文中。\n
|
|
|
3)调用ChargerService.charge()进行算费。
|
|
|
4)从preSaleChargeContext取出结果信息ShoppingChargeResult preSaleChargeResult
|
|
|
由ordinaryChargeResult和preSaleChargeResult构造结果ShoppingQueryResponse response,并返回。
|
|
|
|
|
|
### 在ShoppingCartQueryService.query()中涉及到两个公共的业务:构建算费上下文和算费。具体实现见后续文档\n |
|
|
\ No newline at end of file |
...
|
...
|
|